Compartir tecnología

Gemma2: una guía de aplicación completa para el nuevo modelo de lenguaje de código abierto a gran escala de Google

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

0 Prefacio

Gemma 2 Basado en su predecesor, ofrece rendimiento y eficiencia mejorados, así como una gama de características innovadoras, lo que lo hace particularmente atractivo tanto para la investigación como para aplicaciones prácticas. Lo que distingue a Gemma 2 es que ofrece un rendimiento comparable al de los modelos propietarios más grandes, pero conpaquete de softwareDiseñado para una mayor accesibilidad y uso en configuraciones de hardware más modestas.

A medida que profundizo en las especificaciones técnicas y la arquitectura de Gemma 2, cada vez me impresiona más la sofisticación de su diseño.El modelo incorpora una variedad de tecnologías avanzadas, incluidas novedosasmecanismo de atencióny métodos innovadores de estabilidad en el entrenamiento, que contribuyen a su rendimiento excepcional.

En esta guía completa, se explorará Gemma 2 en profundidad, analizando su arquitectura, características clave y aplicaciones prácticas. Ya sea que sea un profesional experimentado en IA o un novato entusiasta en este campo, este artículo tiene como objetivo brindar información valiosa sobre cómo funciona Gemma 2 y cómo puede aprovechar sus capacidades en sus propios proyectos.

1. ¿Qué es Gemma 2?

Gemma 2 es el último código abierto a gran escala de Googlemodelo de lenguaje , exquisitamente diseñado pero potente. Se basa en la misma investigación y tecnología utilizadas para crear los modelos Google Gemini y ofrece un rendimiento de última generación en un paquete más accesible. Gemma 2 viene en dos tamaños:

Gemma 2 9B: Un modelo de 9 mil millones de parámetros
Gemma 2 27B: Un modelo más grande de 27 mil millones de parámetros

Cada tamaño viene en dos estilos:

modelo basica: Entrenamiento previo en grandes cantidades de datos de texto
Modelo de ajuste de instrucciones (IT): Ajustado para un mejor rendimiento en tareas específicas

Acceder a modelos en Google AI StudioEstudio de inteligencia artificial de Google: Gemma 2
Lea el documento aquí: Informe técnico de Gemma 2

2.Principales características y mejoras

Gemma 2 introduce varias mejoras significativas respecto a su predecesor:

2.1. Agregar datos de entrenamiento

Estos modelos han sido entrenados con más datos:

Gemma 2 27B: Después de entrenar con 13 billones de tokens
Gemma 2 9B: Después de entrenar con 8 billones de tokens

Este conjunto de datos ampliado consta principalmente de datos de red (principalmente en inglés), código y matemáticas, lo que ayuda a mejorar el rendimiento y la versatilidad de sus modelos.

2.2. Atención de ventanas correderas

Gemma 2 implementa un nuevo método de mecanismo de atención:

Todas las demás capas utilizan un mecanismo de atención de ventana deslizante y el contexto local es de 4096 tokens.
La capa alterna adopta un mecanismo de atención global completamente cuadrático para todo el contexto del token 8192.

Este enfoque híbrido tiene como objetivo equilibrar la eficiencia con la capacidad de capturar dependencias de largo alcance en la entrada.

2.3. Tapa blanda

Para mejorar la estabilidad y el rendimiento del entrenamiento, Gemma 2 introduce un mecanismo de límite superior suave:

def soft_cap(x, cap):
    return cap * torch.tanh(x / cap)
