执行摘要
此 PR 在模型权重更新时添加缓存 key prefix 的刷新,确保缓存元数据更早对齐新模型版本,并新增单元测试以验证逻辑,提升系统可靠性和可维护性。
功能与动机
此前,缓存 key_prefix 只在 resume 操作时刷新。为了“使缓存 metadata 对齐新模型版本更早”,此 PR 在 update_weights 中添加了刷新,同时保留 resume 路径的刷新,解决缓存同步延迟问题。
实现拆解
- 缓存传输管理器 (
fastdeploy/cache_manager/cache_transfer_manager.py):新增 _handle_update_weights 方法,检查存储后端并调用 _update_key_prefix。
python
def _handle_update_weights(self):
if self.storage_backend_type is not None:
self._update_key_prefix()
logger.info("✅ Successfully updated cache key prefix after weight update")
else:
logger.info("💡 Cache storage backend is disabled, skip updating cache key prefix")
return True
- 引擎服务 (
fastdeploy/engine/common_engine.py):在 _control_update_weights 方法中集成缓存控制请求,使用动态生成的 request_id 如 {control_request.request_id}_update_weights。
- 单元测试:在
tests/cache_manager/test_cache_transfer_manager.py 和 tests/engine/test_common_engine.py 等文件中添加测试,覆盖正常路径(有存储后端)和跳过路径(无存储后端)。
评论区精华
fastdeploy-bot 评论指出:
“请求 ID 改进:将硬编码的 pause_transfer/resume_transfer 改为基于父请求 ID 的命名方式(如 {control_request.request_id}_pause_transfer),提升了请求追踪的可调试性。”
同时强调测试覆盖充分,无阻塞性问题。
风险与影响
风险:codecov 报告显示 patch coverage 为 52.94%,有 8 行代码缺少覆盖,可能遗漏边缘情况测试;修改核心缓存逻辑若引入 bug,可能影响缓存一致性。
影响:对用户无新 API,但缓存行为更可靠;系统层面提升缓存同步效率;团队层面新增测试助力代码质量提升。
关联脉络
与历史 PR 如 #7107(缓存存储优化)、#7125(KVCache 配置)和 #7127(缓存单元测试)相关,显示团队持续聚焦缓存管理功能的演进和测试强化。
参与讨论