1 pontos por GN⁺ 2024-06-28 | 1 comentários | Compartilhar no WhatsApp
  • Gemma 2 do Google DeepMind é uma família de modelos abertos leves de 2B, 9B e 27B, lançada com o objetivo de alcançar desempenho competitivo com modelos maiores mesmo em tamanhos menores
  • Os modelos 2B e 9B aplicaram destilação de conhecimento em vez de previsão do próximo token, enquanto o 27B foi treinado do zero, adotando estratégias diferentes por escala
  • Em termos de arquitetura, combina alternância entre atenção local e global, Grouped-Query Attention, logit soft-capping e RMSNorm em pre-norm e post-norm para buscar eficiência e desempenho ao mesmo tempo
  • Os dados de treino são principalmente documentos web em inglês, código e literatura científica, e não se trata de um modelo multimodal nem voltado a desempenho multilíngue de ponta
  • Nas avaliações, mostrou desempenho superior ao de modelos abertos de tamanho semelhante, mas antes da implantação real ainda são necessários testes de segurança por caso de uso

Visão geral do modelo Gemma 2

  • Gemma 2 é um novo modelo aberto leve da família Gemma, disponível nas escalas de 2B, 9B e 27B parâmetros
  • Os modelos 2B e 9B são treinados com destilação de conhecimento em vez de previsão do próximo token
    • Um modelo de linguagem maior é usado como modelo professor, e o modelo aluno aprende a distribuição dos possíveis próximos tokens de cada token
    • 2B e 9B foram treinados por destilação com mais de 50 vezes o número de tokens teoricamente compute-optimal
  • O modelo 27B foi treinado do zero para esse trabalho
  • O desempenho melhorou bastante em relação a modelos abertos de tamanho semelhante e, em alguns benchmarks e avaliações humanas, mostrou resultados capazes de competir com modelos 2 a 3 vezes maiores
  • Antes da aplicação real, todos os usuários devem realizar testes de segurança adequados ao contexto de implantação ou uso

Arquitetura do modelo e escolhas de design

  • O Gemma 2 usa uma arquitetura Transformer decoder-only semelhante à do Gemma anterior
  • Os elementos de design comuns são os seguintes
    • Comprimento de contexto: 8192 tokens
    • Embeddings posicionais RoPE
    • Não linearidade GeGLU
    • Tokenizador SentencePiece com vocabulário de 256,128 itens
    • Uso de tied embedding
  • As principais mudanças estruturais se concentram em atenção e normalização
    • local sliding window attention e atenção global são colocadas alternadamente, uma camada de cada vez
      • A sliding window da atenção local é de 4096 tokens
      • O span da atenção global é de 8192 tokens
    • logit soft-capping é aplicado à camada de atenção e à camada final
      • O soft_cap da camada de self-attention é 50.0
      • O soft_cap da camada final é 30.0
    • RMSNorm é aplicado tanto na entrada quanto na saída de cada subcamada Transformer, usando ao mesmo tempo pre-norm e post-norm
    • Grouped-Query Attention foi confirmada em ablation como uma escolha que mantém o desempenho enquanto aumenta a velocidade de inferência

Dados de treino e infraestrutura

  • O número de tokens de pré-treinamento varia conforme a escala do modelo
    • Gemma 2 27B: 13 trilhões de tokens
    • Gemma 2 9B: 8 trilhões de tokens
    • Gemma 2 2B: 2 trilhões de tokens
  • Os dados de treino são majoritariamente em inglês e vêm de várias fontes, como documentos web, código e literatura científica
  • O modelo não é multimodal, nem foi treinado separadamente com foco em desempenho multilíngue de ponta
  • A filtragem de dados foi aplicada da mesma forma que no Gemma 1
    • Redução de falas indesejadas ou inseguras
    • Remoção de determinados dados pessoais e dados sensíveis
    • Remoção de contaminação de conjuntos de avaliação
    • Mitigação do risco de repetição de saídas sensíveis
  • A infraestrutura de treino é baseada em TPU
    • 2B: 512 chips TPUv5e
    • 9B: 4096 chips TPUv4
    • 27B: 6144 chips TPUv5p
  • As emissões de carbono do pré-treinamento são estimadas em 1247.61 tCO2eq
    • O cálculo foi baseado no uso de energia por hora do datacenter de TPU
    • A neutralidade de carbono dos datacenters do Google é alcançada por eficiência energética, compra de energia renovável e compensação de carbono

