大模型本地部署备份与故障切换
说明大模型本地部署如何备份模型文件、运行配置和部署清单,用 restic 检查并恢复仓库,再用一致的 vLLM 请求验证备用服务,并明确突发停机时的切换顺序。
大模型本地部署的备份与故障切换要同时解决“文件能恢复”和“服务能接管”:用 restic 保存并验证模型、配置与部署文件,在备用环境恢复后以相同 vLLM 请求复测,再按预案切换。私有化部署不能只看备份任务是否结束,也不能把同机副本当作容灾;仓库健康、实际恢复和备用服务响应都应成为放行检查点。
大模型本地部署先准备什么
对私有化部署,先建立恢复清单:模型文件、启动参数、容器或依赖配置、部署清单和访问控制定义都要对应明确路径。仍在变化的文件应先确定一致性边界,再决定是否暂停写入或采用存储侧快照。
备用环境必须能从独立恢复源启动;如果它与主服务共用同一存储、账号或网络,并会随主环境一起失效,就不能承担切换职责。根据 restic 的新仓库准备文档,丢失仓库密码会导致数据无法恢复,因此密码还要进入组织批准的凭据保管流程。
用 restic 建立可恢复备份
在 restic 的备份文档中,snapshot 是目录在特定时间点的内容。重复备份未变化的数据仍会生成 snapshot,但由于去重,不会向仓库添加新的数据。
创建仓库时使用 restic init。官方给出的 SFTP 仓库初始化形式如下:
restic -r sftp:user@host:/srv/restic-repo init
本地仓库的备份命令可以写成:
restic -r /srv/restic-repo --verbose backup ~/work
这里的 ~/work 是文档示例路径。你应让它指向已经整理好的模型、配置和部署文件范围,并把新写入、缓存和临时文件排除在恢复清单之外。备份任务结束后,还要记录本次 snapshot 对应的范围,避免恢复时误以为它包含全部运行状态。
恢复验证通过后再进入切换流程
restic 的仓库维护文档建议定期运行 check,检查仓库是否健康、一致:
restic check
但仓库检查通过不等于模型能够恢复。按照 restic 的恢复文档,可以把 snapshot 恢复到独立目录:
restic -r /srv/restic-repo restore 79766175 --target /tmp/restore
恢复后先对照清单检查文件,再从该目录启动临时服务。只有模型能够加载、配置能够读取、服务能够响应,才应把这份备份视为可用于切换的恢复点。
故障切换前验证备用服务
按 vLLM Benchmark CLI 文档,vllm bench 用于功能评估和回归测试,生产服务器的性能基准推荐使用 GuideLLM。ShareGPT 支持在线和离线基准,文档给出的数据文件下载命令是:
wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json
针对运行中的备用服务,可以使用以下在线基准命令:
vllm bench serve \
--backend vllm \
--model NousResearch/Hermes-3-Llama-3.1-8B \
--endpoint /v1/completions \
--dataset-name sharegpt
同一文档定义的 TTFT,是客户端发出请求到收到首个流式输出的时间;ITL 是连续流式输出之间的间隔;TPOT 按请求计算,并排除首 token。重复对同一服务运行 vllm bench serve 可能复用 prefix cache,从而抬高吞吐,因此不能把重复运行当作独立恢复验证。不同基准工具的指标名称也未统一,比较前必须先对齐定义。
如果切换的是替代模型,应重新核对模型标识、请求格式、输出解析和业务验收结果。即使入口路径相同,也不能直接视为等价服务。真正修改流量入口的命令取决于反向代理、负载均衡器或 Kubernetes 的实际配置,应按对应组件的当前官方文档预先验证。
突发停机时按什么顺序处理
先确认主服务是否停止响应,再按恢复清单处理一致性边界;随后把备份恢复到独立目录,验证模型加载和关键业务请求;通过后切换入口,观察请求错误与服务指标,最后再修复原主环境。不要同时更换模型、调整大量参数并改变流量入口,否则切换后难以判断问题来自恢复内容还是新配置。
常见出错点
- 备份任务显示完成,却没有执行
check和实际restore。 - 只保存模型文件,遗漏启动参数、部署清单或访问控制定义。
- 把同一服务上的重复基准结果当作备用环境验证结果。
- 在需要切换替代模型时,只检查 endpoint,而没有重新验证输出和业务流程。
- 删除旧 snapshot 时混淆
forget与prune;restic 的删除备份文档说明,forget --prune可以合并执行,但prune期间仓库会被锁定,其他备份无法完成。
本文步骤依据正文所链接的官方文档整理,使用前请按当前版本核对。