mcpField
H
huawei-cloud-sac-yolo

huawei-cloud-sac-yolo

github.com/huaweicloudクラウド・DevOps59181 回インストール2 日前に更新
リポジトリ

huawei-cloud-sac-yolo について

Huawei Cloud に YOLO 画像モデルのトレーニング基盤をデプロイするスキルです。GPU トレーニング環境が必要なユーザー向けに、Terraform で GPU ECS、ネットワーク、ストレージ、バックアップを構築し、YOLO コンテナを起動します。

主な機能

  1. 01Terraform によるクラウド基盤の構築
  2. 02GPU ECS と YOLO コンテナのデプロイ
  3. 03ネットワーク、EIP、ストレージの設定
  4. 04バックアップボールトとポリシーの設定

活用シーン

  1. 01Huawei Cloud での YOLO トレーニング環境の構築
  2. 02YOLO コンテナ向け GPU コンピューティングの確保
  3. 03プラットフォームとバックアップリソースのデプロイ・検証

インストール

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

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-sac-yolo

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

同梱ファイル

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

demo/
example-input.json
references/
acceptance-criteria.md
cli-installation-guide.md
iam-policies.md
related-commands.md
verification-method.md
scripts/
download_tf_template_file.py
extract_sac_deploy_info.py
list_tf_variables.py
normalize_tf_providers.py
playwright_utils.py
scripts/templates/
extract_sac_deploy_info.js
templates/
terraform.tfvars.template

詳細

Huawei Cloud YOLO Training Platform

概要

「Quickly Build YOLO Visual Model Training Platform」ソリューションをHuawei Cloud上にエンドツーエンドでデプロイします。このプラットフォームでは、GPUアクセラレーション対応のECSを使用してYOLOモデルをトレーニングでき、Terraformによってインフラ全体をプロビジョニングします。

アーキテクチャ: ECS(GPU、P2s/Pi2)、VPC、サブネット、セキュリティグループ(ICMP/SSH/HTTP)、EIP(300 Mbit/s)、EVS(システム用100 GB+データ用500 GB)、CBR(バックアップボールト+ポリシー)。Cloud-initがDockerをインストールし、GPU上でYOLOコンテナを起動します。

ツールチェーン: Playwright CLI(ソリューション情報の抽出)+ Python 3.8+(ヘルパースクリプト)+ Terraform 1.15.4+(宣言型デプロイ)。KooCLIは使用しません。すべてのリソース操作はTerraformを通じて行います。

前提条件

  • Python 3.8+、Playwright CLI、Terraform 1.15.4+ — CLI Installation Guideを参照してください
  • 環境変数(HW_ACCESS_KEY、HW_SECRET_KEY)で設定したHuawei CloudのAK/SK。設定されていない場合は、ユーザーにterraform.auto.tfvars.jsonを手動で編集してAK/SKを入力するよう促してください
  • 十分な権限を持つIAMユーザー、またはrf_admin_trust代理 — IAM Policiesを参照してください
セキュリティ
  • 🚫 会話や出力にAK/SKを決して表示しないでください
  • 🚫 ユーザーにチャットでAK/SKを入力するよう求めないでください
  • ✅ プライマリアカウントよりIAMユーザーを優先してください
  • ✅ 変更操作(apply、destroy)には、ユーザーの明示的な確認が必要です

コアコマンド

プレースホルダー値(OSごとの解決方法については「パラメーター」を参照してください):

プレースホルダーLinux / macOSWindows
<python>python3python
<script_dir>./scripts./scripts
<temp_dir>/tmp$env:TEMP
# 1. Extract solution info
<python> <script_dir>/extract_sac_deploy_info.py \
  --url "https://www.huaweicloud.com/solution/implementations/quickly-build-a-yolo-training-platform.html" \
  --out <temp_dir>/sac_selected.json

# 2. Download and normalize template
<python> <script_dir>/download_tf_template_file.py \
  --url "https://documentation-samples.obs.cn-north-4.myhuaweicloud.com/solution-as-code-publicbucket/solution-as-code-moudle/quickly-build-a-yolo-training-platform/quickly-build-a-yolo-training-platform.tf" \
  --out-dir <temp_dir>/yolo-workdir

<python> <script_dir>/normalize_tf_providers.py <temp_dir>/yolo-workdir \
  --region "cn-north-4"

# 3. List variables for review
<python> <script_dir>/list_tf_variables.py <temp_dir>/yolo-workdir

# 4. Deploy
terraform init
terraform plan
# ⛔ STOP — Review the plan output above. Do NOT auto-apply.
# Confirm with the user (AskUserQuestion or equivalent) before proceeding.
# Only after explicit user confirmation:
terraform apply

# 5. Add YOLO UI security group rule
# Prompt user to manually add an ingress rule for TCP port 8001
# via Huawei Cloud console (VPC > Security Groups > Add Rule).
# Use restricted CIDR — do NOT open to all addresses.
# Wait for user confirmation before continuing.

# 6. Verify
terraform state list
terraform output -json

# 7. Cleanup
terraform destroy

ワークフロー

1. ソリューション情報を抽出する
<python> <script_dir>/extract_sac_deploy_info.py \
  --url "<solution_detail_page_url>" \
  --out <temp_dir>/sac_selected.json

抽出後、結果をユーザーに表示してください:

  • ソリューション名:出力JSONのtitleフィールド
  • 推定価格:estimated_price_textフィールド
  • デプロイリンク:deploy_links配列に含まれる各textとurlを一覧表示します
  • titleまたはestimated_price_textが空の場合は、ユーザーに警告し、ソリューションページで手動確認するよう提案してください
