Herramienta en C++ que distribuye la inferencia de LLM entre varios dispositivos domésticos conectados por Ethernet para acelerar la generación.
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
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
Clona el repositorio
git clone https://github.com/tairov/llama2.mojo.git - 3
Descarga el modelo stories15M
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin - 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
Motor de inferencia C99 que ejecuta el modelo Kimi K3 de 2,78 billones de parámetros en una sola CPU y transmite los expertos desde el disco, sin GPU ni BLAS.
Un motor de inferencia C++ ligero e independiente para ejecutar modelos Gemma de Google en CPU.
Un fork de llama.cpp centrado en acelerar la inferencia en CPU, con más tipos de cuantización y funciones para ejecutar LLMs GGUF localmente.
Motor de inferencia de LLM de alto rendimiento de Alibaba, utilizado en varias de sus unidades de negocio para servir modelos de lenguaje grandes.
Simulador de alta fidelidad para sistemas de inferencia de LLM que permite estudiar el rendimiento, planificar despliegues y probar estrategias de planificación sin GPU.