1 pontos por GN⁺ 2024-01-10 | 1 comentários | Compartilhar no WhatsApp
  • Mixtral 8x7B é um modelo de mistura esparsa de especialistas (SMoE) que mantém a arquitetura base do Mistral 7B, mas substitui o bloco feed-forward de cada camada por 8 especialistas, e foi lançado com pesos abertos e licença Apache 2.0
  • Para cada token, o roteador seleciona apenas 2 especialistas entre 8 para o cálculo, permitindo acessar 47B de parâmetros por token, enquanto os parâmetros ativos na inferência ficam limitados a 13B
  • Foi treinado com janela de contexto de 32k tokens e, nos benchmarks avaliados de forma geral, mostrou desempenho superior ou semelhante ao Llama 2 70B e ao GPT-3.5, com destaque especial em matemática, geração de código e tarefas multilíngues
  • Mixtral 8x7B – Instruct é um modelo de chat treinado para seguir instruções com ajuste fino supervisionado e otimização direta de preferências (DPO), superando GPT-3.5 Turbo, Claude-2.1, Gemini Pro e Llama 2 70B-chat em avaliações humanas
  • A arquitetura de especialistas esparsos aumenta o total de parâmetros enquanto controla o custo computacional por token, o que pode trazer inferência mais rápida em lotes pequenos e maior throughput em lotes grandes

Modelos lançados e desempenho em benchmarks

  • Mixtral 8x7B é um modelo aberto de mistura esparsa de especialistas (SMoE), com licença Apache 2.0 para uso acadêmico e comercial
  • Foram lançados juntos o modelo base e o modelo para seguir instruções Mixtral 8x7B – Instruct
  • Foram disponibilizados código e página na web
  • Em vários benchmarks, registrou desempenho superior ou equivalente ao Llama 2 70B e ao GPT-3.5
  • Em tarefas que exigem matemática, geração de código e compreensão multilíngue, mostrou desempenho mais forte que o Llama 2 70B
  • Foi confirmado que consegue recuperar informações em uma janela de contexto de 32k tokens independentemente da posição da informação e do comprimento da sequência

Arquitetura de mistura esparsa de especialistas

  • O Mixtral é um transformer apenas decodificador e substitui o bloco feed-forward de um transformer comum por camadas Mixture-of-Experts
  • A rede roteadora de cada camada escolhe, para cada token, 2 especialistas entre 8 especialistas
    • As saídas dos especialistas selecionados são combinadas por soma ponderada
    • A escolha dos especialistas pode mudar a cada passo de tempo
  • Um único token pode acessar 47B de parâmetros, mas os parâmetros ativos realmente usados na inferência são 13B
  • Essa arquitetura busca aumentar o número total de parâmetros do modelo ao mesmo tempo em que controla o custo de processamento por token e a latência

Método de cálculo das camadas MoE

  • A saída do módulo MoE é calculada como a soma ponderada das saídas das redes especialistas, e os pesos são definidos pela rede de gating
  • Se o vetor de gating for esparso, não é necessário calcular a saída dos especialistas cujo valor de gate seja 0
  • O Mixtral aplica softmax aos K maiores logits da camada linear
    • K é um hiperparâmetro que define quantos especialistas serão usados por token
    • No Mixtral, K = 2
  • Se o número de especialistas n aumentar e K permanecer fixo, é possível ampliar o total de parâmetros mantendo, na prática, quase constante o custo computacional por token
  • Assim, o total de parâmetros esparsos e o número de parâmetros ativos usados no processamento de cada token ficam separados

Implementação e eficiência de inferência

  • As camadas MoE podem ser executadas com eficiência até mesmo em uma única GPU por meio de kernels especializados
  • Megablocks acelera a execução ao representar as operações FFN das camadas MoE como grandes multiplicações de matrizes esparsas, além de lidar com casos em que o número de tokens atribuídos a cada especialista varia
  • As camadas MoE podem ser distribuídas por várias GPUs com paralelismo de modelo padrão e Expert Parallelism
    • Os tokens que precisam ser processados por um especialista específico são roteados para a GPU correspondente
    • As saídas dos especialistas retornam à posição original dos tokens
  • No paralelismo de especialistas, é necessário balanceamento de carga para distribuir o trabalho de forma uniforme entre as GPUs
  • Para permitir executar o Mixtral em uma stack totalmente open source, foi enviada ao projeto vLLM uma mudança para integrar os kernels CUDA do Megablocks, e o Skypilot oferece suporte à implantação de endpoints vLLM em instâncias de nuvem

