openYuanrong数据系统与vLLM集成:为GLM-5模型提供多级缓存后端
openYuanrong数据系统与vLLM集成:为GLM-5模型提供多级缓存后端
前往项目官网免费下载:https://ar.openeuler.org/ar/
openYuanrong数据系统是一款以内存为中心、近计算的分布式异构多级缓存系统,专为AI训推、Agent、大数据等分布式应用打造。通过与vLLM集成,它能为GLM-5等大模型提供高性能的KV缓存存储与请求间复用能力,显著提升推理效率。
为什么选择openYuanrong作为vLLM的缓存后端?
在大模型推理场景中,KV缓存的管理直接影响系统性能。openYuanrong数据系统通过创新的多级缓存架构,完美解决了传统方案面临的三大挑战:
- 显存瓶颈:实现HBM/DRAM/SSD多级存储,将冷数据自动迁移至低成本介质
- 实例间数据共享:通过零拷贝技术实现推理实例间的KV缓存复用,降低重复计算
- 弹性扩展:支持动态扩缩容,满足流量波动下的资源高效利用
openYuanrong的核心优势
openYuanrong数据系统的逻辑架构如下,它通过多层次设计实现了高效的缓存管理:
核心优势包括:
- 多语言SDK支持:提供Python/C++接口,轻松集成到vLLM等推理框架
- 计算访问加速:支持共享内存免拷贝、NPU间开发通信和P2P数据分发
- 智能数据管理:实现读写一致性、生命周期管理和缓存淘汰策略
- 高可用集群管理:包含节点发现、健康检查、故障恢复和弹性伸缩能力
部署架构:vLLM + openYuanrong + GLM-5
在实际部署中,openYuanrong与vLLM、GLM-5模型形成协同架构,通过分布式Worker节点实现缓存资源的统一管理:
硬件环境要求
部署GLM-5模型与openYuanrong数据系统的推荐配置如下:
::::{tab-set} :::{tab-item} Atlas A3单机 | 软硬件名称 | 版本/规格 | 作用 | |-------|----|----| | Atlas 800T/I A3(单机) | 16张NPU卡(每张64G显存) | 运行异构大模型推理的物理硬件 | | vllm-ascend Docker 镜像 | "vllm-ascend:0.18.0rc1" | 提供包含vLLM、CANN等预配置的容器环境 | | GLM-5 模型 | W4A8量化版本 | 智能体应用设计的高效推理模型权重 | | openYuanrong datasystem | 最新版 | 提供KV Cache外部存储与复用的核心组件 | | etcd | 3.5 | Datasystem集群与节点管理依赖组件 | ::: :::{tab-item} Atlas A2双机 | 软硬件名称 | 版本/规格 | 作用 | |-------|----|----| | Atlas 800T/I A2(双机) | 8张NPU卡(每张64G显存) | 运行异构大模型推理的物理硬件 | | vllm-ascend Docker 镜像 | "vllm-ascend:0.18.0rc1" | 提供包含vLLM、CANN等预配置的容器环境 | | GLM-5 模型 | W4A8量化版本 | 智能体应用设计的高效推理模型权重 | | openYuanrong datasystem | 最新版 | 提供KV Cache外部存储与复用的核心组件 | | etcd | 3.5 | Datasystem集群与节点管理依赖组件 | ::: ::::
快速部署步骤
1. 准备基础环境
获取GLM-5模型权重
pip install modelscope
modelscope download --model Eco-Tech/GLM-5-w4a8 --local_dir /home/models
拉取vLLM-Ascend镜像
# A3单机
docker pull quay.io/ascend/vllm-ascend:0.18.0rc1-a3
# A2双机
docker pull quay.io/ascend/vllm-ascend:0.18.0rc1
启动容器(以A3单机为例)
export IMAGE=quay.io/ascend/vllm-ascend:0.18.0rc1-a3
export NAME=vllm-ascend
docker run --rm \
--name $NAME \
--shm-size=1g \
--net=host \
--device /dev/davinci0 \
# ... 省略其他设备映射 ...
--device /dev/davinci15 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
# ... 省略其他 volume 映射 ...
-it $IMAGE bash
2. 安装openYuanrong数据系统
在线安装
pip install openyuanrong-datasystem
验证安装
python -c "import yr.datasystem; print('Yuanrong Datasystem 安装成功')"
3. 启动openYuanrong服务
创建启动脚本 run_yr.sh:
#!/bin/bash
# 配置参数
export HOST_IP="192.168.1.100" # 替换为实际IP
export ETCD_IP="${HOST_IP}"
export WORKER_PORT=18481
export ETCD_PORT=2379
export SHM_SIZE=512000 # 500GB共享内存
export NODE_TIMEOUT=30
export NODE_DEAD_TIMEOUT=60
export LIVENESS_PATH=/workspace/liveness
# 启动etcd
etcd \
--name etcd-single \
--data-dir /tmp/etcd-data \
--listen-client-urls http://0.0.0.0:${ETCD_PORT} \
--advertise-client-urls http://${ETCD_IP}:${ETCD_PORT} \
--listen-peer-urls http://0.0.0.0:2380 \
--initial-advertise-peer-urls http://${ETCD_IP}:2380 \
--initial-cluster etcd-single=http://${ETCD_IP}:2380 \
> /tmp/etcd.log 2>&1 &
# 等待etcd启动
sleep 3
# 验证etcd
etcdctl --endpoints "${ETCD_IP}:${ETCD_PORT}" put key "value"
etcdctl --endpoints "${ETCD_IP}:${ETCD_PORT}" get key
# 启动Datasystem Worker
dscli start -w \
--worker_address ${HOST_IP}:${WORKER_PORT} \
--etcd_address ${ETCD_IP}:${ETCD_PORT} \
--shared_memory_size_mb ${SHM_SIZE} \
--node_timeout_s ${NODE_TIMEOUT} \
--node_dead_timeout_s ${NODE_DEAD_TIMEOUT} \
--liveness_check_path ${LIVENESS_PATH}
echo "Yuanrong服务启动完成"
运行启动脚本:
bash run_yr.sh
4. 启动vLLM服务(集成openYuanrong)
创建A3单机启动脚本 run_glm5_yuanrong.sh:
#!/bin/bash
# NPU性能优化配置
export HCCL_OP_EXPANSION_MODE="AIV"
export OMP_PROC_BIND=false
export OMP_NUM_THREADS=1
export HCCL_BUFFSIZE=200
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
# vLLM配置
export VLLM_USE_V1=1
export VLLM_ENGINE_READY_TIMEOUT_S=1800
export PYTHONHASHSEED=0
# Yuanrong配置
export DS_WORKER_ADDR="192.168.1.100:18481" # 替换为实际Worker地址
export DS_H2D_MEMCPY_POLICY="direct"
export DS_D2H_MEMCPY_POLICY="direct"
MODEL_PATH="/home/models/GLM-5-w4a8"
vllm serve $MODEL_PATH \
--host 0.0.0.0 \
--port 1025 \
--data-parallel-size 1 \
--tensor-parallel-size 16 \
--enable-expert-parallel \
--seed 1024 \
--served-model-name glm-5 \
--max-num-seqs 8 \
--max-model-len 200000 \
--max-num-batched-tokens 4096 \
--trust-remote-code \
--gpu-memory-utilization 0.95 \
--quantization ascend \
--enable-chunked-prefill \
--enable-prefix-caching \
--async-scheduling \
--kv-transfer-config '{
"kv_connector": "AscendStoreConnector",
"kv_role": "kv_both",
"kv_connector_extra_config": {
"lookup_rpc_port": "0",
"backend": "yuanrong"
}
}' 2>&1 | tee ./glm-5_yuanrong.log
启动服务:
bash run_glm5_yuanrong.sh
功能验证与性能监控
验证服务状态
curl http://localhost:1025/health
测试推理请求
curl -H "Content-type: application/json" \
-X POST \
-d '{
"model": "glm-5",
"messages": [{
"role": "user",
"content": "你好,请介绍一下人工智能的未来发展趋势。"
}],
"stream": false,
"temperature": 0,
"max_tokens": 200
}' http://localhost:1025/v1/chat/completions
监控缓存命中率
通过日志查看缓存命中情况:
# 查看Prefix Cache命中率
grep -E "prefix cache hit|cache hit rate" glm-5_yuanrong.log
# 查看Yuanrong外部缓存命中率
grep -E "yuanrong|YuanrongBackend|kv_cache|hit_rate" glm-5_yuanrong.log
启用Prometheus监控:
vllm serve ... --enable-metrics --metrics-port 8001
然后通过以下命令获取详细指标:
curl http://localhost:8001/metrics | grep -E "vllm_prefix_cache|external_prefix_cache"
常见问题解决
etcd连接失败
# 检查etcd健康状态
etcdctl --endpoints "${ETCD_IP}:2379" endpoint health
Worker注册失败
# 检查Worker端口是否监听
netstat -tlnp | grep 18481
内存不足(OOM)
降低并发参数:
--max-model-len 65536 \
--max-num-seqs 4
KV Cache未命中
确保PYTHONHASHSEED设置一致:
echo $PYTHONHASHSEED # 应输出0
总结
通过将openYuanrong数据系统与vLLM集成,我们为GLM-5模型构建了高效的多级缓存后端,实现了:
- 显存优化:通过多级缓存扩展存储容量,降低单卡显存压力
- 性能提升:KV缓存复用减少重复计算,降低首token延迟(TTFT)
- 弹性扩展:支持动态调整缓存资源,适应不同负载需求
详细部署指南可参考项目文档:vLLM Ascend使用OpenYuanrong作为多级缓存最佳实践
要开始使用这个强大的组合,只需:
- 克隆仓库:
git clone https://gitcode.com/openeuler/yuanrong-datasystem - 按照部署文档配置环境
- 启动服务并享受高性能的大模型推理体验!
openYuanrong数据系统与vLLM的集成,为GLM-5等大模型的高效部署提供了理想的缓存解决方案,特别适合需要处理长序列和高并发请求的智能体应用场景。
更多推荐




所有评论(0)