Repolode
tairov

tairov/llama2.mojo

用纯 Mojo 编写的单文件 Llama 2 推理实现,利用 SIMD 向量化与多线程加速。

Star
2,128
Fork
139
未关闭 Issue
0
最近提交
上个月

这是什么?

llama2.mojo 完全使用 Mojo 实现 Llama 架构小模型的推理,推理过程不依赖 Python 运行时。项目由作者早先的 llama2.py 移植而来,核心围绕 Mojo 的 SIMD 与向量化原语构建,并借助 parallelize 实现多线程工作池。

项目支持加载 Karpathy 的 stories 系列模型(260K 至 110M 参数)以及 TinyLlama-1.1B-Chat。运行时需要指定模型权重文件、分词器文件和提示词,并可调节温度、生成步数、随机种子及并行线程数等参数。仓库中给出了与 llama2.c、llama.cpp、llama2.py 在 Apple M1 Max 及 x86 机器上的吞吐量对比。

项目基于 MIT 协议开源,运行需要 Mojo 编译器以及提供 parallelize 功能的 MAX 包。

核心功能

  • 01以单个 Mojo 源文件实现 Llama 2 架构模型的推理。
  • 02利用 SIMD 与向量化原语加速矩阵运算。
  • 03支持可配置线程数的多线程推理。
  • 04可加载 stories 260K 至 110M 模型及 TinyLlama-1.1B-Chat。
  • 05提供提示词、温度、随机种子和生成步数等命令行参数。

适用场景

  • 研究 Transformer 前向计算如何映射到 SIMD 与多核 CPU 代码。
  • 在本地 CPU 上试验小型 Llama 模型权重。
  • 对比同一推理任务在不同语言中的实现性能。
  • 通过一个完整且可读的数值程序学习 Mojo 语言。

快速上手

  1. 1

    使用 uv 安装 Mojo 编译器和 MAX

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

    克隆仓库

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

    下载 stories15M 模型

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

    运行模型

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

使用前须知

  • 在主机上链接 Mojo 可执行文件需要 C 编译器。
  • 依赖特定版本的 Mojo 1.1 工具链和 MAX。

收录于专题

标签

常见问题

llama2.mojo 是什么?
用纯 Mojo 编写的单文件 Llama 2 推理实现,利用 SIMD 向量化与多线程加速。 llama2.mojo 完全使用 Mojo 实现 Llama 架构小模型的推理,推理过程不依赖 Python 运行时。项目由作者早先的 llama2.py 移植而来,核心围绕 Mojo 的 SIMD 与向量化原语构建,并借助 parallelize 实现多线程工作池。
llama2.mojo 可以免费使用吗?用的什么许可证?
llama2.mojo 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
llama2.mojo 还在维护吗?
半年内有更新。llama2.mojo 最近一次提交是在 2026年9月30日。
llama2.mojo 适合用来做什么?
研究 Transformer 前向计算如何映射到 SIMD 与多核 CPU 代码。 在本地 CPU 上试验小型 Llama 模型权重。 对比同一推理任务在不同语言中的实现性能。 通过一个完整且可读的数值程序学习 Mojo 语言。
llama2.mojo 怎么安装和运行?
使用 uv 安装 Mojo 编译器和 MAX: uv venv --python 3.13 ~/.modular-venv && uv pip install --python ~/.modular-venv/bin/python mojo "max[all]" 克隆仓库: git clone https://github.com/tairov/llama2.mojo.git 下载 stories15M 模型: wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin 运行模型: mojo llama2.mojo stories15M.bin -s 100 -n 256 -t 0.5 -i "Once upon a time"
在哪里获取 llama2.mojo?
源代码和安装说明在 GitHub 上:https://github.com/tairov/llama2.mojo

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目