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. 01通过 Terraform 配置云端基础设施
  2. 02部署 GPU ECS 与 YOLO 容器
  3. 03配置网络、弹性 IP 和存储
  4. 04设置备份库与备份策略

适用场景

  1. 01在 Huawei Cloud 上搭建 YOLO 训练环境
  2. 02为 YOLO 容器配置 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

详细介绍

华为云 YOLO 训练平台

概述

在华为云端到端部署“快速构建 YOLO 视觉模型训练平台”解决方案。该平台为 YOLO 模型训练提供 GPU 加速的 ECS,并通过 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 安装指南
  • 通过环境变量配置华为云 AK/SK(HW_ACCESS_KEY、HW_SECRET_KEY);如果未设置,请提示用户手动编辑 terraform.auto.tfvars.json 并填写 AK/SK
  • 具备足够权限的 IAM 用户或 rf_admin_trust 委托——参见 IAM 策略
安全
  • 🚫 切勿在对话或输出中暴露 AK/SK
  • 🚫 切勿要求用户在聊天中输入 AK/SK
  • ✅ 优先使用 IAM 用户,而非主账号
  • ✅ 修改操作(apply、destroy)必须获得用户明确确认

核心命令

占位符值(各操作系统对应的值见“参数”):

占位符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 模板未包含 TCP 端口 8001 的入站规则,而 YOLO 训练平台 Web UI 需要该规则。部署后,提示用户通过华为云控制台手动添加 TCP 端口 8001 的入站规则(VPC > 安全组 > 添加规则)。 请使用自己的 IP 或受限 CIDR——切勿对所有地址开放。

6. 验证

参见 验证方法 和 验收标准。

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(请等待约 10 分钟,让 cloud-init 完成)
  • 验证: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. 服务可访问性 — 等待 10–15 分钟,让 cloud-init 完成,然后 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
  • 部署后预留 10–15 分钟,让 cloud-init 完成
  • 使用 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

评论

支持 Markdown