Modelos e plataformas de IA

Guia Completo sobre Gemma 2: O Novo Modelo de Linguagem Aberto da Google

mm
Adicione Unite.AI às suas fontes preferidas no Google

Gemma 2 ÃĐ uma evoluçÃĢo de seu predecessor, oferecendo desempenho e eficiÊncia aprimorados, alÃĐm de uma sÃĐrie de recursos inovadores que o tornam particularmente atraente para aplicaçÃĩes de pesquisa e prÃĄticas. O que distingue Gemma 2 ÃĐ sua capacidade de entregar desempenho comparÃĄvel a modelos proprietÃĄrios muito maiores, mas em um pacote projetado para acessibilidade mais ampla e uso em configuraçÃĩes de hardware mais modestas.

À medida que mergulhei nas especificaçÃĩes tÃĐcnicas e arquitetura de Gemma 2, fiquei cada vez mais impressionado com a ingenuidade de seu design. O modelo incorpora vÃĄrias tÃĐcnicas avançadas, incluindo mecanismos de atençÃĢo novos e abordagens inovadoras para estabilidade de treinamento, que contribuem para suas capacidades notÃĄveis.

Google Open Source LLM Gemma

Google [securities_stock_price_tag symbol="GOOGL" exchange="NASDAQ"] Open Source LLM Gemma

Neste guia abrangente, exploraremos Gemma 2 em profundidade, examinando sua arquitetura, recursos-chave e aplicaçÃĩes prÃĄticas. Seja vocÊ um praticante de AI experiente ou um novo entusiasta no campo, este artigo visa fornecer insights valiosos sobre como Gemma 2 funciona e como vocÊ pode aproveitar seu poder em seus prÃģprios projetos.

O que ÃĐ Gemma 2?

Gemma 2 ÃĐ o novo modelo de linguagem de cÃģdigo aberto da Google, projetado para ser leve, mas poderoso. Ele ÃĐ construído com base na mesma pesquisa e tecnologia usadas para criar os modelos Gemini da Google, oferecendo desempenho de ponta em um pacote mais acessível. Gemma 2 vem em dois tamanhos:

Gemma 2 9B: Um modelo de 9 bilhÃĩes de parÃĒmetros
Gemma 2 27B: Um modelo maior de 27 bilhÃĩes de parÃĒmetros

Cada tamanho estÃĄ disponível em duas variantes:

Modelos base: PrÃĐ-treinados em um vasto corpus de dados de texto
Modelos ajustados para instruçÃĩes (IT): Ajustados para melhor desempenho em tarefas específicas

Acesse os modelos no Google AI Studio: Google AI Studio – Gemma 2

Leia o relatÃģrio tÃĐcnico aqui: RelatÃģrio TÃĐcnico Gemma 2

Recursos-Chave e Melhorias

Gemma 2 introduz vÃĄrias avanços significativos em relaçÃĢo a seu predecessor:

1. Aumento dos Dados de Treinamento

Os modelos foram treinados em muito mais dados:

Gemma 2 27B: Treinado em 13 trilhÃĩes de tokens
Gemma 2 9B: Treinado em 8 trilhÃĩes de tokens

Esse conjunto de dados expandido, consistindo principalmente de dados da web (em sua maioria em inglÊs), cÃģdigo e matemÃĄtica, contribui para o desempenho melhorado e a versatilidade dos modelos.

2. AtençÃĢo com Janela Deslizante

Gemma 2 implementa uma abordagem nova para mecanismos de atençÃĢo:

Cada outra camada usa atençÃĢo com janela deslizante com um contexto local de 4096 tokens
Camadas alternadas empregam atençÃĢo global quadrÃĄtica completa em todo o contexto de 8192 tokens

Essa abordagem híbrida visa equilibrar eficiÊncia com a capacidade de capturar dependÊncias de longo alcance na entrada.

3. LimitaçÃĢo Suave

Para melhorar a estabilidade e o desempenho do treinamento, Gemma 2 introduz um mecanismo de limitaçÃĢo suave:


<p>def limitacao_suave(x, limite):
return limite * torch.tanh(x / limite)</p>

