Repolode
tairov

tairov/llama2.mojo

Inferencia de transformers al estilo de Llama 2, escrita íntegramente en Mojo en un solo archivo, con vectorización SIMD y multihilo.

Estrellas
2,128
Forks
139
Issues abiertos
0
Último commit
el mes pasado

¿Qué es?

llama2.mojo ejecuta inferencias con modelos pequeños de arquitectura Llama íntegramente en Mojo, sin usar el runtime de Python durante la inferencia. Es un port del proyecto anterior del autor, llama2.py, y se basa en las primitivas SIMD y de vectorización de Mojo, con un pool de workers basado en parallelize para la ejecución multihilo.

El proyecto carga los modelos stories de Karpathy (de 260K a 110M de parámetros) y TinyLlama-1.1B-Chat. El usuario indica un archivo de checkpoint, uno de tokenizer, un prompt y opciones de muestreo como la temperatura, el número de pasos, la seed y la cantidad de workers. El README incluye tablas de benchmarks que comparan el rendimiento con llama2.c, llama.cpp y llama2.py en equipos Apple M1 Max y x86.

El código tiene licencia MIT y requiere el compilador de Mojo y el paquete MAX, que proporciona la función parallelize.

Funciones clave

  • 01Ejecuta modelos de arquitectura Llama 2 desde un único archivo fuente de Mojo.
  • 02Usa primitivas SIMD y de vectorización para las operaciones matriciales.
  • 03Permite realizar inferencias multihilo con una cantidad configurable de workers.
  • 04Carga checkpoints stories de 260K a 110M y TinyLlama-1.1B-Chat.
  • 05Ofrece opciones de línea de comandos para indicar el prompt, la temperatura, la seed y el número de pasos.

Casos de uso

  • Estudiar cómo se implementa el paso forward de un transformer con SIMD y código para CPU multinúcleo.
  • Probar checkpoints pequeños de Llama en una CPU local.
  • Comparar implementaciones en distintos lenguajes de la misma carga de trabajo de inferencia.
  • Aprender Mojo con un programa numérico completo y fácil de leer.

Inicio rápido

  1. 1

    Instala el compilador de Mojo y MAX con uv

    uv venv --python 3.13 ~/.modular-venv && uv pip install --python ~/.modular-venv/bin/python mojo "max[all]"
  2. 2

    Clona el repositorio

    git clone https://github.com/tairov/llama2.mojo.git
  3. 3

    Descarga el modelo stories15M

    wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin
  4. 4

    Ejecuta el modelo

    mojo llama2.mojo stories15M.bin -s 100 -n 256 -t 0.5 -i "Once upon a time"

Antes de usarlo

  • Se necesita un compilador de C en el host para enlazar los ejecutables de Mojo.
  • Depende de la cadena de herramientas Mojo 1.1 y de MAX, que son específicos de cada versión.

En colecciones

Temas

Preguntas frecuentes

¿Qué es llama2.mojo?
Inferencia de transformers al estilo de Llama 2, escrita íntegramente en Mojo en un solo archivo, con vectorización SIMD y multihilo. llama2.mojo ejecuta inferencias con modelos pequeños de arquitectura Llama íntegramente en Mojo, sin usar el runtime de Python durante la inferencia. Es un port del proyecto anterior del autor, llama2.py, y se basa en las primitivas SIMD y de vectorización de Mojo, con un pool de workers basado en parallelize para la ejecución multihilo.
¿llama2.mojo es gratuito? ¿Qué licencia tiene?
llama2.mojo es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿llama2.mojo sigue mantenido?
Actualizado en los últimos 6 meses. El último commit de llama2.mojo fue el 30 sept 2026.
¿Para qué puedo usar llama2.mojo?
Estudiar cómo se implementa el paso forward de un transformer con SIMD y código para CPU multinúcleo. Probar checkpoints pequeños de Llama en una CPU local. Comparar implementaciones en distintos lenguajes de la misma carga de trabajo de inferencia. Aprender Mojo con un programa numérico completo y fácil de leer.
¿Cómo se instala llama2.mojo?
Instala el compilador de Mojo y MAX con uv: uv venv --python 3.13 ~/.modular-venv && uv pip install --python ~/.modular-venv/bin/python mojo "max[all]" Clona el repositorio: git clone https://github.com/tairov/llama2.mojo.git Descarga el modelo stories15M: wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin Ejecuta el modelo: mojo llama2.mojo stories15M.bin -s 100 -n 256 -t 0.5 -i "Once upon a time"
¿Dónde consigo llama2.mojo?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/tairov/llama2.mojo

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados