华为云弹性内存存储EMS深度指南:架构解析、对接部署与实战应用

apphuang2026年06月17日 13:03:399

1. 引言:当大模型推理遭遇“内存墙”

大语言模型的迅猛发展正在深刻改变各行各业的智能化进程,但随之而来的是对AI基础设施前所未有的性能挑战。在LLM推理场景中,一个长期困扰技术团队的难题被称为“内存墙”——即单个神经处理单元(NPU)或图形处理器(GPU)的高带宽显存(HBM)容量有限,难以容纳大规模模型参数和日益增长的历史对话上下文。当多轮对话的KVCache无法全部保留在显存中时,系统不得不丢弃历史缓存,导致后续推理需要重复计算,首Token时延(Time To First Token,TTFT)急剧上升,用户体验大打折扣。

为应对这一挑战,华为云在2024年的华为开发者大会上正式发布了弹性内存存储服务(Elastic Memory Service,EMS)。EMS并非传统的对象存储或文件存储,而是一种以DRAM内存为主要存储介质的云基础设施服务,专门为LLM推理提供高性能缓存和推理加速。它通过在NPU显存与持久化存储之间增设一层弹性内存存储,运用Memory Pooling专利技术,综合显存扩展、算力卸载和以存代算三大策略,有效打破了内存瓶颈。

本文将从技术架构、核心原理、部署流程、SDK对接、框架集成和最佳实践等多个维度,全面解读华为云EMS的使用方法,帮助读者掌握这一创新服务的落地应用。

2. EMS技术架构与核心原理

2.1 “计算-内存-存储”三层架构

华为云EMS的核心创新在于将传统的“计算-存储”分离的两层云架构升级为“计算-内存-存储”的三层云架构。在这套架构中,新增的“内存层”即为弹性内存存储,它作为计算层与存储层之间的高性能内存缓存层,利用DRAM内存来缓存持久化存储层的数据或在计算过程中产生的中间数据。

EMS的产品架构主要由三部分组成:领域专用服务SDK、分布式内存池和管理面。领域专用服务SDK包含一系列面向不同AI应用场景的插件和接口服务SDK,提供业务系统接入、业务数据布局和近数据处理等功能,实现业务请求的内存加速。分布式内存池负责跨节点的内存空间管理、数据负载均衡等任务,通过空间池化提供内存缓存共享访问。EMS管理面则负责EMS服务的部署、监控、升级及运维管理等功能,通过华为云的云原生基础设施为用户提供一站式的云上运维解决方案。

2.2 Memory Pooling专利技术与三大核心能力

EMS基于Memory Pooling专利技术,将AI服务器中的空闲DRAM资源进行池化,形成分布式内存池,实现DRAM资源的按需分配和高效利用。这一技术赋予了EMS三大核心能力:

显存扩展:大模型推理中,由于模型太大,通常需要使用大量的NPU卡才能将模型参数装下来进行推理,但NPU的算力往往利用率不高。EMS将模型参数分层存储在显存和EMS中,只用了一半的卡就可存下万亿参数的大模型,NPU部署数量减少50%。

算力卸载:大模型推理过程中包括模型计算和KV相关计算,其中KV相关计算的显存占用很大。EMS将KV相关计算的步骤卸载到EMS,而模型计算仍在NPU中进行,将AI推理性能提升了100%。

以存代算:大模型推理中为了节省显存,历史对话的KVCache都不会保存,后续推理都只能重新计算,导致新推理的首Token时延超过1秒。现在可以将历史KVCache保存在EMS里,供后续推理直接调用。优化后推理首Token时延降低到0.2秒以内,优化了80%。

2.3 KVCache缓存与多级缓存体系