<p># Aplicado aos logits de atençÃĢo
logits_atencao = limitacao_suave(logits_atencao, limite=50.0)</p>

# Aplicado aos logits da camada final

<p>logits_finais = limitacao_suave(logits_finais, limite=30.0)

Essa tÃĐcnica impede que os logits cresçam excessivamente grandes sem truncamento rígido, mantendo mais informaçÃĩes e estabilizando o processo de treinamento.

  1. Gemma 2 9B: Um modelo de 9 bilhÃĩes de parÃĒmetros
  2. Gemma 2 27B: Um modelo maior de 27 bilhÃĩes de parÃĒmetros

Cada tamanho estÃĄ disponível em duas variantes:

  • Modelos base: PrÃĐ-treinados em um vasto corpus de dados de texto
  • Modelos ajustados para instruçÃĩes (IT): Ajustados para melhor desempenho em tarefas específicas

4. DestilaçÃĢo de Conhecimento

Para o modelo de 9B, Gemma 2 emprega tÃĐcnicas de destilaçÃĢo de conhecimento:

  • PrÃĐ-treinamento: O modelo de 9B aprende com um modelo professor maior durante o treinamento inicial
  • PÃģs-treinamento: Tanto os modelos de 9B quanto 27B usam destilaçÃĢo de política para refinar seu desempenho

Esse processo ajuda o modelo menor a capturar as capacidades dos modelos maiores de forma mais eficaz.

5. Mesclagem de Modelos

Gemma 2 utiliza uma tÃĐcnica de mesclagem de modelos chamada Warp, que combina vÃĄrios modelos em trÊs etapas:

  1. MÃĐdia MÃģvel Exponencial (EMA) durante o ajuste fino de aprendizado por reforço
  2. InterpolaçÃĢo Linear EsfÃĐrica (SLERP) apÃģs o ajuste fino de vÃĄrias políticas
  3. InterpolaçÃĢo Linear em DireçÃĢo à InicializaçÃĢo (LITI) como etapa final

Essa abordagem visa criar um modelo final mais robusto e capaz.

Benchmarks de Desempenho

Gemma 2 demonstra desempenho impressionante em vÃĄrias benchmarks:

Gemma 2 em uma arquitetura redesenhada, projetada para desempenho excepcional e eficiÊncia de inferÊncia

Gemma 2 em uma arquitetura redesenhada, projetada para desempenho excepcional e eficiÊncia de inferÊncia

 

Começando com Gemma 2

Para começar a usar Gemma 2 em seus projetos, vocÊ tem vÃĄrias opçÃĩes:

1. Google AI Studio

Para experimentaçÃĢo rÃĄpida sem requisitos de hardware, vocÊ pode acessar Gemma 2 por meio do Google AI Studio.

2. Hugging Transformers

Gemma 2 ÃĐ integrado à biblioteca Hugging Face Transformers. Aqui estÃĄ como vocÊ pode usÃĄ-lo:

&lt;div class=&quot;relative flex flex-col rounded-lg&quot;&gt;
&lt;div class=&quot;text-text-300 absolute pl-3 pt-2.5 text-xs&quot;&gt;

<p>from transformers import AutoTokenizer, AutoModelForCausalLM</p>

<p># Carregue o modelo e o tokenizador
nome_modelo = &quot;google/gemma-2-27b-it&quot; # ou &quot;google/gemma-2-9b-it&quot; para a versÃĢo menor
tokenizador = AutoTokenizer.from_pretrained(nome_modelo)
modelo = AutoModelForCausalLM.from_pretrained(nome_modelo)</p>

<p># Prepare a entrada
prompt = &quot;Explique o conceito de entrelaçamento quÃĒntico em termos simples.&quot;
entradas = tokenizador(prompt, return_tensors=&quot;pt&quot;)</p>

<p># Gere texto
saidas = modelo.generate(**entradas, max_length=200)
resposta = tokenizador.decode(saidas[0], skip_special_tokens=True)</p>

print(resposta)

3. TensorFlow/Keras

Para usuÃĄrios do TensorFlow, Gemma 2 estÃĄ disponível por meio do Keras:


<p>import tensorflow as tf
from keras_nlp.models import GemmaCausalLM</p>

<p># Carregue o modelo
modelo = GemmaCausalLM.from_preset(&quot;gemma_2b_en&quot;)</p>

<p># Gere texto
prompt = &quot;Explique o conceito de entrelaçamento quÃĒntico em termos simples.&quot;
saida = modelo.generate(prompt, max_length=200)</p>

print(saida)

Uso Avançado: Construindo um Sistema RAG Local com Gemma 2

Uma aplicaçÃĢo poderosa de Gemma 2 ÃĐ na construçÃĢo de um sistema de GeraçÃĢo Aumentada por RecuperaçÃĢo (RAG). Vamos criar um sistema RAG simples e totalmente local usando Gemma 2 e embeddings Nomic.

Etapa 1: Configurando o Ambiente

Primeiro, certifique-se de que vocÊ tem as bibliotecas necessÃĄrias instaladas:


<p>pip install langchain ollama nomic chromadb</p>

Etapa 2: Indexando Documentos

Crie um indexador para processar seus documentos:


<p>import os
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings</p>

<p>class Indexador:
def __init__(self, caminho_diretorio):
self.caminho_diretorio = caminho_diretorio
self.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
self.embeddings = HuggingFaceEmbeddings(model_name=&quot;nomic-ai/nomic-embed-text-v1&quot;)</p>