2. テンプレートをダウンロードして正規化する
<python> <script_dir>/download_tf_template_file.py \
  --url "<tf_template_url>" \
  --out-dir <temp_dir>/yolo-workdir

<python> <script_dir>/normalize_tf_providers.py <temp_dir>/yolo-workdir \
  --region "cn-north-4"

normalize_tf_providers.pyは、リージョンなどのパラメーターを含むterraform.auto.tfvars.jsonを書き込みます。環境変数HW_ACCESS_KEY/HW_SECRET_KEYが設定されていない場合、AK/SKフィールドは空のままになります。ユーザーにファイルを手動で編集してAK/SKを入力するよう促してから、次のステップに進んでください。

3. 変数を確認する
<python> <script_dir>/list_tf_variables.py <temp_dir>/yolo-workdir

ユーザーと一緒に確認してください。機密性の高い変数が空、または強度が不十分な場合は、applyを実行しないでください。

4. デプロイする

⛔ 停止 — terraform applyを実行する前に、terraform planの出力を確認し、ユーザーの承認を得てください(AskUserQuestionまたは同等の方法を使用)。自動的にapplyを実行しないでください。ユーザーが明示的に確認した後にのみ続行してください。

5. YOLO UIのセキュリティグループルールを追加する

Terraformテンプレートには、YOLOトレーニングプラットフォームのWeb UIに必要なTCPポート8001のインバウンドルールが含まれていません。デプロイ後、Huawei Cloudコンソール(VPC > Security Groups > Add Rule)からTCPポート8001のインバウンドルールを手動で追加するよう、ユーザーに促してください。自分のIPアドレスまたは制限付きCIDRを指定し、すべてのアドレスに公開しないでください。

6. 検証する

Verification MethodとAcceptance Criteriaを参照してください。

7. クリーンアップする

パラメーター

パラメーター必須デフォルト制約
regionはいcn-north-4サポート対象のリージョンのみ
AK/SKはい—環境変数HW_ACCESS_KEY/HW_SECRET_KEY。設定されていない場合は、ユーザーにtfvars.jsonの編集を促してください
ecs_passwordはい—8~26文字。大文字・小文字・数字・特殊文字を組み合わせます
ecs_flavorいいえp2s.2xlarge.8—
system_disk_sizeいいえ10040~1024 GB
data_disk_sizeいいえ50040~1024 GB
bandwidth_sizeいいえ3001~300 Mbit/s
charging_unitいいえmonthmonthまたはyear
charging_periodいいえ1—

デプロイ後の出力

  • terraform output -json — YOLO プラットフォームの URL を含む access_instructions が含まれます
  • YOLO UI:http://<EIP>:8001(cloud-init の完了まで約 10 分かかります)
  • 確認:ssh root@<EIP> "docker ps" および ssh root@<EIP> "nvidia-smi"

出力形式

terraform output -json は、以下の主なフィールドを含む JSON を返します。

{
  "access_instructions": { "value": "http://<EIP>:8001" },
  "ecs_eip":             { "value": "<Elastic IP>" },
  "ecs_id":              { "value": "<ECS Instance ID>" },
  "vpc_id":              { "value": "<VPC ID>" }
}

すべてのスクリプト出力は JSON 形式です。extract_sac_deploy_info.py はソリューション情報の JSON を出力し、list_tf_variables.py は変数一覧の JSON を出力します。

検証

デプロイ結果を次の手順で検証します。

  1. テンプレートの抽出 — <temp_dir>/sac_selected.json に solution_name、price フィールドが含まれていることを確認します
  2. テンプレートのダウンロード — <temp_dir>/yolo-workdir の下に .tf ファイルが存在し、terraform validate が成功することを確認します
  3. 変数の確認 — list_tf_variables.py の出力で、機密変数(AK/SK、パスワード)が空でないことを確認します
  4. デプロイ — terraform plan でエラーが表示されないことを確認します。ユーザーがデプロイを承認し、apply 後に terraform state list で想定されるすべてのリソースが表示されることを確認します
  5. サービスへの接続 — cloud-init の完了まで 10~15 分待ってから、curl -s http://<EIP>:8001 が 200 を返すことを確認します
  6. GPU — ssh root@<EIP> "nvidia-smi" で GPU デバイスが表示され、ssh root@<EIP> "docker ps" で YOLO コンテナーが実行中であることを確認します

詳細については、検証方法および 受け入れ基準を参照してください。

ベストプラクティス

  • apply の前に必ず terraform plan を実行します
  • まず charging_unit=month で開始し、検証後に year に切り替えます
  • デプロイ後、cloud-init の完了まで 10~15 分待ちます
  • nvidia-smi で GPU を監視し、使用率が低い場合は ecs_flavor を調整します

参考ドキュメント

ドキュメント説明
CLI インストールガイドPython、Playwright CLI、Terraform のインストール
IAM ポリシー権限、委任設定、障害への対応
検証方法ワークフローの各手順における検証方法
受け入れ基準デプロイ全体の受け入れチェックリスト
関連コマンドTerraform、スクリプト、リモートアクセスのリファレンス

注意事項

  • 対応リージョンは cn-north-4 のみです
  • terraform.auto.tfvars.json には機密情報が含まれるため、VCS にコミットしないでください
  • normalize_tf_providers.py は tfvars にリージョンを書き込みます。環境変数が設定されていない場合、AK/SK は空のままとなるため、ユーザーが手動で入力する必要があります
  • ツールチェーン:Playwright CLI + Python + Terraform — KooCLI は使用しません

コメント