KVCache(Key-Value Cache)是用于加速Transformer模型推理过程的关键技术,通过缓存Attention机制中的Key和Value矩阵,避免在生成新token时重复计算历史序列的中间结果。EMS通过构建“显存-内存-存储”三级缓存体系,实现历史KVCache的动态分层存储。EMS将LLM推理中的多轮对话、公共前缀等场景下的历史KVCache缓存在分布式内存池中,推理时直接复用缓存中的历史KVCache,无需重新计算。

EMS还支持智能亲和调度,将AI服务器上空闲的DRAM内存构建成分布式内存池,突破单机内存瓶颈,使得节点间能够进行高效的数据共享,提升缓存命中率,满足大规模分布式推理需求。

3. EMS使用前的准备与环境要求

3.1 申请公测与创建凭证

华为云EMS目前处于公测阶段,用户需要通过华为云控制台申请公测资格。具体操作步骤如下:

第一步,登录EMS管理控制台。第二步,单击“申请公测”,进入申请公测页面。第三步,在公测申请页面,根据实际情况填写企业规模、研发人员比例、应用场景、业务当前阶段、业务描述等申请信息。第四步,勾选“同意《公测试用服务协议》”,单击“申请公测”。公测申请提交后,5个工作日内审核结果将发送到您的邮箱和手机。

申请公测成功后,需要在EMS控制台创建激活凭证。单击页面上的“创建凭证”,在弹出框内单击“确定”。如果凭证成功显示在列表中,则表示创建凭证成功(每个区域仅支持创建一个凭证)。请妥善保存该凭证ID,因为该ID需要在激活EMS时使用。激活凭证将作为软件license关联您的EMS软件使用计费,务必妥善保管,避免泄露。

需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联

3.2 环境与资源要求

EMS数据面镜像部署在用户的CCE(云容器引擎)容器集群上,因此使用EMS的前提是拥有一个满足要求的CCE集群。部署EMS需要满足以下最小资源要求:

ems-controller组件需要vCPU 8核/节点、内存8GB/节点,节点个数恒定为3节点(一主两备)。ems-server组件需要vCPU 40核/节点、内存40GB/节点,节点个数为3节点。ems-zookeeper组件需要vCPU 4核/节点、内存8GB/节点,节点个数为3节点。ems-store-ctrl组件需要vCPU 4核/节点、内存8GB/节点,节点个数为2节点。ems-init组件需要vCPU 1核/节点、内存1GB/节点,节点个数为3节点。ems-clean-hugepage组件需要vCPU 1核/节点、内存1GB/节点,节点个数为3节点。

EMS内存缓存集群必须部署在同一可用区(AZ)内,以提高内存缓存性能。AI推理场景受限于显存瓶颈,DRAM内存富余较多,建议分配一半DRAM内存给EMS的KVCache内存池,EMS内存池空间越大,越有利于提高KVCache缓存命中率,提升推理吞吐。此外,当前EMS集群最大部署数量不超过100个,如需部署更多集群,需要删除当前闲置资源栈或日志组。

EMS部署时将自动创建3个50GB的云硬盘,并将其用作PVC挂载到ZooKeeper的Pod实例上,用于ZooKeeper数据持久化保存。同时,部署过程中还会通过资源编排服务(RFS)创建VPC终端节点、日志组与日志流、安全组等周边基础设施。

4. EMS集群部署与激活

4.1 部署EMS集群

完成前期准备后,即可在CCE集群上部署EMS。部署操作在EMS管理控制台进行。登录EMS管理控制台,进入EMS集群列表界面,单击界面右上角“创建集群”按钮,开始创建集群。进入创建EMS集群页面后,根据实际情况配置相关参数。

在部署过程中,需要确保CCE集群已安装必需的插件。CoreDNS域名解析插件为Kubernetes集群提供DNS域名解析服务,在CCE集群创建时会默认安装,但需要根据集群规模进行CoreDNS的规格配置。节点本地域名解析加速(NodeLocal DNSCache)插件也是EMS集群正常运行所必需的。如果CCE集群没有部署这些插件,EMS集群部署时会自动为您安装缺失的插件。

