news 2026/5/1 8:26:57

CANN shmem 在多模型共驻场景下的安全隔离架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN shmem 在多模型共驻场景下的安全隔离架构

相关链接:

  • CANN 组织主页:https://atomgit.com/cann
  • shmem 仓库地址:https://atomgit.com/cann/shmem

前言

在 CANN(Compute Architecture for Neural Networks)高性能通信生态中,SHMEM(Shared Memory Communication Library)作为面向多机多卡场景的内存通信库,为通算融合类算子(如 matmul+allreduce)提供了低延迟、高带宽的跨设备直接内存访问能力。随着 AI 推理服务向多租户、多模型共驻(Multi-Model Co-Hosting)架构演进,多个独立模型可能共享同一物理集群资源。在此背景下,如何确保不同模型间的数据隔离、权限控制与故障域分离,成为 SHMEM 必须解决的核心安全问题。

一、多模型共驻场景的安全挑战

在典型部署中,一台服务器可能同时运行:

  • 模型 A:金融风控 LLM(高敏感数据);
  • 模型 B:公开客服 Bot(低敏感数据);
  • 模型 C:内部测试模型(不可信代码)。

若 SHMEM 缺乏隔离机制,将导致以下风险:

  • 数据泄露:模型 B 意外读取模型 A 的 KV Cache;
  • 越权访问:模型 C 通过伪造地址写入模型 A 的权重;
  • 拒绝服务:模型 C 耗尽共享内存池,导致模型 A OOM;
  • 中间人攻击:跨节点通信被窃听或篡改。

SHMEM 通过Team 通信域 + TLS + UniqueID三位一体机制应对上述风险。


二、整体安全架构:三层隔离模型

SHMEM 的安全隔离采用分层设计:

用户模型进程

Team 通信域
(逻辑隔离)

TLS 加密通道
(传输安全)

UniqueID 命名空间
(物理资源隔离)

底层 xDMA/MTE 引擎

图1:SHMEM 三层安全隔离模型


三、第一层:Team 通信域 —— 逻辑隔离边界

SHMEM 引入Team(通信域)概念,作为所有通信操作的基本单元。每个 Team 是一个封闭的进程组,仅组内成员可互相访问内存。

3.1 Team 创建与成员管理

用户通过aclshmemx_team_create创建隔离域:

// examples/matmul_allreduce/main.cppaclshmemx_team_t team_A;// 金融模型通信域aclshmemx_team_create(&team_A,world_team,/*member_ranks=*/{0,1,2,3},/*num_members=*/4);aclshmemx_team_t team_B;// 客服模型通信域aclshmemx_team_create(&team_B,world_team,/*member_ranks=*/{4,5,6,7},/*num_members=*/4);

两个 Team 成员无交集,天然隔离。

3.2 内存分配绑定 Team

所有共享内存分配均绑定到特定 Team:

void*ptr_A=aclshmemx_malloc(team_A,1_GB);// 仅 team_A 可访问void*ptr_B=aclshmemx_malloc(team_B,1_GB);// 仅 team_B 可访问

若模型 B 尝试访问ptr_A,SHMEM 驱动层将返回ACL_ERROR_INVALID_PARAM


四、第二层:TLS 传输加密 —— 防窃听与篡改

SHMEM 默认启用TLS 1.3加密所有跨节点通信,防止中间人攻击。

4.1 TLS 配置接口

用户可通过 API 控制 TLS 行为:

// 关闭 TLS(仅限可信内网)int32_tret=aclshmemx_set_conf_store_tls(false,NULL,0);// 开启 TLS 并指定证书constchar*tls_info="cert_path=/etc/shmem/cert.pem;key_path=/etc/shmem/key.pem";ret=aclshmemx_set_conf_store_tls(true,tls_info);

⚠️ 注意:TLS 配置必须在aclshmemx_init前调用(见 FAQ Q4)。

4.2 加密实现细节

