想象你是一位手艺精湛的私房菜大厨,花了几个月琢磨出一道招牌菜——一个训练好的 AI 模型。想在镇上把这道菜卖出去,你得有灶台(GPU 显卡)、有店面(服务器)、有帮工(运维),可这些你一样都没有。Replicate 就是一家“云端中央厨房”:你只需要把菜的配方、食材和火候整理好,装进一个标准的密封料理包(Docker 容器),注册进厨房。之后,厨房替你开灶台、掌勺、出餐,客人只需对着菜单(REST API)报个菜名,很快就能吃上热菜。你既不用买灶台,也不用雇帮工;菜谱升级了随时换新,生意好不好全看菜本身。这篇文章我们就走进这座中央厨房,看看送菜(部署)、进菜(模型导入)、点餐(API 调用)、试菜(A/B 测试),以及如何与你自己开的街边小店(端侧设备)配合,把生意做得又稳又省。

岗位关联

模型托管是把“最后一公里”交给平台,让你从调 GPU、管服务器中解放出来,专注模型本身的迭代——这是每位 ML 工程师从实验走向生产必须掌握的一课。

目录
  1. 可视化演示
  2. 核心概念认知
  3. 部署流程
  4. 模型导入
  5. 调用机制
  6. 版本与测试
  7. 平台生态
  8. 端侧协同
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态展示模型从源代码到Docker容器打包、GPU分配、REST API端点上线的完整部署流程,以及API服务的实时流量与延迟监控。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Replicate部署流水线 源代码 Docker容器 GPU分配 API端点 Source→Docker→GPU→API 自动托管模型部署全流程

核心概念认知

镇上开了一家“云端中央厨房”。你只需把招牌菜配方交给它,它替你备好灶台、掌勺和出餐窗口;客人不关心菜是哪位师傅烧的,只认菜单编号。这就是模型托管的本质:把模型从“我电脑里的文件夹”提升为“随时可点的公开菜品”。Replicate 就是这座中央厨房——你交容器,它交 API。

托管(Hosting)听起来高级,拆开无非三个承诺:模型放在云端不会丢(存储与版本管理);任何人有菜单就能点(REST API 网关);点单后厨房一定开火(GPU 自动调度)。它把开发者必须亲力亲为的设备采购、环境搭建、并发扩容全包了下来。这套模式常被称作“模型即服务”:厨房不卖菜谱(不提供源码)、不卖灶台(不卖服务器),只按道收钱卖做好的菜。

因为是无服务器架构,空闲时段厨房一个灶台都不开,你不需要为闲置资源买单——这是它与“包月租一台 GPU 服务器”最大的区别。那么账单到底怎么算?云厨房给出了一条非常直白的计费公式:

记住这条账单公式,就理解了托管模式最反直觉的地方:它的计费单位不是“月租”而是“火候时间”。你的菜做得足够快(推理优化得好),同样的营业额灶台费就低一大截——这正是后面端侧协同章节埋下的伏笔。

C=n×t×r\displaystyle C = n \times t \times r
这句话是云厨房的账单逻辑:你花的钱 = 卖出的份数 × 每道菜占用灶台的时间 × 每秒租金。没订单,就零账单。
  1. n——调用次数本月这道菜被客人点了多少次,每点一次就产生一笔灶台费
    n=∑i=1m1\displaystyle n = \sum_{i=1}^{m} 1
  2. t——单次GPU秒数每份菜从下锅到出餐占用灶台的时间,菜品(模型)越重耗时越长
    t=t出餐−t下单\displaystyle t = t_{\text{出餐}} - t_{\text{下单}}
  3. r——GPU秒单价厨房公布的灶台租金,型号越高级单价越贵
    r=账单总额总GPU秒数\displaystyle r = \frac{\text{账单总额}}{\text{总GPU秒数}}

部署流程

把菜送进云厨房,不是抱着一口锅去,而是要用厨房规定的标准密封盒把菜品装好——这个盒子就是 Docker 容器。菜谱(代码)、食材(模型权重)、调料包(依赖库)全封进去,厨房才敢接单,因为它能确定任何灶台上拆开都是一模一样的东西。Replicate 用一套叫 cog 的工具把“密封盒”标准化:你只需声明 Python 版本、依赖和预测入口,cog 自动帮你铺好容器骨架。