# Applied to attention logits
attention_logits = soft_cap(attention_logits, cap=50.0)
# Applied to final layer logits
final_logits = soft_cap(final_logits, cap=30.0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Esta técnica evita que los logits se vuelvan demasiado grandes sin un truncamiento estricto, reteniendo así más información y estabilizando el proceso de entrenamiento.

  1. Gemma 2 9B: modelo de 9 mil millones de parámetros
  2. Gemma 2 27B: Modelo más grande de 27 mil millones de parámetros

Cada tamaño viene en dos estilos:

  • Modelo base: entrenado previamente con grandes cantidades de datos de texto
  • Modelo de ajuste de instrucciones (TI): ajustado para un mejor rendimiento en tareas específicas

2.4. Destilación del conocimiento

Para el modelo 9B, Gemma 2 utiliza tecnología de extracción de conocimiento:

  • Capacitación previa: el modelo 9B aprende de un modelo docente más amplio durante la capacitación inicial
  • Después del entrenamiento: tanto el modelo 9B como el 27B utilizan la destilación de políticas en línea para mejorar su desempeño.

Este proceso ayuda al modelo más pequeño a capturar de manera más efectiva la funcionalidad del modelo más grande.

2.5. Fusión de modelos

Gemma 2 utiliza una nueva tecnología de fusión de modelos llamada Warp, que combina múltiples modelos en tres etapas:

  1. Media móvil exponencial (EMA) durante el ajuste del aprendizaje por refuerzo
  2. Interpolación lineal esférica (SLERP) después de un ajuste fino con múltiples estrategias
  3. Inicialización de interpolación lineal (LITI) como paso final

Este enfoque tiene como objetivo crear un modelo final más robusto y robusto.

3. Puntos de referencia de desempeño

Gemma 2 demuestra un rendimiento impresionante en una variedad de puntos de referencia:

Gemma 2 presenta una arquitectura rediseñada diseñada para un rendimiento superior y eficiencia de inferencia

6. Empezando con Gemma 2

Para empezar a utilizar Gemma 2 en tus proyectos, tienes las siguientes opciones:

6.1. Estudio de Inteligencia Artificial de Google

Se puede acceder a Gemma 2 a través de Google AI Studio,Estudio de inteligencia artificial de Google.

6.2. Cara de abrazo

Gemma 2 y cara de abrazo Integración de la biblioteca de transformadores. Aquí se explica cómo usarlo:

<div class="relative flex flex-col rounded-lg">
<div class="text-text-300 absolute pl-3 pt-2.5 text-xs">
from transformers import AutoTokenizer, AutoModelForCausalLM
# Load the model and tokenizer
model_name = "google/gemma-2-27b-it" # or "google/gemma-2-9b-it" for the smaller version
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare input
prompt = "Explain the concept of quantum entanglement in simple terms."
inputs = tokenizer(prompt, return_tensors="pt")
# Generate text
outputs = model.generate(**inputs, max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6.3.TensorFlow/Keras

Para los usuarios de TensorFlow, Gemma 2 está disponible a través de Keras:

import tensorflow as tf
from keras_nlp.models import GemmaCausalLM
# Load the model
model = GemmaCausalLM.from_preset("gemma_2b_en")
# Generate text
prompt = "Explain the concept of quantum entanglement in simple terms."
output = model.generate(prompt, max_length=200)
print(output)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

7. Uso avanzado: use Gemma 2 para construir un sistema RAG local

Una poderosa aplicación de Gemma 2 es la construcción de sistemas de generación aumentada de recuperación (RAG). Creemos un sistema RAG simple y completamente nativo usando incrustaciones de Gemma 2 y Nomic.

Paso 1: configurar el entorno

Primero, asegúrese de tener instaladas las bibliotecas necesarias:

pip install langchain ollama nomic chromadb
  • 1

Paso 2: indexar documentos

Cree un indexador para procesar los documentos:

import os
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
class Indexer:
    def __init__(self, directory_path):
    self.directory_path = directory_path
    self.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
    self.embeddings = HuggingFaceEmbeddings(model_name="nomic-ai/nomic-embed-text-v1")
  
def load_and_split_documents(self):
    loader = DirectoryLoader(self.directory_path, glob="**/*.txt")
    documents = loader.load()
    return self.text_splitter.split_documents(documents)
def create_vector_store(self, documents):
    return Chroma.from_documents(documents, self.embeddings, persist_directory="./chroma_db")
def index(self):
    documents = self.load_and_split_documents()
    vector_store = self.create_vector_store(documents)
    vector_store.persist()
    return vector_store
# Usage
indexer = Indexer("path/to/your/documents")
vector_store = indexer.index()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Paso 3: configurar el sistema RAG

Ahora, crea el sistema RAG usando Gemma 2:

from langchain.llms import Ollama
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
class RAGSystem:
    def __init__(self, vector_store):
        self.vector_store = vector_store
        self.llm = Ollama(model="gemma2:9b")
        self.retriever = self.vector_store.as_retriever(search_kwargs={"k": 3})
self.template = """Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}
Question: {question}
Answer: """
self.qa_prompt = PromptTemplate(
template=self.template, input_variables=["context", "question"]
)
self.qa_chain = RetrievalQA.from_chain_type(
llm=self.llm,
chain_type="stuff",
retriever=self.retriever,
return_source_documents=True,
chain_type_kwargs={"prompt": self.qa_prompt}
)
def query(self, question):
return self.qa_chain({"query": question})
# Usage
rag_system = RAGSystem(vector_store)
response = rag_system.query("What is the capital of France?")
print(response["result"])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

Este sistema RAG utiliza Gemma 2 to Ollama como modelo de lenguaje e incrustación Nomic para la recuperación de documentos. Le permite hacer preguntas basadas en documentos indexados y proporcionar respuestas contextuales de fuentes relevantes.

Afinando Gemma 2

Para tareas o dominios específicos, es posible que necesites ajustar Gemma 2. A continuación se muestra un ejemplo básico que utiliza la biblioteca Hugging Face Transformers:

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset
# Load model and tokenizer
model_name = "google/gemma-2-9b-it"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare dataset
dataset = load_dataset("your_dataset")
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
# Set up training arguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
warmup_steps=500,
weight_decay=0.01,
logging_dir="./logs",
)
# Initialize Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["test"],
)
# Start fine-tuning
trainer.train()
# Save the fine-tuned model
model.save_pretrained("./fine_tuned_gemma2")
tokenizer.save_pretrained("./fine_tuned_gemma2")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