Pós-treinamento e formato de conversa

  • O pós-treinamento é o processo de ajustar o modelo pré-treinado para um instruction-tuned model
  • As etapas de treino são as seguintes
    • SFT com pares prompt-resposta sintéticos e gerados por humanos, apenas em texto em inglês
    • Aplicação de RLHF usando um reward model treinado com dados de preferência em inglês
    • Os modelos obtidos em cada etapa são combinados por média para melhorar o desempenho geral
  • A mistura de dados e a receita de pós-treinamento foram escolhidas com base em melhorar helpfulness, garantir segurança e minimizar danos relacionados a hallucination
  • Desde o Gemma 1.1, os dados de pós-treinamento foram expandidos com uma mistura de dados internos e dados públicos externos
    • No LMSYS-chat-1M, apenas os prompts são usados, e as respostas não são utilizadas
  • Várias etapas de filtragem são aplicadas aos dados sintéticos
    • Dados pessoais
    • Saídas do modelo inseguras ou tóxicas
    • Dados incorretos de autoidentificação
    • Exemplos duplicados
  • O Gemma 2 usa os mesmos control tokens do Gemma 1, mas o formatting schema mudou
    • O modelo gera explicitamente o token <end_of_turn><eos> no fim da geração
    • Antes, gerava apenas <eos>

Destilação de conhecimento e experimentos de escolha de arquitetura

  • Em uma comparação com o modelo 2B treinado com 500B tokens, o treino por destilação apresentou desempenho superior ao do modelo treinado do zero
    • Média de 3 benchmarks: from scratch 60.3, distilled 67.7
    • 500B é 10 vezes mais do que o número compute-optimal de tokens para um modelo 2B
  • Também na comparação de perplexity de validação entre os modelos 200M, 400M e 1B, os modelos destilados tiveram perplexity menor
    • 200M: from scratch 23, distilled 21
    • 400M: from scratch 19, distilled 17
    • 1B: from scratch 17, distilled 15
  • No modelo 9B, a diferença de desempenho entre GQA e MHA foi pequena, e o GQA foi escolhido por ter menos parâmetros e ser mais rápido na inferência
    • Média de 4 benchmarks: MHA 50.3, GQA 50.8
  • Com o mesmo número de parâmetros no 9B, uma arquitetura mais profunda mostrou desempenho ligeiramente melhor do que uma mais larga
    • Média de 4 benchmarks: Wide 50.8, Deep 52.0
  • Mesmo alterando o tamanho da sliding window na inferência para 4096, 2048 e 1024, o impacto na perplexity foi limitado
    • 4096: 1.63
    • 2048: 1.63
    • 1024: 1.64

Resultados de benchmarks automáticos

  • O modelo 27B pré-treinado foi comparado com Qwen1.5 32B e LLaMA-3 70B na avaliação da HuggingFace
    • MMLU: Gemma-2 27B 75.2, Qwen1.5 32B 74.3, LLaMA-3 70B 79.2
    • GSM8K: Gemma-2 27B 74.0, Qwen1.5 32B 61.1, LLaMA-3 70B 76.9
    • ARC-c: Gemma-2 27B 71.4, Qwen1.5 32B 63.6, LLaMA-3 70B 68.8
    • HellaSwag: Gemma-2 27B 86.4, Qwen1.5 32B 85.0, LLaMA-3 70B 88.0
    • Winogrande: Gemma-2 27B 83.7, Qwen1.5 32B 81.5, LLaMA-3 70B 85.3
  • Os modelos 2B e 9B também mostram grande melhora em relação aos modelos Gemma anteriores
    • O modelo 9B teve melhora de até 10% em alguns benchmarks em relação à versão anterior
    • O Gemma 2 2B foi treinado com um número de tokens semelhante ao do Gemma 1 2B, mas teve melhor desempenho
  • As médias gerais em vários benchmarks são as seguintes
    • Gemma 1 2B: 44.2
    • Gemma 2 2B: 48.7
    • Gemma 1 7B: 57.9
    • Gemma 2 9B: 64.9
    • Gemma 2 27B: 69.4