发布一个模型的完整流程只有四步:先在平台注册模型条目,相当于在厨房登记一道新菜;再用 cog 写好配置,相当于填写这道菜的食材清单;接着选择硬件规格,也就是指定用猛火灶还是普通灶;最后执行推送,把容器连同代码一起发上平台。推送后平台自动构建镜像、分配 GPU、生成可用的 API 端点,整个过程像快递柜寄件一样不需要人站在旁边等。

这个“密封盒”里到底装了什么?用一个公式来拆解:

有了统一密封盒,厨房才能放心地自动化:你不再需要手写 Dockerfile 的每个细节,cog 读懂你的菜谱,剩下的交给传送带。这也让“换新菜”变成常态——改一行配置,再推一次,就可以了。

容器=基础镜像+预测代码+模型权重\displaystyle \text{容器} = \text{基础镜像} + \text{预测代码} + \text{模型权重}
密封盒的三层结构:公共底料(系统环境)+ 做菜步骤(推理函数)+ 核心食材(训练好的参数)。三者合起来,才是一份可复现的料理包。
  1. 基础镜像操作系统与 Python 运行时,相当于厨房的公共底料,cog 负责自动拉取
    镜像=OS∪运行时\displaystyle \text{镜像} = \text{OS} \cup \text{运行时}
  2. 预测代码定义 predict 函数,输入请求、输出结果,相当于做菜的步骤口诀
    predict:x→y\displaystyle \text{predict}: x \rightarrow y
  3. 模型权重模型在训练中学到的参数,通常占据容器体积的绝大部分
    θ∈Rd×h\displaystyle \theta \in \mathbb{R}^{d \times h}

模型导入

云厨房还开了两家“供应商通道”:一家是半成品食材超市(Hugging Face),食材已洗净切好,选好下单直接送;另一家是菜谱仓库(GitHub),只有文字步骤,厨房要自己备料、自己构建。两条通道对应 Replicate 两种一键导入方式,它们的共同点是:你都只需要给一个地址,剩下的交给平台。

从 Hugging Face 导入时,平台读取仓库中的模型文件与配置,自动识别模型类型和依赖,生成 cog 配置并构建容器;从 GitHub 导入时,仓库里通常需要已经备好 cog 配置或标准入口,平台据此做相同的自动构建。自动构建的妙处在于环境可复现:Python 版本、pip 依赖、GPU 需求全部写成声明式配置,任何时刻重新构建都能得到同样的容器,彻底告别“在我电脑上能跑”的经典翻车。

把这条导入链路写成公式,就是一次“报菜名式”的部署:

两条通道的本质,是让“运菜”变成“报菜名”——你只需给出地址,中央厨房自有传送带把半成品变成灶台上的主菜。省下的时间,可以用来打磨菜本身。

API端点=deploy(build(配置, 仓库代码))\displaystyle \text{API端点} = \text{deploy}\left(\text{build}\left(\text{配置},\ \text{仓库代码}\right)\right)
从仓库地址到可调用 API 的流水线:先拿半成品食材(代码与权重),结合配置清单构建成密封盒,再把密封盒摆上灶台对外营业。
  1. 仓库代码导入的模型权重与推理脚本,是这道菜的半成品原料
    repo={权重, 代码}\displaystyle \text{repo} = \{ \text{权重},\ \text{代码} \}
  2. build 构建平台结合 cog 配置把仓库变成可运行的容器镜像
    镜像=build(cog.yaml,repo)\displaystyle \text{镜像} = \text{build}(\text{cog.yaml}, \text{repo})
  3. deploy 部署镜像上线并绑定指定 GPU 与 API 路由
    端点=deploy(镜像,GPU型号)\displaystyle \text{端点} = \text{deploy}(\text{镜像}, \text{GPU}_{\text{型号}})

调用机制

