pypto.conv【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品×Atlas A2 训练系列产品/Atlas A2 推理系列产品×功能说明实现输入input_conv、weight完成卷积运算支持bias参数计算公式为out input_conv weight bias (表示为卷积处理)input_conv 、weight、bias为源操作数input_conv 为输入矩阵weight为权重矩阵bias为输入的偏置out 为目的操作数存放卷积处理结果的矩阵当前暂不支持量化场景当前暂不支持Relu功能函数原型conv(input_conv, weight, out_dtype, strides, paddings, dilations, *, groups1, transposedFalse, output_paddings[], extend_paramsNone) - Tensor参数说明参数名输入/输出说明input_conv输入输入特征图 Tensor。不支持空 Tensor。支持维度3D1D conv、4D2D conv、5D3D conv。支持格式NCL、NCHW、NCDHW。支持数据类型DT_FP16、DT_BF16、DT_FP32。shape 约束各维度取值范围 [1, 1000000]。 input_convcin weightcin * groupsweight输入卷积核 Tensor。维度必须与 input_conv 一致3D/4D/5D。数据类型必须与 input_conv 一致。shape 约束各维度取值范围 [1, 1000000]。out_dtype输入输出 Tensor 数据类型。支持DT_FP16、DT_BF16、DT_FP32。必须与 input_conv 一致fixpipe 量化场景可单独指定。strides输入卷积步长单向参数。- 1D1D conv- 2D2D conv- 3D3D conv取值范围[1, 63]。paddings输入卷积填充双向参数。- 2D1D conv- 4D2D conv- 6D3D conv取值范围[0, 255]且每维填充值 对应卷积核大小。dilations输入空洞卷积膨胀率单向参数。- 1D1D conv- 2D2D conv- 3D3D conv取值范围[1, 63]。groups输入分组卷积组数默认 1。取值范围[1, 65535]。Cin、Cout 必须可被 groups 整除。transposed输入是否为转置卷积反卷积默认 False。当前暂不支持 True。output_paddings输入转置卷积输出端填充仅 transposedTrue 时使用。当前暂不支持。extend_params输入扩展参数字典支持 bias、scale、relu、scale_tensor- bias_tensor可选的偏置张量形状为 (C_out,)仅支持 ND 格式bias的数据类型必须与 input_conv 一致。- scale浮点型per-tensor 缩放因子。- scale_tensoruint64 类型 per-channel 缩放 Tensorshape [1, Cout]仅 ND 格式。- relu_type激活类型支持 RELU/NO_RELU 等。返回值说明返回卷积运算后的输出 Tensor1D 卷积输出 shape(Batch, Cout, Wout)2D 卷积输出 shape(Batch, Cout, Hout, Wout)3D 卷积输出 shape(Batch, Cout, Dout, Hout, Wout)输出 shape 各维度范围[1, 1000000]。约束说明1. Shape 合法性约束输入特征图input_convBatch、Cin、Hin、Win、Din 维度必须在 [1, 1000000] 范围内卷积核weightCout、Kh、Kw、Kd 维度必须在 [1, 1000000] 范围内偏置bias_tensorshape 必须等于 [Cout]否则校验失败输出特征图H_out、W_out、D_out 维度必须在 [1, 1000000] 范围内。2. 属性参数合法性约束基础维度匹配约束strides 维度数必须与卷积维度匹配2D conv 长度23D conv 长度3dilations 维度数必须与卷积维度匹配2D conv 长度23D conv 长度3paddings 维度数必须为2×卷积维度2D conv 长度43D conv 长度6数值范围约束strides 取值范围 [1, 63]dilations 取值范围 [1, 63]paddings 取值范围 [0, 255]且每维填充值 对应卷积核维度大小如 padding_h Kh、padding_w Kwgroups 取值范围 [1, 65535]卷积核约束Kh ≤ 255、Kw ≤ 255Kh × Kw × 32bytes/dtype ≤ 65535dtype为input_conv的数据类型所占bit数如FP16是16FP32是32等通道数约束Cin输入通道数必须能被 groups 整除Cout输出通道数必须能被 groups 整除CinFmap CinWeight × groups。3. 缓存空间约束调用 conv 接口前必须通过 pypto.set_conv_tile_shapes 接口设置 L1/L0 层级的卷积 TileShape 切分大小。4. 功能支持约束transposedTrue转置卷积暂不支持调用会抛出 RuntimeErrorinput_conv/weight 仅支持 DT_FP16、DT_BF16、DT_FP32 数据类型其他类型会抛出 ValueErrorinput_conv 与 weight 的维度必须一致如 input_conv 为 4D 则 weight 也需为 4D否则抛出 RuntimeError。5. 动态轴切分支持卷积算子支持以下维度的动态轴切分维度是否支持切分方式说明Batch√前端循环切分TileL1Info.tileBatch 必须为 1硬件约束通过前端循环实现动态切分Cout√TileShape 动态切分 前端循环支持 TileShape 配置的动态切分配合前端循环实现完整 Cout 维度覆盖Dout√TileShape 动态切分 前端循环仅 3D 卷积支持Dout 维度动态切分Hout√TileShape 动态切分 前端循环Hout 维度动态切分配合前端循环实现完整覆盖Wout√TileShape 动态切分 前端循环Wout 维度动态切分配合前端循环实现完整覆盖Cin√前端循环切分 pypto.add 累加Cin 维度动态切分需使用 pypto.add 累加多个 tile 结果Cin 维度动态切分精度说明Cin 维度的动态轴切分会影响计算精度原因如下Cin 切分后需要对多个 tile 的卷积结果进行累加通过 pypto.add 实现累加过程中存在两次 cast 操作FP16/BF16 → FP32 → FP16/BF16这两次精度转换会引入精度损失在 Cin 切分场景下需要评估精度需求建议如果精度要求较高建议避免 Cin 维度的动态切分如果必须进行 Cin 切分建议使用 FP32 数据类型以减少精度损失Cin 切分的 tile 大小需满足 32 字节对齐约束FP16/BF16: %160, FP32: %80调用示例# 2D 卷积基础示例 input_conv pypto.tensor((1, 32, 8, 16), pypto.DT_FP16, input_conv) weight pypto.tensor((32, 32, 1, 1), pypto.DT_FP16, weight) # 暂时不支持子图合并特性需要手动关闭 pypto.set_pass_options( cube_l1_reuse_setting{-1: 1}, cube_nbuffer_setting{-1: 1}, ) out pypto.conv(input_conv, weight, pypto.DT_FP16, strides[1, 1], paddings[0, 0, 0, 0], dilations[1, 1]) # 2D 卷积带 bias 和 ReLu 当前暂不支持ReLu input_conv pypto.tensor((1, 32, 8, 16), pypto.DT_FP16, input_conv) weight pypto.tensor((32, 32, 1, 1), pypto.DT_FP16, weight) bias pypto.tensor((32,), pypto.DT_FP16, bias) extend_params {bias_tensor: bias, relu_type: pypto.ReLuType.RELU} # 暂时不支持子图合并特性需要手动关闭 pypto.set_pass_options( cube_l1_reuse_setting{-1: 1}, cube_nbuffer_setting{-1: 1}, ) out pypto.conv(input_conv, weight, pypto.DT_FP16, strides[1, 1], paddings[0, 0, 0, 0], dilations[1, 1], extend_paramsextend_params) # 3D 卷积示例 input_conv pypto.tensor((1, 96, 2, 16, 16), pypto.DT_FP16, input_conv) weight pypto.tensor((32, 96, 1, 1, 1), pypto.DT_FP16, weight) # 暂时不支持子图合并特性需要手动关闭 pypto.set_pass_options( cube_l1_reuse_setting{-1: 1}, cube_nbuffer_setting{-1: 1}, ) out pypto.conv(input_conv, weight, pypto.DT_FP16, strides[1, 1, 1], paddings[0, 0, 0, 0, 0, 0], dilations[1, 1, 1])【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考