Avaliação humana e Chatbot Arena

  • Os modelos instruction-tuned do Gemma 2 foram avaliados no LMSYS Chatbot Arena em formato blind side-by-side
  • As pontuações Elo são as seguintes
    • gemma-2-27b-it: 1218
    • gemma-2-9b-it: 1187
    • gemma-2-2b-it: 1126
  • Os resultados comparativos mostram competitividade em relação ao tamanho dos modelos
    • gemma-2-27b-it ficou acima do Elo 1206 do llama-3-70b-instruct
    • gemma-2-9b-it ficou próximo do Elo 1186 do gpt-4-0314
    • gemma-2-2b-it ficou acima do Elo 1116 do gpt-3.5-turbo-0613
  • Em uma avaliação separada de preferência humana, segurança e instruction following foram medidos com prompts single-turn held-out
    • instruction following: Gemma 1.1 IT 7B 24.3%, Gemma 2 IT 2B 26.5%, 9B 34.1%, 27B 37.7%
    • safety: Gemma 1.1 IT 7B 42.8%, Gemma 2 IT 2B 57.5%, 9B 57.8%, 27B 55%
  • A avaliação multi-turn foi feita com 500 cenários held-out e média de 8.4 turnos de usuário
    • Satisfação do usuário: Gemma 1.1 IT 7B 3.32, Gemma 2 IT 2B 3.64, 9B 4.04, 27B 4.20
    • Alcance do objetivo da conversa: Gemma 1.1 IT 7B 3.36, Gemma 2 IT 2B 3.88, 9B 4.08, 27B 4.24

Memorização e dados pessoais

  • Modelos de linguagem grandes podem reproduzir literalmente dados de treino sob certas condições, por isso o Gemma 2 passou por avaliações de memorização literal e aproximada
  • A avaliação foi feita fornecendo um prompt de 50 tokens e medindo a memorização de 50 tokens dos dados de treino
    • Critério de exact match
    • Critério de approximate match usando edit distance de 10%
  • A taxa total de memorização exata do Gemma 2 é inferior a 0.1%
  • Por origem dos dados, apareceu mais memorização em código, wiki e fontes científicas, mas no geral o nível ficou abaixo do Gemma 1
  • A avaliação de dados pessoais usou a Google Cloud Sensitive Data Protection Tool
    • Não foram encontrados casos de saída de dados pessoais de alta gravidade
    • A proporção de dados memorizados contendo dados pessoais de baixa gravidade foi medida em 0.00026%
    • A ferramenta automatizada não considera o contexto, podendo gerar false positives, e os resultados podem ter sido superestimados

Implantação responsável e segurança

  • O desenvolvimento do Gemma 2 aplicou três eixos: mitigação de segurança durante o treino, avaliação transparente do modelo e desenvolvimento do Responsible Generative AI Toolkit
  • Modelos públicos podem ampliar os benefícios da tecnologia de IA, mas também é preciso avaliar riscos de uso indevido, como imagens deepfake, desinformação gerada por IA e geração de material ilegal ou perturbador
  • Ainda não houve relatos de uso malicioso do Gemma, mas, se surgirem relatos relacionados, há plano de investigar e monitorar junto com a comunidade
  • Considerando que já existem modelos públicos maiores e mais poderosos, avalia-se que o impacto do Gemma 2 no panorama geral de riscos é pequeno
  • A política de segurança foi desenhada na mesma direção dos modelos Gemini para evitar a geração de conteúdo nocivo
    • Abuso e exploração sexual infantil
    • Divulgação de dados pessoais que possam causar danos
    • Discurso de ódio e assédio
    • Conteúdo perigoso ou malicioso
    • Conteúdo sexualmente explícito
    • Conselhos médicos contrários ao consenso científico e médico
  • Os modelos instruction-tuned são ajustados por SFT e RLHF para se afastarem de comportamentos indesejáveis