Ajuste los parámetros de entrenamiento en función de requisitos específicos y recursos informáticos.

Consideraciones y limitaciones éticas

Si bien Gemma 2 ofrece una funcionalidad impresionante, hay que ser consciente de sus limitaciones y consideraciones éticas:

  • inclinación : Como todos los modelos de lenguaje, Gemma 2 puede reflejar sesgos presentes en sus datos de entrenamiento. Evalúe siempre su rendimiento de forma crítica.
  • precisión fáctica : Aunque Gemma 2 es potente, a veces produce información incorrecta o inconsistente. Verifique hechos importantes de fuentes confiables.
  • longitud del contexto : La longitud del contexto de Gemma 2 es 8192 tokens. Para documentos o conversaciones más largas, es posible que necesite implementar estrategias para gestionar el contexto de forma eficaz.
  • Recursos informáticos: Especialmente para los modelos 27B, es posible que se requieran importantes recursos informáticos para una inferencia y un ajuste eficaces.
  • Uso responsable:Adhiérase a las prácticas de IA responsable de Google y asegúrese de que su uso de Gemma 2 se alinee con los principios éticos de IA.

8.Conclusión

Las características avanzadas de Gemma 2, como la atención de ventanas deslizantes, límites superiores suaves y técnicas novedosas de fusión de modelos, lo convierten en una herramienta poderosa para una amplia gama de tareas de procesamiento del lenguaje natural.

Al aprovechar Gemma 2 en sus proyectos, ya sea a través de inferencia simple, sistemas RAG complejos o modelos ajustados para dominios específicos, puede aprovechar el poder de SOTA AI mientras mantiene el control de sus datos y procesos.

Direccion original:https://www.unite.ai/guia-completa-sobre-gemma-2-el-nuevo-modelo-de-lenguaje-grande-abierto-de-google/