86 lines
3.4 KiB
Markdown
86 lines
3.4 KiB
Markdown
# AutoDL GPU Runner Controller
|
||
|
||
该仓库只管理算力,不包含 Evidence Extractor 研究代码。控制流程运行在阿里云的常驻
|
||
`ces-control:host` Gitea Runner 上,并通过 AutoDL Pro API 创建和关闭 GPU 实例。
|
||
|
||
## 边界
|
||
|
||
- 本仓库:AutoDL Pro 生命周期、模型传输、GPU Runner 注册和产物回收。
|
||
- 阿里云:常驻控制 Runner、SigLIP2 权重以及训练产物的持久存储。
|
||
- AutoDL:临时 GPU 执行节点。
|
||
- 研究仓库:训练代码、配置和 Gitea Actions workflow 的唯一来源。
|
||
|
||
## Repository Secrets
|
||
|
||
在本仓库 `Settings → Actions → Secrets` 配置:
|
||
|
||
- `AUTODL_API_TOKEN`:AutoDL 控制台的开发者 Token。
|
||
- `TRAINING_RUNNER_REGISTRATION_TOKEN`:研究仓库 `Create new Runner` 页面显示的
|
||
Registration Token。
|
||
|
||
Secret 只注入阿里云控制任务,不落盘、不打印。AutoDL SSH 私钥保存在阿里云
|
||
`/root/.config/ces-controller/autodl_ed25519`,不进入 Gitea。
|
||
|
||
## 首次启动
|
||
|
||
阿里云需要先作为本仓库的常驻 Runner 注册一次,且只使用标签:
|
||
|
||
```text
|
||
ces-control:host
|
||
```
|
||
|
||
该 bootstrap 使用的是“本控制器仓库”的 Runner Registration Token,不是 Secret 中用于
|
||
AutoDL GPU Runner 的 `TRAINING_RUNNER_REGISTRATION_TOKEN`。
|
||
|
||
Runner online 后,第一次 push 只执行 `Controller CI`,不会创建实例或产生 AutoDL 费用。
|
||
|
||
## 阿里云长期部署
|
||
|
||
每次 push 到 `main` 后,`Controller CI` 会先运行测试,再把通过验证的控制器安装到:
|
||
|
||
```text
|
||
/opt/ces-controller/releases/<git-commit>/
|
||
```
|
||
|
||
`/opt/ces-controller/current` 原子指向当前版本,并安装 Terminal 入口
|
||
`/usr/local/bin/ces-controller`。管理 workflow 只执行这个长期部署的版本,并拒绝执行与当前
|
||
workflow commit 不一致的旧版本。部署目录不保存 AutoDL Token 或 Runner Registration Token;
|
||
Secret 仍只在单次 Actions 任务中注入。
|
||
|
||
通过 SSH 可以检查版本或查看帮助:
|
||
|
||
```bash
|
||
cat /opt/ces-controller/current/VERSION
|
||
ces-controller --help
|
||
```
|
||
|
||
## 管理 workflow
|
||
|
||
从 Actions 手动运行 `Manage AutoDL GPU runner`:
|
||
|
||
- `discover`:列出账号私有镜像和内置公共基础镜像,不产生 GPU 费用;
|
||
- `instances`:只读列出当前 Token 账号下的 Pro 实例;
|
||
- `provision`:创建 PRO6000、传输模型并注册 GPU Runner;必须填写镜像 UUID,并把确认值
|
||
填为 `CREATE`;
|
||
- `resume`:对失败后已关机的现有实例继续配置;同样必须填写 `CREATE`;
|
||
- `status`:查询实例和 Runner 进程状态;
|
||
- `shutdown`:回收训练产物并关闭实例,不释放系统盘。
|
||
|
||
`provision` 在创建实例前会检查 SigLIP2 的两个权重分片是否完整、AutoDL SSH 私钥权限是否为
|
||
`0600`,并预下载及校验 `gitea-runner`。任何配置失败都会尝试关闭刚创建的实例,避免继续计费。
|
||
|
||
控制器固定使用官方 `gitea-runner 3.5.0` Linux AMD64 二进制及其 SHA-256,下载和校验均在
|
||
创建付费实例之前完成。
|
||
|
||
`discover` 同时输出账号私有镜像和控制器内置的 AutoDL 公共基础镜像目录。`provision` 可以
|
||
直接接收 `image_uuid`,也可以通过 `framework`、`framework_version` 和 `cuda_version` 三项
|
||
精确选择公共镜像;没有精确匹配时会停止,不会自动降级到旧框架或旧 CUDA。
|
||
|
||
AutoDL GPU Runner 注册为 host runner,并提供:
|
||
|
||
```text
|
||
ubuntu-latest:host
|
||
ces-ci:host
|
||
gpu:host
|
||
```
|