部署实例
部署页面是两步中的第二步:你带着已经选好的机器来到这里,决定在上面运行什么。页面标题写着配置并部署,返回 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 |
| 没有选择模板 | 选一个 |
| 已有一次部署正在进行中 | 等待 —— 按钮显示为:“部署中…” |
余额这一条只看是否为零或为负。部署本身要求余额够这个实例跑一小时、再加上组织已有实例一小时的费用(见下面第 2 步),所以余额为正但不够的时候,按钮可以按,部署会在服务端以余额不足被拒绝(见下)。
按下部署之后
- 报价被锁定并重新检查。如果它已不可用,部署就在这里失败,后面的步骤都不会执行。
- 校验磁盘、模板和 SSH 密钥——包括你的组织能不能部署这个模板、这台机器能不能固定部署——然后检查你的余额。余额必须够付这个实例一小时的费用 —— GPU 加上你选的磁盘 —— 再加上组织已有的一切一小时的费用:运行中、启动中或正在创建的实例的 GPU 加磁盘,以及已停止实例的磁盘。只是大于零是不够的。组织里尚未销毁的实例也必须少于 25 个;已停止和出错的也算。
- 到这时才从那台机器上所有与之重叠的规格里扣掉你占用的份额,实例以
creating状态创建。如果这一扣让机器少了一块 GPU——另一次部署在同一刻拿走了它——部署会以报价不可用被拒绝,什么都不会留下。没人能拿走你的那几块 GPU;而只要机器还有空闲的 GPU,同一份报价依然可租。控制台会把你带到实例页面,并显示:“部署中 —— 你的实例正在启动”。 - 当实例处于过渡状态时,页面每三秒轮询一次自己,屏幕上的提示写着:“正在为你准备机器…”。
- 当实例进入
running后,连接详情就会出现 —— 现成的ssh -p <port> <user>@<host>命令,对于jupyter模板还有一个打开 JupyterLab 按钮。在此之前,该标签页会提示连接详情要等实例运行起来才出现。
计费不是在你按下按钮时开始的。计量器在工作负载报告 running 时才启动,因此配置期间不产生费用,永远没走到那一步的部署同样不产生费用。
部署失败时
| 错误 | 含义 | 控制台的处理 |
|---|---|---|
| 报价不可用 | 有人先一步占用了那个切片 | 把你送回市场 |
| 余额不足 | 余额不够付这个实例、再加上组织已有实例一小时的费用 | 用提示框显示「部署需要预先准备约 {amount} 的额度。请先充值。」——{amount} 是 API 返回的 required_micro——并刷新余额;余额为零或为负时出现充值提示 |
| 磁盘过大 | disk_gb 超过主机机器的磁盘容量 | 报告该机器的上限 |
| 模板未找到 | 模板 id 未知或已不再有效 | 在页面内显示该信息 |
| SSH 密钥未找到 | 该密钥 id 不属于你 | 在页面内显示该信息 |
| 机器不支持虚拟机 | 在无法运行虚拟机的机器上使用了 vm 模板 | 在页面内显示该信息 |
| 机器处于维护期 | 该机器已被安排下线,时间太近,来不及在上面启动 | 说明具体日期,并把你送回市场 |
| 实例数已达上限 | 组织里尚未销毁的实例已有 25 个,已停止和出错的也算 | 提示「你已达到此组织的实例数量上限。请先销毁一个。」并刷新实例列表 |
| 模板只能由拥有者部署 | 别的组织的公开模板,从带凭据的私有镜像仓库拉取 | 提示「此模板从私有镜像仓库拉取,只能由拥有它的组织部署。」 |
| 报价无法固定到机器 | 这台机器没有在机群控制平面登记(市场不会列出这种报价) | 提示「此机器目前无法部署。请换一台。」 |
模板即将推出、架构不是 x86_64、CUDA 过新这几种情况,服务端同样会拒绝(TEMPLATE_COMING_SOON、TEMPLATE_ARCH_UNSUPPORTED、TEMPLATE_CUDA_TOO_NEW),但控制台里这些模板已经变暗、无法选择,所以通常只有 API 调用会遇到。参见选择模板。
在上述任一步骤被拒绝的部署不会创建任何东西,也不会产生任何费用。而通过了这些步骤、却在配置过程中失败的部署则不同:实例行确实存在,会落到 error 并被自动清理 —— 它不会计费,因为计量器要等工作负载报告 running 才启动,而这一个从来没到过那一步。完整列表见错误码。
这个页面之后没有确认步骤。从实例进入 running 的那一刻起,你就开始按秒计费,之后停止它仍然要为磁盘付费。在你放着一个实例不管之前,请先阅读停止与销毁。