创建模板
打开模板 → 新建模板。表单分为八个部分;只有名称和镜像是必填的,其余每个字段都有可用的默认值——模式默认为 Args。本页按顺序讲解它们。
基本信息
| 字段 | 接受值 | 说明 |
|---|---|---|
| 名称 | 必填,最多 80 个字符 | 在你的组织内唯一,比较时不区分大小写。重名会返回 TEMPLATE_NAME_TAKEN。两个不同的组织可以使用同一个名称。 |
| 描述 | 最多 4,000 个字符 | 显示在卡片上的一句话简介。 |
| 可见性 | 私有或公开 | 私有仅对你的组织可见。公开会让配方对全世界可读,但仍然只有你能编辑。 |
镜像
| 字段 | 接受值 | 说明 |
|---|---|---|
| 镜像 | 必填,最多 500 个字符 | 不带标签的仓库引用,例如 superheat/base 或 pytorch/pytorch。首段若包含点号或冒号,则被视为镜像仓库主机。 |
| 标签 | 最多 200 个字符,默认为 [Automatic] | [Automatic] 会在启动时解析为所选机器的 CUDA 支持的最新 Superheat 基础镜像标签。其他任何值都按原样使用。 |
| Repo | 最多 500 个字符 | 可选。单独的 owner/name 会链接到 Docker Hub;完整 URL 则按原样使用。 |
| 链接 | 最多 1,000 个字符 | 可选 URL——模型卡片或代码仓库——会展示在卡片上。 |
[Automatic] 只对 Superheat 基础镜像及其派生镜像有意义,因为它解析出来的是 cuda-<minor> 标签。其他情况请固定一个真实标签。参见基础镜像。
启动
| 字段 | 接受值 | 说明 |
|---|---|---|
| 模式 | Args、SSH、Jupyter 或 VM | 决定容器内启动什么,以及发布哪些端口。参见启动模式。 |
| 参数 | 最多 8,000 个字符,仅 args 模式 | 按 shell 分词规则拆分为容器命令。 |
| Jupyter 工作目录 | 最多 1,000 个字符,仅 jupyter 模式 | 默认为 /workspace。 |
| JupyterLab | 开关,仅 jupyter 模式 | 打开时提供 JupyterLab,关闭时提供经典 notebook。 |
| 启动脚本 | 最多 65,536 个字符 | Bash 脚本,首次启动时运行一次。参见启动脚本。 |
选择 SSH 或 Jupyter 时会出现提示:这两种模式都需要派生自 Superheat 基础镜像的镜像。普通上游镜像既没有 sshd 也没有 Jupyter,因此它属于 args 模式。
环境
每一行由一个键、一个值和一个私密开关组成。
| 字段 | 接受值 | 说明 |
|---|---|---|
| 键 | 最多 256 个字符 | 键为空的行会在保存时被丢弃。 |
| 值 | 任意字符串,或留空 | 空值会被存储为未设置,启动时不会注入,因此很适合用作占位符,标示租用者必须提供的值。 |
| 私密 | 开关 | 对所属组织之外的所有人遮蔽该值。 |
在添加任何名为 JUPYTER_TOKEN 或 GPU_COUNT 的条目之前,请先读环境变量——平台覆盖层总是压过模板值和租用者值。
端口
每一行由一个容器端口、一个协议、一个标签和一个公开开关组成。
| 字段 | 接受值 | 说明 |
|---|---|---|
| 容器端口 | 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/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 模板是只读的。要改动它,先复制一份。