Modelo Instruct e características de avaliação

  • Mixtral 8x7B – Instruct é um modelo de chat treinado para seguir instruções com ajuste fino supervisionado e otimização direta de preferências (DPO)
  • Em benchmarks de avaliação humana, mostrou desempenho superior ao GPT-3.5 Turbo, Claude-2.1, Gemini Pro e Llama 2 70B-chat
  • Em benchmarks como BBQ e BOLD, apresentou menos viés e um perfil de sentimento mais equilibrado
  • Graças à arquitetura esparsa, é possível esperar maior velocidade de inferência em lotes pequenos e maior throughput em lotes grandes
  • Estruturalmente, difere do GShard por substituir todos os subblocos FFN por camadas MoE, em vez de trocar apenas alguns blocos

1 comentários

 
GN⁺ 2024-01-10
Opiniões do Hacker News
  • Este artigo aborda em detalhes um modelo que já vinha sendo disponibilizado e usado havia cerca de um mês. O Mixtral 8x7B é realmente excelente e, embora tenha aproximadamente o porte de um modelo de 13B, é avaliado muito acima de modelos de tamanho parecido em rankings como https://www.reddit.com/r/LocalLLaMA/comments/1916896/llm_com...
    Ravenwolf disse que, na prática, este modelo se sai um pouco melhor do que indicam alguns benchmarks, e minha experiência é a mesma. Para um modelo desse tamanho, ele é surpreendentemente bom, e é suficiente para uso diário no Mac para chat, entrada de código e outras finalidades
    O que ficou claro depois da divulgação dos pesos é que há uma boa possibilidade de que todos os 8 especialistas tenham sido inicializados a partir do Mistral 7B e depois divergido. Por causa disso, há muitos experimentos em andamento na comunidade de LLMs locais para clonar o modelo e criar especialistas de forma barata
    Em geral, presumíamos que treinar uma rede 8x7B exigiria tanto trabalho quanto treinar oito redes 7B, mas parece que esse não foi o caso da Mistral, o que é muito interessante
    Com artigos como o Calm, da DeepMind, e experimentos que combinam camadas na hora, como o Goliath-120b, continuando a surgir, parece bem provável que vejamos melhorias arquiteturais bastante interessantes em LLMs este ano. O Calm parece apontar para o próximo passo depois de MoE, e modelos como o Goliath mostram que até uma implementação muito preguiçosa do Calm — ou seja, alternar camadas inteiras de pesos sem combinação linear de camadas — pode ter um grande efeito
    No geral, acho que em 2024, provavelmente ainda no primeiro semestre, veremos modelos poderosos rodando com bom desempenho em hardware de consumidor

    • Eu também obtive resultados muito bons com o Mixtral, e ele é realmente impressionante. O problema é que, por ser um modelo relativamente grande, é difícil rodá-lo com inferência totalmente em GPU em hardware de consumidor. Ele é diferente dos modelos 7B/13B que as pessoas costumam usar
      Até agora, a principal plataforma de consumidor capaz de executá-lo sem uma quantização alta a ponto de prejudicar a qualidade da saída parece ser um Mac recente com Apple Silicon e memória unificada, em geral com 48 GB ou mais. Dizem que também é possível com 32 GB ou 36 GB, mas não sobra muita folga
      Como coder543 apontou, uma configuração multi-GPU com VRAM total suficiente pode executá-lo sem uma quantização mais destrutiva
    • O Mixtral é bom, mas o benchmark Ravenwolf não tem significado. Parece uma pessoa aleatória tentando reinventar o MMLU em alemão, sem rigor nem consistência
      Contaminação de dataset é um problema, mas não é algo que se resolva com pessoas perguntando dicas em um subreddit e avaliando LLMs de forma folclórica
    • Estou ansioso pelos anúncios de hardware. Parece que produtos projetados intencionalmente para aceleração de LLM on-device para consumidores definitivamente estão chegando
    • Estou realmente curioso para saber quando veremos MoE baseado em modelos menores, como o Phi-2
  • O que chama atenção neste modelo é que ele tem parâmetros usados no nível de 13B, então pode rodar de forma suave e com alta qualidade em uma 3090, ao mesmo tempo em que supera o GPT-3.5 no HumanEval e também oferece contexto de 32k
    A 3090 é de categoria de consumidor e é comum em PCs gamers. Eu gostaria que desenvolvedores de jogos começassem a experimentar colocar o Mixtral distribuído localmente em jogos. Por exemplo, em um jogo como Civilization, fazer cada líder ser operado por um LLM

    • O Mixtral consegue rodar em Apple MacBook Pro M1/M2/M3 de 2020 em diante com 32 GB ou mais de RAM em uma velocidade de tokens decente. Com 16 GB de RAM também funciona até certo ponto, mas provavelmente com uma quantização parecida com a usada em uma 3090, e a diferença de quantização é perceptível
      No meu M2 Pro, a velocidade de tokens e a inteligência parecem as do GPT-3.5 Turbo. É o primeiro modelo que comecei a usar de verdade no lugar do GPT-3.5, indo além de apenas mexer por a tecnologia em si ser legal
      Um Apple M2 Pro com 32 GB de RAM fica em uma faixa de preço parecida com a de um PC gamer com uma 3090, e é outro exemplo de pessoas comuns com sistemas razoavelmente potentes conseguindo, “por acaso”, rodar um modelo comparável ao GPT-3.5
      Se você tem um dispositivo Apple que atende a essas condições e quer experimentar, o LLM Studio é open source e facilita começar: https://lmstudio.ai/
      Espero que o Mixtral e os modelos seguintes levem a muito mais hacking por hobby
    • Segundo o Google, o preço da RTX 3090 fica entre US$ 1.480 e US$ 1.680
      Com esse dinheiro dá para comprar um PC inteiro, então acho difícil acreditar que uma GPU tão cara seja “de consumidor” e “comum”
      Existe alguma GPU boa para LLMs ou outras IAs generativas que não seja absurdamente cara? Ou algum produto projetado especificamente para IA, e não para gráficos de jogos?
    • Também é importante que modelos com quantização de 4 bits possam rodar na CPU mais ou menos na velocidade de leitura. Especialmente se alguns resultados puderem ser pré-computados de forma assíncrona, isso pode abrir muitos casos de uso
    • Tenho usado modelos locais como agentes, e quem se interessa por isso precisa conhecer o recurso “grammars” do llama.cpp. Ele permite forçar a saída do modelo a seguir uma estrutura específica, o que é útil não só para garantir uma saída JSON válida, mas também para restrições mais específicas, como “se escolher x, também precisa fornecer y”
      Por exemplo, um agente que planeja à frente pode ser obrigado a responder a três itens quaisquer dos 5W, mas podendo escrever livremente dentro dos valores de string JSON, para que isso sirva depois como contexto para a escolha entre um conjunto limitado de ações. Ou o modelo pode poder pedir mais tempo para pensar no fim da resposta, mas, se não pedir, precisa especificar a próxima ação
      Pelo que vejo, isso não afeta a velocidade de geração e pode ser usado de formas muito criativas. Porém, se a saída for truncada, talvez seja necessário gerar novamente, e precisei escrever uma função separada para parar assim que um objeto JSON válido fosse fechado ou quando mais de cinco quebras de linha fossem geradas em sequência. Isso pode variar conforme o modelo
    • O uso de VRAM fica mais próximo de um modelo 47B. Mesmo que, na inferência, apenas 2 especialistas sejam usados por vez, todos os especialistas são necessários para concluir
  • Se você quiser testar este modelo, provavelmente será uma das versões que a Mozilla/jart distribuiu como Llamafile

    1. Baixe o llamafile (30,03 GB): https://huggingface.co/jartine/Mixtral-8x7B-Instruct-v0.1-ll...
    2. chmod +x mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile
    3. ./mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile
      [0] https://hacks.mozilla.org/2023/11/introducing-llamafile/
      [1] https://github.com/Mozilla-Ocho/llamafile#quickstart
  • No Mac Silicon, dá para usar com Ollama
    https://ollama.ai/
    ollama pull mixtral
    Se quiser uma interface web parecida com o ChatGPT: https://github.com/ollama-webui/ollama-webui
    docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v ollama-webui:/app/backend/data --name ollama-webui --restart always ghcr.io/ollama-webui/ollama-webui:main
    Basta acessar http://localhost:3000. O Ollama também pode ser usado no LangChain

    • Também há algumas versões com fine-tuning sem restrições. Dolphin parece ser bem popular e foi treinado mais com dados de programação. Se quiser algo que caiba em 32 GB, há https://ollama.ai/library/dolphin-mixtral:8x7b-v2.7-q3_K_M
    • No Mac M1, acho que eu não usaria via Docker, seja o Ollama ou outro host de LLM. Até onde sei, ainda não há suporte a Metal
  • Posts relacionados recentes
    Mixtral of experts - https://news.ycombinator.com/item?id=38598559 - dezembro de 2023, 300 comentários
    Mistral-8x7B-Chat - https://news.ycombinator.com/item?id=38594578 - dezembro de 2023, 69 comentários
    Mistral "Mixtral" 8x7B 32k model [magnet] - https://news.ycombinator.com/item?id=38570537 - dezembro de 2023, 239 comentários

  • Em particular, o Mixtral supera bastante o Llama 2 70B em benchmarks de matemática, geração de código e multilinguismo
    Fico curioso para ver que desempenho ele terá em matemática. Matemática sempre pareceu uma fraqueza clara, e ainda parece uma área que ninguém resolveu de forma eficaz

    • Matemática é, em certa medida, uma fraqueza inerente dos LLMs. Previsão da próxima palavra não foi feita originalmente para ser boa em matemática
      Não acho que esse problema será “resolvido” apenas com LLMs melhores; provavelmente só com modelos multimodais que tenham acesso à execução de programas e a calculadoras
  • Não li tantos artigos sobre LLMs, mas considero este um artigo bastante fraco, com poucos detalhes. Quero dizer que isso vale para o artigo em si, não para os resultados do LLM
    Se tivesse caído na minha mesa para revisão, eu provavelmente o teria devolvido só por esse motivo. Por exemplo, ele não explica direito como os especialistas foram treinados nem quais datasets foram usados
    Esse é o padrão atual da área?

    • Está ficando bem comum. As duas coisas mencionadas, ou seja, detalhes de treinamento e mistura de datasets, são basicamente a única vantagem competitiva que as empresas têm
      Como código e arquitetura são fáceis de reproduzir, qualquer um com dinheiro suficiente consegue criar um modelo concorrente “facilmente”
      A OpenAI iniciou essa tendência e a consolidou com o “relatório técnico” do GPT-4, que nem sequer especificava o número de parâmetros do modelo. Sobre datasets, a empresa já vinha sendo vaga muito antes disso
    • Sim, penso a mesma coisa. Na verdade, imagino que tenham treinado cada especialista separadamente e depois treinado todos juntos, já que a rede roteadora também precisa ser treinada
      Não sou especialista em LLMs de forma alguma, mas seria interessante saber especialmente como diferentes configurações de treinamento afetam o desempenho
  • Fico curioso para saber quando começarão a surgir modelos multimodais com acesso público
    O avanço dos modelos apenas de texto foi impressionante, mas muitos dos comportamentos “emergentes” do GPT-4 talvez não se devam apenas a MoE ou ao número de parâmetros, e sim também ao aprendizado multimodal
    Fico curioso para saber se veremos saltos semelhantes também em modelos multimodais menores

    • O LLaVA é público. Mas talvez não seja o salto que você espera: https://llava-vl.github.io/
      A Meta também publicou, sob uma licença não comercial, um modelo multimodal entre 6 modalidades: https://ai.meta.com/blog/imagebind-six-modalities-binding-ai...
    • Pelo pouco que testei, o CogVLM foi muito bom: https://github.com/THUDM/CogVLM
      Os pesos do modelo têm licença não comercial, então não parece ser open source de verdade, mas se enquadra no “acesso público” pedido
      Seria bom se alguém treinasse do zero um modelo compatível com o CogVLM sob uma licença open source
    • Pelo que ouvi de pessoas na FAANG, o Google saiu na frente da OpenAI nesse ponto, e a OpenAI está recuperando um pouco o atraso. Claro que, na parte de linguagem, a OpenAI ainda tem uma vantagem clara. É tudo informação de segunda mão
  • Fico curioso para saber se dá para executar este modelo com a ferramenta de LLMs do Simon Willison. Não encontrei menções ao Mixtral em issues ou discussões
    Além disso, há alguma forma fácil de experimentar este modelo pela linha de comando?

  • Em uma entrevista recente no podcast da A16Z, o fundador da Mistral disse que eles têm internamente vários modelos com qualidade entre o ChatGPT e o GPT-4
    Considerando os lançamentos públicos de alta qualidade até agora, parece que será uma fase interessante para LLMs open source

    • Mas não há sinais de que os modelos mais poderosos da Mistral também serão lançados como FOSS