Repolode
tairov

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. 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 とは?
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 の数値は毎日更新されます。

関連プロジェクト