複数の家庭用デバイスにLLM推論を分散し、Ethernet経由で生成を高速化するC++ツール。
tairov/llama2.mojo
SIMDベクトル化とマルチスレッドを活用した、単一ファイルの純粋なMojoによるLlama 2風Transformerの推論実装。
- スター
- 2,128
- フォーク
- 139
- 未解決の Issue
- 0
- 最終コミット
- 先月
これは何?
llama2.mojoは、小規模なLlamaアーキテクチャのモデルを、推論処理にPythonランタイムを使わず、すべてMojoで推論します。作者が以前に作成したllama2.pyの移植版で、MojoのSIMDおよびベクトル化プリミティブを中心に構成されており、parallelizeベースのワーカープールでマルチスレッド実行を行います。
Karpathyのstoriesモデル(パラメーター数26万〜1億1,000万)とTinyLlama-1.1B-Chatを読み込めます。ユーザーはチェックポイントファイル、トークナイザーファイル、プロンプト、さらにtemperature、ステップ数、seed、ワーカー数などのサンプリングオプションを指定します。READMEには、Apple M1 Maxとx86マシンでのスループットをllama2.c、llama.cpp、llama2.pyと比較したベンチマーク表があります。
コードはMITライセンスで、parallelize関数を提供するMAXパッケージとMojoコンパイラーが必要です。
主な機能
- 01Llama 2アーキテクチャのモデルを、単一のMojoソースファイルで実行します。
- 02行列演算にSIMDおよびベクトル化プリミティブを使用します。
- 03ワーカー数を設定できるマルチスレッド推論に対応しています。
- 04パラメーター数26万〜1億1,000万のstoriesチェックポイントとTinyLlama-1.1B-Chatを読み込みます。
- 05プロンプト、temperature、seed、ステップ数を指定するコマンドラインオプションを提供します。
ユースケース
- Transformerのフォワードパスを、SIMDやマルチコアCPU向けのコードにどう対応付けるかを学ぶ。
- ローカルCPUで小規模なLlamaチェックポイントを試す。
- 同じ推論処理を異なる言語で実装した場合の比較を行う。
- 読みやすく完結した数値計算プログラムを通じてMojoを学ぶ。
クイックスタート
- 1
uvでMojoコンパイラとMAXをインストールする
uv venv --python 3.13 ~/.modular-venv && uv pip install --python ~/.modular-venv/bin/python mojo "max[all]" - 2
リポジトリをクローンする
git clone https://github.com/tairov/llama2.mojo.git - 3
stories15Mモデルをダウンロードする
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin - 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 とは?
- SIMDベクトル化とマルチスレッドを活用した、単一ファイルの純粋なMojoによるLlama 2風Transformerの推論実装。 llama2.mojoは、小規模なLlamaアーキテクチャのモデルを、推論処理にPythonランタイムを使わず、すべてMojoで推論します。作者が以前に作成した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
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
GPUやBLASを使わず、ディスクからエキスパートをストリーミングして、単一CPUで2.78兆パラメータのKimi K3を動かすC99推論エンジン。
GoogleのGemmaモデルをCPUで実行する、軽量でスタンドアロンなC++推論エンジン。
CPU推論の高速化に重点を置いたllama.cppのフォーク。追加の量子化方式や、GGUF LLMをローカルで実行する機能を備えています。
Alibabaが開発し、社内の複数事業部門で大規模言語モデルの提供に利用されている、高性能なLLM推論エンジン。
GPUなしで性能調査やデプロイ計画、スケジューリング案の検証ができる、高精度なLLM推論システムシミュレーターです。