Introdução
Já ouviu falar de pesos Llama mas tem pouca ideia sobre isso? Não se preocupe! Neste guia definitivo, exploraremos o conceito de peso, discutiremos o conteúdo e a importância dos pesos Llama, formas de baixar pesos Llama e o método mais eficiente de adotar LLMs — API. Então, se quer acompanhar a tendência dos pesos Llama, continue lendo!
Compreendendo o Conceito de Peso
Peso é um conceito fundamental em redes neurais, incluindo modelos de linguagem baseados em transformer como Llama. Pesos são os parâmetros ajustáveis que o modelo aprende durante o treinamento, permitindo que ele capture padrões nos dados e tenha um bom desempenho em tarefas de processamento de linguagem natural (NLP). A arquitetura transformer, que se tornou o design predominante para modelos de linguagem de ponta, organiza esses pesos em uma estrutura específica chamada “multi-head self-attention”.
Em modelos transformer, os pesos são distribuídos por centenas de camadas, cada uma composta por numerosos neurônios ou unidades. O número de parâmetros varia entre os modelos dependendo das escolhas de design arquitetônico, como o número de camadas, a dimensionalidade das representações de entrada e saída, e a complexidade dos mecanismos de atenção. Uma contagem substancial de parâmetros permite que o modelo capture padrões intrincados e nuances na linguagem natural, facilitando seu forte desempenho em uma ampla gama de tarefas de NLP, desde geração de texto até resposta a perguntas e além. É importante notar que, embora um maior número de parâmetros geralmente se correlacione com maior capacidade do modelo, a utilização eficiente desses parâmetros por meio de inovações arquitetônicas, estratégias de treinamento e técnicas de regularização é crucial para desempenho e generalização ótimos.
O que são Pesos Llama?
Pesos Llama referem-se aos parâmetros utilizados em modelos da família Llama. As discussões atuais em torno dos pesos Llama são resultado da decisão da Meta AI de compartilhar os modelos Llama 2 e 3 com o público. Isso significa que qualquer pessoa agora pode acessar e baixar livremente esses modelos, juntamente com seus tokenizers (ferramentas que dividem o texto em partes menores chamadas “tokens”, semelhante a uma palavra) e pesos para uso pessoal e até comercial.
Diferença entre Llama 2 e 3
Naturalmente, com a inovação dos modelos, diferentes gerações Llama possuem diferentes números de pesos. Para elaborar melhor, o Llama 2 oferece modelos em três tamanhos diferentes, com aproximadamente 7 bilhões, 13 bilhões e 70 bilhões de parâmetros, respectivamente. Da mesma forma, o modelo Llama 3 está disponível em versões com 8 bilhões e 70 bilhões de parâmetros. Embora os maiores modelos da Meta AI tenham mais de 400 bilhões de parâmetros, eles ainda estão em treinamento e ainda não foram lançados.

Compreendendo os Pesos Llama em Códigos
Writing vocab...
[ 1/291] Writing tensor tok_embeddings.weight | size 32000 x 4096 | type UnquantizedDataType(name='F16')
[ 2/291] Writing tensor norm.weight | size 4096 | type UnquantizedDataType(name='F32')
[ 3/291] Writing tensor output.weight | size 32000 x 4096 | type UnquantizedDataType(name='F16')
[ 4/291] Writing tensor layers.0.attention.wq.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 5/291] Writing tensor layers.0.attention.wk.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 6/291] Writing tensor layers.0.attention.wv.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 7/291] Writing tensor layers.0.attention.wo.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 8/291] Writing tensor layers.0.attention_norm.weight | size 4096 | type UnquantizedDataType(name='F32')
[ 9/291] Writing tensor layers.0.feed_forward.w1.weight | size 11008 x 4096 | type UnquantizedDataType(name='F16')
[ 10/291] Writing tensor layers.0.feed_forward.w2.weight | size 4096 x 11008 | type UnquantizedDataType(name='F16')
[ 11/291] Writing tensor layers.0.feed_forward.w3.weight | size 11008 x 4096 | type UnquantizedDataType(name='F16')
[ 12/291] Writing tensor layers.0.ffn_norm.weight | size 4096 | type UnquantizedDataType(name='F32')
[ 13/291] Writing tensor layers.1.attention.wq.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 14/291] Writing tensor layers.1.attention.wk.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 15/291] Writing tensor layers.1.attention.wv.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 16/291] Writing tensor layers.1.attention.wo.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[ 17/291] Writing tensor layers.1.attention_norm.weight | size 4096 | type UnquantizedDataType(name='F32')
[ 18/291] Writing tensor layers.1.feed_forward.w1.weight | size 11008 x 4096 | type UnquantizedDataType(name='F16')
[ 19/291] Writing tensor layers.1.feed_forward.w2.weight | size 4096 x 11008 | type UnquantizedDataType(name='F16')
[ 20/291] Writing tensor layers.1.feed_forward.w3.weight | size 11008 x 4096 | type UnquantizedDataType(name='F16')
[ 21/291] Writing tensor layers.1.ffn_norm.weight | size 4096 | type UnquantizedDataType(name='F32')
...
[283/291] Writing tensor layers.31.attention.wq.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[284/291] Writing tensor layers.31.attention.wk.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[285/291] Writing tensor layers.31.attention.wv.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[286/291] Writing tensor layers.31.attention.wo.weight | size 4096 x 4096 | type UnquantizedDataType(name='F16')
[287/291] Writing tensor layers.31.attention_norm.weight | size 4096 | type UnquantizedDataType(name='F32')
[288/291] Writing tensor layers.31.feed_forward.w1.weight | size 11008 x 4096 | type UnquantizedDataType(name='F16')
[289/291] Writing tensor layers.31.feed_forward.w2.weight | size 4096 x 11008 | type UnquantizedDataType(name='F16')
[290/291] Writing tensor layers.31.feed_forward.w3.weight | size 11008 x 4096 | type UnquantizedDataType(name='F16')
[291/291] Writing tensor layers.31.ffn_norm.weight | size 4096 | type UnquantizedDataType(name='F32')