SHMEM 基于 OpenSSL 实现 TLS 握手与数据加密:

// src/transport/tls_transport.cppStatusTLSTransport::Handshake(intpeer_rank){SSL_set_fd(ssl_,socket_fd_);SSL_set_connect_state(ssl_);// Client// 或 SSL_set_accept_state(ssl_); // Serverintret=SSL_do_handshake(ssl_);if(ret!=1){LOG(ERROR)<<"TLS handshake failed with rank "<<peer_rank;returnStatus::NETWORK_ERROR;}returnStatus::OK();}StatusTLSTransport::Send(constvoid*data,size_t size){intsent=SSL_write(ssl_,data,size);if(sent!=size){returnStatus::NETWORK_ERROR;}returnStatus::OK();}

所有 RDMA/xDMA 数据在传输前均经 TLS 加密,即使物理链路被监听也无法解密。


五、第三层:UniqueID 命名空间 —— 物理资源隔离

为防止不同 Team 间因地址冲突导致误访问,SHMEM 引入UniqueID机制,为每个 Team 分配全局唯一标识符,并将其嵌入物理地址空间。

5.1 UniqueID 生成与绑定

aclshmemx_init_attr中指定 UniqueID:

// scripts/run.sh 示例aclshmemx_init_attr_t attr;attr.unique_id=generate_unique_id();// 如 UUIDv4aclshmemx_init_attr(ACLSHMEMX_INIT_WITH_DEFAULT,&attr);

PR #116(2026-02-10)强化了aclshmemx_set_attr_uniqueid_args的参数校验,防止 ID 冲突。

5.2 地址空间隔离实现

SHMEM 驱动层将 UniqueID 编码到虚拟地址高位:

// src/device/gm2gm/engine/mte_engine.cppuint64_tMteEngine::EncodeRemoteAddr(void*remote_ptr,uint64_tunique_id){// 高 32 位:UniqueID// 低 32 位:原始指针偏移return(unique_id<<32)|(reinterpret_cast<uint64_t>(remote_ptr)&0xFFFFFFFFULL);}boolMteEngine::ValidateAccess(uint64_tencoded_addr,uint64_tlocal_unique_id){uint64_ttarget_id=encoded_addr>>32;returntarget_id==local_unique_id;// 仅允许访问同 ID 空间}

若模型 B 使用模型 A 的指针发起访问,ValidateAccess将返回 false,触发硬件异常。


六、资源配额与故障隔离

除安全隔离外,SHMEM 还提供资源控制能力:

6.1 共享内存池大小限制

初始化时指定本地内存池上限:

aclshmemx_init_attr_t attr;attr.local_mem_size=16_GB;// 默认 16GB,可按模型需求调整aclshmemx_init_attr(ACLSHMEMX_INIT_WITH_DEFAULT,&attr);

防止单个模型耗尽全局内存。

6.2 异常传播限制

SHMEM 通信错误(如超时、校验失败)仅影响当前 Team,不会扩散至其他 Team。例如:

// model_B 发送失败ret=aclshmemx_put(team_B,dst_ptr,src_ptr,size,dst_rank);if(ret!=ACL_SUCCESS){// 仅 model_B 报错,model_A 不受影响HandleErrorForModelB();}

七、实践案例:多模型推理服务部署

在某金融云平台,SHMEM 被用于部署三个共驻模型:

模型Team IDUniqueIDTLS内存配额
风控 LLMteam_0uuid-finance-01启用32 GB
客服 Botteam_1uuid-public-02启用8 GB
测试模型team_2uuid-test-03关闭(内网)4 GB

通过 SHMEM 的三层隔离,三者互不干扰,且风控模型数据零泄露。


八、安全加固建议

根据SECURITY.md,生产环境应:

  1. 强制启用 TLS,即使内网也建议使用自签名证书;
  2. UniqueID 由中心化服务分配,避免客户端伪造;
  3. 定期轮换 TLS 证书
  4. 限制 Team 成员列表,禁止动态加入未知 rank。