1 comentários

 
GN⁺ 2024-06-28
Opiniões no Hacker News
  • A versão 27B é muito poderosa
    Ela pontuou acima do Llama-3-70B no LMSys Chatbot Arena e está no nível do OpenAI GPT-4 e do Claude-3 Sonnet

    • Se você quiser avaliar o Gemma localmente, dá para fazer isso com bastante facilidade usando ollama e promptfoo

      prompts:
      - 'Answer this coding problem in Python: {{ask}}'
      
      providers:
      - ollama:chat:gemma2:9b
      - ollama:chat:llama3:8b
      
      tests:
      - vars:  
      ask: function to find the nth fibonacci number
      - vars:  
      ask: calculate pi to the nth digit
      - # ...  
      

      Um pequeno detalhe de que sempre gostei no Gemma é que ele vai direto para o código, sem introduções como "Sure, I can help you", e coloca a explicação depois
      Parece que o treinamento teve foco na estrutura da resposta e na facilidade de compreensão
      Também é melhor rodar uma avaliação que não dependa da simples memorização de código público, então vale a pena trocar por testes pessoais

      [0] https://ollama.com/library/gemma2

      [1] https://github.com/promptfoo/promptfoo

    • Antes de se deixar levar por expectativas exageradas, recomendo testar por conta própria e esperar até que a pontuação no Chatbot Arena se estabilize
      Na minha avaliação pessoal, o gemma-2-27b-it do AI Studio foi muito pior que o Llama 3 70B, especialmente em raciocínio e perguntas básicas de compreensão do mundo

    • Vi isso com atraso, mas, para registro, os modelos Gemma 2 parecem ter sido treinados com aprendizado por reforço visando o desempenho no Chat Arena: https://x.com/natolambert/status/1806384821826109597
      A parte relevante do artigo está destacada

    • Fico curioso para saber qual é o ponto forte que mais se destaca
      Modelos pequenos muitas vezes vão bem em benchmarks, mas falham na generalização, e isso me lembra o Phi-2

    • Parece ser efeito de dados de treinamento melhores em idiomas além do inglês
      Em prompts difíceis em inglês, ele fica 15 ELO abaixo do Llama-3-70B; em inglês geral, fica 41 ELO abaixo
      Este último é de fato estatisticamente significativo

  • Olá de novo, aqui é a equipe do Gemma
    Estamos muito felizes em lançar esta versão e responderemos se houver perguntas
    As opiniões são pessoais e não representam a posição da Google DeepMind

    • É relativamente fácil pagar e usar APIs da OpenAI ou da Mistral
      Por outro lado, entender como o Google Cloud Vertex funciona e é cobrado é mais complicado, e Azure e AWS também são igualmente complexos para esse uso
      Seria bom se o Google Cloud pudesse oferecer uma API e um serviço compatíveis com a OpenAI
      Sei que é outro departamento, mas isso tornaria o uso dos modelos muito mais fácil
      Muitas vezes o Google Cloud parece não ter passado por nenhuma UX ou teste com usuários finais
      O aistudio.google.com certamente melhorou em relação a antes
    • Eu também trabalho no Gemma no Google
      O 27b pode ser testado em www.aistudio,google.com, então espero que você coloque seus prompts habituais e goste das respostas
    • Fico curioso se o gemma2 também será disponibilizado no gemma.cpp: https://github.com/google/gemma.cpp
    • O contexto de janela deslizante de 4k parece uma escolha controversa, depois que o Mistral 7B quase não mostrou vantagem com isso
      Fico curioso por que escolheram esse caminho em vez de simplesmente ir para 8k ou 16k completos
    • Os modelos da API do Google suportam mais de 1 milhão de tokens, mas estes têm apenas 8K
      Fico curioso se isso é uma diferença arquitetural fundamental, uma diferença no conjunto de treinamento ou algum outro motivo
  • Acho que 2.6B/9B deveriam ser comparados ao Phi-3 mini 3.8B da Microsoft, e não ao Mistral ou ao Llama-3
    Comparando a tabela 13 na página 7 do artigo com a página 6 de https://arxiv.org/pdf/2404.14219, no geral o Phi-3 parece bem melhor
    Ainda assim, o relato sobre treinamento por destilação de conhecimento é interessante

    • A forma como este artigo e o modelo fazem as comparações é um pouco irritante
      O 2.6B ficaria muito atrás do Phi-3, então não há comparação
      Comparar 2.6B com 3.8B talvez não dê tanta noção, mas, olhando como 2,6 bilhões contra 3,8 bilhões, é uma diferença de tamanho bem grande, então pode ser por isso
      Mas aí começam a aparecer inflamentos de parâmetros, como Mistral 7B vs Llama 8B vs Gemma 9B
      Quando o Llama 3 passou para 8B, fiquei preocupado que surgisse uma tendência de brincar com a contagem de parâmetros, mas achei que fosse preocupação à toa
    • Entendo por que compararam tanto com o Llama 3 70B quanto com o Llama 3 8B, já que a faixa de tamanhos do modelo é ampla
      Concordo que a família Phi-3 é uma concorrente mais forte em extração/sumarização de conhecimento e, portanto, uma boa base de comparação
      Em uma workstation com VRAM limitada, o meu favorito atual para esse tipo de tarefa é o Phi-3 medium, ou seja, phi3:14b-instruct
  • As versões 9B e 27B estão disponíveis no Ollama: https://ollama.com/library/gemma2

  • Excelente lançamento.
    Se quiser experimentar localmente com uma boa interface, acabei de publicar uma atualização com suporte ao Gemma2 no app que eu faço [1]

    1: https://msty.app

    • O msty parece muito bom.
      Marquei nos favoritos para ver depois se pode substituir a forma como uso uma instância do LibreChat hospedada localmente.
      Acho que, em muitas perguntas, usar modelos locais em vez de modelos remotos seria uma grande melhoria.

      Mas fico curioso se há algum motivo para manter o msty como código fechado, e não open source.
      Li o "why should I trust msty" no FAQ, mas achei insuficiente.

      We are a small team of developers who are passionate about AI and privacy. We have worked on projects before that have been used by thousands of people such as this (I've never heard of Cleavr). There are real faces (real faces = Twitter account link?) behind the product. And come chat with us on our Discord server to know us better.

      É muito melhor do que não haver nenhuma identificação, mas está longe de ser a possibilidade de verificar a confiança lendo o código.
      Gostaria de ouvir o motivo de não abrirem o código.
      Ainda assim, pretendo experimentar.

    • Parece legal, mas fico cauteloso por ser código fechado.
      No Arch Linux, quando tento salvar uma chave da API da Anthropic, nada acontece, e aparece a mensagem "If you're experiencing problems saving API keys especially on Linux, contact Discord".
      Se é um problema tão comum assim, acho que deveria haver um link para possíveis soluções.
      Ter que entrar em mais um servidor do Discord para testar e pesquisar a resposta para uma pergunta que certamente já foi feita muitas vezes é uma barreira bem grande.

    • Baixei e parece bom.
      Gostei da visualização dividida sincronizada.
      Mas, ao contrário do anunciado na landing page, não vejo Gemma 2 nem Claude 3.5 Sonnet.

    • Fico curioso se há planos de adicionar ao Chocolatey para download no Windows.

    • Isso parece legal.
      Não sei como deixei passar até agora, e pretendo rodar para testar.

  • Destilação de conhecimento é muito interessante, mas gerar trilhões de saídas a partir de um grande modelo professor deve ter um custo absurdo.
    Fico curioso se isso é realmente mais custo-efetivo do que usar esses recursos de computação para treinar o modelo diretamente com mais dados ou mais épocas.

    • Também tenho essa dúvida.
      Até 6 meses atrás, parecia que todo mundo tinha medo de colapso de modelo, e agora geração de dados sintéticos de treinamento e modelos professores estão na moda.
      Fico me perguntando se resolveram o problema de colapso de modelo.
    • A destilação é feita on-policy, como RLHF.
      O modelo aluno gera sequências, e o modelo professor fornece feedback em forma de logits.
  • Fico curioso sobre o uso de tokens especiais explícitos.
    O que acontece se o usuário colocar esses tokens na mensagem? Dá para criar facilmente algo como "ignore as instruções anteriores"?
    Será que é preciso sanitizar a entrada manualmente antes de passá-la ao modelo?

    • Se você puder controlar o tokenizer, dá para impedir que esses tokens apareçam na entrada do usuário.
      Por exemplo, em vez de um token especial, você pode fazer com que vire a codificação natural daquela string, como "<", "eos", ">".

      O tokenizer do llama3 tem uma opção para controlar a tokenização de tokens especiais: https://github.com/meta-llama/llama3/blob/bf8d18cd087a4a0b3f...

      A forma de combinar tokens especiais e entrada do usuário pode ser vista aqui: https://github.com/meta-llama/llama3/blob/bf8d18cd087a4a0b3f...

      Se não puder controlar o tokenizer, acho que, como você disse, vai precisar sanitizar a entrada.

  • Fico curioso sobre quanto o treinamento por destilação acelera em termos de número de iterações necessárias para atingir um determinado desempenho.

  • We use the same data filtering techniques as Gemma 1. Specifically, we filter the pre-
    training dataset to reduce the risk of unwanted or unsafe utterances.

    Gostaria de saber o que unsafe significa aqui.

    • Ele recusaria se você pedisse para explicar como fazer napalm usando apenas eufemismos.
  • Então ele tem o dobro do tamanho do Phi 3 e é consideravelmente pior?
    Não sei o que estou deixando passar.

    • Eles usaram duas técnicas que não são mutuamente exclusivas.
      O Phi-3 é principalmente um avanço em aprendizado por currículo.
      Ele obteve bons resultados ao filtrar o conjunto de treinamento para tokens de alta qualidade e treinar com dados sintéticos.
      O Gemma-2 é um avanço em destilação.
      Ele obteve bons resultados treinando um LLM com orientação de um LLM professor maior.
      Não há motivo para não fazer os dois.
    • O Phi-3 vai bem em benchmarks, mas no uso real fica abaixo do esperado.
      Por exemplo, mesmo que o Phi-3-Medium vá melhor em benchmarks, no LMSYS Chatbot Arena ele perde por uma boa margem para o Llama-3-8b.

O desempenho do Gemma, na verdade, parece tender a parecer baixo nos benchmarks
O 27b atualmente está à frente do Llama3-70b no ranking do Chatbot Arena

  • No LMSYS, o phi-3 small está em 52º lugar com 1100 ELO, e o intervalo de confiança do Gemma 2 9B é de 1170~1200 ELO, entre o 15º e o 25º lugar

  • Você pode testar diretamente aqui e comparar dessa forma: https://aistudio.google.com/app/prompts/new_chat?model=gemma...

  • Fico curioso se você já usou o Phi 3
    Ele é inteligente e vai bem em benchmarks, mas não é tão bom para conversa ou como chatbot

    Acho que o Gemma 2 será um assistente de uso geral melhor para a maioria das pessoas, enquanto o Phi 3 parece mais um LLM pequeno e sólido, adequado para usos mais específicos como resumo, RAG e aprendizado de matemática