华为云搭建神经网络密态推理服务

举报
yd_245133992 发表于 2023/11/24 16:50:32 2023/11/24
【摘要】 神经网络密态推断 1 整体架构说明 1.1 概述近年来神经网络模型性能得到快速发展,基于模型推断的在线智能服务成为具有潜力的人工智能应用范式,然而随着其应用于越来越多的隐私敏感领域,比如金融机构、政府部门、医疗健康等重要基础行业,数据的隐私安全正在成为人工智能大规模应用的关键挑战。神经网络密态推断旨在通过使用同态加密对推断数据进行加密,并针对原始模型密文计算中由于参数规模和复杂非线性算子等...

神经网络密态推断

1 整体架构说明

1.1 概述

近年来神经网络模型性能得到快速发展,基于模型推断的在线智能服务成为具有潜力的人工智能应用范式,然而随着其应用于越来越多的隐私敏感领域,比如金融机构、政府部门、医疗健康等重要基础行业,数据的隐私安全正在成为人工智能大规模应用的关键挑战。
神经网络密态推断旨在通过使用同态加密对推断数据进行加密,并针对原始模型密文计算中由于参数规模和复杂非线性算子等因素导致的性能显著下降和计算开销显著提升等限制进行针对性优化,使神经网络模型初步实现密文推断的能力,缓解原始数据请求神经网络推断服务过程中的隐私数据泄漏风险,展示了面向链上的未来安全人工智能应用愿景。

1.2 逻辑架构

神经网络密态推断模块由以下几部分构成:

  • 模型密态推断服务 HE-server:HE-server部署于“诚实且好奇”的外部环境,为用户提供神经网络模型的推断服务。HE-server中密态推断环境,并提供模型部署、性能评估、推断等API接口。

  • 模型密态推断服务 HE-client:HE-client部署于可信环境中,为用户提供同态加密服务。当HE-client被调用时会对用户明文推断数据进行加密,并通过tcp协议将大密文数据protobuf序列化并分包传输至HE-server。

  • 隐私计算平台:可通过隐私计算平台(e.g. FATE)中部署拓展模块,实现用户隐私数据推断功能。

image-20230103151427185

2 主要流程

神经网络密态推断主要流程概要如下图所示,推断请求者首先请求加载、密态性能评估模型(直接调用或通过FATE隐私计算平台调用),然后使用已加载模型进行密态数据推断服务。此处通过一个典型应用场景描述神经网络密态推断服务的处理流程。

以下User指实际真实用户或拥有he_nn模块的FATE平台。

当用户User需要获取对应任务的神经网络模型时,须先调用HE-server的对应接口(无须通过HE-client,无隐私泄漏风险),简要流程如下:

  • A1). User查询HE_server当前模型列表
  • A2). User根据模型列表,判断是否需要初始化新的模型,并指定请求模型的信息
  • A3). HE_server收到模型加载请求,从模型缓存中加载或根据不同神经网络类型的密态转换策略加载对应模型
  • A4). HE_server按照请求信息对模型进行评估,返回的评估结果包括模型性能和明文/密文运行时间

当用户获取所需模型后,同时对HE_serverHE_client进行调用,实现在密态数据输入下获取推断结果。简要流程如下:

  • B1). User请求密态推断结果,分别对HE_server和HE_client进行调用
  • B2). HE_server与HE_client进行密文计算环境测试与加密参数同步
  • B3). HE_server与HE_client密态通信并得到最后计算结果,最后由HE_client解密并返回给User
  • B4). User可以获取当前推断任务的状态,或查询历史任务

下面将对上述“模型加载与密态性能评估”和“模型推断”两个关键流程进行介绍。

  • 绿色:在HE_server中执行的流程
  • 蓝色:在HE_client中执行的流程

2.1 模型加载与密态性能评估

HE_server的模型加载与性能评估接口的设计目标是帮助用户快速获取所需神经网络模型:

  • HE_server目前提供了mlp,cnn,Alexnet,rnnBert等五种骨架模型的同态化模型加载服务,用户可根据使用场景请求对应模型类型的神经网络模型。
  • HE_server将会把历史加载模型存放于缓存中,用户可以通过查询对应类型模型并选择加载同种类型的模型。
  • 用户可以在明文或密文环境下测试模型性能,明文环境默认为cpu模式,密文环境默认为SEAL模式,模型评估结果将包含“模型精度”和“测试运行时间”两部分。