九、未来方向

社区正在探索:

  • 基于 eBPF 的运行时访问控制
  • 硬件级内存加密(如 AMD SEV 类似机制);
  • 与 Kubernetes Namespace 集成,自动映射 Pod 到 Team。

结语

CANN shmem 通过Team 逻辑域、TLS 传输加密、UniqueID 物理命名空间三层安全隔离架构,在多模型共驻场景中实现了数据保密性、完整性与可用性的统一保障。它不仅是高性能通信库,更是构建可信 AI 基础设施的安全基石。随着 CANN 生态对生产级安全需求的持续演进,shmem 的隔离机制将持续增强,为 AI 服务提供更强安全保障。


相关链接:

  • CANN 组织主页:https://atomgit.com/cann
  • shmem 仓库地址:https://atomgit.com/cann/shmem
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 22:53:19

【Matlab】MATLAB 图形绘制教程:hold on 保留图形用法详解(同图多曲线绘制与多组数据对比)

MATLAB 图形绘制教程:hold on 保留图形用法详解(同图多曲线绘制与多组数据对比) 在MATLAB数据可视化中,plot函数是绘制二维曲线的核心工具,但默认情况下,每次调用plot函数都会清空当前图形窗口,覆盖之前绘制的曲线,无法实现“同一张图中绘制多条曲线”的需求。而hold …

作者头像 李华
网站建设 2026/4/25 22:13:00

【Matlab】MATLAB 多子图绘制教程:subplot 用法详解

MATLAB 多子图绘制教程:subplot 用法详解 在MATLAB数据可视化与文档编辑中,单一图形往往无法满足多组数据对比、多维度结果展示的需求。subplot函数作为MATLAB绘制多子图的核心工具,能够实现“在同一个图形窗口中,分割出多个独立的绘图区域,分别绘制不同曲线或图形”,完…

作者头像 李华
网站建设 2026/4/29 18:27:37

【Matlab】MATLAB plot样式设置教程:线型、标记点配置与数据曲线区分

MATLAB plot样式设置教程:线型、标记点配置与数据曲线区分 在MATLAB数据可视化与文档编辑中,plot函数是绘制二维曲线的核心工具,而曲线样式的合理设置,是区分多组数据、提升图表可读性与专业性的关键。实际文档编辑(如实验报告、学术论文、数据分析报告)中,常常需要在同…

作者头像 李华
网站建设 2026/4/3 4:29:19

2026别错过!专科生必备的降AIGC平台 —— 千笔

在AI技术快速发展的今天&#xff0c;越来越多的学生开始借助AI工具辅助论文写作&#xff0c;以提高效率和质量。然而&#xff0c;随着学术审核标准的不断升级&#xff0c;AI生成内容的识别能力也显著增强&#xff0c;导致“AI率超标”问题日益突出。许多学生在提交论文时因AI痕…

作者头像 李华
网站建设 2026/4/30 6:47:28

2010-2025年国家标准化综合试点改革DID

数据简介 国家标准化综合试点改革是指由国家标准化管理委员会主导&#xff0c;在特定区域&#xff08;如城市、园区、产业集聚区等&#xff09;开展的系统性、集成性的标准化改革创新试验。其核心是通过体制机制、政策工具、工作模式的综合改革&#xff0c;探索标准化支撑经济…

作者头像 李华
网站建设 2026/4/28 21:41:56

小鼠Ly6G单克隆抗体如何揭示骨髓基质细胞抑制肿瘤的新机制?

一、癌症相关成纤维细胞的异质性如何影响肿瘤免疫&#xff1f;癌症相关成纤维细胞是肿瘤微环境中数量最丰富的间质细胞之一&#xff0c;其来源多样且功能异质。部分CAFs来源于骨髓基质细胞&#xff0c;但不同亚群在调控肿瘤进展与免疫应答中可能发挥截然相反的作用&#xff0c;…

作者头像 李华