Unified Cache ManagerUCM开发教程3步扩展自定义存储后端的完整流程【免费下载链接】unified-cache-managementUnified Cache Manager推理记忆数据管理器是一款以KV Cache为中心的推理加速套件其融合了多类型缓存加速算法工具分级管理并持久化推理过程中产生的KV Cache记忆数据扩大推理上下文窗口以实现高吞吐、低时延的推理体验降低每Token推理成本。项目地址: https://gitcode.com/ModelEngine/unified-cache-managementUnified Cache ManagerUCM是一款以 KV Cache 为中心的推理加速套件它分级管理并持久化推理过程中产生的 KV Cache 记忆数据扩大推理上下文窗口实现高吞吐、低时延的推理体验。本教程将带你通过 3 步扩展 UCM 自定义存储后端理解接口契约 → 实现自定义 Store → 注册并配置生效让你的专属存储引擎如自研分布式存储、私有对象存储快速接入 UCM 缓存体系。为什么需要扩展自定义存储后端UCM 内置了 Posix、NFS、Mooncake、DS3FS、DRAM 等多种生产级存储后端覆盖本地磁盘、共享存储与分布式内存等常见场景。但在以下情况中你可能需要扩展自己的存储后端️ 需要接入自研或私有存储系统内部 KV 存储、专用硬件加速池等 希望针对特定负载定制压缩、量化、编解码策略 在快速验证新缓存算法时先用轻量实现跑通全链路先克隆代码仓库作为开发起点git clone https://gitcode.com/ModelEngine/unified-cache-management第一步读懂 UcmKVStoreBaseV1 接口——扩展自定义 Store 的唯一契约在 UCM 架构中Store 组件负责四类核心工作空间管理KV Cache 存储空间的分配与扩容持久化数据的可靠存储与恢复分级传输存储层级之间的高效数据搬运数据处理量化、压缩与编码转换无论采用哪种实现方式自定义 Store 都必须实现 ucm/store/ucmstore_v1.py 中定义的抽象基类UcmKVStoreBaseV1核心方法一览方法作用一句话理解lookup批量探测块是否存在这些块你们存过吗lookup_on_prefix从头向后扫描遇缺失即停连续命中了多少前缀块lookup_on_reverse从尾向前扫描遇命中即停混合模型如 Mamba复用优化prefetch异步预取块到高速缓存提前把热数据搬快一点load/dump启动 存储↔设备 的 KV 数据传输核心数据搬运入口wait/check等待 / 轮询异步任务完成配合返回的Task句柄使用cc_store返回底层 C 实例指针供原生代码桥接调用 提示所有传输类方法都返回Task句柄UCM 上层通过wait/check异步跟踪进度——异步设计是接口的灵魂实现时请保留该模型。第二步选择实现方式——纯 Python、混合还是纯 CUCM 提供三种扩展模式官方在 docs/source/developer-guide/extending_store.md 中给出了完整对照方式开发速度运行时性能线程支持适用场景纯 Python⭐⭐⭐⭐⭐⭐⭐⭐❌原型验证、算法验证Python/C 混合⭐⭐⭐⭐⭐⭐⭐⭐⚠️复杂逻辑 性能关键路径纯 C推荐⭐⭐⭐⭐⭐⭐⭐⭐✅生产级、高吞吐场景方式一纯 Python 快速原型继承基类并实现抽象方法参考现成实现 ucm/store/mooncakestore/mooncake_connector.pyfrom ucm.store.ucmstore_v1 import UcmKVStoreBaseV1 class UcmCustomStore(UcmKVStoreBaseV1): def __init__(self, config): super().__init__(config) def lookup(self, block_ids): # 返回 [bool]顺序与入参一致 ... def load(self, block_ids, shard_index, dst_tensor): ... # 返回 Task 句柄⚠️性能提醒Python 实现受 GIL 限制仅建议用于开发调试生产环境请升级 C 实现。方式二/三C 高性能实现纯 C 方案是生产级推荐路径核心优势零抽象开销、完整的内存与线程控制且可与内置 Store栈式叠加如你的后端 内置 Cache 层。开发时只需做四件事完整接口规格见 ucm/store/ucmstore_v1.h定义类继承StoreV1实现Setup / Lookup / Load / Dump / Wait / Check等接口暴露工厂函数extern C StoreV1* MakeCustomStore()CMake 编译以SHARED方式产出libcustomstore.so链接接口库storeintf可参考 ucm/store/CMakeLists.txt 与 ucm/store/mooncakestore/CMakeLists.txt编写单元测试参考 ucm/store/test/ 中的用例组织最佳实践速记✅ 用 UCM 智能指针与内存池管理内存避免裸new/delete✅ 用返回UC::Status代替抛异常保证异常安全✅ 实现必须线程安全UCM 会多线程并发调用✅ 热路径标注UCM_PROFILER_SCOPE便于性能剖析第三步注册并配置——3 行代码让自定义 Store 生效实现完成后注册是临门一脚。根据实现方式选择对应入口Python 实现注册到连接工厂仿照 ucm/store/factory_v1.py 中的注册方式延迟加载你的模块UcmConnectorFactoryV1.register_connector( UcmCustomStore, ucm.store.custom.connector, UcmCustomStore )C 实现注册到 Pipeline 构建器仿照 ucm/store/pipeline/connector.py 中的模式写一个 builder 把.so压入流水线def _custom_pipeline_builder(config, pipeline): pipeline.Stack(Custom, custom/libcustomstore.so, config) UcmPipelineStoreBuilder.register(Custom, _custom_pipeline_builder)支持多存储级联叠加——例如在自研后端前再叠一层内置压缩层pipeline.Stack(Compress, ...)→pipeline.Stack(Custom, ...)。YAML 配置激活在 UCM 配置文件中指定连接器即可生效完整示例见 examples/ucm_config_example.yamlucm_connectors: - ucm_connector_name: UcmPipelineStore ucm_connector_config: store_pipeline: Custom # 你在构建器中注册的名字 # ... 其余自定义配置项将配置路径通过kv_connector_extra_config{UCM_CONFIG_FILE: .../your_config.yaml}传给推理引擎自定义存储后端即刻接入。扩展前的自检清单提交前逐项确认避免返工已通读 ucm/store/ucmstore_v1.py 与 ucm/store/ucmstore_v1.h明确了支持的数据类型与压缩算法估算了目标 QPS 与延迟 SLO据此选定扩展方式已准备单元测试参考 ucm/store/test/e2e/已用桩实现stub验证注册链路可用参考资源资源路径官方扩展指南docs/source/developer-guide/extending_store.mdPython 接口定义ucm/store/ucmstore_v1.pyC 接口定义ucm/store/ucmstore_v1.h连接工厂注册入口ucm/store/factory_v1.pyPipeline 构建器ucm/store/pipeline/connector.py混合实现参考ucm/store/pcstore/pcstore_connector_v1.py配置示例examples/ucm_config_example.yaml构建脚本scripts/build_cuda.sh、scripts/build_ascend.sh完成存储后端扩展后你的自定义 Store 就能像内置后端一样参与 KV Cache 分级缓存为推理引擎带来更低的首 Token 时延与更优的每 Token 成本。动手试试3 步走完全流程吧【免费下载链接】unified-cache-managementUnified Cache Manager推理记忆数据管理器是一款以KV Cache为中心的推理加速套件其融合了多类型缓存加速算法工具分级管理并持久化推理过程中产生的KV Cache记忆数据扩大推理上下文窗口以实现高吞吐、低时延的推理体验降低每Token推理成本。项目地址: https://gitcode.com/ModelEngine/unified-cache-management创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?