mcpField
I
install-stack-flagos

install-stack-flagos

github.com/flagos-aiクラウド・DevOps2249 回インストール15 週間前に更新
リポジトリ

install-stack-flagos について

install-stack-flagosは、稼働中のGPU Dockerコンテナに5つのパッケージを依存順にインストールして検証します。マルチチップスタックを準備するチーム向けで、環境検出やミラー選択、構造化されたエラー報告を行います。

主な機能

  1. 01Python・glibc・GPUベンダー・ディスク情報の収集
  2. 02ネットワークミラーの検出
  3. 03互換性のあるFlagTree wheelの選択
  4. 04依存順に5パッケージをインストール
  5. 05インポート検証とパッケージ状態の報告

活用シーン

  1. 01デプロイ用のGPUコンテナの準備
  2. 02コンテナ環境とパッケージの互換性確認
  3. 03インストール失敗の特定と状態確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/flagos-ai/skills --skill install-stack-flagos

インストール後、Claude Code で/install-stack-flagosを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
network-mirrors.md
vendor-mappings.md
scripts/
collect_env_info.py
detect_network.py
select_flagtree_wheel.py
validate_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 clone120s
make(FlagCX)300s
ネットワークプローブ5s
検証(インポート)30s

コメント