- 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
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
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
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
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
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
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?
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
Se você quiser testar este modelo, provavelmente será uma das versões que a Mozilla/jart distribuiu como Llamafile
chmod +x mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile./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 mixtralSe 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:mainBasta acessar http://localhost:3000. O Ollama também pode ser usado no LangChain
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
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?
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
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
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...
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
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?
O LM Studio também é uma opção
Na linha de comando, Ollama: https://ollama.ai/library/mixtral
Se precisar de UI, GPT4All: https://gpt4all.io/index.html, mas ele ainda não oferece suporte ao Mixtral
Dentro de apps, superagent.sh: https://github.com/homanp/superagent
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