LLiMa への貢献
LLiMa には、ホスト側の GenAI コンパイラと、Modalix 用の C++ ランタイムが含まれています。このランタイムは、パッケージ化された CLI/HTTP/ZMQ エントリーポイントを通じて動作します。Python は CLI オーケストレーションであり、独立した公開ランタイム API ではありません。コンパイラとランタイムの環境および依存関係は分離してください。リポジトリのチェックアウトでは、CONTRIBUTING.md がクイックスタートを提供し、AGENTS.md がエージェント固有のルールを定義します。このガイドは、詳細なコントリビューターポリシーです。
コーディングエージェントのスキル
標準のコントリビューター設定の一部として、両方のLLiMaコントリビュータースキルをインストールしてください。 これらは、デフォルトのNeat SDKプレイブックインデックスによって意図的にインストールされません。
sima-cli playbooks install \
gh:sima-neat/llima/skills/sima-contribute-to-llima
sima-cli playbooks install \
gh:sima-neat/llima/skills/sima-add-llima-model-support
一般的なコントリビューターのスキルは、リポジトリ全体にわたるコンパイラ、ランタイム、パッケージング、テスト、ドキュメント、およびスキルの変更を対象とします。モデルサポートスキルは、LLMおよびVLMアーキテクチャ、チェックポイント、テンソルレイアウト、トークナイザー、およびプロンプトコントラクトの互換性と実装ワークフローを追加します。両方をインストールした状態にして、コントリビューションがこれらの境界を越える場合に適切なガイダンスが利用できるようにします。
リポジトリマップ
| 面積 | パス | 責任 |
|---|---|---|
| 設定 | sima_lmm/config/ | LLM、VLM、およびASR の設定契約 |
| 摂取 | sima_lmm/hf/, sima_lmm/gguf/ | Hugging Face および GGUF の読み込みと変換 |
| コンパイル | sima_lmm/model/, sima_lmm/preproc/ | モデルの構成要素、量子化、グラフ、および前処理 |
| ホストツール | sima_lmm/host/ | コンパイル、デプロイ、LoRA、およびエントリポイントのベンチマークを実施します。 |
| 評価 | sima_lmm/mole/ | MoLE ワークフロー |
| ランタイム CLI | sima_lmm/devkit/ | Python CLIによるオーケストレーションとモデル管理 |
| C++ ランタイム | sima_lmm/devkit/cpp/ | モデル、トークナイザー、MLA、CLI/HTTP/ZMQの実装、および内部CLIバインディング。 |
| テスト | tests/ | コンパイラとModalixのランタイムテスト |
| パッケージ | CMakeLists.txt, cmake/, build*.sh, tools/install_*.sh | Debian、wheel、およびアーティファクトの組み立て |
| CI/キャッシュ | .github/workflows/, tools/ci/, tools/hf-safetensors/ | ビルド、テスト、およびモデルキャッシュの作成 |
| ドキュメント/スキル | README.md, docs/, skills/ | ユーザー、コントリビューター、およびプレイブックに関するガイダンス |
コンパイラのみに依存するパッケージは、sima_lmm/devkit/ または Modalix のランタイムパッケージに含めてはなりません。
開発環境
ラ ンタイムとパッケージング
サポート対象のビルド環境として、Neat SDK を使用してください。すべてのランタイムパッケージとパッケージ化されたテストを、次のコマンドでビルドします。
./build.sh --all --clean
通常のビルドでは、サブモジュールを含む必要なセットアップがすべて行われます。標準のワークフローでは、別途依存関係のブートストラップ手順を実行する必要はありません。
便利な、より限定的なビルド:
./build.sh --clean --core
./build.sh --clean --core --dev
./build.sh --clean --cli
./build.sh --no-dist
出力はbuild-deb/の下に生成され、dist/の下に配置されます。MLAの実行と、実際のllima runの検証には、Modalixが必要です。
コンパイラ開発
Model CompilerによってインストールされたPython 3.12環境を使用してください。以下の順序で検索します。
/sdk-extensions/model-compiler/sdk-add-on/model-compiler$HOME/sdk-extensions/model-compiler
source <model-compiler-venv>/bin/activate
python -m pip install -e '.[sdk_ext,tests]'
llima-compile --help
インストール済みのコンパイラパッケージと競合するような、別の環境を作成しないでください。以下の方法で、公開用のビルドプロファイルを作成してください。
./build_compiler_wheel.sh
./build_mole_package.sh
彼らは、build/ の下でホイールツールを使用し、dist/compiler/ と dist/mole/ の下で出力結果をステージングします。
WhisperとASRの開発
公開されているllima-compileワークフローは、LLMとVLMを対象としています。既存のWhisperのコンパイルには、代わりにコントリビューターが提供するユーティリティであるscripts/gen_models--openai--whisper.pyが使用されます。
python scripts/gen_models--openai--whisper.py \
--model_path /path/to/openai/whisper-small \
--output /path/to/whisper-output \
--part all
明示的なモデルパスを指定して、Model Compiler 環境で実行してください。
--part は、all、encoder、language_detect、init、single_pre、single_post、および single_cache を受け入れます。ログプローブを有効にしたデコーダーの出力をコンパイルするには、--enable_log_probe を追加します。完全なログプローブビルドを行うには、--part all --enable_log_probe を使用します。
Whisper モデルリポジトリには、エンコーダーのレイヤーごとに 1 つの ELF が含まれます。ランタイムは、エンコーダー ELF が単一にまとめられた従来のリポジトリをサポートしていません。レイヤー化されたモデルをダウンロードするか、現在の LLiMa バージョンでチェックポイントを再コンパイルしてください。
コンパイラの変更は通常、sima_lmm/config/whisper_config.py、sima_lmm/model/whisper_*.py、およびスクリプトに影響します。ランタイムの変更は、sima_lmm/devkit/cpp/whisper_* に影響します。tests/README.md に記載されているパッケージ化された C++ ASR ランタイムテストと、Modalix の代表的なオーディオを使用して検証します。これは、一般的な ASR アーキテクチャフレームワークではなく、Whisper に固有のパスです。
テスト
エラーが発生した箇所に基づいてテストを選択します。ビルドは、動作検証の代わりにはなりません。また、スキップされた必須テストケースは、合格とは みなされません。
気密試験
純粋な設定、マッピング、シリアライズ、検証、および数値演算のロジックを、モデルのダウンロードとは独立して維持します。
pytest -q <targeted-test-path>
モデルを活用したコンパイラテスト
コンパイラテストは、tests/compilation/ にあります。影響を受けるグループと、tests/README.md に記載されているマーカーを選択してください。例:
export LLIMA_HF_MODELS_PATH=/path/to/llima-model-inputs
python -P -m pytest \
-c pytest.ini \
tests/compilation/configuration \
-m compiler_config \
--strict-markers \
-vv -ra
--model-inputs-pathとLLIMA_HF_MODELS_PATHは、準備されたHugging FaceのGGUF入力ルートを選択します。CIは、tools/hf-safetensors/の下にあるマニフェストを使用します。
フィクスチャのスキップを受け入れる代わりに、必要な入力を設定します。
テストマトリックス、期待されるカウント、およびベースラインポリシーは、tests/README.mdにあります。CIの呼び出しは、.github/workflows/model-compiler-tests.ymlにあります。実行中にONNXと数値比較アーティファクトを生成し、バイナリベースラインをコミットするのではなく、それらを使用します。
ランタイムでの検証
候補となるパッケージと、ランタイムでのテストに使用する追加コンポーネントをビルドします。
./build.sh --all --clean
これはビルドは行うものの、テストを実行しません。互換性のある候補であるLLiMaと、Modalix上の内部パッケージをインストールし、追加のアーカイブを抽出し、パッケージ化されたCTestとpytestを、tests/README.mdに記載されているDevKitランタイムテストの手順に従って実行します。
モデルのロード、推論、トークン化、マルチモーダル前処理、推測デコーディング、CLI/HTTP/ZMQ、またはリソースのライフサイクルに変更があった場合に、関連するハードウェアテストを実行します。必要に応じて、代表的なスモークテストを追加してください。
llima run <model_dir> --mode cli
VLM の変更については、画像に基づいたプロンプトを含めてください。手動による簡易テストは、影響を受けるパッケージのテスト範囲を補完しますが、完全に置き換えるものではありません。
Neat Core は、インストールされた LLiMa の C++ API およびランタイムパッケージを使用します。これらのいずれか、または Core の GenAI API を介して公開され る動作が変更された場合は、公開またはキャッシュされた LLiMa のビルドではなく、候補となる sima-lmm-core および sima-lmm-dev パッケージに対して Core をビルドしてください。影響を受ける Core の GenAI C++ テストを Modalix 上で実行してください。この下流の検証は、独立したコンパイラ、ドキュメント、またはテストのみの変更には必要ありません。
パッケージの妥当性確認
変更された各プロファイルをビルドします。
./build.sh --all --clean
./build_compiler_wheel.sh
./build_mole_package.sh
パッケージ名、ファイルの所有者、インストールマニフェスト、依存関係、チェックサム、およびメタデータを検証します。