已合并
docs目录基本概念章节文件名中文改英文 #73
chenjiao创建于 7月23日
docs目录基本概念章节文件名中文改英文 #73
已合并
共 22 个文件变更+67-67
| @@ -19,20 +19,20 @@ Docs目录结构说明如下: | |||
| 19 | │ └── ... | 19 | │ └── ... |
| 20 | ├── figures # 图片目录 | 20 | ├── figures # 图片目录 |
| 21 | ├── install # 环境安装和编译指导文档 | 21 | ├── install # 环境安装和编译指导文档 |
| 22 | - │ ├── build.md | 22 | + │ ├── build.md |
| 23 | - │ ├── compile.md | 23 | + │ ├── compile.md |
| 24 | │ ├── dir_structure.md | 24 | │ ├── dir_structure.md |
| 25 | - │ ├── quick_install.md | 25 | + │ ├── quick_install.md |
| 26 | │ └── ... | 26 | │ └── ... |
| 27 | ├── invocation # 算子调用指导文档(包括aclnn调用、图模式调用等) | 27 | ├── invocation # 算子调用指导文档(包括aclnn调用、图模式调用等) |
| 28 | │ ├── quick_op_invocation.md | 28 | │ ├── quick_op_invocation.md |
| 29 | │ ├── op_invocation.md | 29 | │ ├── op_invocation.md |
| 30 | │ └── ... | 30 | │ └── ... |
| 31 | ├── op_api_list.md # 全量算子接口列表(aclnn) | 31 | ├── op_api_list.md # 全量算子接口列表(aclnn) |
| 32 | - ├── op_list.md # 全量算子列表 | 32 | + ├── op_list.md # 全量算子列表 |
| 33 | ├── CONTRIBUTING_DOCS.md # 文档贡献说明 | 33 | ├── CONTRIBUTING_DOCS.md # 文档贡献说明 |
| 34 | ├── QUICKSTART.md # 快速入门 | 34 | ├── QUICKSTART.md # 快速入门 |
| 35 | -└── README.md | 35 | +└── README.md |
| 36 | ``` | 36 | ``` |
| 37 | 37 | ||
| 38 | ## 进阶教程 | 38 | ## 进阶教程 |
| @@ -68,5 +68,5 @@ Docs目录结构说明如下: | |||
| 68 | 68 | ||
| 69 | | 文档 | 说明 | | 69 | | 文档 | 说明 | |
| 70 | | ----------------------------------- | ------------------------------------------------------------ | | 70 | | ----------------------------------- | ------------------------------------------------------------ | |
| 71 | -| [算子基本概念](zh/context/基本概念.md) | 介绍算子领域相关的基础概念和术语,如量化/稀疏、数据类型、数据格式等。 | | 71 | +| [算子基本概念](zh/context/basic_concept.md) | 介绍算子领域相关的基础概念和术语,如量化/稀疏、数据类型、数据格式等。 | |
| 72 | | [build参数说明](zh/install/build.md) | 介绍本项目build.sh参数功能和取值,包括源码编译、算子调用、调试等。 | | 72 | | [build参数说明](zh/install/build.md) | 介绍本项目build.sh参数功能和取值,包括源码编译、算子调用、调试等。 | |
| @@ -0,0 +1,12 @@ | |||
| 1 | +# 基本概念 | ||
| 2 | + | ||
| 3 | +- [两段式接口](./two_phase_api.md) | ||
| 4 | +- [数据结构](./data_structure.md) | ||
| 5 | +- [数据类型](./data_type.md) | ||
| 6 | +- [数据格式](./data_format.md) | ||
| 7 | +- [非连续的Tensor](./non_contiguous_tensor.md) | ||
| 8 | +- [broadcast关系](./broadcast_relationship.md) | ||
| 9 | +- [互推导关系](./deduction_relationship.md) | ||
| 10 | +- [互转换关系](./conversion_relationship.md) | ||
| 11 | +- [量化介绍](./quant_mode_introduction.md) | ||
| 12 | +- [sparse模式介绍](./sparse_mode_introduction.md) | ||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | 当一个API(如aclnnAdd、aclnnMul等)**输入的aclTensor数据类型**不一致时,API内部会推导出一个数据类型,将输入数据转换成该数据类型进行计算。 | 7 | 当一个API(如aclnnAdd、aclnnMul等)**输入的aclTensor数据类型**不一致时,API内部会推导出一个数据类型,将输入数据转换成该数据类型进行计算。 |
| 8 | 8 | ||
| 9 | -aclTensor支持的数据类型参见[数据类型](数据类型.md),其中部分类型满足如下推导规则,推导原理类似PyTorch的[Type Promotion](https://pytorch.org/docs/stable/tensor_attributes.html#type-promotion-doc)。 | 9 | +aclTensor支持的数据类型参见[数据类型](data_type.md),其中部分类型满足如下推导规则,推导原理类似PyTorch的[Type Promotion](https://pytorch.org/docs/stable/tensor_attributes.html#type-promotion-doc)。 |
| 10 | 10 | ||
| 11 | 类型推导的规则如下: | 11 | 类型推导的规则如下: |
| 12 | 12 | ||
| @@ -48,7 +48,7 @@ aclTensor支持的数据类型参见[数据类型](数据类型.md),其中部 | |||
| 48 | 48 | ||
| 49 | 当一个API(如aclnnAdds、aclnnMuls等)**输入的Tensor数据类型**和**输入的Scalar数据类型**不一致时,API内部会推导出一个数据类型,将输入数据转换成该数据类型进行计算。 | 49 | 当一个API(如aclnnAdds、aclnnMuls等)**输入的Tensor数据类型**和**输入的Scalar数据类型**不一致时,API内部会推导出一个数据类型,将输入数据转换成该数据类型进行计算。 |
| 50 | 50 | ||
| 51 | -aclTensor支持的数据类型参见[数据类型](数据类型.md),其中部分类型满足如下推导规则,推导原理类似PyTorch的[Type Promotion](https://pytorch.org/docs/stable/tensor_attributes.html#type-promotion-doc)。 | 51 | +aclTensor支持的数据类型参见[数据类型](data_type.md),其中部分类型满足如下推导规则,推导原理类似PyTorch的[Type Promotion](https://pytorch.org/docs/stable/tensor_attributes.html#type-promotion-doc)。 |
| 52 | 52 | ||
| 53 | 类型推导的规则如下: | 53 | 类型推导的规则如下: |
| 54 | 54 | ||
| @@ -1,12 +0,0 @@ | |||
| 1 | -# 基本概念 | ||
| 2 | - | ||
| 3 | -- [两段式接口](./两段式接口.md) | ||
| 4 | -- [数据结构](./数据结构.md) | ||
| 5 | -- [数据类型](./数据类型.md) | ||
| 6 | -- [数据格式](./数据格式.md) | ||
| 7 | -- [非连续的Tensor](./非连续的Tensor.md) | ||
| 8 | -- [broadcast关系](./broadcast关系.md) | ||
| 9 | -- [互推导关系](./互推导关系.md) | ||
| 10 | -- [互转换关系](./互转换关系.md) | ||
| 11 | -- [量化介绍](./量化介绍.md) | ||
| 12 | -- [sparse模式介绍](./sparse_mode参数说明.md) | ||
| @@ -43,7 +43,7 @@ bash build.sh --pkg --soc=Ascend950 --vendor_name=custom --ops=add_example | |||
| 43 | ./build_out/cann-ops-ras-${vendor_name}_linux-${arch}.run | 43 | ./build_out/cann-ops-ras-${vendor_name}_linux-${arch}.run |
| 44 | ``` | 44 | ``` |
| 45 | 45 | ||
| 46 | -* 参考[aclnn调用](../invocation/quick_op_invocation.md#aclnn调用)完成test_aclnn_add_example.cpp的编译,编出可执行文件test_aclnn_add_example | 46 | +* 参考[aclnn调用](../invocation/quick_op_invocation.md)完成test_aclnn_add_example.cpp的编译,编出可执行文件test_aclnn_add_example |
| 47 | 47 | ||
| 48 | ## 执行仿真命令 | 48 | ## 执行仿真命令 |
| 49 | 49 | ||
| @@ -85,7 +85,7 @@ aclnnStatus aclnnCryptoAicpu( | |||
| 85 | <td>inputText (aclTensor*) </td> | 85 | <td>inputText (aclTensor*) </td> |
| 86 | <td>输入</td> | 86 | <td>输入</td> |
| 87 | <td>算子加解密输入的明文或密文。</td> | 87 | <td>算子加解密输入的明文或密文。</td> |
| 88 | - <td> | 88 | + <td> |
| 89 | 支持空Tensor,读密钥时可为空。 | 89 | 支持空Tensor,读密钥时可为空。 |
| 90 | 形状和类型需要与outputText一致。</td> | 90 | 形状和类型需要与outputText一致。</td> |
| 91 | <td>FLOAT, FLOAT16, INT32, INT64, INT16, INT8, UINT8, DOUBLE, BFLOAT16</td> | 91 | <td>FLOAT, FLOAT16, INT32, INT64, INT16, INT8, UINT8, DOUBLE, BFLOAT16</td> |
| @@ -178,7 +178,7 @@ aclnnStatus aclnnCryptoAicpu( | |||
| 178 | 178 | ||
| 179 | - **返回值** | 179 | - **返回值** |
| 180 | 180 | ||
| 181 | - aclnnStatus:返回状态码,具体参见 [aclnn返回码](../../../docs/zh/context/aclnn.md) | 181 | + aclnnStatus:返回状态码,具体参见 [aclnn返回码](../../../docs/zh/context/aclnn_return_code.md) |
| 182 | 182 | ||
| 183 | 第一段接口完成入参校验,出现以下场景时报错: | 183 | 第一段接口完成入参校验,出现以下场景时报错: |
| 184 | 184 | ||
| @@ -248,7 +248,7 @@ aclnnStatus aclnnCryptoAicpu( | |||
| 248 | 248 | ||
| 249 | - **返回值** | 249 | - **返回值** |
| 250 | 250 | ||
| 251 | - 返回aclnnStatus状态码,具体见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md) | 251 | + 返回aclnnStatus状态码,具体见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md) |
| 252 | 252 | ||
| 253 | ## 约束说明 | 253 | ## 约束说明 |
| 254 | 254 | ||
| @@ -262,11 +262,11 @@ aclnnStatus aclnnCryptoAicpu( | |||
| 262 | 5. opConfig.algType = 1 (AES-CTR-128算法) 时,tag 可以为空(不为空也不会使用该参数) | 262 | 5. opConfig.algType = 1 (AES-CTR-128算法) 时,tag 可以为空(不为空也不会使用该参数) |
| 263 | 6. opConfig.algType = 2 (AES-GCM-128算法) 时,tag 不能为空 | 263 | 6. opConfig.algType = 2 (AES-GCM-128算法) 时,tag 不能为空 |
| 264 | 7. opConfig 的参数必须符合定义,version 取值 1,2,mode 取值 0,1,2, algType 取值 1,2, keyType 取值 1,keyId 取值 [0, UINT32_MAX], deviceId 取值 [0,63] | 264 | 7. opConfig 的参数必须符合定义,version 取值 1,2,mode 取值 0,1,2, algType 取值 1,2, keyType 取值 1,keyId 取值 [0, UINT32_MAX], deviceId 取值 [0,63] |
| 265 | - 8. 读秘钥时必须传入正确的 keyId (一个 keyId 对应一个spdm 已派生的加解密秘钥),否则会报错 | 265 | + 8. 读秘钥时必须传入正确的 keyId (一个 keyId 对应一个spdm 已派生的加解密秘钥),否则会报错 |
| 266 | 266 | ||
| 267 | ## 调用示例 | 267 | ## 调用示例 |
| 268 | 268 | ||
| 269 | -示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 269 | +示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/compile_and_run_sample.md)。 |
| 270 | 270 | ||
| 271 | ```cpp | 271 | ```cpp |
| 272 | #include <iostream> | 272 | #include <iostream> |
| @@ -393,7 +393,7 @@ int aes_128_ctr_decrypt(const unsigned char *key, unsigned char *iv, | |||
| 393 | plaintext_len += len; | 393 | plaintext_len += len; |
| 394 | // 5. 释放上下文 | 394 | // 5. 释放上下文 |
| 395 | EVP_CIPHER_CTX_free(ctx); | 395 | EVP_CIPHER_CTX_free(ctx); |
| 396 | - | 396 | + |
| 397 | if (ciphertext_len != plaintext_len) { | 397 | if (ciphertext_len != plaintext_len) { |
| 398 | return -1; | 398 | return -1; |
| 399 | } | 399 | } |
| @@ -413,13 +413,13 @@ int aes_128_gcm_encrypt(unsigned char *key, unsigned char *iv, | |||
| 413 | return -1; | 413 | return -1; |
| 414 | } | 414 | } |
| 415 | int len = 0, ciphertext_len = 0; | 415 | int len = 0, ciphertext_len = 0; |
| 416 | - | 416 | + |
| 417 | if (1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len)) { | 417 | if (1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len)) { |
| 418 | EVP_CIPHER_CTX_free(ctx); | 418 | EVP_CIPHER_CTX_free(ctx); |
| 419 | return -1; | 419 | return -1; |
| 420 | } | 420 | } |
| 421 | ciphertext_len += len; | 421 | ciphertext_len += len; |
| 422 | - | 422 | + |
| 423 | if (1 != EVP_EncryptFinal_ex(ctx, nullptr, &len)) { | 423 | if (1 != EVP_EncryptFinal_ex(ctx, nullptr, &len)) { |
| 424 | EVP_CIPHER_CTX_free(ctx); | 424 | EVP_CIPHER_CTX_free(ctx); |
| 425 | return -1; | 425 | return -1; |
| @@ -686,7 +686,7 @@ int main(int argc, char *argv[]) { | |||
| 686 | for (int i = 0; i < 1; i++) { | 686 | for (int i = 0; i < 1; i++) { |
| 687 | LOG_PRINT("y[%d] = %d\n", i, resultY[i]); | 687 | LOG_PRINT("y[%d] = %d\n", i, resultY[i]); |
| 688 | } | 688 | } |
| 689 | - if (mode == 0) { | 689 | + if (mode == 0) { |
| 690 | std::vector<uint8_t> resKey(16, 0); | 690 | std::vector<uint8_t> resKey(16, 0); |
| 691 | ret = aclrtMemcpy( | 691 | ret = aclrtMemcpy( |
| 692 | resKey.data(), resKey.size(), | 692 | resKey.data(), resKey.size(), |
| @@ -14,12 +14,12 @@ | |||
| 14 | ## 功能说明 | 14 | ## 功能说明 |
| 15 | 15 | ||
| 16 | - 接口功能:将张量x和配置参数(如param、cmd)发送至PMCC混淆引擎。引擎的CA模块调用TA模块,进行张量混淆处理,最终返回shape与x一致的混淆后的张量y。 | 16 | - 接口功能:将张量x和配置参数(如param、cmd)发送至PMCC混淆引擎。引擎的CA模块调用TA模块,进行张量混淆处理,最终返回shape与x一致的混淆后的张量y。 |
| 17 | - | 17 | + |
| 18 | - 背景:PMCC(Privacy&Model Confidential Computing)模型混淆特性利用CPU核中的TrustZone可信执行环境隔离存储混淆因子、派生混淆掩码、执行动态掩码添加。PMCC基于NPU TrustZone构建了模型混淆引擎CA(普通OS中的Client Application)与模型混淆引擎TA(TEE OS中的Trusted Application)。为了使模型在推理执行过程中能够访问模型混淆引擎TA,通过AICPU算子机制及NPU卡内localhost socket进行中转。 | 18 | - 背景:PMCC(Privacy&Model Confidential Computing)模型混淆特性利用CPU核中的TrustZone可信执行环境隔离存储混淆因子、派生混淆掩码、执行动态掩码添加。PMCC基于NPU TrustZone构建了模型混淆引擎CA(普通OS中的Client Application)与模型混淆引擎TA(TEE OS中的Trusted Application)。为了使模型在推理执行过程中能够访问模型混淆引擎TA,通过AICPU算子机制及NPU卡内localhost socket进行中转。 |
| 19 | 19 | ||
| 20 | ## 函数原型 | 20 | ## 函数原型 |
| 21 | 21 | ||
| 22 | -每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnObfuscationCalculateGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationCalculate”接口执行计算。 | 22 | +每个算子分为[两段式接口](../../../docs/zh/context/two_phase_api.md),必须先调用 “aclnnObfuscationCalculateGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationCalculate”接口执行计算。 |
| 23 | 23 | ||
| 24 | ```c++ | 24 | ```c++ |
| 25 | aclnnStatus aclnnObfuscationCalculateGetWorkspaceSize( | 25 | aclnnStatus aclnnObfuscationCalculateGetWorkspaceSize( |
| @@ -143,10 +143,10 @@ aclnnStatus aclnnObfuscationCalculate( | |||
| 143 | 143 | ||
| 144 | - **返回值** | 144 | - **返回值** |
| 145 | 145 | ||
| 146 | - aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 146 | + aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 147 | 147 | ||
| 148 | 第一段接口完成入参校验,出现以下场景时报错: | 148 | 第一段接口完成入参校验,出现以下场景时报错: |
| 149 | - | 149 | + |
| 150 | <table style="undefined;table-layout: fixed;width: 1202px"><colgroup> | 150 | <table style="undefined;table-layout: fixed;width: 1202px"><colgroup> |
| 151 | <col style="width: 262px"> | 151 | <col style="width: 262px"> |
| 152 | <col style="width: 121px"> | 152 | <col style="width: 121px"> |
| @@ -180,7 +180,7 @@ aclnnStatus aclnnObfuscationCalculate( | |||
| 180 | </table> | 180 | </table> |
| 181 | 181 | ||
| 182 | ## aclnnObfuscationCalculate | 182 | ## aclnnObfuscationCalculate |
| 183 | - | 183 | + |
| 184 | - **参数说明** | 184 | - **参数说明** |
| 185 | <table style="undefined;table-layout: fixed; width: 1154px"><colgroup> | 185 | <table style="undefined;table-layout: fixed; width: 1154px"><colgroup> |
| 186 | <col style="width: 153px"> | 186 | <col style="width: 153px"> |
| @@ -219,21 +219,21 @@ aclnnStatus aclnnObfuscationCalculate( | |||
| 219 | 219 | ||
| 220 | - **返回值** | 220 | - **返回值** |
| 221 | 221 | ||
| 222 | - 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 222 | + 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 223 | 223 | ||
| 224 | ## 约束说明 | 224 | ## 约束说明 |
| 225 | 225 | ||
| 226 | - 确定性计算: | 226 | - 确定性计算: |
| 227 | - aclnnObfuscationCalculate默认确定性实现。 | 227 | - aclnnObfuscationCalculate默认确定性实现。 |
| 228 | 228 | ||
| 229 | -- 该接口与[aclnnObfuscationSetup](../context/aclnnObfuscationSetup.md)配套使用,完成PMCC模型混淆功能,使用方式如下: | 229 | +- 该接口与aclnnObfuscationSetup配套使用,完成PMCC模型混淆功能,使用方式如下: |
| 230 | - 首先调用aclnnObfuscationSetup进行资源初始化,可重复调用,以最后一次初始化为准 | 230 | - 首先调用aclnnObfuscationSetup进行资源初始化,可重复调用,以最后一次初始化为准 |
| 231 | - 再多次调用aclnnObfuscationCalculate进行张量混淆处理 | 231 | - 再多次调用aclnnObfuscationCalculate进行张量混淆处理 |
| 232 | - 最后调用aclnnObfuscationSetup进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 | 232 | - 最后调用aclnnObfuscationSetup进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 |
| 233 | 233 | ||
| 234 | ## 调用示例 | 234 | ## 调用示例 |
| 235 | 235 | ||
| 236 | -示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 236 | +示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/compile_and_run_sample.md)。 |
| 237 | 237 | ||
| 238 | ```cpp | 238 | ```cpp |
| 239 | #include <iostream> | 239 | #include <iostream> |
| @@ -319,7 +319,7 @@ int main() { | |||
| 319 | aclTensor* fd = nullptr; | 319 | aclTensor* fd = nullptr; |
| 320 | std::vector<float> fdHostData = {-1}; | 320 | std::vector<float> fdHostData = {-1}; |
| 321 | 321 | ||
| 322 | - //创建fd aclTensor | 322 | + //创建fd aclTensor |
| 323 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); | 323 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); |
| 324 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 324 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 325 | 325 | ||
| @@ -456,7 +456,7 @@ int main() { | |||
| 456 | } | 456 | } |
| 457 | if (workspaceSize2 > 0) { | 457 | if (workspaceSize2 > 0) { |
| 458 | aclrtFree(workspaceAddr2); | 458 | aclrtFree(workspaceAddr2); |
| 459 | - } | 459 | + } |
| 460 | if (workspaceSize3 > 0) { | 460 | if (workspaceSize3 > 0) { |
| 461 | aclrtFree(workspaceAddr3); | 461 | aclrtFree(workspaceAddr3); |
| 462 | } | 462 | } |
| @@ -14,12 +14,12 @@ | |||
| 14 | ## 功能说明 | 14 | ## 功能说明 |
| 15 | 15 | ||
| 16 | - 接口功能:将张量x和配置参数(如param、cmd)发送至PMCC混淆引擎。引擎的CA模块调用TA模块,进行张量混淆处理,最终返回shape与x一致的混淆后的张量y。 | 16 | - 接口功能:将张量x和配置参数(如param、cmd)发送至PMCC混淆引擎。引擎的CA模块调用TA模块,进行张量混淆处理,最终返回shape与x一致的混淆后的张量y。 |
| 17 | - | 17 | + |
| 18 | - 背景:PMCC(Privacy&Model Confidential Computing)模型混淆特性利用CPU核中的TrustZone可信执行环境隔离存储混淆因子、派生混淆掩码、执行动态掩码添加。PMCC基于NPU TrustZone构建了模型混淆引擎CA(普通OS中的Client Application)与模型混淆引擎TA(TEE OS中的Trusted Application)。为了使模型在推理执行过程中能够访问模型混淆引擎TA,通过AICPU算子机制及NPU卡内localhost socket进行中转。本次接口新增obfCoefficient,本参数为DeepSeek满血版本中,为了保证模型混淆性能满足要求,增加混淆系数,对输入数据按照混淆系数比例进行处理。 | 18 | - 背景:PMCC(Privacy&Model Confidential Computing)模型混淆特性利用CPU核中的TrustZone可信执行环境隔离存储混淆因子、派生混淆掩码、执行动态掩码添加。PMCC基于NPU TrustZone构建了模型混淆引擎CA(普通OS中的Client Application)与模型混淆引擎TA(TEE OS中的Trusted Application)。为了使模型在推理执行过程中能够访问模型混淆引擎TA,通过AICPU算子机制及NPU卡内localhost socket进行中转。本次接口新增obfCoefficient,本参数为DeepSeek满血版本中,为了保证模型混淆性能满足要求,增加混淆系数,对输入数据按照混淆系数比例进行处理。 |
| 19 | 19 | ||
| 20 | ## 函数原型 | 20 | ## 函数原型 |
| 21 | 21 | ||
| 22 | -每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnObfuscationCalculateV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationCalculateV2”接口执行计算。 | 22 | +每个算子分为[两段式接口](../../../docs/zh/context/two_phase_api.md),必须先调用 “aclnnObfuscationCalculateV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationCalculateV2”接口执行计算。 |
| 23 | 23 | ||
| 24 | ```c++ | 24 | ```c++ |
| 25 | aclnnStatus aclnnObfuscationCalculateV2GetWorkspaceSize( | 25 | aclnnStatus aclnnObfuscationCalculateV2GetWorkspaceSize( |
| @@ -153,7 +153,7 @@ aclnnStatus aclnnObfuscationCalculateV2( | |||
| 153 | 153 | ||
| 154 | - **返回值** | 154 | - **返回值** |
| 155 | 155 | ||
| 156 | - aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 156 | + aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 157 | 157 | ||
| 158 | 第一段接口完成入参校验,出现以下场景时报错: | 158 | 第一段接口完成入参校验,出现以下场景时报错: |
| 159 | 159 | ||
| @@ -227,24 +227,24 @@ aclnnStatus aclnnObfuscationCalculateV2( | |||
| 227 | </tr> | 227 | </tr> |
| 228 | </tbody> | 228 | </tbody> |
| 229 | </table> | 229 | </table> |
| 230 | - | 230 | + |
| 231 | - **返回值** | 231 | - **返回值** |
| 232 | 232 | ||
| 233 | - 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 233 | + 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 234 | 234 | ||
| 235 | ## 约束说明 | 235 | ## 约束说明 |
| 236 | 236 | ||
| 237 | - 确定性计算: | 237 | - 确定性计算: |
| 238 | - aclnnObfuscationCalculateV2默认确定性实现。 | 238 | - aclnnObfuscationCalculateV2默认确定性实现。 |
| 239 | 239 | ||
| 240 | -- 该接口与[aclnnObfuscationSetupV2](../context/aclnnObfuscationSetupV2.md)配套使用,完成PMCC模型混淆功能,使用方式如下: | 240 | +- 该接口与aclnnObfuscationSetupV2配套使用,完成PMCC模型混淆功能,使用方式如下: |
L | |||
| 241 | - 首先调用aclnnObfuscationSetupV2进行资源初始化,可重复调用,以最后一次初始化为准 | 241 | - 首先调用aclnnObfuscationSetupV2进行资源初始化,可重复调用,以最后一次初始化为准 |
| 242 | - 再多次调用aclnnObfuscationCalculateV2进行张量混淆处理 | 242 | - 再多次调用aclnnObfuscationCalculateV2进行张量混淆处理 |
| 243 | - 最后调用aclnnObfuscationSetupV2进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 | 243 | - 最后调用aclnnObfuscationSetupV2进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 |
| 244 | 244 | ||
| 245 | ## 调用示例 | 245 | ## 调用示例 |
| 246 | 246 | ||
| 247 | -调用示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 247 | +调用示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/compile_and_run_sample.md)。 |
| 248 | 248 | ||
| 249 | ```C++ | 249 | ```C++ |
| 250 | #include <iostream> | 250 | #include <iostream> |
| @@ -331,7 +331,7 @@ int main() { | |||
| 331 | aclTensor* fd = nullptr; | 331 | aclTensor* fd = nullptr; |
| 332 | std::vector<float> fdHostData = {-1}; | 332 | std::vector<float> fdHostData = {-1}; |
| 333 | 333 | ||
| 334 | - //创建fd aclTensor | 334 | + //创建fd aclTensor |
| 335 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); | 335 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); |
| 336 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 336 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 337 | 337 | ||
| @@ -468,7 +468,7 @@ int main() { | |||
| 468 | } | 468 | } |
| 469 | if (workspaceSize2 > 0) { | 469 | if (workspaceSize2 > 0) { |
| 470 | aclrtFree(workspaceAddr2); | 470 | aclrtFree(workspaceAddr2); |
| 471 | - } | 471 | + } |
| 472 | if (workspaceSize3 > 0) { | 472 | if (workspaceSize3 > 0) { |
| 473 | aclrtFree(workspaceAddr3); | 473 | aclrtFree(workspaceAddr3); |
| 474 | } | 474 | } |
| @@ -22,7 +22,7 @@ | |||
| 22 | 22 | ||
| 23 | ## 函数原型 | 23 | ## 函数原型 |
| 24 | 24 | ||
| 25 | -每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnObfuscationSetupGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationSetup”接口执行计算。 | 25 | +每个算子分为[两段式接口](../../../docs/zh/context/two_phase_api.md),必须先调用 “aclnnObfuscationSetupGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationSetup”接口执行计算。 |
| 26 | 26 | ||
| 27 | ```c++ | 27 | ```c++ |
| 28 | aclnnStatus aclnnObfuscationSetupGetWorkspaceSize( | 28 | aclnnStatus aclnnObfuscationSetupGetWorkspaceSize( |
| @@ -196,10 +196,10 @@ aclnnStatus aclnnObfuscationSetup( | |||
| 196 | 196 | ||
| 197 | - **返回值** | 197 | - **返回值** |
| 198 | 198 | ||
| 199 | - aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 199 | + aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 200 | 200 | ||
| 201 | 第一段接口完成入参校验,出现以下场景时报错: | 201 | 第一段接口完成入参校验,出现以下场景时报错: |
| 202 | - | 202 | + |
| 203 | <table style="undefined;table-layout: fixed;width: 1202px"><colgroup> | 203 | <table style="undefined;table-layout: fixed;width: 1202px"><colgroup> |
| 204 | <col style="width: 262px"> | 204 | <col style="width: 262px"> |
| 205 | <col style="width: 121px"> | 205 | <col style="width: 121px"> |
| @@ -266,21 +266,21 @@ aclnnStatus aclnnObfuscationSetup( | |||
| 266 | 266 | ||
| 267 | - **返回值** | 267 | - **返回值** |
| 268 | 268 | ||
| 269 | - 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 269 | + 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 270 | 270 | ||
| 271 | ## 约束说明 | 271 | ## 约束说明 |
| 272 | 272 | ||
| 273 | - 确定性计算: | 273 | - 确定性计算: |
| 274 | - aclnnObfuscationSetup默认确定性实现。 | 274 | - aclnnObfuscationSetup默认确定性实现。 |
| 275 | 275 | ||
| 276 | -- 该接口与[aclnnObfuscationCalculate](../context/aclnnObfuscationCalculate.md)配套使用,完成PMCC模型混淆功能,使用方式如下: | 276 | +- 该接口与aclnnObfuscationCalculate配套使用,完成PMCC模型混淆功能,使用方式如下: |
| 277 | - 首先调用aclnnObfuscationSetup进行资源初始化,可重复调用,以最后一次初始化为准 | 277 | - 首先调用aclnnObfuscationSetup进行资源初始化,可重复调用,以最后一次初始化为准 |
| 278 | - 再多次调用aclnnObfuscationCalculate进行张量混淆处理 | 278 | - 再多次调用aclnnObfuscationCalculate进行张量混淆处理 |
| 279 | - 最后调用aclnnObfuscationSetup进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 | 279 | - 最后调用aclnnObfuscationSetup进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 |
| 280 | 280 | ||
| 281 | ## 调用示例 | 281 | ## 调用示例 |
| 282 | 282 | ||
| 283 | -示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 283 | +示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/compile_and_run_sample.md)。 |
| 284 | 284 | ||
| 285 | ```cpp | 285 | ```cpp |
| 286 | #include <iostream> | 286 | #include <iostream> |
| @@ -366,7 +366,7 @@ int main() { | |||
| 366 | aclTensor* fd = nullptr; | 366 | aclTensor* fd = nullptr; |
| 367 | std::vector<float> fdHostData = {-1}; | 367 | std::vector<float> fdHostData = {-1}; |
| 368 | 368 | ||
| 369 | - //创建fd aclTensor | 369 | + //创建fd aclTensor |
| 370 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); | 370 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); |
| 371 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 371 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 372 | 372 | ||
| @@ -503,7 +503,7 @@ int main() { | |||
| 503 | } | 503 | } |
| 504 | if (workspaceSize2 > 0) { | 504 | if (workspaceSize2 > 0) { |
| 505 | aclrtFree(workspaceAddr2); | 505 | aclrtFree(workspaceAddr2); |
| 506 | - } | 506 | + } |
| 507 | if (workspaceSize3 > 0) { | 507 | if (workspaceSize3 > 0) { |
| 508 | aclrtFree(workspaceAddr3); | 508 | aclrtFree(workspaceAddr3); |
| 509 | } | 509 | } |
| @@ -22,7 +22,7 @@ | |||
| 22 | 22 | ||
| 23 | ## 函数原型 | 23 | ## 函数原型 |
| 24 | 24 | ||
| 25 | -每个算子分为[两段式接口](../../../docs/zh/context/两段式接口.md),必须先调用 “aclnnObfuscationSetupV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationSetupV2”接口执行计算。 | 25 | +每个算子分为[两段式接口](../../../docs/zh/context/two_phase_api.md),必须先调用 “aclnnObfuscationSetupV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnObfuscationSetupV2”接口执行计算。 |
| 26 | 26 | ||
| 27 | ```c++ | 27 | ```c++ |
| 28 | aclnnStatus aclnnObfuscationSetupV2GetWorkspaceSize( | 28 | aclnnStatus aclnnObfuscationSetupV2GetWorkspaceSize( |
| @@ -206,7 +206,7 @@ aclnnStatus aclnnObfuscationSetupV2( | |||
| 206 | 206 | ||
| 207 | - **返回值** | 207 | - **返回值** |
| 208 | 208 | ||
| 209 | - aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 209 | + aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 210 | 210 | ||
| 211 | 第一段接口完成入参校验,出现以下场景时报错: | 211 | 第一段接口完成入参校验,出现以下场景时报错: |
| 212 | 212 | ||
| @@ -274,24 +274,24 @@ aclnnStatus aclnnObfuscationSetupV2( | |||
| 274 | </tr> | 274 | </tr> |
| 275 | </tbody> | 275 | </tbody> |
| 276 | </table> | 276 | </table> |
| 277 | - | 277 | + |
| 278 | - **返回值** | 278 | - **返回值** |
| 279 | 279 | ||
| 280 | - 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn返回码.md)。 | 280 | + 返回aclnnStatus状态码,具体参见[aclnn返回码](../../../docs/zh/context/aclnn_return_code.md)。 |
| 281 | 281 | ||
| 282 | ## 约束说明 | 282 | ## 约束说明 |
| 283 | 283 | ||
| 284 | - 确定性计算: | 284 | - 确定性计算: |
| 285 | - aclnnObfuscationSetupV2默认确定性实现。 | 285 | - aclnnObfuscationSetupV2默认确定性实现。 |
| 286 | 286 | ||
| 287 | -- 该接口与[aclnnObfuscationCalculateV2](../context/aclnnObfuscationCalculateV2.md)配套使用,完成PMCC模型混淆功能,使用方式如下: | 287 | +- 该接口与aclnnObfuscationCalculateV2配套使用,完成PMCC模型混淆功能,使用方式如下: |
| 288 | - 首先调用aclnnObfuscationSetupV2进行资源初始化,可重复调用,以最后一次初始化为准 | 288 | - 首先调用aclnnObfuscationSetupV2进行资源初始化,可重复调用,以最后一次初始化为准 |
| 289 | - 再多次调用aclnnObfuscationCalculateV2进行张量混淆处理 | 289 | - 再多次调用aclnnObfuscationCalculateV2进行张量混淆处理 |
| 290 | - 最后调用aclnnObfuscationSetupV2进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 | 290 | - 最后调用aclnnObfuscationSetupV2进行资源释放,只能调用一次;也可不显式进行资源释放,而是通过终止程序进程的方式达到资源释放的目的 |
| 291 | 291 | ||
| 292 | ## 调用示例 | 292 | ## 调用示例 |
| 293 | 293 | ||
| 294 | -示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/编译与运行样例.md)。 | 294 | +示例代码如下,仅供参考,具体编译和执行过程请参考[编译与运行样例](../../../docs/zh/context/compile_and_run_sample.md)。 |
| 295 | 295 | ||
| 296 | ```cpp | 296 | ```cpp |
| 297 | #include <iostream> | 297 | #include <iostream> |
| @@ -378,7 +378,7 @@ int main() { | |||
| 378 | aclTensor* fd = nullptr; | 378 | aclTensor* fd = nullptr; |
| 379 | std::vector<float> fdHostData = {-1}; | 379 | std::vector<float> fdHostData = {-1}; |
| 380 | 380 | ||
| 381 | - //创建fd aclTensor | 381 | + //创建fd aclTensor |
| 382 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); | 382 | ret = CreateAclTensor(fdHostData, fdShape, &fdDeviceAddr, aclDataType::ACL_INT32, &fd); |
| 383 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 383 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 384 | 384 | ||
| @@ -515,7 +515,7 @@ int main() { | |||
| 515 | } | 515 | } |
| 516 | if (workspaceSize2 > 0) { | 516 | if (workspaceSize2 > 0) { |
| 517 | aclrtFree(workspaceAddr2); | 517 | aclrtFree(workspaceAddr2); |
| 518 | - } | 518 | + } |
| 519 | if (workspaceSize3 > 0) { | 519 | if (workspaceSize3 > 0) { |
| 520 | aclrtFree(workspaceAddr3); | 520 | aclrtFree(workspaceAddr3); |
| 521 | } | 521 | } |
【Review】这里的引用为什么要移除呢