CANN-昇腾NPU-模型加密-怎么保护知识产权
模型部署到客户机房怎么防止被反编译、权重被提取CANN 提供了模型加密工具把.pt/.onnx模型加密成.om离线模型没有密钥无法加载。加密流程原始模型 (.pt) → 加密工具 → 加密模型 (.om) ↑ 密钥文件 (.key)加密后的.om文件只能在有密钥的机器上运行且密钥跟机器 MAC 地址绑定。加密步骤步骤 1生成密钥# 生成密钥文件跟机器 MAC 绑定atc--mode3\--outputmodel.om\--key_filemodel.key\--bind_macyes# 绑定 MAC 地址model.key是二进制密钥文件需要妥善保管丢了无法解密。步骤 2加密模型# 把 PyTorch 模型转成 ONNX中间格式python export_onnx.py--modelmeta-llama/Llama-2-7b-hf--outputmodel.onnx# 加密 ONNX → .omatc--mode0\--modelmodel.onnx\--outputmodel.om\--key_filemodel.key\--framework5# ONNX 格式步骤 3部署加密模型fromatbimportLLM# 加载加密模型需要密钥文件modelLLM(model.om,key_filemodel.key,# 提供密钥devicenpu:0,)没有model.key或密钥跟机器 MAC 不匹配加载失败。密钥管理方案 1密钥跟机器绑定atc--mode3--key_filemodel.key--bind_macyes优点即使密钥文件泄露也不能在其他机器上使用缺点机器更换网卡后密钥失效需要重新生成方案 2密钥不绑定机器atc--mode3--key_filemodel.key--bind_macno优点机器更换不影响缺点密钥文件泄露后可以随意使用方案 3远程密钥服务# 推理服务启动时从远程拉取密钥不落盘importrequests keyrequests.get(https://key-server/internal/model.key).contentwithopen(/dev/shm/model.key,wb)asf:f.write(key)# 加载模型modelLLM(model.om,key_file/dev/shm/model.key)# 用完后删除os.remove(/dev/shm/model.key)密钥不落盘只存在于内存。即使机器被攻破密钥也不会泄露。性能影响加密模型加载时多了一步解密推理时零开销解密后的指令已经加载到 NPU。操作无加密有加密额外开销模型加载2.5s3.1s0.6s (24%)推理prefill35ms35ms0推理decode/token0.31ms0.31ms0加密只影响加载速度不影响推理速度。限制只支持离线模型.omPyTorch 的.pt格式不支持加密需要先转成.om。密钥绑定 MAC换网卡需要重新生成密钥。调试不便加密模型无法用 Profiler 查看算子细节只能看到加密后的 kernel 名。跟 ATB 的配合ATB 的cache_dir会缓存编译后的模型。如果原始模型是加密的缓存的也是加密的modelLLM(model.om,key_filemodel.key,cache_dir./model_cache,# 缓存的也是加密的devicenpu:0,)第一次加载需要解密 编译约 30-60s后续加载只需要解密约 3-5s。模型加密是部署到客户机房的必备步骤。CANN 的加密工具使用简单性能影响只在前期的模型加载推理零开销。记得保管好密钥文件。仓库在这里https://atomgit.com/cann/ATB