为保障EMS服务的安全性,建议使用CCE Turbo并配置安全组来控制EMS服务的端口访问规则。可以基于CCE Turbo云原生网络2.0的容器网络模型,为EMS的Pod设置安全组规则。

4.2 激活EMS

EMS集群部署完成后,需要使用之前创建的激活凭证来激活EMS服务。EMS采用半托管融合部署,数据面部署在用户AI节点上。激活时,EMS数据面会和EMS管理面通信,通过EMS管理面校验并完成用户关联后,用户才能正常使用EMS的内存缓存功能。

激活凭证将作为软件license关联EMS软件使用计费,因此务必妥善保管。如果EMS软件版本较低,可以执行EMS升级操作。如果业务不再使用EMS,也可以在控制台卸载EMS。

5. EMS监控与运维

5.1 监控指标配置

EMS提供了完善的监控能力,需要在CCE集群上安装监控插件,将CCE集群上部署的EMS监控数据上报至应用运维管理(AOM)实例,便于随时监控业务。在部署EMS时,如果勾选了“监控对接”选项,系统会自动安装云原生监控插件(kube-prometheus-stack),将EMS产生的监控指标和告警信息上报到AOM实例。

在CCE集群上还可以配置告警规则,当出现EMS告警时能够及时通知处理。AOM支持通过短信、邮件等多种方式通知客户当前系统存在的问题。通过将EMS日志规则配置到云日志服务(LTS),可以获取EMS的相关操作日志,帮助定位问题。

5.2 运维注意事项

需要特别注意的是,EMS提供的是内存缓存,不是持久化存储。在EMS镜像重启或升级、节点重启、发生异常故障等场景下,内存缓存可能会丢失。上层业务需要按缓存未命中的情况进行处理,不能依赖EMS作为永久数据存储。EMS数据面镜像运行需要占用AI节点的vCPU、内存等资源,同时EMS用于保存推理KVCache还需要额外占用AI节点的内存资源。

EMS镜像的日志、监控、告警需要对接LTS、AOM等运维监控平台,并通过委托授权等方式将EMS镜像日志、监控等数据同步给EMS服务。

6. Python SDK对接实战

6.1 SDK概述与环境准备

EMS提供了Python SDK,供推理框架集成以访问EMS弹性内存存储服务。模型推理框架(如vLLM)及企业自研的推理框架可以通过集成EMS SDK方式访问EMS,实现推理KVCache的缓存及后续访问命中。

在使用Python SDK访问华为云EMS之前,需要先完成推理或训练环境的准备。这包括下载安装依赖软件、安装开发工具等,以便顺利完成SDK的安装和基于SDK的代码开发与运行。

6.2 SDK初始化

EMS Python SDK的初始化通过Ems.init方法完成。以下是一个完整的初始化示例:

from ems import Ems, EmsConfig, EmsException, CcConfig

# 配置EMS客户端参数
config = EmsConfig(
    endpoint="https://ems.cn-north-4.myhuaweicloud.com",  # EMS服务终端节点
    project_id="your_project_id",                          # 项目ID
    access_key="your_access_key",                         # 访问密钥AK
    secret_key="your_secret_key",                         # 访问密钥SK
    region="cn-north-4"                                   # 区域
)

try:
    # 初始化EMS客户端
    ems_client = Ems.init(config)
    print("EMS初始化成功")
except EmsException as e:
    print(f"EMS初始化失败: {e}")

初始化成功后,可以通过Ems.get_cc方法获取ContextCaching对象,后续可以通过该对象访问读取和保存KVCache等接口。

# 获取ContextCaching对象
cc = ems_client.get_cc()

# 进行健康检查
health_status = ems_client.check_health()
print(f"EMS健康状态: {health_status}")

6.3 KVCache的保存与加载

EMS SDK提供了同步和异步两种方式来进行KVCache的保存与加载。以下以同步保存KVCache为例进行说明。

