部署实例
部署页面是两步中的第二步:你带着已经选好的机器来到这里,决定在上面运行什么。页面标题写着配置并部署,返回 GPU 列表会把你带回市场,不会丢失任何内容。
逐个字段讲解表单
报价
报价不是表单字段 —— 它从市场带过来,以摘要卡片的形式显示在顶部:GPU 型号、切片大小、每卡显存、位置和每小时价格。对这次部署来说它是固定的。要更换机器,请返回并选择另一张卡片。
有两种状态会取代表单,而不是把表单显示出来:
| 你看到的内容 | 原因 |
|---|---|
| “未选择 GPU” | 你没有经过市场就直接打开了这个页面 |
| “该报价已不存在” | 从你选中到现在,该报价已被从目录中撤下 |
模板
一组模板卡片网格,每一张都会针对你所选的机器进行检查。不兼容的模板会变暗且无法点击,第一个兼容的模板会被预先选中。选择器列出精选模板;如果你是在模板库中按启动过来的,那个模板还会被固定在最前面。参见选择模板。
磁盘
一个滑块,当前值以 GB 或 TB 显示在它上方。
| 最小值 | 10 GB |
| 最大值 | 主机机器的磁盘容量,在滑块下方显示为:“这台机器最大 N” |
| 步长 | 10 GB |
| 默认值 | 50 GB |
API 接受 10 到 20,000 之间的任意 disk_gb,但如果你申请的容量超过所选机器实际拥有的容量,请求会被拒绝,错误信息会告诉你那台机器的上限。
请慎重设定这个容量。实例停止期间你付的就是磁盘的钱,按滑块下方标注的每 GB 每月费率计算,而且之后无法调整大小 —— 想要更大的磁盘,就意味着要开一个新实例。
SSH 密钥
一个下拉框,列出你账号上的 SSH 密钥,默认为无密钥(仅网页终端)。旁边的添加密钥会打开与 SSH 密钥页面相同的对话框,因此你不用离开表单就能粘贴公钥。
SSH 密钥属于你个人,而不属于你的组织:从同一个组织部署的团队成员各自附加自己的密钥。密钥是在启动时安装的,因此事后添加的密钥不会作用到已经在运行的实例上 —— 实例页面上的连接命令,用的正是你在这里附加的密钥来认证。
保持无密钥会让实例在完全没有授权密钥的情况下启动,这意味着无法建立 ssh 会话。只有当模板给了你浏览器入口时(例如 jupyter 模板)才选它。
标签
可选的自由文本,最多 64 个字符,用于日后区分不同的实例 —— 用 llama-finetune,而不是一段 UUID 前缀。如果没有填写,控制台会退回使用实例 id 的前八个字符。标签只是元数据;容器内部看不到它。
环境变量覆盖
控制台表单没有暴露这些,API 有:POST /v1/instances 上的 env_overrides 接受一组 {key, value} 键值对,按 key 覆盖模板声明的环境变量,你就是用它在不编辑模板的情况下填入模板留空的密钥。
有三条规则:
- 对于同一个 key,你的值优先于模板的值。
- 没有值的条目会被丢弃,而不是设为空字符串。
- 平台自身的变量始终优先于你的变量。你无法覆盖
JUPYTER_TOKEN或GPU_COUNT。
请求
上面这些内容最终汇成一次调用:
{
"offer_id": "e1c0…",
"template_id": "9b74…",
"disk_gb": 100,
"label": "llama-finetune",
"ssh_key_id": "3f21…",
"env_overrides": [{ "key": "HF_TOKEN", "value": "hf_…" }]
}
label、ssh_key_id 和 env_overrides 是可选的;前三个字段不是。
按钮生效之前
只要下列任意一项成立,部署实例按钮就保持禁用:
| 条件 | 该怎么做 |
|---|---|
| 余额为零或为负 | 充值余额。管理员会在面板中看到充值余额快捷入口;成员则会被提示去找管理员 |
| 所选模板与机器不兼容 | 换一个模板,或换一块 GPU |
| 没有选择模板 | 选一个 |
| 已有一次部署正在进行中 | 等待 —— 按钮显示为:“部署中…” |
按下部署之后
- 报价被锁定并重新检查。如果它已不可用,部署就在这里失败,后面的步骤都不会执行。
- 校验磁盘、模板和 SSH 密钥,然后检查你的余额。余额必须够付这个实例一小时的费用 —— GPU 加上你选的磁盘 —— 而不只是大于零。
- 到这时才从那台机器上所有与之重叠的规格里扣掉你占用的份额,实例以
creating状态创建。没人能拿走你的那几块 GPU;而只要机器还有空闲的 GPU,同一份报价依然可租。控制台会把你带到实例页面,并显示:“部署中 —— 你的实例正在启动”。 - 当实例处于过渡状态时,页面每三秒轮询一次自己,屏幕上的提示写着:“正在配置你的机器 —— 通常不到 20 秒”。
- 当实例进入
running后,连接详情就会出现 —— 现成的ssh -p <port> <user>@<host>命令,对于jupyter模板还有一个打开 JupyterLab 按钮。在此之前,该标签页会提示连接详情要等实例运行起来才出现。
计费不是在你按下按钮时开始的。计量器在工作负载报告 running 时才启动,因此配置期间不产生费用,永远没走到那一步的部署同样不产生费用。
部署失败时
| 错误 | 含义 | 控制台的处理 |
|---|---|---|
| 报价不可用 | 有人先一步占用了那个切片 | 把你送回市场 |
| 余额不足 | 余额不够付这个实例一小时的费用 | 刷新余额并提示充值 |
| 磁盘过大 | disk_gb 超过主机机器的磁盘容量 | 报告该机器的上限 |
| 模板未找到 | 模板 id 未知或已不再有效 | 在页面内显示该信息 |
| SSH 密钥未找到 | 该密钥 id 不属于你 | 在页面内显示该信息 |
| 机器不支持虚拟机 | 在无法运行虚拟机的机器上使用了 vm 模板 | 在页面内显示该信息 |
| 机器处于维护期 | 该机器已被安排下线,时间太近,来不及在上面启动 | 说明具体日期,并把你送回市场 |
在上述任一步骤被拒绝的部署不会创建任何东西,也不会产生任何费用。而通过了这些步骤、却在配置过程中失败的部署则不同:实例行确实存在,会落到 error 并被自动清理 —— 它不会计费,因为计量器要等工作负载报告 running 才启动,而这一个从来没到过那一步。完整列表见错误码。
这个页面之后没有确认步骤。从实例进入 running 的那一刻起,你就开始按秒计费,之后停止它仍然要为磁盘付费。在你放着一个实例不管之前,请先阅读停止与销毁。