install-stack-flagos について
install-stack-flagosは、稼働中のGPU Dockerコンテナに5つのパッケージを依存順にインストールして検証します。マルチチップスタックを準備するチーム向けで、環境検出やミラー選択、構造化されたエラー報告を行います。
主な機能
- 01Python・glibc・GPUベンダー・ディスク情報の収集
- 02ネットワークミラーの検出
- 03互換性のあるFlagTree wheelの選択
- 04依存順に5パッケージをインストール
- 05インポート検証とパッケージ状態の報告
活用シーン
- 01デプロイ用のGPUコンテナの準備
- 02コンテナ環境とパッケージの互換性確認
- 03インストール失敗の特定と状態確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ flagos-ai/ skills --skill install-stack-flagosインストール後、Claude Code で/install-stack-flagosを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/network-mirrors.mdvendor-mappings.mdscripts/collect_env_info.pydetect_network.pyselect_flagtree_wheel.pyvalidate_packages.py詳細
マルチチップソフトウェアスタックのインストール
実行中の GPU コンテナー内に、依存関係の順序に従って 5 つのパッケージをインストールし、パッケージごとに検証を行って、構造化されたエラー情報を報告します。
スキルの構成要素
install-stack/
├── SKILL.md # This file — execution flow
├── scripts/
│ ├── detect_network.py # Probe GitHub/PyPI, return mirror config (JSON)
│ ├── collect_env_info.py # Python/glibc/arch/vendor/disk info (JSON)
│ ├── select_flagtree_wheel.py # Match vendor+python+glibc → wheel specifier (JSON)
│ └── validate_packages.py # Import-test all 5 packages, report status (JSON)
└── references/
├── vendor-mappings.md # FlagCX make flags, adaptor names, dependency chain
└── network-mirrors.md # GitHub/PyPI mirror config rules
前提条件
- PyTorch と GPU アクセスが利用可能な、実行中の Docker コンテナー(
/gpu-container-setupから) - コンテナー名とGPU ベンダーがわかっていること
単独で呼び出された場合は、コンテナー名と GPU ベンダーをユーザーに尋ねます。
/flagrelease オーケストレーターから呼び出された場合は、これらがコンテキストとして渡されます。
実行フロー
ステップ 0: コンテナーとベンダーを特定する
コンテナーが実行中であることを確認します。
docker inspect --format='{{.State.Status}}' <CONTAINER> | grep -q running
scripts/collect_env_info.py をコンテナー内にコピーして実行し、ベンダー、Python のバージョン、glibc のバージョン、アーキテクチャ、空きディスク容量を取得します。
docker cp <SKILL_DIR>/scripts/collect_env_info.py <CONTAINER>:/tmp/
docker exec <CONTAINER> python3 /tmp/collect_env_info.py
ベンダーが unknown で、ユーザーが --vendor を指定していない場合は、ユーザーに尋ねます。
ステップ 1: ネットワーク環境を検出する
scripts/detect_network.py をコンテナー内にコピーして実行します。
docker cp <SKILL_DIR>/scripts/detect_network.py <CONTAINER>:/tmp/
docker exec <CONTAINER> python3 /tmp/detect_network.py
JSON 出力を解析して、以降のすべてのコマンドで使用する GITHUB_PREFIX と PIP_INDEX を取得します。フォールバックのルールについては、references/network-mirrors.md を参照してください。
ステップ 2: ディスク容量を確認する
collect_env_info.py の出力から、空き容量が 10GB 以上あることを確認します。空き容量が足りない場合はユーザーに警告し、続行するかどうかを尋ねます。
ステップ 3: パッケージをインストールする(依存関係の順序に従う)
依存関係とインストール順序については、references/vendor-mappings.md を参照してください。
vLLM → FlagTree → FlagGems → FlagCX → vllm-plugin-FL
3.1: vLLM 0.13.0
docker exec <CONTAINER> pip install ${PIP_INDEX} vllm==0.13.0
簡易検証:
docker exec <CONTAINER> python3 -c "import vllm; assert vllm.__version__ == '0.13.0'"
ゲート: vLLM のインストールに失敗した場合 → エラーを記録し、スキルを終了します。
3.2: FlagTree(コンパイル済み wheel)
script/select_flagtree_wheel.py を実行して、適切な wheel を探します。
python3 <SKILL_DIR>/scripts/select_flagtree_wheel.py \
--vendor <VENDOR> --python <PY_VER> --glibc <GLIBC_VER>
ステータスが FOUND の場合は、標準の triton をアンインストールして wheel をインストールします。
docker exec <CONTAINER> bash -c '
python3 -m pip uninstall -y triton
python3 -m pip uninstall -y triton
python3 -m pip install <SPECIFIER> <PIP_ARGS>
'
ステータスが NOT_FOUND の場合は、不一致を記録して続行します(終了しません)。
3.3: FlagGems
docker exec <CONTAINER> bash -c "
cd /tmp && git clone ${GITHUB_PREFIX}/FlagOpen/FlagGems
cd FlagGems && pip install ${PIP_INDEX} -e .
"
失敗した場合は記録して続行します。
3.4: FlagCX(2 段階ビルド)
references/vendor-mappings.md を参照し、検出されたベンダーに対応する Make フラグと FLAGCX_ADAPTOR を確認します。
フェーズ 1: C++ ライブラリをビルドします。
docker exec <CONTAINER> bash -c "
cd /tmp && git clone ${GITHUB_PREFIX}/flagos-ai/FlagCX
cd FlagCX && git submodule update --init --recursive
make <MAKE_FLAG> -j\$(nproc)
"
フェーズ 2: PyTorch プラグインをインストールします。
docker exec <CONTAINER> bash -c "
cd /tmp/FlagCX/plugin/torch
FLAGCX_ADAPTOR=<ADAPTOR> pip install -e . --no-build-isolation
"
失敗した場合は記録して続行します。
3.5: vllm-plugin-FL
docker exec <CONTAINER> bash -c "
cd /tmp && git clone ${GITHUB_PREFIX}/flagos-ai/vllm-plugin-FL
cd vllm-plugin-FL
pip install ${PIP_INDEX} -r requirements.txt
pip install --no-build-isolation -e .
"
Iluvatar では、requirements.txt が失敗した場合、requirements_iluvatar.txt を使って再試行します。
ゲート: vllm-plugin-FL のインストールに失敗した場合 → エラーを記録し、スキルを終了します。
ステップ 4: すべてのパッケージを検証する
scripts/validate_packages.py をコンテナー内にコピーして実行します。
docker cp <SKILL_DIR>/scripts/validate_packages.py <CONTAINER>:/tmp/
docker exec <CONTAINER> python3 /tmp/validate_packages.py
これにより、5 つすべてのパッケージについて、インポートのステータス、バージョン、ゲートチェックを含む包括的な JSON レポートが生成されます。
ステップ 5: 実行時環境を設定する
FlagCX のインストールに成功した場合は、FLAGCX_PATH を永続化します。
docker exec <CONTAINER> bash -c "echo 'export FLAGCX_PATH=/tmp/FlagCX' >> ~/.bashrc"
ステップ 6: 最終レポートを作成する
すべての結果を構造化された出力にまとめます。
{
"status": "PASS | PARTIAL | FAIL",
"stage": "install-stack",
"container": "<name>",
"vendor": "<vendor>",
"network": {"github_mirror": true, "pypi_mirror": true},
"python_version": "3.11",
"glibc_version": "2.34",
"packages": {
"vllm": {"status": "PASS", "version": "0.13.0"},
"flagtree": {"status": "PASS", "version": "0.4.1+ascend3.2"},
"flaggems": {"status": "PASS", "version": "..."},
"flagcx": {"status": "PASS", "version": "0.10.0"},
"vllm_plugin_fl": {"status": "PASS", "version": "..."}
},
"flagcx_path": "/tmp/FlagCX",
"gate_passed": true,
"errors": []
}
ステータスの判定:
PASS— 5 つすべてのパッケージがインストールされ、検証に合格PARTIAL— vLLM とプラグインはインストールされたが、FlagTree/FlagGems/FlagCX の一部が失敗FAIL— vLLM またはプラグインが失敗(ゲート失敗)
エラー処理
| 失敗 | 動作 |
|---|---|
| コンテナーが実行中でない | エラーを報告して終了 |
| ネットワークに到達できない(直接接続とミラーの両方) | 報告して終了 |
| pip のインストールに失敗 | パッケージ名とエラー全文を報告して続行(ゲートの場合を除く) |
| ソースからのビルドに失敗 | コンパイラーエラーを報告して続行 |
| 一致する FlagTree wheel がない | ベンダー/Python/glibc の不一致を報告して続行 |
| インストール後のインポートに失敗 | トレースバックを報告して続行 |
| ディスクの空き容量が 10GB 未満 | ユーザーに警告し、続行するかどうかを尋ねる |
| タイムアウト(すべてのコマンド) | すべてのコマンドにタイムアウトを設定し、該当するステップを報告 |
タイムアウトのルール
| 操作 | タイムアウト |
|---|---|
| pip インストール(パッケージごと) | 300s |
| git clone | 120s |
| make(FlagCX) | 300s |
| ネットワークプローブ | 5s |
| 検証(インポート) | 30s |