客人点餐最怕站在柜台前干等炒菜。云厨房的做法是:先下单(POST),收银台给你一个等餐号(prediction ID),后厨慢慢炒;你可以隔几秒来问一次出没出餐(轮询),也可以在等餐牌上留个铃铛(Webhook),菜一好铃响自动通知你。这个模式叫异步推理。

为什么不能同步等待?模型推理短则几秒、长则几十秒,如果调用方的请求一直挂起,一个慢任务就能堵死整条业务链路。所以 Replicate 把“创建预测”和“获取结果”拆成两步:调用方先提交请求拿到 ID,随后通过轮询或 Webhook 获取最终结果,中间完全异步。

平台内部用状态机管理每一份“订单”:刚提交是 starting,排队上灶后变成 processing,最终落到 succeeded 或 failed。无论输出是图片、文本还是数组,统一用 JSON 返回,变成可编程消费的数据。这个状态流转正是异步点餐的核心:

异步与回调,就像把“站在灶台边干等”换成“留个铃铛去干别的活”。系统的抗压能力因此大幅提升——这正是云厨房能同时接待成百上千位客人的秘诀。

st+1=next(st),s∈{starting, processing, succeeded, failed}\displaystyle s_{t+1} = \text{next}(s_t), \qquad s \in \{ \text{starting},\ \text{processing},\ \text{succeeded},\ \text{failed} \}
一份菜从下单到出餐经历四个状态,平台根据执行结果把任务一步步推进。succeeded 和 failed 是终态,到了就停,不会反复横跳。
  1. 状态集合一份菜从下单到出餐可能经历的四个状态,对应预测任务的生命周期
    s∈{s0,s1,s2,s3}\displaystyle s \in \{ s_0, s_1, s_2, s_3 \}
  2. 转移函数 next平台根据执行结果把任务推进到下一状态,炒好了才到 succeeded
    next(processing)=succeeded 或 failed\displaystyle \text{next}(\text{processing}) = \text{succeeded}\ \text{或}\ \text{failed}
  3. 终态吸收succeeded 与 failed 是吸收态,任务结束后不再流转,可直接读取输出
    output=get(s=succeeded)\displaystyle \text{output} = \text{get}(s = \text{succeeded})

版本与测试

大厨想推出新配方,不会直接改菜单,而是先在后厨小批试菜:给一部分客人上新版,看口碑再决定。云厨房为此专门开辟了“试菜通道”——版本管理与 A/B 分流。每次推送都会生成一个唯一版本标识,类似料理包的批号;默认版本是菜单上正式印着的菜,候选版本则是藏在后厨的试做菜。

分流时,你只需设定一个比例,比如 10% 的请求走候选版本,平台就像服务员一样,按比例把订单送到两个灶台。至于哪个版本胜出——看准确率、看延迟还是看用户反馈——由你自己用指标下结论。如果新版口碑崩了,一键把默认版本切回旧版,像撤销一版菜单一样简单,这就是回滚。

流量到底怎么分?平台掷一枚均匀的骰子来决定:

试菜的本质是用“小范围真实客人”做实验,而不是在自家厨房里自我感觉良好。有了这套机制,升级模型变成低风险的日常操作,而不是赌上全店口碑的豪赌。

