Files
autodl-gpu-runner-controller/README.md
T
codex-bot b58cc1f5f8
Controller CI / test (push) Successful in 1s
Support safe AutoDL instance recovery
2026-10-02 15:23:33 +08:00

86 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```