同步保存KVCache接口需要传入slot_mapping、hashes、offsets等参数。slot_mapping是每个token索引映射到block标识的列表,不能为空且必须为整数列表。hashes是预计算的块前缀哈希列表,需与offsets长度一致。offsets是与hashes对应的每块token数,通常等于block_size。

# 同步保存KVCache示例
slot_mapping = [0, 1, 2, 3]  # token到block的映射
hashes = [123456, 789012]     # 块前缀哈希列表
offsets = [2, 2]              # 每块token数

try:
    result = cc.save_kv_cache_sync(
        slot_mapping=slot_mapping,
        hashes=hashes,
        offsets=offsets,
        timeout=5000            # 超时时间,单位毫秒,默认5000
    )
    print(f"KVCache同步保存成功: {result}")
except EmsException as e:
    print(f"KVCache保存失败: {e}")

异步保存KVCache的用法类似,但接口名称为save_kv_cache_async,可以通过check_async_io_status和get_async_io_result来检查异步操作的状态和获取结果。

加载KVCache的接口为load_kv_cache_sync和load_kv_cache_async,分别对应同步加载和异步加载。查询KVCache的接口为query_kv_cache_sync。

6.4 错误处理与常见问题定位

EMS SDK提供了异常处理机制,当操作失败时会抛出EmsException异常。常见的错误码包括:EMS_INVALID_ARGUMENT表示请求参数不合法,需要检查参数后重试;EMS_IO_ERROR表示请求IO错误,通常由EMS内存池故障引起。如果EMS初始化失败,可以在推理框架的日志中搜索“EMS init failed”关键字,收集对应时间点的日志后联系EMS工程师定位。

7. EMS与推理框架集成

7.1 vLLM框架集成

vLLM是目前广泛使用的大模型推理框架,EMS提供了与vLLM的集成方案。vLLM可以通过集成EMS SDK的方式访问EMS弹性内存存储服务,实现推理KVCache的缓存及后续访问命中。在CCE集群中,基于昇腾NPU部署大语言模型推理服务时,可以通过集成EMS实现KVCache分布式缓存。

具体集成步骤包括:登录CCE控制台进入目标集群,在左侧导航栏选择“配置中心”,单击“异构资源配置”页签,开启“EMS加速”开关,将准备好的A2/A3节点打上标签。结合EMS的以存代算能力,可以显著降低首Token时延、提升多轮对话吞吐,缓解显存与内存瓶颈。

7.2 与其他华为云服务的协同

EMS通常与以下华为云服务搭配使用:AI开发平台ModelArts用于快速创建和部署模型,管理全周期AI工作流;云容器引擎CCE提供容器化部署环境;高性能弹性文件服务SFS Turbo提供按需扩展的高性能文件存储;对象存储服务OBS作为持久化存储层,存放模型文件和训练数据。

8. 最佳实践与性能优化建议

8.1 内存资源规划

AI推理场景中,DRAM内存通常存在较多富余。建议将AI节点上一半的DRAM内存分配给EMS的KVCache内存池。更大的EMS内存池空间意味着更高的KVCache缓存命中率,从而提升推理吞吐量。

8.2 高可用与容灾设计

由于EMS是内存缓存而非持久化存储,上层业务需要设计缓存未命中的降级处理逻辑。当EMS缓存丢失时(如节点重启、镜像升级等场景),业务应能够回退到重新计算KVCache的模式。同时,EMS集群必须部署在同一可用区内以保证内存访问的低延迟。

8.3 监控告警配置

建议为EMS配置完善的监控告警体系。通过AOM配置阈值告警规则,当EMS内存池使用率过高、请求超时或异常增多时及时收到通知。同时将EMS日志接入LTS,便于问题排查和审计。

9. 常见问题解答

问1:EMS和OBS(对象存储服务)有什么区别?