version={v候选,q<αv默认,q≥α,q∼U(0,1)\displaystyle \text{version} = \begin{cases} v_{\text{候选}}, & q < \alpha \\ v_{\text{默认}}, & q \geq \alpha \end{cases}, \qquad q \sim U(0, 1)
每个请求进来时掷一次均匀骰子:骰子落在阈值 α 以内,这道菜让新灶台做;落在外面,还走老灶台。α 就是新版本分到的流量比例。
  1. 随机数 q每个请求进来时掷一次均匀骰子,保证分配不偏不倚
    q∼U(0,1)\displaystyle q \sim U(0, 1)
  2. 阈值 α候选版本的分流比例,α=0.1 表示约一成流量尝新
    α=候选流量总流量\displaystyle \alpha = \frac{\text{候选流量}}{\text{总流量}}
  3. 版本映射根据骰子结果把请求路由到对应版本,同一模型两条生产线并存
    q<α⇒v候选,q≥α⇒v默认\displaystyle q < \alpha \Rightarrow v_{\text{候选}}, \quad q \geq \alpha \Rightarrow v_{\text{默认}}

平台生态

走进云厨房后厨你会发现,里面不止一口灶:有猛火灶(高性能 GPU)、省火灶(经济型 GPU),租金各不相同。Replicate 的硬件选择就是一张“灶台菜单”,从 CPU 到高端 GPU 明码标价。选对灶台,菜熟得快、账单也平;选错灶台,要么等得久,要么为用不上的火力多付钱。

平台还提供 Python、JavaScript 等官方 SDK,把 REST 调用封装成几行代码,相当于给熟客发一张专用点餐卡;社区模型页则像大堂里的推荐菜单,你可以直接试用别人公开的模型,复用成熟能力。常见的应用包括图像生成、语音合成、LLM 推理和批量处理任务。

无论选哪口灶,调用方感知到的“快”都由三段组成,这也是云厨房体验优化的总抓手:

看懂这条延迟公式,“快”就变成了可以拆解优化的指标:选对灶台、错峰调用、减小传菜距离,每一项都是钱和体验之间的取舍。

T=t排队+t推理+t传输\displaystyle T = t_{\text{排队}} + t_{\text{推理}} + t_{\text{传输}}
总响应时间 = 等灶台 + 炒菜 + 传菜。高峰期排队变长、菜变重推理变长、数据量大传输变长,三者叠加才是用户真实体验。
  1. 排队时长请求在平台队列中等待 GPU 的时间,高峰期明显变长
    t排队=在途请求数并发槽位数\displaystyle t_{\text{排队}} = \frac{\text{在途请求数}}{\text{并发槽位数}}
  2. 推理时长模型在指定 GPU 上计算输出的时间,硬件越好数值越小
    t推理=t完成−t开始\displaystyle t_{\text{推理}} = t_{\text{完成}} - t_{\text{开始}}
  3. 传输时长请求与结果在网络上往返的时间,与数据体量正相关
    t传输=数据量带宽×2\displaystyle t_{\text{传输}} = \frac{\text{数据量}}{\text{带宽}} \times 2

端侧协同

聪明的老板会在小区门口开个街边小店(端侧设备):熟客的简单需求,比如“今天几号”,店里的小厨房随手就答;只有“帮我把这三千字总结成三点”这种硬菜,才打包送去中央厨房。这就是端侧部署与 Replicate 的最优组合:小模型廉价快速、保护隐私,适合高频简单任务;大模型质量高、成本高,适合低频复杂任务,两者之间用一个路由决策衔接。

路由的输入是请求的“复杂度评分”——既可以是关键词命中、输入长度、置信度阈值,也可以是一个专门训练的小型“难度分类器”。得分低走本地,得分高走云端;端侧推理失败再兜底云端,是另一个常用的容错策略。这样既保住了简单场景的秒回体验,又不用为复杂场景自建 GPU 集群。

把这条两级决策写成公式:

端侧小店与云端中央厨房,本质是一套分级响应系统:小店接得住就秒回、零成本、不出门;小店接不住才动用大厨房。这是当前小模型与端侧 AI 落地中最实用的性价比架构。

y={fedge(x),score(x)≤θfcloud(x),score(x)>θ\displaystyle y = \begin{cases} f_{\text{edge}}(x), & \text{score}(x) \leq \theta \\ f_{\text{cloud}}(x), & \text{score}(x) > \theta \end{cases}
先给请求打难度分:难度没超过阈值 θ,街边小店直接答;超过阈值,才把硬菜送去云端中央厨房。一条请求只走一条路。
  1. 复杂度评分为每个请求估算的难度分,简单问题分低、复杂问题分高
    score(x)=难度估计(x)\displaystyle \text{score}(x) = \text{难度估计}(x)
  2. 阈值 θ经验调出的分界点,决定“小店能接”还是“送大厨房”
    θ=arg⁡min⁡θ(成本(θ)+延迟(θ))\displaystyle \theta = \arg\min_{\theta}\left( \text{成本}(\theta) + \text{延迟}(\theta) \right)
  3. 双路径输出端侧无法完成任务时再进行云端兜底
    y=fedge(x), 若失败则 y=fcloud(x)\displaystyle y = f_{\text{edge}}(x),\ \text{若失败则}\ y = f_{\text{cloud}}(x)

AI 应用场景

移动端 AI 助手的云端兜底

阶段:推理部署与调用路由

解决的问题:手机上的小模型处理“设闹钟、查天气”这类简单意图又快又省,但遇到“把这份合同摘要成三句话”就力不从心。传统做法是在服务端自建 GPU 集群,成本高、扩缩容难。借助 Replicate 把大模型云端托管,端侧先试、超过复杂度阈值再走 API,按次付费。

具体案例:某笔记 App 的智能摘要功能,本地轻量模型做关键词抽取,当输入超过 500 字时自动路由到 Replicate 托管的 LLM。上线后用户平均等待从 8 秒降到 3 秒,GPU 成本下降约 60%。

内容社区的批量审核管道

阶段:异步推理与结果消费

解决的问题:图片和文本的违规检测量巨大、峰谷明显,自建机器经常闲置。利用 Replicate 的异步预测与 Webhook,可以把海量内容批量提交,审核结果主动回调到审核队列,忙时自动排队、闲时零账单。

具体案例:某 UGC 社区每天新增 50 万条评论,接入托管的审核模型后,流程变为提交预测 → 轮询状态 → Webhook 拉回结果 → 进入人工复核池,审核周期从小时级缩短到分钟级。

创业团队快速验证产品原型

阶段:模型迭代与 A/B 测试

解决的问题:起步团队预算有限,一次性买 GPU 会拖慢产品验证。Replicate 的版本管理与 A/B 分流,让团队在同一个 API 上并行比较多个模型版本的真实效果,用数据说话。

具体案例:一个 AI 头像生成小程序,把三个候选模型版本推上平台,设置 10% 流量做灰度试菜,观察一周留存率与生图成功率后,再选定默认版本全量切换。

Python 演示

python64 行
import random  class MockReplicate:    """极简版 Replicate: 容器注册、版本推送、A/B 分流、按 GPU 秒计费"""     UNIT_PRICE = 0.0002     def __init__(self):        self.kits_map = {}      # 模型容器注册表, 每个模型一份配置        self.id_count = 0       # 版本编号计数器        self.gpu_seconds = 0.0  # 累计 GPU 计费时长     def create_model(self, name):        """模拟在平台上创建模型条目, 返回模型名"""        self.kits_map[name] = {            "versions": {}, "default": None, "candidate": None, "traffic": 0.5        }        return name     def push_version(self, name, predict_fn):        """模拟 cog push: 打包并推送一个新版本, 返回版本标识"""        self.id_count += 1        vid = "sha256-kit-" + str(self.id_count)        self.kits_map[name]["versions"][vid] = predict_fn        if self.kits_map[name]["default"] is None:            self.kits_map[name]["default"] = vid        return vid     def predict(self, name, data):        """模拟 POST /v1/predictions: A/B 分流 + 状态机 + 按秒计费"""        conf = self.kits_map[name]        use_candidate = conf["candidate"] and random.random() < conf["traffic"]        vid = conf["candidate"] if use_candidate else conf["default"]        self.gpu_seconds += 0.1        status = "succeeded" if vid else "failed"        return {            "id": "pred_" + str(self.id_count),            "status": status,            "version": vid,            "output": conf["versions"][vid](data) if vid else None,        }  def main():    cloud = MockReplicate()    cloud.create_model("news-classifier")     v1 = cloud.push_version("news-classifier", lambda x: "tech" if "AI" in x else "other")    v2 = cloud.push_version("news-classifier", lambda x: "tech" if len(x) > 5 else "other")    cloud.kits_map["news-classifier"]["candidate"] = v2     print("default:", v1)    print("candidate:", v2)    for title in ["AI changes the world", "weather today", "AI for education"]:        r = cloud.predict("news-classifier", title)        print(r["status"], r["version"], r["output"])     cost = cloud.gpu_seconds * MockReplicate.UNIT_PRICE    print("GPU seconds: %.1f, cost: $%.4f" % (cloud.gpu_seconds, cost))  if __name__ == "__main__":    main()
目的:用不到 60 行模拟 Replicate 的全流程——创建模型、推送版本、A/B 分流、异步状态机与按 GPU 秒计费,让你直观看到一次托管调用的幕后账本。
  1. self.kits_map[name] = {...}每个模型一份配置,包含版本表、默认版本、候选版本和分流比例,对应平台上的模型条目。
  2. vid = "sha256-kit-" + str(self.id_count)每次推送生成唯一版本标识,对应真实平台基于镜像内容产生的版本哈希。
  3. if self.kits_map[name]["default"] is None:第一个推送的版本自动成为默认版本,后续版本必须手动指定才会上线,这是初学者最容易踩的坑。
  4. use_candidate = conf["candidate"] and random.random() < conf["traffic"]A/B 分流核心:只有设置了候选版本,才按流量比例掷骰子决定走哪条生产线路。
  5. status = "succeeded" if vid else "failed"异步状态机的简化表达,真实平台还有 starting / processing 等中间态。
  6. self.gpu_seconds += 0.1每次调用累加 GPU 时长,账单 = 总时长 × 单价,对应无服务器按量计费模型。
  7. output: conf["versions"][vid](data) if vid else None把请求交给对应版本的预测函数,输出统一放进 JSON 结构,模拟 REST API 的返回格式。

常见误区

误区我把模型上传到 Replicate,它应该能帮我继续训练、让模型变得更强吧?

正解Replicate 只做托管和推理,不做训练。你放进容器的必须是已经训练好的权重,平台负责帮你在 GPU 上把它跑起来,而不是帮你把菜学会。训练是“研究菜谱”,托管是“按谱做菜”,两码事。

为何常见:平台名字带“模型托管”,容易和提供自动机器学习的 AutoML 平台混淆,以为上传数据就能得到更好的模型。

误区不用包月、不用买服务器,那我把模型部署上去应该一直不花钱。

正解无人调用时确实零账单,但每一次调用都会按 GPU 秒计费。高频业务跑一个月,账单可能远超包月租 GPU 的费用。无服务器省的是“闲置成本”,不是“使用成本”。

为何常见:把“不买服务器”直观理解成“免费”,忽略了按量计费模式下调用越多、账单越厚的计量逻辑。

误区我推送了新版本,线上应该立刻全量跑新模型了吧?

正解推送只是生成一个新版本标识,默认版本不会自动切换。你必须手动把新版本设为默认版本,线上流量才会切过去——否则旧版本继续营业,新版本躺在后厨吃灰。

为何常见:本地开发时“最新代码即生效”的直觉被带到了生产环境,没意识到生产环境需要显式的版本切换来控制风险。

误区平台帮我分流了,应该也会自动选出更好的那个版本并切换流量吧?

正解平台只负责把订单按比例送到两个灶台,本身不做胜负判断。准确率、延迟、用户反馈等指标要你自己去统计,最终切不切换也由你决定。平台是服务员,不是品鉴师。

为何常见:把“实验平台”和“决策系统”混为一谈,以为分流之后平台会顺手完成分析和决策。

误区云端什么都跑得动,把模型都放 Replicate 上就行了,端侧部署没必要。

正解端侧在隐私保护、离线可用、零成本、低延迟上有不可替代的优势。最佳实践恰恰是分层协同:简单任务本地秒回,复杂任务云端兜底,而不是二选一。

为何常见:单点思维,只看到云端的强大算力,忽略了端侧在特定场景中“又快又省又私密”的实际收益。

面试题

Q1. Replicate 平台把开发者的模型打包后,面向调用方交付的核心接口是什么?

单选题 · easy

  • A.Docker 容器镜像
  • B.REST API 端点← 正确答案
  • C.GPU 物理主机
  • D.原生 Python 包

答案:B。云厨房交付给客人的不是灶台也不是菜谱,而是菜单编号,对应 REST API 端点。Docker 镜像是开发者交给平台的原料,GPU 是平台的资产,原生 Python 包更不是对外交付物。

Q2. 开发者在 Replicate 发布模型前,需要把模型环境封装成什么格式?

单选题 · easy

  • A.Python 脚本文件
  • B.JSON 配置文件
  • C.Docker 容器← 正确答案
  • D.Web 静态页面

答案:C。模型必须封进 Docker 容器这个“标准密封盒”,平台才能在任何机房里一模一样地复现环境。脚本、配置、静态页都不能保证依赖一致,只有容器能真正做到“拆开即用”。

Q3. 无服务器托管模式下,调用方的主要费用取决于哪一项?

单选题 · mid

  • A.模型文件大小
  • B.账号订阅月费
  • C.GPU 秒数← 正确答案
  • D.调用次数上限

答案:C。账单公式 C = n × t × r 中,最终落到费用的是 GPU 秒数与单价的乘积。模型文件大小不直接计费,订阅月费不是无服务器模式的收费方式,调用次数也是通过占用 GPU 的时长来体现的。

Q4. 关于 A/B 测试,平台完成流量分流后,谁负责分析哪个版本胜出?

单选题 · mid

  • A.平台自动调整流量
  • B.开发者自行分析← 正确答案
  • C.GPU 调度器决定
  • D.模型自身判断

答案:B。平台是服务员,只按比例上菜,不负责判断哪盘更好吃。流量分完后,准确率、延迟、留存等指标要靠开发者自己统计和分析,切换默认版本也是开发者的主动操作。

Q5. 从 Hugging Face 一键导入模型后,平台第一步会做什么?

单选题 · mid

  • A.直接开放 API
  • B.自动微调模型
  • C.构建容器镜像← 正确答案
  • D.购买 GPU 显卡

答案:C。导入仓库后,平台先进入自动构建流程,把模型和依赖打包成容器镜像,镜像就绪后才能部署出 API 端点。它不会直接开放 API,更不会做微调训练,采购 GPU 是平台自己的事。

Q6. 异步预测中,调用方拿到任务 ID 后获取最终结果的方式是?

单选题 · hard

  • A.只能同步等待
  • B.轮询或 Webhook← 正确答案
  • C.通过邮件通知
  • D.只能反复重试

答案:B。异步任务的结果获取只有两条正规路径:主动轮询状态,或让平台通过 Webhook 在完成时回调。同步等待违背异步设计初衷,邮件通知不是平台机制,反复重试也拿不到结果。

Q7. Replicate 与端侧部署协同时,典型的流量策略是什么?

单选题 · hard

  • A.全部任务发云端
  • B.全部在本地执行
  • C.按复杂度路由← 正确答案
  • D.只在夜间调用

答案:C。端侧与云端协同的标准做法是按复杂度路由:简单请求本地小模型秒回,复杂请求才上云端,端侧失败再兜底。全云或全本地都丢掉了分层架构在成本与延迟上的双重收益。

Q8. 下列哪些属于 Replicate 平台提供的核心能力?

多选题 · mid

  • A.GPU 自动调度← 正确答案
  • B.模型自动训练
  • C.A/B 流量分流← 正确答案
  • D.容器版本回滚← 正确答案

答案:ACD。GPU 自动调度、A/B 流量分流、容器版本回滚都是托管平台的看家本领。模型自动训练是训练平台的事,Replicate 只托管已经训练好的模型,绝不替你做训练。

Q9. 端侧小模型与 Replicate 云端大模型协同的常见策略有哪些?

多选题 · hard

  • A.简单任务走本地← 正确答案
  • B.复杂任务走云端← 正确答案
  • C.云端失败回本地← 正确答案
  • D.所有流量全云端

答案:ABC。分层协同的三大策略:简单任务本地处理保证速度和隐私,复杂任务上云保证质量,云端不可用时回退本地保证可用性。全流量上云会让简单请求也背上不必要的成本和延迟。

Q10. 推送一个新模型版本到 Replicate 后,会发生哪些行为?

多选题 · easy

  • A.生成唯一版本标识← 正确答案
  • B.自动接管全部流量
  • C.需手动设置默认版← 正确答案
  • D.立即删除旧版本

答案:AC。推送后平台会为镜像生成唯一版本标识,但不会自动接管流量,也不会删除旧版本。新版本必须由开发者手动设为默认版本才会全量生效,旧版本会一直保留,方便随时回滚。