Introducción
¿Has oído hablar de los pesos de Llama pero tienes poca idea al respecto? ¡No te preocupes! En esta guía definitiva, exploraremos el concepto de peso, discutiremos el contenido y la importancia de los pesos de Llama, las formas de descargarlos y el método más eficiente para adoptar LLMs — API. Así que si quieres mantenerte al día con la tendencia de los pesos de Llama, ¡sigue leyendo!
Comprendiendo el Concepto de Peso
El peso es un concepto fundamental en las redes neuronales, incluidos los modelos de lenguaje basados en transformers como Llama. Los pesos son los parámetros ajustables que el modelo aprende durante el entrenamiento, lo que le permite capturar patrones en los datos y rendir bien en tareas de procesamiento de lenguaje natural (PLN). La arquitectura transformer, que se ha convertido en el diseño predominante para los modelos de lenguaje de última generación, organiza estos pesos en una estructura específica denominada “autoatención multi-cabeza”.
En los modelos transformer, los pesos se distribuyen a lo largo de cientos de capas, cada una compuesta por numerosas neuronas o unidades. La cantidad de parámetros varía entre modelos según las elecciones de diseño arquitectónico, como el número de capas, la dimensionalidad de las representaciones de entrada y salida, y la complejidad de los mecanismos de atención. Una cantidad sustancial de parámetros permite que el modelo capture patrones y matices intrincados en el lenguaje natural, lo que facilita su sólido rendimiento en una amplia variedad de tareas de PLN, desde generación de texto hasta respuesta a preguntas y más. Es importante señalar que, si bien un mayor número de parámetros generalmente se correlaciona con una mayor capacidad del modelo, la utilización eficiente de estos parámetros mediante innovaciones arquitectónicas, estrategias de entrenamiento y técnicas de regularización es crucial para un rendimiento óptimo y una buena generalización.
¿Qué son los Pesos de Llama?
Los pesos de Llama se refieren a los parámetros utilizados en los modelos de la familia Llama. Las discusiones actuales sobre los pesos de Llama son el resultado de la decisión de Meta AI de compartir los modelos Llama 2 y 3 con el público. Esto significa que cualquiera puede ahora acceder y descargar libremente estos modelos, junto con sus tokenizadores (herramientas que dividen el texto en partes más pequeñas llamadas “tokens”, similares a una palabra) y pesos para uso personal e incluso comercial.
Diferencia entre Llama 2 y 3
Naturalmente, con la innovación de los modelos, las distintas generaciones de Llama tienen diferentes números de pesos. Para profundizar, Llama 2 ofrece modelos en tres tamaños diferentes, con aproximadamente 7 mil millones, 13 mil millones y 70 mil millones de parámetros respectivamente. De manera similar, el modelo Llama 3 está disponible en versiones con 8 mil millones y 70 mil millones de parámetros. Aunque los modelos más grandes de Meta AI tienen más de 400 mil millones de parámetros, todavía están en entrenamiento y no se han publicado.

Comprendiendo los Pesos de Llama en Código
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')
