152 lines
4.6 KiB
Markdown
152 lines
4.6 KiB
Markdown
|
|
# 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 · 之之提出 · 铸渊待接单*
|