<p>def carregar_e_dividir_documentos(self):
carregador = DirectoryLoader(self.caminho_diretorio, glob=&quot;**/*.txt&quot;)
documentos = carregador.load()
return self.text_splitter.split_documents(documentos)</p>

<p>def criar_armazenamento_de_vetores(self, documentos):
return Chroma.from_documents(documentos, self.embeddings, persist_directory=&quot;./chroma_db&quot;)</p>

<p>def indexar(self):
documentos = self.carregar_e_dividir_documentos()
armazenamento_de_vetores = self.criar_armazenamento_de_vetores(documentos)
armazenamento_de_vetores.persist()
return armazenamento_de_vetores</p>

<p># Uso
indexador = Indexador(&quot;caminho/para/seus/documentos&quot;)
armazenamento_de_vetores = indexador.indexar()</p>

Etapa 3: Configurando o Sistema RAG

Agora, vamos criar o sistema RAG usando Gemma 2:


<p>from langchain.llms import Ollama
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate</p>

<p>class SistemaRAG:
def __init__(self, armazenamento_de_vetores):
self.armazenamento_de_vetores = armazenamento_de_vetores
self.llm = Ollama(model=&quot;gemma2:9b&quot;)
self.retriever = self.armazenamento_de_vetores.as_retriever(search_kwargs={&quot;k&quot;: 3})</p>

<p>self.template = &quot;&quot;&quot;Use as seguintes partes do contexto para responder à pergunta no final.
Se vocÊ nÃĢo souber a resposta, apenas diga que nÃĢo sabe, nÃĢo tente inventar uma resposta.</p>

{contexto}

<p>Pergunta: {pergunta}
Resposta: &quot;&quot;&quot;</p>

<p>self.prompt_pergunta = PromptTemplate(
template=self.template, input_variables=[&quot;contexto&quot;, &quot;pergunta&quot;]
)</p>

<p>self.cadeia_pergunta = RetrievalQA.from_chain_type(
llm=self.llm,
chain_type=&quot;stuff&quot;,
retriever=self.retriever,
return_source_documents=True,
chain_type_kwargs={&quot;prompt&quot;: self.prompt_pergunta}
)</p>

<p>def consultar(self, pergunta):
return self.cadeia_pergunta({&quot;query&quot;: pergunta})</p>

<p># Uso
sistema_rag = SistemaRAG(armazenamento_de_vetores)
resposta = sistema_rag.consultar(&quot;Qual ÃĐ a capital da França?&quot;)
print(resposta[&quot;result&quot;])</p>

Esse sistema RAG usa Gemma 2 por meio do Ollama para o modelo de linguagem e embeddings Nomic para recuperaçÃĢo de documentos. Ele permite que vocÊ faça perguntas com base nos documentos indexados, fornecendo respostas com contexto das fontes relevantes.

Ajuste Fino de Gemma 2

Para tarefas ou domínios específicos, vocÊ pode querer ajustar Gemma 2. Aqui estÃĄ um exemplo bÃĄsico usando a biblioteca Hugging Face Transformers:

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset

<p># Carregue o modelo e o tokenizador
nome_modelo = &quot;google/gemma-2-9b-it&quot;
tokenizador = AutoTokenizer.from_pretrained(nome_modelo)
modelo = AutoModelForCausalLM.from_pretrained(nome_modelo)</p>

<p># Prepare o conjunto de dados
conjunto_de_dados = load_dataset(&quot;seu_conjunto_de_dados&quot;)</p>

<p>def funcao_tokenizar(exemplos):
return tokenizador(exemplos[&quot;texto&quot;], padding=&quot;max_length&quot;, truncation=True)</p>

<p>conjunto_de_dados_tokenizado = conjunto_de_dados.map(funcao_tokenizar, batched=True)</p>

<p># Defina os argumentos de treinamento
argumentos_treinamento = TrainingArguments(
output_dir=&quot;./resultados&quot;,
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=&quot;./logs&quot;,
)</p>

<p># Inicialize o treinador
treinador = Trainer(
modelo=modelo,
args=argumentos_treinamento,
train_dataset=conjunto_de_dados_tokenizado[&quot;treino&quot;],
eval_dataset=conjunto_de_dados_tokenizado[&quot;teste&quot;],
)</p>

# Inicie o ajuste fino
treinador.train()

<p># Salve o modelo ajustado
modelo.save_pretrained(&quot;./modelo_ajustado_gemma2&quot;)
tokenizador.save_pretrained(&quot;./modelo_ajustado_gemma2&quot;)</p>

Lembre-se de ajustar os parÃĒmetros de treinamento com base em suas necessidades específicas e recursos computacionais.

ConsideraçÃĩes Éticas e LimitaçÃĩes

Embora Gemma 2 ofereça capacidades impressionantes, ÃĐ crucial estar ciente de suas limitaçÃĩes e consideraçÃĩes ÃĐticas:

  • Vieses: Como todos os modelos de linguagem, Gemma 2 pode refletir vieses presentes em seus dados de treinamento. Avalie sempre criticamente suas saídas.
  • ExatidÃĢo Factual: Embora muito capaz, Gemma 2 pode às vezes gerar informaçÃĩes incorretas ou inconsistentes. Verifique fatos importantes de fontes confiÃĄveis.
  • Comprimento de Contexto: Gemma 2 tem um comprimento de contexto de 8192 tokens. Para documentos ou conversas mais longos, vocÊ pode precisar implementar estratÃĐgias para gerenciar o contexto de forma eficaz.
  • Recursos Computacionais: Especialmente para o modelo de 27B, recursos computacionais significativos podem ser necessÃĄrios para inferÊncia e ajuste fino eficientes.
  • Uso ResponsÃĄvel: Adira às prÃĄticas de AI responsÃĄvel da Google e certifique-se de que o uso de Gemma 2 esteja alinhado com princípios ÃĐticos de AI.

ConclusÃĢo

Gemma 2, com recursos avançados como atençÃĢo com janela deslizante, limitaçÃĢo suave e tÃĐcnicas de mesclagem de modelos novas, ÃĐ uma ferramenta poderosa para uma ampla gama de tarefas de processamento de linguagem natural.

Ao aproveitar Gemma 2 em seus projetos, seja por meio de inferÊncia simples, sistemas RAG complexos ou modelos ajustados para domínios específicos, vocÊ pode aproveitar o poder da AI de ponta enquanto mantÃĐm controle sobre seus dados e processos.

Eu passei os Últimos cinco anos me imergindo no fascinante mundo de Aprendizado de MÃĄquina e Aprendizado Profundo. Minha paixÃĢo e expertise me levaram a contribuir para mais de 50 projetos de engenharia de software diversificados, com um foco particular em IA/ML. Minha curiosidade contínua tambÃĐm me levou em direçÃĢo ao Processamento de Linguagem Natural, um campo que estou ansioso para explorar mais.