You need to enable JavaScript to run this app.
导航
典型场景1-私有模型部署
最近更新时间:2025.04.22 16:08:42首次发布时间:2025.04.21 16:51:39
我的收藏
有用
有用
无用
无用

说明

场景说明:客户将【私有模型】通过TKS密钥加密的方式上传并发布到PCC机密容器后,完成模型服务部署,并提供密文接口供端云互信服务联调测试。

整体流程说明

Image

1.准备工作

步骤1:物理资源准备

准备一台128GB以上内存物理机器,并安装好Python3环境(建议使用Anaconda环境,避免依赖冲突)。

步骤2:Jeddak Secure Model SDK下载与安装

  1. 安装Jeddak Secure Model SDK(点此下载),此SDK的功能包含模型压缩、模型加密、模型上传和基线计算等能力。
  2. 执行以下脚本,安装
export VERSION=0.1.7.24
pip3 install bytedance.jeddak_secure_channel-${VERSION}-py3-none-any.whl

步骤3:脚本参数准备与执行

  1. 备私有模型,按照如下目录进行组织,
    1. 文件夹名称为模型的名称,例如【Qwen32B
    2. 文件夹内文件为明文模型文件。路径【model_path
  1. 准备将模型上传的TOS桶的名称,按照如下进行:
    1. 登录火山引擎,进入对象存储,创建对象存储TOS的桶,并记住【bucket_name】。创建存储桶的时候需选择华北2(北京区域),对应的region为cn-beijing。
  1. 在火山引擎页面查看账号ID,如下图所示,并记录此ID为【app_id】。
  1. 点击火山账号,选择“API访问密钥”,新建该账号的【AK】、【SK】。
  1. 脚本源码
from bytedance.jeddak_secure_model.model_encryption import EncryptionConfig, JeddakModelEncrypter

if __name__ == "__main__":
    model_path = "/root/pcc/Qwen32B"  # 模型的文件夹路径 【model_path】
    bucket_name = "llmmodels"  # 创建TOS的存储桶 【buck_name】
    # 火山账号的ak sk
    volc_ak = "your access key" #【AK】
    volc_sk = "your secret key" #【SK】
    region = "cn-beijing" # 存储桶的区域,对应的映射关系见步骤5
    endpoint = "tos-cn-beijing.volces.com"
   
    ring_id = ""   # 选填,如已有密钥环,在此填写密钥环ID;如未填,则会根据`ring_name` 自动创建密钥环
    ring_name = "Qwen32B-Ring"  # 自定义密钥环名称【自定义修改】
    ring_desc = "Ring for Qwen32B" # 添加对密钥环的描述【自定义修改】
    key_name = "Qwen32BKey"  # 自定义密钥名称【自定义修改】
    key_desc = "Key for Qwen32B"   # 添加对可信密钥的描述【自定义修改】
    app_id = "your account id"  # 火山页面查看自己账号的【app_id】
    service = "pcc" 
    
    # 目前参数传空的
    config = EncryptionConfig("", "")
    encrypter = JeddakModelEncrypter(config)

    res = encrypter.encrypt_model_and_upload(
        model_path=model_path,
        bucket_name=bucket_name,
        volc_ak=volc_ak,
        volc_sk=volc_sk,
        region=region,
        endpoint=endpoint,
        ring_id=ring_id,
        ring_name=ring_name,
        ring_desc=ring_desc,
        key_name=key_name,
        key_desc=key_desc,
        app_id=app_id,
        service=service
    )

    print(res)
  1. 脚本执行
python3 sdk.py

步骤4:结果获取

说明

【获取的结果】,具体如下
自动创建的可信密钥环与可信密钥
ring_id 加密模型的可信密钥环ID
key_id 加密模型的可信密钥ID
私有模型名称与加密后的的基线值
baseline 加密模型的基线值
model_name 加密模型的名称
私有模型上传路径
model_path (TOS中的路径信息)

  • 脚本结果:
# ring_id  加密模型的可信密钥环ID
# key_id  加密模型的可信密钥ID
# baseline  加密模型的基线值
# model_name  加密模型的名称
  • 模型路径:获取前往火山引擎官网的对象存储获取通过SDK自动上传的加密模型存储路径。密文模型一般会被切分为多个part,点击首个part的「详情」,获取该part对应的URL为https://llmmodels.tos-cn-beijing.volces.com/model_name/enc-part-00000,将此路径的后缀“enc-part-00000”去掉,则得到了完整密文模型对应的URL 即为model_path

Image
Image

步骤5:给加密模型的密钥配置远程证明策略

  • 创建证明策略
    * 进入【远程证明服务】模块,点击「创建证明策略」按钮;字段如下:
    * 策略名称,自定义,例如:test
    * 策略描述,自定义;
    * 选择对应的加密模型,策略内容自动变化,提交成功后可在策略列表查看创建成功的策略数据;

  • 证明策略配置
    * 进入【可信密钥服务】模块,选择步骤4【ring_id】对应的密钥环,点击进入后,选择步骤4【key_id】的密钥;
    * 点击【更新证明策略】,选择策略名称为【test】的策略;

2.私有模型发布与部署

步骤1:加密模型发布

  • 进入【模型管理服务】模块,点击「发布模型」按钮
  • 填写相关字段信息后,提交即可加密模型发布。字段说明如下:
    • 模型名称,建议填写【1.准备工作】中输出的model_name;
    • 模型版本,自定义;
    • 模型描述,自定义;
    • 加密密钥,选择【1.准备工作】中输出的key_id;
    • 基线值,填写【1.准备工作】中的baseline
    • TOS地址,填写【1.准备工作】中的model_path
      Image

步骤2:加密模型部署

  • 进入【模型管理服务】模块,选择刚刚已发布且处于【待部署】状态的模型所在列,点击「部署」按钮,
  • 选择PCC规格、推理框架和实例个数(对应购买CU的个数)等,PCC将根据默认参数进行部署。

说明

特别说明:不同尺寸模型,部署耗时会有差异。具体建议尺寸如下:

PCC规格

说明

基础版

支持小尺寸的模型,如1.5B,具体以实际验证为准。

高级版

支持中尺寸的模型,如32B,具体以实际验证为准。

旗舰版

支持大尺寸的模型,如DeepSeek R1-671B(满血版),具体以实际验证为准。

Image
Image

  • 部署成功后,可看到模型部署状态变化,如下图:

Image

步骤3:加密模型测试

  • 进入【模型管理服务】模块,选择刚刚已部署成功的模型所在列,点击「测试」按钮,对模型可用性做检测,检测通过则状态从【未测试】更新为【测试成功】。

Image

3.端侧SDK集成

说明

端侧SDK支持的语言类型为:Python、C++、Java、JS

发送端配置样例

{ 
  "ra_url": "open.volcengineapi.com", //火山引擎地址 
  "ra_service_name": "test_pcc",  //接收端服务在Jeddak PCC上部署时的服务名称 
  "ra_policy_id": "16a371d7-130b-58eb-9e95-b5b816559ad8", //远程证明时的策略ID 
  "ra_uid": "**", //用户的火山账号ID 
  "bytedance_top_info": "{\"ak\": \"**\", \"sk\": \"**==\", \"service\": \"pcc_test\"}", // 用户火山账号的AK和SK信息 
  "attest_interval": 1800,  //SDK自动做RA的时间间隔 
  "root_key_config": "{\"test_id_test_name\": \"./myPrivateKey.pem\"}" // 数据发送端对自己做签名时,给的appinfo和私钥文件地址 
}

发送端调用SDK加密

说明

详细指引见:端云互信SDK使用指南