image-20230104003012264

模型加载与性能评估具体流程上图所示,其中:

  1. User首先发起模型加载请求;
  2. 若加载新的模型,HE_server将根据不同模型类型,采取不同的模型转换策略生成可支持“密文推断”的模型。新加载的模型将会加入注册模型中,其中包括“模型类型”、“模型ID”、“模型精度”、“模型缓存路径”等信息;
  3. 若加载已存在于模型缓存中的模型文件信息,HE_server将自动执行一次非加密环境下的性能评估测试,并更新对应模型信息;
  4. 当User发起模型评估请求后,HE_server将根据请求的测试集大小生成测试集,并根据加密参数设置模拟密态推断数据,进行性能评估结果并返回;

2.2 模型推断流程

密态推断设计目标是使用户无需泄漏原始信息的情况下收到高性能的神经网络推断服务:

  • 若采用明文模式发起推断请求,可以单独向HE_server请求并把明文推断数据文件上传,也可以通过HE_client代理进行推断服务。
  • 密文推断请求将完全保护用户的推断数据对HE_server不可见,保障用户隐私。

使用密态推断服务,需要注意以下内容:

  • 密文模式下的推断请求,必须同时向HE_server和HE_client请求才能完成,
  • 用户无法直接通过本地加密的方式上传密文文件,进行密态推断请求,因为:
    • 推断过程中需要依赖于HE_server与HE_client的通信,需要HE_client实时响应并重加密来实现relu等非线形算子的计算;
    • 由于密文存储代价大传输需依赖于HE_client内置的tcp通信传输序列化密文数据;
    • HE_client会将密文直接传输给HE_server并指定不同模型类型预设的计算图节点。

模型推断具体流程上图所示,其中:

  1. 用户首先发起推断请求;
  2. HE_client首先向HE_server发起一次密文计算测试,保证当前加密环境与加密参数设置一致;
  3. HE_client将与HE_server通信以同步当前推断任务的加密参数、推断数据信息(e.g. 同步推断数据的tensor_shape使HE_server可以模拟激活计算图)等;
  4. HE_client加密推断数据,同时HE_server生成模拟推断数据以生成计算图;
  5. HE_client将推断数据分段传输至HE_server,并向HE_server提供密态推断过程中的重加密服务;
  6. 推断完成后,HE_client将解密推断结果,并返回至用户。

神经网络密态推断使用文档

1 简介

神经网络密态推断旨在通过使用同态加密对推断数据进行加密,并针对原始模型密文计算中由于参数规模和复杂非线性算子等因素导致的性能显著下降和计算开销显著提升等限制进行针对性优化,使神经网络模型初步实现密文推断的能力,缓解原始数据请求神经网络推断服务过程中的隐私数据泄漏风险,展示了面向链上的未来安全人工智能应用愿景。

2 部署

创建工作目录 ${WORKDIR}

2.1 下载源码

git clone https://git.code.tencent.com/IBPC/06-encrypt-estimation.git ${WORKDIR}/tmp
# cd ${WORKDIR}/tmp && git checkout he-server && mv he_server ${WORKDIR}
cd ${WORKDIR}/tmp && mv he_server ${WORKDIR}

2.2 启动容器

docker-compose version
  • 新建docker-compose-heserver.yml文件
cd ${WORKDIR} && vi docker-compose-heserver.yml
  • docker-compose-he-server.yml中写入以下内容
version: '3'

services:
  he-server:
    container_name: he-server
    image: he_trans:v1.1
    ports:
      - 12993:8080
      - 34000:34000
    volumes:
      - ${WORKDIR}/he_server:/home/he-transformer/he_server
    command: tail -F anything
  • 如果需要部署he-client,则额外添加docker-compose-he-client.yml
cd ${WORKDIR} && cp -r he_server he_client && vi docker-compose-heclient.yml
  • docker-compose-he-client.yml中写入以下内容
version: '3'

services:
  he-client:
    container_name: he-client
    image: he_trans:v1.1
    ports:
      - 12995:8081
    volumes:
      - ${WORKDIR}/he_client:/home/he-transformer/he_server
    command: tail -F anything
  • 启动容器
docker-compose -f docker-compose-he-server.yml up -d && docker-compose -f docker-compose-he-client.yml up -d

2.3 启动HE_server

  • 配置he-transformer环境
