创建模板
打开模板 → 新建模板。表单分为八个部分;只有名称和镜像是必填的,其余每个字段都有可用的默认值——模式默认为参数(args)。本页按顺序讲解它们。
基本信息
| 字段 | 接受值 | 说明 |
|---|---|---|
| 名称 | 必填,最多 80 个字符 | 在你的组织内唯一,比较时不区分大小写。重名会返回 TEMPLATE_NAME_TAKEN。两个不同的组织可以使用同一个名称。 |
| 描述 | 最多 4,000 个字符 | 显示在卡片上的一句话简介。 |
| 可见性 | 私有或公开 | 私有仅对你的组织可见。公开会让配方对全世界可读,但仍然只有你能编辑。一个组织最多有 50 个公开模板;再发布一个会返回 PUBLIC_TEMPLATE_LIMIT_REACHED。 |
镜像
| 字段 | 接受值 | 说明 |
|---|---|---|
| 镜像 | 必填,最多 500 个字符 | 不带标签的仓库引用,例如 superheat-cn-registry.cn-shanghai.cr.aliyuncs.com/superheat/base。首段若包含点号或冒号,则被视为镜像仓库主机。你填写的引用按原样拉取,所以要写一个中国大陆的主机拉得到的仓库。 |
| 标签 | 最多 200 个字符,默认为 [Automatic] | [Automatic] 会在启动时解析为所选机器的 CUDA 支持的最新 Superheat 基础镜像标签。其他任何值都按原样使用。 |
| 仓库 | 最多 500 个字符 | 可选,只决定卡片上的链接,与镜像从哪里拉取无关。单独的 owner/name 会链接到 Docker Hub,而 Docker Hub 从中国大陆的主机无法访问,所以建议填写完整 URL;完整 URL 按原样使用。 |
| 链接 | 最多 1,000 个字符 | 可选 URL——模型卡片或代码仓库——会展示在卡片上。 |
[Automatic] 只对 superheat/ 命名空间里的镜像有意义,因为它解析出来的是这些镜像发布的 cuda-<minor> 标签;对其他任何镜像,它都按 latest 拉取。其他情况请固定一个真实标签。参见基础镜像。
ACR 上有哪些镜像、哪些镜像仓库从中国大陆的主机拉不到,见Superheat CN 上的镜像。
启动
| 字段 | 接受值 | 说明 |
|---|---|---|
| 模式 | 参数(args)、SSH、Jupyter 或 VM | 决定容器内启动什么,以及发布哪些端口。参见启动模式。 |
| 参数 | 最多 8,000 个字符,仅 args 模式 | 按 shell 分词规则拆分为容器命令。 |
| Jupyter 工作目录 | 最多 1,000 个字符,仅 jupyter 模式 | 默认为 /workspace。 |
| JupyterLab | 开关,仅 jupyter 模式 | 打开时提供 JupyterLab,关闭时提供经典 notebook。 |
| 启动脚本 | 最多 65,536 个字符 | Bash 脚本,首次启动时运行一次。参见启动脚本。 |
选择 SSH 或 Jupyter 时会出现提示:“SSH 和 Jupyter 模式需要基于 Superheat 基础镜像派生的镜像(预装 sshd + JupyterLab)。普通上游镜像请使用参数模式。”
在 Superheat CN 上,这意味着镜像要写 ACR 上 superheat/ 命名空间里的引用,例如 superheat-cn-registry.cn-shanghai.cr.aliyuncs.com/superheat/base。不带 ACR 主机的 superheat/base 会部署失败;其他仓库里的镜像,即使基于基础镜像构建,也按它自己的入口点运行,应当使用 args 模式。参见Superheat CN 上的镜像。
环境
每一行由一个键、一个值和一个机密开关组成。一个模板最多 100 行。
| 字段 | 接受值 | 说明 |
|---|---|---|
| 键 | 最多 256 个字符 | 键为空的行会在保存时被丢弃。 |
| 值 | 最多 4,096 个字符,或留空 | 空值会被存储为未设置,启动时不会注入,因此很适合用作占位符,标示租用者必须提供的值。 |
| 机密 | 开关 | 对所属组织之外的所有人遮蔽该值。 |
在添加任何名为 JUPYTER_TOKEN、GPU_COUNT 或 SUPERHEAT_ACCESS_TOKEN 的条目之前,请先读环境变量——平台覆盖层总是压过模板值和租用者值。
端口
每一行由一个容器端口、一个协议、一个标签、一个公开开关和一个访问控制菜单组成。一个模板最多 32 个端口。
| 字段 | 接受值 | 说明 |
|---|---|---|
| 容器端口 | 1 到 65535 | 容器内部的端口,不是主机端口。主机端口在启动时分配。 |
| 协议 | tcp、udp、http 或 https | http 和 https 通过 TCP 传输;这个选择记录了该端口提供什么服务。 |
| 标签 | 最多 64 个字符 | 显示在模板详情页。标签为 open 时,该端口会成为控制台打开按钮的目标。 |
| 公开 | 开关,默认打开 | 记录在端口条目上。 |
| 访问控制 | 开放、访问代理、应用校验令牌 | 这个端口是否要求实例访问令牌,以及由谁来校验。列表下方的警告会指出在这个镜像或模板上行不通的选择。 |
细节和保留标签见端口。保持开放的端口,任何找到机器地址的人都能访问——参见要求访问令牌。
机器约束
约束用于筛选模板可以在哪些报价上启动。留空表示没有该项要求。部署页面会在你提交前检查它们,并说明任何不匹配之处。
| 字段 | 接受值 | 含义 |
|---|---|---|
| 最低 CUDA | 版本字符串,例如 12.4 | 机器的 CUDA 至少要达到这个版本。 |
| 最低显存(MB) | 整数,0 或更大 | 与报价中每块 GPU 的显存进行比较。 |
| 架构 | 字符串,例如 amd64 | Superheat 主机都是 x86_64;填其他值会让模板在今天无法启动。 |
| 推荐磁盘(GB) | 整数,0 或更大 | 仅作建议——不会阻止部署。 |
| 需要支持 VM 的主机 | 开关 | 把模板限制在主机能运行完整 KVM 虚拟机的报价上。 |
私有镜像仓库
只有当你的镜像位于私有镜像仓库时才需要填写。用户名最多 256 个字符,密码或令牌最多 1,000 个字符。密码加密存储,API 从不返回。参见私有镜像仓库。
Readme
自由格式的说明,最多 100,000 个字符,显示在模板详情页配方下方。使用说明应该写在这里——而不是写进描述,描述只是卡片上的一行字。
保存
创建模板会提交表单,并返回带有 id 和新生成的 hash_id 的新模板。它会出现在我的模板的顶部。
同一个调用在 API 中的写法,SUPERHEAT_API 与 SUPERHEAT_KEY 的设置方式见 API 概览:
curl -X POST "$SUPERHEAT_API/v1/templates" \
-H "Authorization: Bearer $SUPERHEAT_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "PyTorch 2.4 notebook",
"description": "JupyterLab on the CUDA 12.4 base",
"image": "superheat-cn-registry.cn-shanghai.cr.aliyuncs.com/superheat/base",
"tag": "[Automatic]",
"launch_mode": "jupyter",
"jupyter_dir": "/workspace",
"use_jupyter_lab": true,
"onstart": "pip install torch torchvision",
"env": [{"key": "HF_TOKEN", "value": "hf_...", "secret": true}],
"ports": [{"container_port": 7860, "protocol": "http", "label": "open", "public": true}],
"constraints": {"cuda_min": "12.4", "min_vram_mb": 16384},
"visibility": "private"
}'
编辑与删除
在你拥有的模板上点击编辑会打开同一个表单;API 中的对应操作是 PATCH /v1/templates/{id},它接受部分字段的请求体。编辑任何启动字段都会重新生成 hash_id,因此你以固定哈希分享出去的链接会失效——参见分享与复制。
删除会把模板从模板库中移除。已经由它部署出来的实例不受影响,继续运行。
system 模板是只读的。要改动它,先复制一份。