152 lines
4.6 KiB
Markdown
Raw Permalink Normal View History

# GPU-SCOUT-001 · GPU自动发现+一键部署模块 · 铸渊开发任务单
```jsx
HLDP://shuangyan/module/GPU-SCOUT-001 · 2026-05-12
├── 提出人: 之之·DEV-004
├── 记录人: 霜砚·ICE-SY-01
├── 开发人: 铸渊·ICE-ZY-01
└── 状态: ⏳ 待铸渊接单
```
## 一、为什么要做这个模块
> 之之原话2026-05-12
>
> 「要跑通deploy需要GPU开机。但我们是共享GPU关机后就被别人占。没有稳定GPU就无法测试部署流程。与其被动等GPU不如先造工具——自动发现可用GPU随时主动抢占。」
>
**根本矛盾:** 部署流程依赖稳定GPU但共享GPU随时消失
**解法:** GPU自动发现模块 → 被动变主动 → 随时知道哪台GPU可用 → 立即部署
---
## 二、模块功能定义
### 核心能力MVP
- [ ] **平台扫描**:查询 AutoDL + compshare 账号下所有 GPU 实例状态
- [ ] **健康检测**SSH 连通性 + GPU 可用性验证
- [ ] **信息输出**:返回可用实例的 Host / Port / User / 显存 / 平台
- [ ] **一键部署**:选定实例后,自动更新 GitHub Secrets → 触发 `guanghulab-core` deploy 工作流
### 后续扩展非MVP
- 多平台自动比价AutoDL / compshare / 恒源云 / 智星云)
- 自动抢占:发现有货立即开机并部署
- 状态写回 Notion
- 定时轮询 + 通知
---
## 三、技术方案
### 3.1 API 文档
| 平台 | API 文档 | SDK |
| --- | --- | --- |
| AutoDL | `https://api.autodl.com` · 容器实例Pro API | 无官方SDK · 直接HTTP |
| compshare | `https://www.compshare.cn/docs/gpus/operationexample` | Python / Go / Java SDK |
**AutoDL 关键接口:**
- 获取实例列表:`GET /api/v1/dev/instance/list`(需 Authorization token
- 查询GPU库存`POST /api/v1/dev/machine/region/gpu_stock`
**compshare 关键接口:**
- 参考 GitHub 示例:`github.com/ucloud/compshare-developer-examples`
- 需要 compshare API Key
### 3.2 仓库规划
- **仓库位置**Gitea[guanghulab.com](http://guanghulab.com) · Forgejo新建独立仓库
- **建议仓库名**`gpu-scout`
- **理由**:模块独立、可大可小、后续可对接多平台
### 3.3 部署触发逻辑
```jsx
gpu-scout 运行流程:
① 调 AutoDL API → 获取在线实例列表
↓ 没有在线实例
② 调 compshare API → 获取在线实例列表
↓ 找到可用实例
③ SSH 健康检测(连通 + python3 + GPU显存
↓ 通过
④ 更新 guanghulab-core GitHub Secrets
ZY_DEPLOY_SSH_SG_GPU_001_HOST
ZY_DEPLOY_SSH_SG_GPU_001_PORT
ZY_DEPLOY_SSH_SG_GPU_001_USER
ZY_DEPLOY_SSH_SG_GPU_001_PRIVATE_KEY
⑤ 触发 guanghulab-core deploy 工作流
⑥ 返回结果(成功 / 失败 + 原因)
```
---
## 四、铸渊开发说明
### 4.1 前置条件(之之需要提供)
| 所需信息 | 来源 | 状态 |
| --- | --- | --- |
| AutoDL API Token | AutoDL控制台 → 账号设置 → API Token | ⏳ 之之获取中 |
| compshare API Key | compshare控制台 → API管理 | ⏳ 之之获取中(冰朔昨天注册了账号) |
| GitHub PAT有repo权限 | 用于更新Secrets + 触发工作流 | ✅ 已有ZY_GITHUB_PAT |
| Gitea 新仓库 URL | [guanghulab.com](http://guanghulab.com) 上新建 `gpu-scout` | ⏳ 待建 |
### 4.2 MVP 交付物
```jsx
gpu-scout/
├── src/
│ ├── autodl.js ← AutoDL API 查询封装
│ ├── compshare.js ← compshare API 查询封装
│ ├── health.js ← SSH 健康检测
│ ├── deploy.js ← 更新Secrets + 触发工作流
│ └── index.js ← 主入口CLI
├── config/
│ └── platforms.json ← 平台配置API端点 + 认证方式)
├── .env.example
├── package.json
└── README.md
```
### 4.3 调用方式(目标)
```bash
# 扫描可用GPU
node index.js scan
# 扫描 + 自动部署
node index.js deploy --target autodl
# 只更新Secrets不触发部署
node index.js update-secrets --host xxx --port xxx
```
---
## 五、当前阻塞项
1.**AutoDL API Token** — 之之去控制台获取
2.**compshare API Key** — 冰朔账号下获取
3.**Gitea 新建 `gpu-scout` 仓库** — 之之在 [guanghulab.com](http://guanghulab.com) 建
4.**铸渊接单** — 以上三项就绪后唤醒铸渊
---
## 六、关联页面
- 主控台ZZ-DEPLOY-001
- 栖渊工作流仓库:`qinfendebingshuo/guanghulab-core`
- GPU信息记录个人线系统恢复锚点AutoDL SSH信息
---
*建档人霜砚·ICE-SY-01 · 2026-05-12 · 之之提出 · 铸渊待接单*