# 进入容器
docker exec -it he-server /bin/bash
export HE_SERVER=/home/he-transformer/he_server
# 编译密态环境he-transformer
cd /home/he-transformer/build
make install
./test/unit-test
  • 安装he-server依赖环境
# 激活he-server虚拟环境
source /home/he-transformer/build/external/venv-tf-py3/bin/activate
# 安装依赖
cd /home/he-transformer/build && make install python_client
pip install python/dist/pyhe_client-*.whl
cd ${HE_SERVER} && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
  • 根据实际需求修改he_server相关配置(可选)
apt-get update && apt-get install vim && vi app.ini

可根据需求修改model,inference,log对应目录,需要放置与he_server外时,注意修改[2.2](#2.2 启动容器)节中的docker-compose-he-server.ymlvolumes字段

  • 测试he-server本地环境
bash ${HE_SERVER}/test/scripts/local_test.sh
  • 启动he-server
cd /home/he-transformer/he-server && python app.py
  • 测试he-server API
bash ${HE_SERVER}/test/scripts/api_test.sh

2.4 启动HE_client

  • 进入容器
docker exec -it he-client /bin/bash
  • 中间步骤同[2.3](#2.3 启动HE_server)节(可按需修改clientport

  • 启动he-client

cd /home/he-transformer/he-server/client && python client_app.py
  • 测试he-client
bash ${HE_SERVER}/test/scripts/client_server_test.sh -h ${HE-SERVER-URL}

he-client的测试需先保证he-server启动成功

2.5 FATE拓展模块(可选)

此处仅提供docker-compose部署实例,详情参考FATE官方文档

  • 准备挂载目录
cd ${WORKDIR} && mkdir fate_dev
cp -r ${WORKDIR}/he_server/fate_dev ${WORKDIR}/fate_dev
  • 准备docker-compose-fate-dev.yml
cd ${WORKDIR} && cd fate_dev
vi docker-compose-fate.yml

写入如下内容

version: '3'

services:
  fate-dev:
    container_name: fate-dev
    image: federatedai/standalone_fate:1.9.0
    ports:
      - 12996:8080
      - 12997:9360
      - 12998:9380
    volumes:
      - ${WORKDIR}/fate_dev/fate_dev:/data/projects/fate/fate_dev

启动并进入容器

docker-compose -f docker-compose-fate.yml up -d
docker exec -it fate-dev /bin/bash
source /data/projects/fate/bin/init_env.sh
fate_test unittest federatedml --yes
  • 加入he-nn模块
# 加入he-nn模块
cd /data/projects/fate/fate_dev && bash he_nn_setup.sh
# 重启fate-flow
bash /data/projects/fate/fateflow/bin/service.sh restart

3 API

3.1 model load

3.1.1 接口说明

url model/load
协议 http
请求方式 POST

3.1.2 请求说明

参数名称 是否必须 类型 描述
model_type 必选 string 请求的参数类型
is_init 可选 int 请求模型是否初次加载
model_name 可选 int 请求模型的name或id

3.1.3 返回说明

示例:

{
  "code": 200, 
  "data": {
    "loadModel": "success", 
    "model_id": "320cec4a-8ba1-11ed-a8c1-0242ac130003", 
    "model_name": "320cecMLP", 
    "model_type": "MLP"
  }, 
  "message": "调用成功!"}

3.2 model list

3.2.1 接口说明

url model/get_list
协议 http
请求方式 POST

3.2.2 请求说明

参数名称 是否必须 类型 描述
model_type 必选 string 查询的模型类型

3.2.3 返回说明

示例:

{
  'code': 200, 
  'data': {
    'model_list': [
      {'model_id': '05d6a590-808d-11ed-9854-0242ac130003', 'model_name': '05d6a5MLP', 'model_type': 'MLP'}, 
      {'model_id': '395825a6-808d-11ed-9854-0242ac130003', 'model_name': '395825Cryptonets', 'model_type': 'Cryptonets'}, 
      {'model_id': '419ef5f0-808d-11ed-9854-0242ac130003', 'model_name': '419ef5MLP', 'model_type': 'MLP'}, 
      {'model_id': '397a67fa-808e-11ed-9854-0242ac130003', 'model_name': '397a67RNN', 'model_type': 'RNN'}, 
      {'model_id': '3e7bf35e-808e-11ed-9854-0242ac130003', 'model_name': '3e7bf3BERT', 'model_type': 'BERT'}, 
      {'model_id': '29bb78d6-8ba1-11ed-a8c1-0242ac130003', 'model_name': '29bb78Cryptonets', 'model_type': 'Cryptonets'}, 
      {'model_id': '320cec4a-8ba1-11ed-a8c1-0242ac130003', 'model_name': '320cecMLP', 'model_type': 'MLP'}, 
      {'model_id': '2a99da4e-8ba2-11ed-a8c1-0242ac130003', 'model_name': '2a99daRNN', 'model_type': 'RNN'}, 
      {'model_id': '349f53e8-8ba2-11ed-a8c1-0242ac130003', 'model_name': '349f53BERT', 'model_type': 'BERT'}], 'quary_state': 'success'}, 'message': '调用成功!'}.

3.3 model eval

3.3.1 接口说明

url model/test
协议 http
请求方式 POST

3.3.2 请求说明

参数名称 是否必须 类型 描述
model_type 必选 string 评估模型的类型
model_name 必选 string 评估模型name或id
is_encryption 必选 bool 评估是否加密
enc_param 可选 string 评估使用的加密参数, 默认为N13_L8

3.3.3 返回说明

示例:

{
  'code': 200, 
  'data': {
    'batch_size': 1, 
    'encryption_parameters': '', 
    'is_enc': False, 
    'loadModel': 'success', 
    'log': 'log', 
    'model_id': '3e7bf35e-808e-11ed-9854-0242ac130003', 
    'model_name': '3e7bf3BERT', 
    'model_type': 'BERT', 
    'test_acc': 1.0, 
    'time_cost': '0.11416935920715332(s)'
 }, 'message': '调用成功!'}

3.4 model inference

3.4.1 接口说明

url model/inference
协议 http
请求方式 POST

3.4.2 请求说明

参数名称 是否必须 类型 描述
model_type 必选 string 推断模型类型
model_name 必选 string 推断模型name或id
inf_file_name 必选 string 推断请求的数据文件(需为.npy格式)
is_encryption 必选 string 是否加密(yesno
encryption_params 可选 string 如果is_encryption='yes'则默认加密参数为N13_L8
batch_size 必选 int 推断文件中包含多少条数据

3.4.3 返回说明

示例:

{'code': 200, 
 'data': 
 {'inference_file': '83d702test.npy', 
  'inference_id': '83d8c200-8bac-11ed-a8c1-0242ac130003', 
  'inference_result': '[[-4.0945258140563965, 4.05887508392334]]', 
  'inference_size': 1, 
  'is_encryption': 'yes', 
  'loadModel': 'success', 
  'log': 'log', 
  'model_id': '3e7bf35e-808e-11ed-9854-0242ac130003', 
  'model_name': '3e7bf3BERT', 
  'model_type': 'BERT', 
  'time_cost': '24.76659655570984(s)'
 }, 'message': '调用成功!'}

注意

  • 直接通过POST请求调用此API需要先通过[3.5节](#3.5 upload file)的uploadfile上传文件
  • 直接通过POST请求调用此API需要请求数据进行预处理,根据模型类型不同预处理过程也不同,可参考he_server/test/inference_api_test.py文件。

3.5 upload file

3.5.1 接口说明

url model/uploadfile
协议 http
请求方式 POST

3.5.2 请求说明

参数名称 是否必须 类型 描述
file_name 必选 string 上传的文件的文件名

3.5.3 返回说明

示例:

{'code': 200, 'data': {'file_upload': 'success', 'inf_file_name': '83d702test.npy'}, 'message': '调用成功!'}

3.6 inference list

3.6.1 接口说明

url model/get_inference
协议 http
请求方式 POST

3.6.2 请求说明

参数名称 是否必须 类型 描述
inference_id 可选 string 查询的推断任务id(如果为空,则默认查到所有推断任务)

3.6.3 返回说明

示例(查询推断列表):

{'code': 200, 'data': 
 {'inference_list': [
  {'encryption_parameter': 'he_seal_ckks_config_N13_L8.json', 'finish_time': '2022-12-21 07:04:15.796252', 'inference_file': 'a28f44test.npy', 'inference_id': 'a29127fa-80fd-11ed-ba7b-0242ac130003', 'inference_size': 2, 'is_encryption': 'yes', 'model_name': 'latest', 'model_type': 'Cryptonets', 'start_time': '2022-12-21 07:03:56.085714', 'state': 'finished', 'stop_time': None}, 
  {'encryption_parameter': 'he_seal_ckks_config_N13_L8.json', 'finish_time': None, 'inference_file': 'ec942ftest.npy', 'inference_id': 'ec9773b8-8102-11ed-98ec-0242ac130003', 'inference_size': 2, 'is_encryption': 'yes', 'model_name': 'latest', 'model_type': 'MLP', 'start_time': '2022-12-21 07:41:47.761999', 'state': 'started', 'stop_time': None}, 
  {'encryption_parameter': 'he_seal_ckks_config_N13_L8.json', 'finish_time': None, 'inference_file': 'eb36betest.npy', 'inference_id': 'eb39e334-810c-11ed-bbf5-0242ac130003', 'inference_size': 1, 'is_encryption': 'yes', 'model_name': 'latest', 'model_type': 'RNN', 'start_time': '2022-12-21 08:53:20.438392', 'state': 'started', 'stop_time': None}, 
  {'encryption_parameter': 'he_seal_ckks_config_N13_L8.json', 'finish_time': None, 'inference_file': '833b7btest.npy', 'inference_id': '833ccd26-813b-11ed-bd48-0242ac130003', 'inference_size': 1, 'is_encryption': 'yes', 'model_name': 'latest', 'model_type': 'BERT', 'start_time': '2022-12-21 14:26:52.320738', 'state': 'started', 'stop_time': None}, 
], 'quary_state': 'success'}, 'message': '调用成功!'}

示例(查询指定推断任务):

{'code': 200, 
 'data': {
   'inference_list': {
     'encryption_parameter': 'he_seal_ckks_config_N13_L8.json', 
     'finish_time': '2022-12-21 16:57:18.075244', 
     'inference_file': '72e682test.npy', 
     'inference_id': '72e81f6a-8150-11ed-9324-0242ac130003', 
     'inference_size': 1, 
     'is_encryption': 'yes', 
     'model_name': 'latest', 
     'model_type': 'RNN', 
     'start_time': '2022-12-21 16:56:44.353570', 
     'state': 'finished', 
     'stop_time': None}, 
   'quary_state': 'success'}, 
 'message': '调用成功!'}

4 FATE 拓展模块

4.1 he-nn-load

Name Type Description Default
model_type string 支持的模型类型,包括MLP,CNN,AlexNet,RNNBERT 'CNN'
server_url string 指定的HE-server API地址 '127.0.0.1:12995'
is_init bool 是否首次加载此模型(首次加载时将绑定一个新的模型,否则将从已绑定的模型中选择) True
model_id string 加载指定model_id的模型(只有在is_init=False时生效) ''

4.2 he-nn-eval

Name Type Description Default
model_id string 评估的模型id 'latest'
model_type string 评估模型类型 CNN
server_url string 指定的HE-server API地址 '127.0.0.1:12993'
start_batch int 加载dataset的start_batch 0
batch_size int 加载dataset的batch_size(注意:最大值是512) 1
is_encryption bool 评估时是否对测试集加密 False
encryption_parameters string 指定使用预设的加密参数,包括N11_L1N12_L4N13_L8三种安全等级的加密参数 'N13_L8'
is_custom_enc_param bool 是否使用自定义加密参数(注意:如果值为True,自定义加密参数文件需要命名为'custom_enc_param.json',并与DSL配置文件在同一目录下) False

4.3 he-nn-inference

Name Type Description Default
model_id string 推断模型id 'latest'
model_type strint 推断模型类型 CNN
server_url string 指定的HE-server API地址 '127.0.0.1:12993'
num_inference int 推断请求数量 1
file_inference string 推断请求文件(注意:需要为numpy格式的文件) ./inference_data.npy
is_encryption bool 评估时是否对测试集加密 False
encryption_parameters string 指定使用预设的加密参数,包括N11_L1N12_L4N13_L8三种安全等级的加密参数 'N13_L8'
is_custom_enc_param bool 是否使用自定义加密参数(注意:如果值为True,自定义加密参数文件需要命名为'custom_enc_param.json',并与DSL配置文件在同一目录下) False
client bool 是否使用he-client False
client_url bool he-client的API地址 '127.0.0.1:12995'

4.4 example

模型加载作业

# 进入he_nn example 目录
cd ${FATE_PROJECT}/examples/dsl/v2/he_nn
# 提交模型加载作业
flow job submit -c he_nn_model_load_conf.json -d he_nn_model_load_dsl.json

推断作业

# 密态推断
flow job submit -c he_nn_model_inference_conf.json -d he_nn_model_inference_dsl.json
# client模式密态推断
flow job submit -c he_nn_model_client_inference_conf.json -d he_nn_model_client_inference_dsl.json

类似以下输出则作业提交成功

{
    "data": {
        "board_url": "http://127.0.0.1:8080/index.html#/dashboard?job_id=202210271050422864400&role=guest&party_id=9999",
        "code": 0,
        "dsl_path": "/data/projects/fate/fateflow/jobs/202210271050422864400/job_dsl.json",
        "job_id": "202210271050422864400",
        "logs_directory": "/data/projects/fate/fateflow/logs/202210271050422864400",
        "message": "success",
        "model_info": {
            "model_id": "guest-9999#host-10000#model",
            "model_version": "202210271050422864400"
        },
        "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/202210271050422864400/pipeline_dsl.json",
        "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/202210271050422864400/guest/9999/job_runtime_on_party_conf.json",
        "runtime_conf_path": "/data/projects/fate/fateflow/jobs/202210271050422864400/job_runtime_conf.json",
        "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/202210271050422864400/train_runtime_conf.json"
    },
    "jobId": "202210271050422864400",
    "retcode": 0,
    "retmsg": "success"
}

获取模型加载结果

  1. 使用fate-flow:

    • 获取作业id(作业提交成功时返回的jobId),获取模块名(作业提交时he_nn_model_load_dsl.json配置的components.name

    • 进入${FATE_PROJECT}/fateflow/logs/${jobId}/guest/${COMPONENTS_NAME}即可查看

    • 如下输出结果代表模型加载成功

    {'code': 200, 'data': {'loadModel': 'success', 'log': 'log', 'model_id': 'ae98806e-4e05-11ed-9a7d-0242ac130003', 'model_name': '0003Cryptonets', 'model_owner': 'test_owner', 'model_type': 'Cryptonets', 'test_acc': 0.9453125}, 'message': '调用成功!'}
    
  2. 使用fate-board:

    • 开启fate-board,浏览器打开${IP}:12996,进入对应jobId条目并进入详情页面

    image-20221027213406313

    • 等待作业完成

5 性能测试

针对5种主流模型架构的密文替换,在Intel Xeon Gold 5218 CPU@2.30GHz,256G RAM运行环境下,测试情况如下:

MLP

model_type back_end accuracy total times(s)
origin-model cpu 0.984375 0.218(512)
he-model cpu 0.973 0.256(512)
he-model HE-SEAL 0.974609 0.394(512)
he-model HE-SEAL N13_L8 0.976562 1.126(512)

转换精度损失为1.1%, 推断效率额外开销为14.8%。

CNN

model_type back_end accuracy total times(s)
origin-model cpu 0.984231 0.531(512)
he-model cpu 0.962891 0.542(512)
he-model HE-SEAL 0.962891 3.276(512)
he-model HE-SEAL N13_L8 0.9375 8.3125(1)

转换精度损失为2.1%,推断效率额外开销为2.0%

AlexNet

model_type back_end accuracy total times(s)
origin-model cpu 0.987324 0.721(512)
he-model cpu 0.972345 0.663(512)
he-model HE-SEAL 0.977342 6.329(512)
he-model HE-SEAL N13_L8 0.964354 10.345(1)

转换精度损失为1.5%,模型简化,无推断效率额外开销

RNN

model_type back_end accuracy total times(s)
origin-model cpu 0.807223 50.256(512)
he-model cpu 0.743257 47.208(512)
he-model HE-SEAL 0.742303 167.329(512)
he-model HE-SEAL N13_L8 0.732939 21.293(1)

转换精度损失为6.4%,模型简化,无推断效率额外开销

BERT

model_type back_end accuracy total times(s)
bert-tiny cpu 0.802478 4.937(512)
he-model cpu 0.818807 4.396(512)
he-model HE-SEAL N11_L1 0.818359 23.625(1)
he-model HE-SEAL N13_L8 0.816250 25.726(1)

转换精度损失为0.5%, 模型简化,无推断效率额外开销

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。