EMS是内存缓存服务,以DRAM为主要存储介质,用于加速LLM推理的KVCache存取,具有极高读写速度但数据不持久化。OBS是对象存储服务,用于持久化存储海量非结构化数据,如模型文件、训练数据等。两者在华为云架构中扮演不同角色,EMS作为“内存层”提供高速缓存,OBS作为“存储层”提供持久化存储。

问2:EMS是否支持除Python之外的其他编程语言?

EMS主要提供Python SDK供推理框架集成。此外,EMS也提供了符合RESTful API设计规范的接口,支持通过HTTPS请求调用。用户可以使用curl、Postman或任何支持HTTP请求的编程语言来调用EMS的API。

问3:EMS的内存缓存数据会丢失吗?如何应对?

会的。EMS提供的是内存缓存而非持久化存储。在EMS镜像重启或升级、节点重启、发生异常故障等场景下,内存缓存会丢失。上层业务需要按缓存未命中的情况进行处理,设计降级逻辑。

问4:部署EMS需要多少资源?

部署EMS需要充足的CCE集群资源。以ems-server组件为例,每个节点需要vCPU 40核、内存40GB,共3个节点。建议根据实际业务规模参考华为云官方文档中的最小资源要求进行规划。

问5:EMS与vLLM如何集成?

vLLM可以通过集成EMS SDK的方式访问EMS服务。在CCE集群中,通过开启“EMS加速”开关并将推理节点打上标签即可完成集成配置。集成后,vLLM可以将推理过程中的KVCache缓存到EMS的分布式内存池中,实现跨节点共享和加速。

问6:EMS的激活凭证有什么作用?如何管理?

激活凭证是EMS服务的软件license,关联EMS软件的使用和计费。在EMS控制台创建凭证后,需要使用该凭证激活EMS才能正常使用内存缓存功能。每个区域仅支持创建一个凭证,务必妥善保管凭证ID,避免泄露。

相关文章

安全可靠的华为云服务器代理商-选择我们,选择品质保证

安全可靠的华为云服务器代理商-选择我们,选择品质保证

安全可靠的服务器是现代生活不可或缺的一部分,华为云服务器代理商为您提供价格便宜、服务给力、折扣高的一站式服务器服务。无论您是个人、企业、国有机构还是政府单位,我们都能够满足您的需求。作为华为云服务器代…

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

很多朋友都在吐槽:“华为云服务器太贵了,预算有限实在买不起!” 其实,买华为云服务器贵不贵,关键看你会不会选、会不会买。今天就来给大家分享一套超实用的省钱攻略,小公司、创业团队也能轻松用得起稳定又安全…

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

华为云服务器采购总嫌贵?30%华为云返点返佣 + 旗舰级代理保障,这波省钱操作别错过!

最近不少做 IT 运维或企业采购的朋友跟我吐槽,公司要上华为云服务器,去官网一看报价直接犯了难 —— 按年付费算下来,比预期预算高出不少。要是赶上业务扩张需要多台服务器,这笔开支更是让财务部门直皱眉。…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

上海汪远信息科技有限所在公司年销华为云产品3亿+,属于头部代理梯队,可为合作客户提供最高30%的返佣优惠,直接帮助企业降低30%的云资源成本。…

华为云代理商有哪些?华为云代理返点是真的么?

华为云代理商有哪些?华为云代理返点是真的么?

一,华为云代理商简介华为云代理商,顾名思义就是替华为云做华为云服务器数据库等公有云产品推广的代理商,每推广出一单华为云服务器,华为云会跟这个代理商结算佣金,佣金比例分为月度佣金,季度佣金和年度佣金,华…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

一、华为云代理商的核心价值定位1. 代理商的角色与职责华为云代理商作为华为云生态的核心合作伙伴,承担着三重核心职能:•产品推广销售:负责推广销售华为云全系列云产品,包括云服务器ECS、云数据…