
把新模型文件放进仓库,然后让推理服务重新加载,看似是一项内容更新,实际上同时涉及存储、网络、CPU 内存、GPU 显存、运行时编译、健康检查和流量路由。多实例在同一时刻发现新版本,会形成下载与加载风暴;旧版本尚未释放,新版本已开始申请资源,则可能出现短时峰值。若入口在模型真正可用前就发送请求,用户会遇到超时或版本不一致。
模型版本必须是不可变制品
版本目录或标签不能只代表一个可被覆盖的名字。平台应保存模型文件、配置、分词器、前后处理、引擎和依赖的摘要,并让发布记录指向不可变清单。节点加载前校验摘要,加载后报告实际运行版本。若同一版本名在仓库中被覆盖,缓存节点可能继续使用旧内容,问题很难复现。发布动作应创建新版本,不修改已经服务过的制品。
加载资源峰值需要提前测量
模型加载不只占 GPU 显存,还可能占用主机内存、临时磁盘、解压空间和编译缓存。切换期间旧新版本并存,峰值可能显著高于稳定值。应在目标节点记录下载、校验、初始化、设备分配和首次推理各阶段资源曲线。若资源不足,平台应在加载前拒绝或排队,而不是把正在服务的旧模型挤出后才失败。多个模型共享节点时,要为同时切换设定并发上限。
就绪状态必须绑定具体版本
服务进程健康不等于目标模型已就绪。健康接口应能回答某个模型版本是否加载成功、是否通过最小功能检查以及是否允许接收流量。入口路由也要以版本为粒度,避免 A 实例已经切换、B 实例仍在加载时把两者混在同一无版本池中。对有状态会话或流式生成,还要定义进行中的请求继续在旧版本完成,还是允许中断重试。
分批切换比全量刷新更可控
先选择少量实例加载新版本,执行真实但受控的影子或小流量验证,再逐步扩大,可以降低未知错误的影响。每一批都应检查错误率、首 Token、吞吐、显存、输出质量抽样和依赖状态。若指标超过预先定义的边界,应停止扩批并将新流量切回旧版本。回退不能依赖重新下载旧制品,旧版本和路由信息必须在窗口内保持可用。
仓库故障不应立刻拖垮在线服务
模型仓库暂时不可达时,已经加载的模型通常仍可继续服务,但平台行为要经过验证。监控系统应区分“仓库同步失败”和“在线推理失败”,避免一个后台告警触发全量实例重启。节点缓存需要管理容量与清理,不能因长期保留所有旧版本耗尽磁盘。删除模型前应先确认没有实例和回退计划引用它,并保留审计记录。
一次完整的切换演练
- 发布不可变制品清单,校验模型、配置、运行时和前后处理摘要。
- 限制同时下载与加载实例数,观察网络、仓库、CPU 内存、显存和磁盘峰值。
- 让就绪与路由绑定明确版本,验证新旧版本并存时请求不会随机漂移。
- 中断一次下载、制造一次加载失败并执行回退,确认旧版本持续可服务。
- 切换完成后核对所有实例实际版本,再按保留策略清理旧制品和缓存。
Triton 的模型仓库结构、模型控制模式和加载接口可从 NVIDIA Triton 模型管理官方文档核对。不同后端和模型格式的加载资源与兼容要求不同,必须在目标制品和生产节点上测量;本文不对特定模型的加载时间或并发能力作承诺。
WeChat
Profile