关于 huawei-cloud-sac-yolo
用于在 Huawei Cloud 上端到端部署 YOLO 视觉模型训练平台的技能,面向需要 GPU 训练环境的用户。它通过 Terraform 配置 GPU ECS、网络、存储和备份,并启动 YOLO 容器。
主要功能
- 01通过 Terraform 配置云端基础设施
- 02部署 GPU ECS 与 YOLO 容器
- 03配置网络、弹性 IP 和存储
- 04设置备份库与备份策略
适用场景
- 01在 Huawei Cloud 上搭建 YOLO 训练环境
- 02为 YOLO 容器配置 GPU 计算资源
- 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.jsonreferences/acceptance-criteria.mdcli-installation-guide.mdiam-policies.mdrelated-commands.mdverification-method.mdscripts/download_tf_template_file.pyextract_sac_deploy_info.pylist_tf_variables.pynormalize_tf_providers.pyplaywright_utils.pyscripts/templates/extract_sac_deploy_info.jstemplates/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 / macOS | Windows |
|---|---|---|
<python> | python3 | python |
<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 | 否 | 100 | 40-1024 GB |
data_disk_size | 否 | 500 | 40-1024 GB |
bandwidth_size | 否 | 300 | 1-300 Mbit/s |
charging_unit | 否 | month | month 或 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。
验证
按步骤验证部署结果:
- 模板提取 — 检查
<temp_dir>/sac_selected.json是否包含solution_name、price字段 - 模板下载 — 确认
<temp_dir>/yolo-workdir下存在.tf文件, 且terraform validate通过 - 变量确认 —
list_tf_variables.py输出中的敏感变量(AK/SK、密码)不为空 - 部署 —
terraform plan未显示错误;用户已确认部署;apply后,terraform state list显示所有预期资源 - 服务可访问性 — 等待 10–15 分钟,让 cloud-init 完成,然后
curl -s http://<EIP>:8001返回 200 - 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包含敏感信息 — 切勿提交到 VCSnormalize_tf_providers.py会将区域写入 tfvars;如果未设置环境变量,AK/SK 将留空,用户必须手动填写- 工具链:Playwright CLI + Python + Terraform — 不使用 KooCLI