diff --git "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" "b/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" deleted file mode 100644 index 6abf227b1aaf6bf41f34f9d2836fd4b320dec4ec..0000000000000000000000000000000000000000 --- "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" +++ /dev/null @@ -1,4069 +0,0 @@ -# ONNX算子规格清单 - - - - - - - - -- [Abs](#Abs) -- [Acos](#Acos) -- [Acosh](#Acosh) -- [AdaptiveMaxPool2D](#AdaptiveMaxPool2D) -- [Add](#Add) -- [Addcmul](#Addcmul) -- [AffineGrid](#AffineGrid) -- [And](#And) -- [Argmax](#Argmax) -- [Argmin](#Argmin) -- [AscendRequantS16](#AscendRequantS16) -- [AscendRequant](#AscendRequant) -- [AscendQuant](#AscendQuant) -- [AscendDequantS16](#AscendDequantS16) -- [AscendDequant](#AscendDequant) -- [AscendAntiQuant](#AscendAntiQuant) -- [Asin](#Asin) -- [Asinh](#Asinh) -- [Atan](#Atan) -- [Atanh](#Atanh) -- [AveragePool](#AveragePool) -- [BatchNormalization](#BatchNormalization) -- [BatchMatMul](#BatchMatMul) -- [BatchMultiClassNMS](#BatchMultiClassNMS) -- [Cast](#Cast) -- [Ceil](#Ceil) -- [Celu](#Celu) -- [Concat](#Concat) -- [Clip](#Clip) -- [ConvTranspose](#ConvTranspose) -- [Cumsum](#Cumsum) -- [Conv](#Conv) -- [Constant](#Constant) -- [ConstantOfShape](#ConstantOfShape) -- [Cos](#Cos) -- [Cosh](#Cosh) -- [Det](#Det) -- [DepthToSpace](#DepthToSpace) -- [Div](#Div) -- [Dropout](#Dropout) -- [elu](#elu) -- [EmbeddingBag](#EmbeddingBag) -- [Equal](#Equal) -- [Erf](#Erf) -- [Exp](#Exp) -- [Expand](#Expand) -- [Flatten](#Flatten) -- [Floor](#Floor) -- [Gather](#Gather) -- [GatherND](#GatherND) -- [GatherElements](#GatherElements) -- [Gemm](#Gemm) -- [GlobalAveragePool](#GlobalAveragePool) -- [GlobalMaxPool](#GlobalMaxPool) -- [Greater](#Greater) -- [GreaterOrEqual](#GreaterOrEqual) -- [Gru](#Gru) -- [HardSigmoid](#HardSigmoid) -- [hardmax](#hardmax) -- [Identity](#Identity) -- [If](#If) -- [Less](#Less) -- [LeakyRelu](#LeakyRelu) -- [LessOrEqual](#LessOrEqual) -- [Log](#Log) -- [LogSoftMax](#LogSoftMax) -- [LpNormalization](#LpNormalization) -- [LRN](#LRN) -- [LSTM](#LSTM) -- [MatMul](#MatMul) -- [Max](#Max) -- [MaxPool](#MaxPool) -- [MaxRoiPool](#MaxRoiPool) -- [Mean](#Mean) -- [MeanVarianceNormalization](#MeanVarianceNormalization) -- [Min](#Min) -- [Mod](#Mod) -- [Mul](#Mul) -- [Multinomial](#Multinomial) -- [Neg](#Neg) -- [NonMaxSuppression](#NonMaxSuppression) -- [NonZero](#NonZero) -- [Not](#Not) -- [OneHot](#OneHot) -- [Or](#Or) -- [randomUniform](#randomUniform) -- [Range](#Range) -- [Reciprocal](#Reciprocal) -- [ReduceL1](#ReduceL1) -- [ReduceL2](#ReduceL2) -- [ReduceMin](#ReduceMin) -- [ReduceMean](#ReduceMean) -- [ReduceProd](#ReduceProd) -- [ReduceSumSquare](#ReduceSumSquare) -- [Resize](#Resize) -- [Relu](#Relu) -- [ReduceSum](#ReduceSum) -- [ReduceMax](#ReduceMax) -- [Reshape](#Reshape) -- [ReverseSequence](#ReverseSequence) -- [RoiExtractor](#RoiExtractor) -- [RoiAlign](#RoiAlign) -- [Round](#Round) -- [PRelu](#PRelu) -- [ScatterND](#ScatterND) -- [Selu](#Selu) -- [Shape](#Shape) -- [Sigmoid](#Sigmoid) -- [Slice](#Slice) -- [Softmax](#Softmax) -- [Softsign](#Softsign) -- [Softplus](#Softplus) -- [SpaceToDepth](#SpaceToDepth) -- [Split](#Split) -- [Sqrt](#Sqrt) -- [Squeeze](#Squeeze) -- [Sub](#Sub) -- [Sign](#Sign) -- [Sin](#Sin) -- [Sinh](#Sinh) -- [Size](#Size) -- [Sum](#Sum) -- [Tanh](#Tanh) -- [Tile](#Tile) -- [ThresholdedRelu](#ThresholdedRelu) -- [TopK](#TopK) -- [Transpose](#Transpose) -- [pad](#pad) -- [Pow](#Pow) -- [Unsqueeze](#Unsqueeze) -- [Where](#Where) -## Abs - -### 功能 - -对输入张量取绝对值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double、int8、int16、int32、int64 - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致" - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Acos - -### 功能 - -计算输入张量的反余弦值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Acosh - -### 功能 - -计算输入张量的反双曲余弦值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## AdaptiveMaxPool2D - -### 功能 - -对输入进行2d自适应最大池化计算 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、float64等 - -【属性】 - -一个属性: - -output\_size:int型数组,指定输出的hw的shape大小 - -【输出】 - -两个输出 - -y:一个tensor,数据类型:与x类型一致 - -argmax:一个tensor,数据类型:int - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## Add - -### 功能 - -按元素求和按元素求和 - -### 边界 - -【输入】 - -两个输入 - -A:一个张量,数据类型:int8、int16、int32、int64、uint8、float32、float16、double - -B:一个张量,数据类型与A相同 - -【输出】 - -C:一个张量,数据类型与A相同 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Addcmul - -### 功能 - -元素级计算\(x2 \* x3\) \* value + input\_data - -### 边界 - -【输入】 - -四个输入 - -input\_data:一个tensor,数据类型:float16、float32、int32、int8、uint8 - -x1: 一个tensor,类型与inpu\_data相同 - -x2: 一个tensor,类型与inpu\_data相同 - -value: 一个tensor,类型与inpu\_data相同 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:y与输入相同 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## AffineGrid - -### 功能 - -给定一批矩阵,生成采样网络 - -### 边界 - -【输入】 - -俩个输入 - -theta:一个tensor,数据类型:float16、float32 - -output\_size:一个tensor,数据类型:int32 - -【属性】 - -一个属性: - -align\_corners:bool型 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:int - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## And - -### 功能 - -逻辑与 - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:bool - -x2:一个tensor,数据类型:bool - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Argmax - -### 功能 - -返回指定轴上最大值所对应的索引 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,表示最大值的索引位置,维度比输入x少1,数据类型:int32 - -【属性】 - -axis:必选,表示计算最大值索引的方向,数据类型:int32,aixs的值为\[-len\(x.shape\), len\(x.shape\)-1\] - -keep\_dim:可选,keep\_dim默认为1,支持1或0。 - -【约束】 - -算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Argmin - -### 功能 - -返回输入张量指定轴上最小值对应的索引 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:int64 - -【属性】 - -axis:数据类型为int,含义:指定计算轴;取值范围:\[-r, r-1\],r表示输入数据的秩 - -【约束】 - -算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## AscendRequantS16 - -### 功能 - -重新量化算子 - -### 边界 - -【输入】 - -两个必选输入,一个可选输入 - -x0:一个tensor,数据类型:int16 - -req\_scale:一个tensor,数据类型:uint64 - -x1:一个tensor,数据类型:int16 - -【属性】 - -两个属性: - -dual\_output:bool型 - -relu\_flag:bool型 - -【输出】 - -两个输出 - -y0:一个tensor,数据类型:int8 - -y1:一个tensor,数据类型:int16 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## AscendRequant - -### 功能 - -重新量化算子 - -### 边界 - -【输入】 - -两个输入 - -x0:一个tensor,数据类型:int32 - -req\_scale:一个tensor,数据类型:uint64 - -【属性】 - -一个属性: - -relu\_flag:bool型 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:int8 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## AscendQuant - -### 功能 - -量化算子 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16,float32 - -【属性】 - -四个属性: - -offset:float型 - -scale:float型 - -sqrt\_mode:bool型 - -round\_mode: string - -【输出】 - -一个输出 - -y:一个tensor,数据类型:int8 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## AscendDequantS16 - -### 功能 - -反量化算子 - -### 边界 - -【输入】 - -两个必选输入,一个可选输入 - -x0:一个tensor,数据类型:int32 - -req\_scale:一个tensor,数据类型:uint64 - -x1:一个tensor,数据类型:int16 - -【属性】 - -一个属性: - -relu\_flag:bool型 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:int16 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## AscendDequant - -### 功能 - -反量化算子 - -### 边界 - -【输入】 - -两个输入 - -x0:一个tensor,数据类型:int32 - -deq\_scale:一个tensor,数据类型:uint64,float16 - -【属性】 - -三个属性: - -sqrt\_mode:bool型 - -relu\_flag:bool型 - -dtype:float - -【输出】 - -一个输出 - -y:一个tensor,数据类型:float16,float - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## AscendAntiQuant - -### 功能 - -反量化算子 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:int8 - -【属性】 - -四个属性: - -offset:float型 - -scale:float型 - -sqrt\_mode:bool型 - -round\_mode: string - -【输出】 - -一个输出 - -y:一个tensor,数据类型:float16,float - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## Asin - -### 功能 - -计算输入张量的反正弦 - -### 边界 - -【输入】 - -一个输入 - -x1:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Asinh - -### 功能 - -计算输入张量双曲反正弦 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -y:一个tenso,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Atan - -### 功能 - -计算输入张量的反正切值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Atanh - -### 功能 - -计算输入张量的双曲反正切 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## AveragePool - -### 功能 - -平均池化层 - -### 边界 - -【输入】 - -X:一个张量,数据类型:float16、float32,格式为NCHW - -【输出】 - -Y:一个张量,数据类型:float16、float32,格式为NCHW - -【属性】 - -auto\_pad:可选,支持NOTSET、SAME\_UPPER、SAME\_LOWER与VALID - -count\_include\_pad:int,暂不支持 - -kernel\_shape:可选,包括: - -− kernel\_shape\[0\]:数据类型:int32,指定沿H维度的窗口大小,取值范围为\[1, 32768\],默认为1 - -− kernel\_shape\[1\]:数据类型:int32,指定沿W维度的窗口大小,取值范围为\[1, 32768\],默认为1 - -strides:可选,包括: - -− strides\[0\]:数据类型:int32,指定沿H维度的步长,默认为1 - -− strides\[1\]:数据类型:int32,指定沿W维度的步长,默认为1 - -pads:可选,包括: - -− pads\[0\]:数据类型:int32,指定顶部padding,默认为0 - -− pads\[1\]:数据类型:int32,指定底部padding,默认为0 - -− pads\[2\]:数据类型:int32,指定左部padding,默认为0 - -− pads\[3\]:数据类型:int32,指定右部padding,默认为0 - -ceil\_mode:可选,数据类型:int32,取值:0(floor模式),1(ceil模式),默认为0 - -【约束】 - -strides\[0\]或者strides\[1\]取值步长大于63时,会走aicpu芯片,性能会下降; - -kernel\_shape\_H或kernel\_shape\_W取值超过\[1,255\],或者ksizeH \* ksizeW \> 256时,也会走aicpu,导致性能下降; - -1 <= input\_w <= 4096; - -当输入张量的N是一个质数时,N应当小于65535; - -ceil\_mode参数仅在auto\_pad='NOTSET'时生效; - -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入; - -auto\_pad属性值SAME\_UPPER, SAME\_LOWER统一使用的TBE的SAME属性,即TBE算子没有根据这个属性区分pad的填充位置,可能会带来精度问题 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## BatchNormalization - -### 功能 - -标准化张量 - -### 边界 - -【输入】 - -五个输入 - -X:数据类型为float16、float32的4D张量 - -scale:数据类型为float32的张量,指定尺度因子 - -B:数据类型为float32的张量,指定偏移量 - -mean:数据类型为float32的张量,指定均值 - -var:数据类型为float32的张量,指定方差 - -【输出】 - -五个输出 - -Y:标准化之后的张量,数据类型为float16或float32 - -mean:均值 - -var:方差 - -saved\_mean:在训练过程中使用已保存的平均值来加快梯度计算 - -saved\_var:在训练过程中使用已保存的方差来加快梯度计算 - -【属性】 - -epsilon:可选,数据类型:float32,指定一个小值与var相加,以避免除以0,默认为0.0001 - -momentum:float32,该参数暂不支持 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## BatchMatMul - -### 功能 - -将两个输入执行矩阵乘 - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:float16,float,int32 - -x2:一个tensor,数据类型:float16,float,int32 - -【属性】 - -两个属性: - -adj\_x1:bool型 - -adj\_x2:bool型 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:float16,float,int32 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## BatchMultiClassNMS - -### 功能 - -为输入boxes和输入score计算nms - -### 边界 - -【输入】 - -两个必选输入,两个可选输入 - -boxes:一个tensor,数据类型:float16 - -scores:一个tensor,数据类型:float16 - -clip\_window:一个tensor,数据类型:float16 - -num\_valid\_boxes:一个tensor,数据类型:int32 - -【属性】 - -六个属性: - -score\_threshold:float型 - -iou\_threshold:float型 - -max\_size\_per\_class:int型 - -max\_total\_size:int型 - -change\_coordinate\_frame:bool型 - -transpose\_box:bool型 - -【输出】 - -四个输出 - -nmsed\_boxes:一个tensor,数据类型:float16 - -nmsed\_scores:一个tensor,数据类型:float16 - -nmsed\_classes:一个tensor,数据类型:float16 - -nmsed\_num:一个tensor,数据类型:float16 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## Cast - -### 功能 - -将输入数据的type转换为指定的type - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor - -【输出】 - -y:一个tensor,输出的数据类型为属性指定的类型,数据类型:bool、float16、float32、int8、int32、uint8等 - -【属性】 - -to:数据类型:int,必选,指定目标数据类型,取值范围:在指定的数据类型范围内 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Ceil - -### 功能 - -对输入张量向上取整 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Celu - -### 功能 - -连续可微的指数线性单位:对输入张量X按元素执行线性单位,使用公式: - -max\(0,x\) + min\(0,alpha\*\(exp\(x/alpha\)-1\)\) - -### 边界 - -【输入】 - -X:tensor\(float\) - -【输出】 - -Y:tensor\(float\) - -【属性】 - -alpha:float,默认值:1.0 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Concat - -### 功能 - -对多个张量Concat - -### 边界 - -【输入】 - -inputs:多个输入张量,数据类型:float16、float32、int32、uint8、int16、int8、int64、qint8、quint8、qint32、uint16、uint32、uint64、qint16、quint16 - -【输出】 - -concat\_result:张量,与输入张量类型一致 - -【属性】 - -axis:指定哪一个轴进行concat操作,负数表示从后往前对维度计数,取值范围为\[-r, r - 1\],r=rank\(inputs\) - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Clip - -### 功能 - -将张量值剪辑到指定的最小值和最大值之间 - -### 边界 - -【输入】 - -三个输入 - -X :一个张量,数据类型:float16、float32、int32 - -min:一个scalar - -max:一个scalar - -【输出】 - -一个输出 - -Y:一个张量,剪辑后的输出,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ConvTranspose - -### 功能 - -转置卷积 - -### 边界 - -【输入】 - -3个输入 - -x:tensor,数据类型:float16、float32 - -w:tensor,数据类型:float16、float32 - -b:可选tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -【属性】 - -auto\_pad:str,默认为NOTSET,含义:显式使用padding的方式 - -dilations:ints,默认为全1序列,含义:filter的每轴空洞值 - -group:int,默认为1,含义:输入通道分组数 - -kernel\_shape:ints,默认为w,含义:卷积核大小 - -output\_padding:ints,默认为全0数组,含义:指定padding值 - -output\_shape:ints,根据pad自动计算,含义:输出shape - -pads:ints,默认为全0矩阵,含义:每根轴指定pad值 - -strides:ints,默认为全1矩阵,含义:每根轴的stride值 - -【约束】 - -目前只支持2D的转置卷积,3D及以上暂不支持 - -dilations只支持1 - -output\_shape支持限制:实现部分功能。现在支持output shape的大小,小于原始输入大小,但是不支持大于原始输入大小 - -算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32,fp64的输入 - -属性auto\_pad不支持 "SAME\_UPPER","SAME\_LOWER" - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Cumsum - -### 功能 - -计算输入张量在给定axis上面的累加和 - -### 边界 - -【输入】 - -两个输入 - -x:一个tensor,数据类型:float16、float32、int32 - -axis:一个int32或者int64的标量,默认为0,范围为\[-rank\(x\), rank\(x\)-1\] - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type - -【属性】 - -exclusive:int,默认为0,含义:是否返回不包括顶层元素的和 - -reverse:int,默认为0,含义:是否反方向求和 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Conv - -### 功能 - -卷积 - -### 边界 - -【输入】 - -X:输入4D张量 - -W:权重张量 - -B:可选,偏差,一维张量 - -【输出】 - -Y:卷积输出张量 - -【属性】 - -auto\_pad:可选,支持VALID、NOTSET - -dilations:4个整数的列表,指定用于扩张卷积的扩张率,H和W维度取值范围为\[1, 255\] - -group:从输入通道到输出通道的阻塞连接数,输入通道和输出通道都必须被“group”整除;数据类型为int32,必须设置为1 - -pads:4个整数的列表,指定顶部、底部、左侧和右侧填充,取值范围为\[0, 255\] - -strides:4个整数的列表,指定沿高度H和宽度W的卷积步长。H和W维度取值范围为\[1, 63\],默认情况下,N和C尺寸设置为1 - -【约束】 - -输入张量,W维度取值范围为\[1, 4096\] - -权重张量,H维度和W维度取值范围为\[1, 255\] - -当输出张量的W == 1且H == 1时,输入张量和权重的H和W维度需相同 - -当输出张量的W = 1,H != 1时,算子不支持 - -不支持atc工具--precision\_mode=must\_keep\_origin\_dtype参数时输入类型为fp32和fp64 - -### 支持的ONNX版本 - -Opset v9/v10/v11/v12/v13 - -## Constant - -### 功能 - -构建constant节点张量 - -### 边界 - -【输入】 - -无 - -【输出】 - -一个输出 - -Y:输出张量,和提供的tensor值一致 - -【属性】 - -value:输出张量的值 - -【约束】 - -sparse\_value:不支持 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ConstantOfShape - -### 功能 - -用给定的值和shape生成张量 - -### 边界 - -【输入】 - -x:1D的int64的tensor,表示输出数据的shape,所有的值必须大于0 - -【输出】 - -y:一个tensor,shape由输入指定,如果属性value指定了值,那输出的值和数据类型就等于value指定的值,如果属性value不指定,输出tensor的值默认为0,数据类型默认为float32 - -【属性】 - -value:指定输出tensor的数据和类型 - -【约束】 - -x:1<=len\(shape\)<=8 - -### 支持的ONNX版本 - -Opset v9/v10/v11/v12/v13 - -## Cos - -### 功能 - -计算输入张量的余弦值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Cosh - -### 功能 - -计算输入张量的双曲余弦 - -### 边界 - -【输入】 - -一个输入 - -X1:一个tensor,数据类型:float16、float、double - -【输出】 - -一个输出 - -y:一个张量,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Det - -### 功能 - -计算方形矩阵行列式 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## DepthToSpace - -### 功能 - -将数据由深度重排到空间数据块 - -### 边界 - -【输入】 - -1个输入 - -input:format为NCHW的tensor输入,类型:float16、float32,double,int32,int64等 - -【输出】 - -1个输出 - -output:一个张量,shape为\[N, C/\(blocksize \* blocksize\), H \* blocksize, W \* blocksize\] - -【属性】 - -blocksize:int,必选 指定被移动的块的大小 - -mode: string 指定是depth-column-row还是column-row-depth排列,默认DCR - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Div - -### 功能 - -按元素进行除法运算 - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:float16、float32、double、int32、int64 - -x2:一个tensor,数据类型:float16、float32、double、int32、int64 - -【输出】 - -一个输出 - -y:一个tensor,数据类型和输入一致 - -【约束】 - -输入、输出的type相同 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Dropout - -### 功能 - -拷贝或者屏蔽输入数据 - -### 边界 - -【输入】 - -1-3个输入 - -data:tensor输入,类型:float16、float32,double等 - -ratio:可选输入,类型:float16、float32,double等 - -training\_mode:可选输入,类型:布尔型 - -【输出】 - -1-2个输出 - -output:一个张量 - -mask: 一个张量 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## elu - -### 功能 - -elu激活函数 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -【属性】 - -alpha:float,默认为1.0,含义:系数 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## EmbeddingBag - -### 功能 - -计算embedding函数的反向输出 - -### 边界 - -【输入】 - -两个必选输入,两个可选输入 - -weight:一个tensor,数据类型:float32 - -indices:一个tensor,数据类型:int32 - -offset:一个tensor,数据类型:int32 - -per\_sample\_weights:一个tensor,数据类型:float32 - -【属性】 - -四个属性: - -mode:string型 - -scale\_grad\_by\_fraq:bool型 - -sparse:bool型 - -include\_last\_offset:bool型 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:float32 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## Equal - -### 功能 - -判断两个输入张量对应位置是否相等 - -### 边界 - -【输入】 - -两个输入 - -X1:一个tensor - -X2:一个tensor - -【输出】 - -一个输出 - -y:一个tensor ,数据类型:bool - -【约束】 - -输入X1、X2的数据类型和格式相同,支持如下数据类型:bool、uint8、int8、int16、int32、int64、float16、float32、double - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Erf - -### 功能 - -高斯误差函数 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型和格式与输入一致 - -### 支持的ONNX版本 - -Opset v9/v10/v11/v12/v13 - -## Exp - -### 功能 - -计算输入张量的指数 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Expand - -### 功能 - -将输入tensor广播到指定shape - -### 边界 - -【输入】 - -2个输入 - -input:tensor,数据类型:float16、float32 - -shape:tensor,数据类型:int64 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -【约束】 - -需要修改模型将输入shape由placeholder改为const类型,可以使用onnxsimplifier简化模型 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Flatten - -### 功能 - -将张量展平 - -### 边界 - -【输入】 - -input:多维张量,数据类型:int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32 - -【输出】 - -具有输入张量的内容的2D张量 - -【属性】 - -axis:int,该参数暂不支持负值索引 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Floor - -### 功能 - -对输入张量向下取整 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Gather - -### 功能 - -根据相应的轴从“x”中收集切片 - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:float16、float32、int32、int64、int8、int16、uint8、uint16、uint32、uint64、bool - -indices:一个tensor,数据类型:int32、int64 - -【输出】 - -一个输出 - -y:一个张量,数据类型和输入x1类型一致 - -【属性】 - -axis:数据类型:int,指定gather的轴,取值范围为\[-r, r-1\](r表示输入数据的秩) - -【约束】 - -不支持indices为负值的索引 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## GatherND - -### 功能 - -将输入数据切片输出 - -### 边界 - -【输入】 - -2个输入 - -data:秩r\>=1的tensor输入,类型:float16, float32, double, int32, int64等 - -indices:int64的索引张量,秩q\>=1 - -【输出】 - -1个输出 - -output:一个张量, 秩为q + r - indices\_shape\[-1\] - 1 - -【属性】 - -batch\_dims:int,默认为0 批处理轴的数量 - -【约束】 - -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时double的输入 - -### 支持的ONNX版本 - -Opset v11/v12/v13 - -## GatherElements - -### 功能 - -获取索引位置的元素产生输出 - -### 边界 - -【输入】 - -2个输入 - -input:秩大于1的tensor输入,类型:float16、float32,double,int32,int64等 - -indices:int32/int64的索引张量 - -【输出】 - -1个输出 - -output:一个张量,与indices的shape相同 - -【属性】 - -axis:int,默认为0 指定聚集的轴 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Gemm - -### 功能 - -全连接层 - -### 边界 - -【输入】 - -A:2D矩阵张量,数据类型:float16、float32 - -B:2D矩阵张量,数据类型:float16、float32 - -C:偏差,可选,该参数暂不支持 - -【输出】 - -Y:2D矩阵张量,数据类型:float16、float32 - -【属性】 - -transA:布尔型,是否A需要转置 - -transB:布尔型,是否B需要转置 - -alpha:float,该参数暂不支持 - -beta:float,该参数暂不支持 - -【约束】 - -v8/v9/v10版本不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## GlobalAveragePool - -### 功能 - -全局平均池化 - -### 边界 - -【输入】 - -X:一个张量,数据类型:float16、float32,格式为NCHW - -【输出】 - -Y:池化输出张量,数据类型与X相同,格式为NCHW - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## GlobalMaxPool - -### 功能 - -全局最大池化算子 - -### 边界 - -【输入】 - -1个输入 - -x:前一个节点的输出tensor,类型:float16, float32, double - -【输出】 - -1个输出 - -output:池化后的张量 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Greater - -### 功能 - -按元素比较输入x1和x2的大小,若x1\>x2,对应位置返回true - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:float16、float32、int32、int8、uint8 - -x2:一个tensor,数据类型:float16、float32、int32、int8、uint8 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:bool - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## GreaterOrEqual - -### 功能 - -按元素比较输入x1和x2的大小,若x1\>=x2,对应位置返回true - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:float16、float32、int32、int8、uint8等 - -x2:一个tensor,数据类型:float16、float32、int32、int8、uint8等 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:bool - -### 支持的ONNX版本 - -Opset v8/v12 - -## Gru - -### 功能 - -计算单层GRU - -### 边界 - -【输入】 - -3-6个输入 - -X: 类型:float16, float32, double, int32, int64等 - -W: - -R: - -B: - -sequence\_lens: - -initial\_h: - -【输出】 - -0-2个输出 - -Y: - -Y\_h: - -【属性】 - -activation\_alpha: - -activation\_beta: - -activations: - -clip: - -direction: - -hidden\_size: - -layout: - -linear\_before\_reset: - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## HardSigmoid - -### 功能 - -HardSigmoid接受一个输入数据\(张量\)并生成一个输出数据\(张量\),HardSigmoid函数y = max\(0, min\(1, alpha \* x + beta\)\)应用于张量元素方面。 - -### 边界 - -【输入】 - -1个输入 - -X:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -【输出】 - -1个输出 - -Y:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -【属性】 - -alpha:float,默认值:0.2 - -beta:float,默认值:0.2 - -### 支持的ONNX版本 - -Opset v1/v6/v8/v9/v10/v11/v12/v13 - -## hardmax - -### 功能 - -计算hardmax结果,如果元素是指定axis的最大元素则设为1,否则为0 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,rank=2,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -【属性】 - -axis:int,默认为-1,含义:指定计算轴 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Identity - -### 功能 - -恒等操作 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## If - -### 功能 - -逻辑控制判断算子 - -### 边界 - -【输入】 - -一个输入 - -cond:If op的条件 - -两个属性 - -else\_branch:条件为假的分支 - -then\_branch:条件为真的分支 - -【输出】 - -一到多个输出 - -y:tensor或者tensor序列 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Less - -### 功能 - -按元素比较输入x1和x2的大小,若x1 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:float16、float32、int32、int8、uint8 - -x2:一个tensor,数据类型:float16、float32、int32、int8、uint8 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:bool - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## LeakyRelu - -### 功能 - -对输入张量用leakrelu函数激活 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y: 一个tensor,数据类型和shape与输入一致 - -【属性】 - -alpha:数据类型为float,默认0.01,表示leakage系数 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## LessOrEqual - -### 功能 - -小于等于计算 - -### 边界 - -【输入】 - -2个输入 - -x:tensor,数据类型:float16、float32 - -y:tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的shape,数据类型:bool - -### 支持的ONNX版本 - -Opset v12/v13 - -## Log - -### 功能 - -计算输入的自然对数 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## LogSoftMax - -### 功能 - -对输入张量计算logsoftmax值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -【属性】 - -axis:数据类型为int;指定计算的轴,取值范围:\[-r, r-1\],r为输入的秩 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## LpNormalization - -### 功能 - -给定一个矩阵,沿给定的轴应用LpNormalization。 - -### 边界 - -【输入】 - -1个输入 - -input:,类型:tensor\(float16\), tensor\(float\) - -【输出】 - -1个输出 - -output:,类型:tensor\(float16\), tensor\(float\) - -【属性】 - -axis:int,默认值:-1 - -p:int,默认值:2 - -### 支持的ONNX版本 - -Opset v1/v8/v9/v10/v11/v12/v13 - -## LRN - -### 功能 - -对输入张量做局部响应归一化 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和format - -【属性】 - -alpha:float,缩放因子 - -beta:float,指数项 - -bias:float - -size:int,求和的通道数,只支持奇数 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## LSTM - -### 功能 - -计算单层LSTM。这个操作符通常通过一些自定义实现\(如CuDNN\)来支持。 - -### 边界 - -【输入3-8】 - -X:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -W:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -R:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -B:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -sequence\_lens:,类型:tensor\(int32\) - -initial\_h:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -initial\_c:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -p:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -【输出0-3】 - -Y:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -Y\_h:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -Y\_c:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -【属性】 - -activation\_alpha:list of floats - -activation\_beta:list of floats - -activations:list of strings - -clip: float - -direction: string,默认值:forward - -hidden\_size: int - -input\_forget: int,默认值:0 - -layout: int,默认值:0 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## MatMul - -### 功能 - -矩阵乘 - -### 边界 - -【输入】 - -两个输入 - -x1:一个2D的tensor,数据类型:float16 - -x2:一个2D的tensor,数据类型:float16 - -【输出】 - -一个输出 - -y:一个2D的tensor,数据类型:float16 - -【约束】 - -仅支持1-6维输入 - -只支持ND和2D的矩阵乘 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Max - -### 功能 - -元素级比较输入tensor的大小 - -### 边界 - -【输入】 - -多个输入\(1-∞\) - -data\_0:tensor的列表,类型:float16、float32,int8,int16,int32等 - -【输出】 - -一个输出 - -max:一个张量,和输入x同样的type和shape(广播后的shape) - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## MaxPool - -### 功能 - -最大池化 - -### 边界 - -【输入】 - -X:一个张量,数据类型:float16、float32,格式为NCHW - -【输出】 - -Y:一个张量,数据类型:float16、float32,格式为NCHW - -【属性】 - -auto\_pad:可选,支持SAME\_UPPER、SAME\_LOWER、VALID、NOTSET - -storage\_order:暂不支持该参数 - -kernel\_shape:可选,包括: - -- kernel\_shape\[0\]:数据类型:int32,指定沿H维度的窗口大小,取值范围为\[1, 32768\],默认为1 -- kernel\_shape\[1\]:数据类型:int32,指定沿W维度的窗口大小,取值范围为\[1, 32768\],默认为1 - -strides:可选,包括: - -- strides\[0\]:数据类型:int32,指定沿H维度的步长,默认为1 -- strides\[1\]:数据类型:int32,指定沿W维度的步长,默认为1 - -pads:可选,包括: - -- pads\[0\]:数据类型:int32,指定顶部padding,默认为0 -- pads\[1\]:数据类型:int32,指定底部padding,默认为0 -- pads\[2\]:数据类型:int32,指定左部padding,默认为0 -- pads\[3\]:数据类型:int32,指定右部padding,默认为0 - -ceil\_mode:可选,数据类型:int32,取值:0\(floor模式),1(ceil模式),默认为0 - -【约束】 - -strides\[0\]或者strides\[1\]取值步长大于63时,会走aicpu芯片,性能会下降; - -kernel\_shape\_H或kernel\_shape\_W取值超过\[1,255\],或者ksizeH \* ksizeW \> 256时,也会走aicpu,导致性能下降; - -1 <= input\_w <= 4096 - -当输入张量的N是一个质数时,N应小于65535 - -2D tensor输入不支持dilations - -auto\_pad属性是VALID时,ceil\_mode属性值必须为0 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## MaxRoiPool - -### 功能 - -ROI最大池消耗一个输入张量X和感兴趣区域\(ROI\),以便在每个ROI上应用最大池,从而产生输出的4-D形状张量\(num\_roi, channels, pooled\_shape\[0\], pooled\_shape\[1\]\)。 - -### 边界 - -【输入】 - -X:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -rois:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -【输出】 - -Y:,类型:tensor\(float16\), tensor\(float\), tensor\(double\) - -【属性】 - -pooled\_shape: list of ints - -spatial\_scale: float,默认值:1.0 - -【约束】 - -不支持fp64输入 - -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/13 - -## Mean - -### 功能 - -每个输入张量的元素均值\(支持numpy风格的广播\)。所有输入和输出必须具有相同的数据类型。该操作符支持多向\(即numpy风格\)广播。 - -### 边界 - -【输入1-∞】 - -data\_0:,类型:tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【输出】 - -mean:,类型:tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## MeanVarianceNormalization - -### 功能 - -一个均值标准化函数:使用公式对输入张量X进行均值方差标准化:\(X-EX\)/sqrt\(E\(X-EX\)^2\) - -### 边界 - -【输入】 - -X:,类型:tensor\(float16\), tensor\(float\), tensor\(bfloat16\) - -【输出】 - -Y:,类型:tensor\(float16\), tensor\(float\), tensor\(bfloat16\) - -【属性】 - -axes: list of ints,默认值:\['0', '2', '3'\] - -### 支持的ONNX版本 - -Opset v9/v10/v11/v12/v13 - -## Min - -### 功能 - -计算输入tensors的最小值 - -### 边界 - -【输入】 - -1个输入 - -x:tensor列表,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:计算出最小值的tensor - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Mod - -### 功能 - -执行元素二进制模数\(支持numpy风格的广播\)。余数的符号与除数的符号相同。 - -### 边界 - -【输入】 - -A:,类型:tensor\(uint8\), tensor\(uint16\), tensor\(uint32\), tensor\(uint64\), tensor\(int8\), tensor\(int16\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -B:,类型:tensor\(uint8\), tensor\(uint16\), tensor\(uint32\), tensor\(uint64\), tensor\(int8\), tensor\(int16\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【输出】 - -C:,类型:tensor\(uint8\), tensor\(uint16\), tensor\(uint32\), tensor\(uint64\), tensor\(int8\), tensor\(int16\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【属性】 - -fmod:,类型:int,默认值:0 - -【约束】 - -当输入类型为浮点时,fmod不支持为0 - -### 支持的ONNX版本 - -Opset v10/v11/v12/v13 - -## Mul - -### 功能 - -矩阵点乘 - -### 边界 - -【输入】 - -A:一个张量,数据类型:float16、float32、uint8、int8、int16、int32 - -B:一个张量,数据类型:float16、float32、uint8、int8、int16、int32 - -【输出】 - -C:一个张量,数据类型与输入张量一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Multinomial - -### 功能 - -返回Multinomial采样结果矩阵 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,shape=\[batch\_size, class\_size\],数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,shape=\[batch\_size, sample\_size\],输出type是int32、int64 - -【属性】 - -dtype:int,默认为6,含义:输出dtype,默认为int32 - -sample\_size:int,默认为1,含义:采样次数 - -seed:float,随机数种子 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Neg - -### 功能 - -求输入的负数 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、int32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## NonMaxSuppression - -### 功能 - -过滤掉与先前选定的框有较高重叠的“交集-并集”\(IOU\)框。移除得分小于score\_threshold的边界框。边界框格式由属性center\_point\_box表示。注意,该算法不知道原点在坐标系中的位置,更普遍地说,它对坐标系的正交变换和平移是不变的;因此,平移或反射坐标系统的结果在相同的方框被算法选择。selected\_indices输出是一组整数,索引到表示所选框的边界框的输入集合中。然后,可以使用Gather或gatherd操作获得与所选索引对应的边框坐标。 - -### 边界 - -【输入2-5】 - -boxes: tensor\(float\) - -scores: tensor\(float\) - -max\_output\_boxes\_per\_class: tensor\(int64\) - -iou\_threshold: tensor\(float\) - -score\_threshold: tensor\(float\) - -【输出】 - -selected\_indices: tensor\(int64\) - -【属性】 - -center\_point\_box: int 默认值:0 - -### 支持的ONNX版本 - -Opset v10/v11/v12/v13 - -## NonZero - -### 功能 - -返回非零元素的索引(按行大顺序-按维) - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、int32、int8、uint8等 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:int64 - -### 支持的ONNX版本 - -Opset v9/v10/v11/v12/v13 - -## Not - -### 功能 - -逻辑非 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:bool - -【输出】 - -一个输出 - -y:一个tensor,数据类型:bool - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## OneHot - -### 功能 - -根据输入生成一热编码张量 - -### 边界 - -【输入】 - -三个输入 - -indices:一个tensor,数据类型:float16、float32、int32、int8等 - -depth:一个tensor,数据类型:float16、float32、int32、int8等 - -valus:一个tensor,数据类型:float16、float32、int32、int8等 - -【属性】 - -一个属性 - -axis:(可选)添加一热表示的轴 - -【输出】 - -一个输出 - -y:一个tensor,数据类型与value输入的类型一致 - -【约束】 - -算子属性不支持axis<-1 - -### 支持的ONNX版本 - -Opset v9/v10/v11/v12/v13 - -## Or - -### 功能 - -逻辑或 - -### 边界 - -【输入】 - -两个输入 - -X1:一个tensor,数据类型:bool - -X2:一个tensor,数据类型:bool - -【输出】 - -一个输出 - -y:一个tensor,数据类型:bool - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## randomUniform - -### 功能 - -生成具有从均匀分布绘制的随机值的张量 - -### 边界 - -【属性】 - -五个属性 - -dtype:int类型,指明输出类型 - -high:float型,指明上边界 - -low:float型,指明下边界 - -seed:\(可选\),随机种子 - -shape:输出的形状 - -【输出】 - -一个输出 - -y:一个tensor,数据类型与dtype属性指定类型一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Range - -### 功能 - -产生一个连续序列的tensor - -### 边界 - -【输入】 - -3个输入 - -start:scalar,数据类型:float16、float32 - -limit:scalar,数据类型:float16、float32 - -delta:scalar,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Reciprocal - -### 功能 - -将输入张量取倒数 - -### 边界 - -【输入】 - -一个输入 - -lx:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceL1 - -### 功能 - -沿所提供的轴计算输入张量元素的L1范数。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。上述行为与numpy类似,只是numpy默认keepdim为False而不是True。 - -### 边界 - -【输入】 - -data:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【输出】 - -reduced:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【属性】 - -axes: list of ints - -keepdims: int,默认值:1 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceL2 - -### 功能 - -沿所提供的轴计算输入张量元素的L2范数。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。上述行为与numpy类似,只是numpy默认keepdim为False而不是True。 - -### 边界 - -【输入】 - -data:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【输出】 - -reduced:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【属性】 - -axes: list of ints - -keepdims: int,默认值:1 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceMin - -### 功能 - -计算输入张量指定方向的最小值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:float16、float32 - -【属性】 - -axes:数据类型为listInt;含义:指定计算轴;取值范围:\[-r, r-1\],r是输入数据的秩 - -keepdims:数据类型为int;含义:是否保留缩减后的维度;默认为1 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceMean - -### 功能 - -计算输入张量的指定维度的元素的均值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和format - -【属性】 - -axes:一个1D的整数列表,含义:指定精减的维度,取值范围为\[-r, r - 1\],r是输入矩阵的秩 - -keepdims:数据类型为int,默认为1,含义:是否保留缩减后的维度 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceProd - -### 功能 - -计算输入张量的元素沿所提供的轴的乘积。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。 - -### 边界 - -【输入】 - -data:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【输出】 - -reduced:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【属性】 - -axes: list of ints - -keepdims: int,默认值:1 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceSumSquare - -### 功能 - -沿所提供的轴计算输入张量元素的平方和。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。上述行为与numpy类似,只是numpy默认keepdim为False而不是True。 - -### 边界 - -【输入】 - -data:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【输出】 - -reduced:tensor\(uint32\), tensor\(uint64\), tensor\(int32\), tensor\(int64\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) - -【属性】 - -axes: list of ints - -keepdims: int,默认值:1 - -### 支持的ONNX版本 - -Opset v1/v8/v9/v10/v11/v12/v13 - -## Resize - -### 功能 - -调整输入tensor大小 - -### 边界 - -【输入】 - -4个输入 - -x:一个tensor,数据类型:float16、float32 - -roi: 被输入图像归一化的1Dtensor,\[start1, ..., startN, end1, ..., endN\],数据类型:float16、float32 - -scales:与输入x的秩相等的数组 - -sizes:输出tensor的size - -【输出】 - -一个输出 - -y:缩放后的张量 - -【属性】 - -coordinate\_transformation\_mode:str,默认为half\_pixel,含义:定义缩放后图像与原图像的坐标转换 - -cubic\_coeff\_a:float,默认为-0.75,含义:三次插值系数 - -exclude\_outside:int,默认为0,含义:超出tensor外的权重 - -mode:str,默认为nearest,含义:插值算法,包括nearest, linear and cubic - -nearest\_mode:str,默认为round\_prefer\_floor,含义:最近邻算子模式 - -【约束】 - -目前仅支持nearest和linear插值方式来处理图片,并且需要修改模型将输入scales或sizes由placeholder改为const类型,可以使用onnxsimplifier简化模型 - -### 支持的ONNX版本 - -Opset v10/v11/v12 - -## Relu - -### 功能 - -整流线性单位函数 - -### 边界 - -【输入】 - -X:输入张量,数据类型:float32、int32、uint8、int16、int8、uint16、float16、qint8 - -【输出】 - -Y:输出张量,数据类型与X一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceSum - -### 功能 - -计算输入张量指定维度的元素的和 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x的type和format相同 - -【属性】 - -axes:一个1D的整数列表,含义:指定精减的维度,取值范围为\[-r, r - 1\](r是输入矩阵的秩) - -keepdims:数据类型为int,默认为1,含义:是否保留缩减后的维度 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReduceMax - -### 功能 - -计算输入张量指定方向的最大值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、int32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:float16、float32、int32 - -【属性】 - -axes:数据类型为listInt;含义:指定计算轴;取值范围:\[-r, r-1\],r是输入数据的秩 - -keepdims:数据类型为int;含义:是否保留缩减后的维度;默认为1 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Reshape - -### 功能 - -改变输入维度 - -### 边界 - -【输入】 - -两个输入 - -data:一个张量 - -shape:一个张量,定义了输出张量的形状,int64 - -【输出】 - -reshaped:一个张量 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ReverseSequence - -### 功能 - -根据指定长度对batch序列进行排序 - -### 边界 - -【输入】 - -2个输入 - -x:tensor,rank \>= 2,数据类型:float16、float32 - -sequence\_lens:tensor,每个batch的指定长度,数据类型:int64 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -【属性】 - -batch\_axis:int,默认为1,含义:指定batch轴 - -time\_axis:int,默认为1,含义:指定time轴 - -### 支持的ONNX版本 - -Opset v10/v11/v12/v13 - -## RoiExtractor - -### 功能 - -从特征映射列表中获取ROI特征矩阵 - -### 边界 - -【输入】 - -两个输入 - -features:一个tensor,数据类型:float32,float16 - -rois:一个tensor,数据类型:float32,float16 - -【属性】 - -八个属性: - -finest\_scale:int型 - -roi\_scale\_factor:float型 - -spatial\_scale:float型数组 - -pooled\_height:int型 - -pooled\_width:int型 - -sample\_num:int型 - -pool\_mode:string型 - -aligned:bool型 - -【输出】 - -一个输出 - -y:一个tensor,数据类型:float32,float16 - -### 支持的ONNX版本 - -自定义算子,无对应onnx版本 - -## RoiAlign - -### 功能 - -在每个roi区域进行池化处理 - -### 边界 - -【输入】 - -3个输入 - -x:tensor,4D输入,数据类型:float16、float32 - -rois:shape=\(num\_rois, 4\),数据类型:float16、float32 - -batch\_indices :shape=\(num\_rois,\),数据类型:int64 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type,shape=\(num\_rois, C, output\_height, output\_width\) - -【属性】 - -mode:string,默认为avg,含义:池化方式 - -output\_height:int,默认为1,含义:y的高度 - -output\_width:int,默认为1,含义:y的宽度 - -sampling\_ratio :int,默认为0,含义:插值算法采样点数 - -spatial\_scale:float,默认为1.0,含义:相对于输入图像的空间采样率 - -【约束】 - -batch\_indices数据类型只能写int32不能写int64 - -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32,fp64的输入 - -### 支持的ONNX版本 - -Opset v10/v11/v12/v13 - -## Round - -### 功能 - -对输入张量做四舍五入的运算 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## PRelu - -### 功能 - -PRelu激活函数 - -### 边界 - -【输入】 - -两个输入 - -x:一个tensor,数据类型:float16、float32 - -slope:slope张量,数据类型和输入x一致 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -【约束】 - -slope必须是1维,当输入x的shape是1维时,slope的维度值必须为1;输入x的shape是其他维度时,slope的维度值可以为1或者为输入x的shape\[1\] - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ScatterND - -### 功能 - -创建data的拷贝,同时在指定indices处根据updates更新 - -### 边界 - -【输入】 - -3个输入 - -data:tensor,rank \>= 1,数据类型:float16、float32 - -indices:tensor,rank \>= 1,数据类型:int64 - -updates:tensor,rank = q + r - indices\_shape\[-1\] - 1,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -### 支持的ONNX版本 - -Opset v11 - -## Selu - -### 功能 - -在元素级别使用指数线性单位函数y = gamma \* \(alpha \* e^x - alpha\) for x <= 0, y = gamma \* x for x \> 0 生成张量 - -### 边界 - -【输入】 - -一个输入 - -x:fp16,fp32,double类型的tensor - -两个属性 - -alpha:乘数因子 - -gamma:乘数因子 - -【输出】 - -一个输出 - -y:与输入类型相同的tensor - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Shape - -### 功能 - -获取输入tensor的shape - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor - -【输出】 - -y:输入tensor的shape,数据类型为int64的tensor - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Sigmoid - -### 功能 - -对输入做sigmoid - -### 边界 - -【输入】 - -一个输入 - -x:数据类型支持float16、float32 - -【输出】 - -一个输出 - -y:数据类型和输入x一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Slice - -### 功能 - -获取输入tensor的切片 - -### 边界 - -【输入】 - -五个输入 - -x:输入的tensor,数据类型:float16、float32、int32、uint8、bool、int8 - -starts:1Dtensor,int32或者int64,表示开始的索引位置 - -ends:1Dtensor,int32或者int64,表示结束的索引位置 - -axes:可选,1Dtensor,int32或者int64,表示切片的轴,取值范围为\[-r, r-1\](r表示输入数据的秩) - -steps:可选,1Dtensor,int32或者int64,表示切片的步长,最后一个轴的steps取值必须为1 - -【输出】 - -y:切片后的张量数据,数据类型和输入一致 - -【约束】 - -x:输入tensor维度不能为1 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Softmax - -### 功能 - -对输入进行softmax - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,类型和shape与输入x一致 - -【属性】 - -axis:Int,可选,表示进行softmax的方向,默认值为-1,范围为\[ -len\(x.shape\), len\(x.shape\)-1\] - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Softsign - -### 功能 - -计算输入张量的softsign\(x/\(1+|x|\)\) - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Softplus - -### 功能 - -计算softplus - -### 边界 - -【输入】 - -一个输入 - -X:1D的输入张量 - -【输出】 - -一个输出 - -Y:1D的张量 - -【约束】 - -数据类型仅支持float16、float32 - -输入、输出的数据类型一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## SpaceToDepth - -### 功能 - -SpaceToDepth将空间数据块重新排列成深度。更具体地说,这个op输出一个输入张量的副本,其中高度和宽度维度的值移动到深度维度。 - -### 边界 - -【输入】 - -input:tensor\(uint8\), tensor\(uint16\), tensor\(uint32\), tensor\(uint64\), tensor\(int8\), tensor\(int16\), tensor\(int32\), tensor\(int64\), tensor\(bfloat16\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(string\), tensor\(bool\), tensor\(complex64\), tensor\(complex128\) - -【输出】 - -output:tensor\(uint8\), tensor\(uint16\), tensor\(uint32\), tensor\(uint64\), tensor\(int8\), tensor\(int16\), tensor\(int32\), tensor\(int64\), tensor\(bfloat16\), tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(string\), tensor\(bool\), tensor\(complex64\), tensor\(complex128\) - -【属性】 - -blocksize: int - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Split - -### 功能 - -将输入切分成多个输出 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、int8、int16、int32、int64、uint8、uint16、uint32、uint64 - -【输出】 - -一个输出 - -y:由多个输出tensor组成的列表,每个tensor数据类型和输入x一致 - -【属性】 - -split:list,数据类型:int8、int16、int32、int64,指定每个输出tensor沿着切分方向的大小 - -axis:数据类型:int8、int16、int32、int64,指定切分的方向 - -【约束】 - -split的每个元素必须\>=1 - -split的所有元素之和必须等于axis指定的切分方向的size - -axis在\[ -len\(x.shape\), len\(x.shape\)-1\] 之间 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Sqrt - -### 功能 - -计算元素的平方根 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor - -【输出】 - -一个输出 - -y:一个tensor - -【约束】 - -输入、输出的数据类型相同,支持的数据类型:float16、float32 - -如果x小于0,返回Nan - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Squeeze - -### 功能 - -从输入中去除尺寸为1的维度 - -### 边界 - -【输入】 - -一个输入 - -x:一个张量,数据类型:float16、float32、double、uint8、uint16、uint32、uint64、int8、int16、int32、int64、bool - -【输出】 - -y:一个tensor,数据类型和输入一致 - -【属性】 - -axes:一个数据类型为int32或者int64的整形列表,指定维度的维度值需要为1;取值范围为\[-r, r-1\](r表示输入张量的秩,负数表示从后面计算维度);含义:指定要去除的维度 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Sub - -### 功能 - -进行张量的减法运算 - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor - -x2:一个tensor - -【输出】 - -一个输出 - -y:一个张量,数据类型和输入一致 - -【约束】 - -输入、输出的shape和dtype相同,支持的数据类型:int32、float16、float32 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Sign - -### 功能 - -逐元素计算输入tensor的符号 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Sin - -### 功能 - -计算输入张量的正弦值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Sinh - -### 功能 - -计算输入张量双曲正弦值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32、double - -【输出】 - -一个输出 - -y:一个tensor,数据类型和shape与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Size - -### 功能 - -计算输入tensor的元素个数 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个int64的scalar - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Sum - -### 功能 - -求和 - -### 边界 - -【输入】 - -1个输入 - -x:tensor序列,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Tanh - -### 功能 - -计算输入的双曲正切值 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型与输入一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Tile - -### 功能 - -将输入张量沿指定维度重复 - -### 边界 - -【输入】 - -两个输入 - -x:一个tensor - -repeats:一个1D的int64的tensor,size和输入的维度数一样 - -【输出】 - -一个输出 - -y:输出的tensor,type和维度与输入一致,output\_dim\[i\] = input\_dim\[i\] \* repeats\[i\] - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## ThresholdedRelu - -### 功能 - -当x \> alpha时y = x,否则y=0 - -### 边界 - -【输入】 - -1个输入 - -x:tensor,数据类型:float16、float32 - -【输出】 - -一个输出 - -y:一个张量,和输入x同样的type和shape - -【属性】 - -alpha:float,默认为1.0,含义:阈值 - -### 支持的ONNX版本 - -Opset v10/v11/v12/v13 - -## TopK - -### 功能 - -返回指定轴的k个最大或最小值 - -### 边界 - -【输入】 - -2个输入 - -x:tensor,数据类型:float16、float32 - -k:tensor,数据类型:int64 - -【输出】 - -2个输出 - -Values:topk的返回值 - -Indices:topk的返回值索引 - -【属性】 - -axis:int,默认为-1,含义:指定排序的轴 - -largest:int,默认为1,含义:返回k个最大/最小值 - -sorted:int,默认为1,含义:是否升序 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Transpose - -### 功能 - -转置 - -### 边界 - -【输入】 - -data:一个张量,数据类型:float16、float32、int8、int16、int32、int64、uint8、uint16、uint32、uint64 - -【输出】 - -transposed:转置之后的张量 - -【属性】 - -perm:整数列表, 张量data的维度排列 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## pad - -### 功能 - -对输入tensor做填充 - -### 边界 - -【输入】 - -两个输入 - -x:数据类型支持float16、float32、int32 - -pads:数据类型支持int32 、int64 - -【输出】 - -一个输出 - -y:数据类型和输入x一致 - -【约束】 - -当mode值为constant时,目前仅支持constant\_value=0 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Pow - -### 功能 - -计算输入x1的x2次幂 - -### 边界 - -【输入】 - -两个输入 - -x1:一个tensor,数据类型:float16、float32、double、int32、int8、uint8 - -x2:一个tensor,数据类型和输入x1一致 - -【输出】 - -一个输出 - -y:数据类型和输入x1一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - -## Unsqueeze - -### 功能 - -在输入张量(数据)的形状中插入一维项 - -### 边界 - -【输入】 - -一个输入 - -x:一个tensor,数据类型:uint8、uint16、uint32、int8、int16、int32、float16、float32 - -【输出】 - -一个输出 - -y:一个tensor,数据类型和输入x一致 - -【属性】 - -axes:ListInt,表示在指定的维度进行插1维项,取值范围为\[-input\_rank, input\_rank\],input\_rank为输入张量的秩,axes的内容不可以重复 - -### 支持的ONNX版本 - -Opset v8/v9/10/v11/v12 - -## Where - -### 功能 - -根据条件从两个输入中选择元素 - -### 边界 - -【输入】 - -三个输入 - -condition,条件,数据类型:bool - -x:一个tensor,条件为true时从x中选取元素,数据类型支持float16、float32、int8、int32、uint8 - -y:一个tensor,条件为false时从y中选取元素,和x的数据类型一致 - -【输出】 - -一个tensor,数据类型和输入x一致 - -### 支持的ONNX版本 - -Opset v8/v9/v10/v11/v12/v13 - diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" deleted file mode 100644 index 9ddcc9d912b91bcb3b47dc6fcb1a8b1d86398c90..0000000000000000000000000000000000000000 Binary files "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" and /dev/null differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" deleted file mode 100644 index 4f5a0edf328f897103e2d79f0281125258ac218a..0000000000000000000000000000000000000000 Binary files "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" and /dev/null differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01.md" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01.md" rename to "docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-caution.gif" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-caution.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-caution.gif" differ diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-danger.gif" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-danger.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-danger.gif" differ diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-note.gif" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-note.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-note.gif" differ diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-notice.gif" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-notice.gif" new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-notice.gif" differ diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-tip.gif" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-tip.gif" new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-tip.gif" differ diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-warning.gif" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-warning.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/public_sys-resources/icon-warning.gif" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01.md" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" similarity index 76% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01.md" rename to "docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" index 7bf4e1dc551fd767e8565cfa211a1766477a6319..ff47abe64afcb7dcdfac419e988c99d5168fc1d9 100644 --- "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01.md" +++ "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" @@ -7,14 +7,10 @@ - [样例参考](#样例参考.md) - [专题](#专题.md) - [混合精度](#混合精度.md) - - [权重更新](#权重更新.md) -- [FAQ](#FAQ.md) - - [pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败.md) - - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md) - [安装7.3.0版本gcc](#安装7-3-0版本gcc.md)

使用场景

-在线推理是在AI框架内执行推理的场景,例如在PyTorch框架上,加载模型后,通过model.eval\(\)执行推理。 +在线推理是在AI框架内执行推理的场景,例如在PyTorch框架上,加载模型后,通过“model.eval\(\)“将模型切换为推理模式。 相比于离线推理场景,使用在线推理可以方便将原来基于PyTorch框架做推理的应用快速迁移到昇腾AI处理器,适用于数据中心推理场景。 @@ -37,38 +33,27 @@

前提条件

-已完成PyTorch框架及混合精度模块的安装,详情请参考《PyTorch网络模型移植&训练指南》的"环境准备"章节。 +已完成PyTorch框架及混合精度模块的安装,详情请参见《PyTorch安装指南》进行PyTorch相关运行环境搭建。

在线推理流程

-在线推理流程如[图1](#fig13802941161818)所示: +在线推理流程如[图1](#fig13802941161818)所示。 **图 1** 在线推理流程图 ![](figures/在线推理流程图.png "在线推理流程图")

环境变量配置

-Pytorch在线推理进程启动所依赖的环境变量: +PyTorch在线推理进程启动所依赖的环境变量: -根据环境实际安装的软件包(toolkit或nnae),在下列场景中选择一个并运行对应的环境变量配置脚本。 - -``` -# 场景一:昇腾设备安装部署开发套件包Ascend-cann-toolkit(此时开发环境可进行推理任务),可根据不同安装用户执行相应脚本。 - # 以root用户安装toolkit包 - . /usr/local/Ascend/ascend-toolkit/set_env.sh - # 以非root用户安装toolkit包 - . ${HOME}/Ascend/ascend-toolkit/set_env.sh -# 场景二:昇腾设备安装部署软件包Ascend-cann-nnae,可根据不同安装用户执行相应脚本。 - # 以root用户安装nnae包 - . /usr/local/Ascend/nnae/set_env.sh - # 以非root用户安装nnae包 - . ${HOME}/Ascend/nnae/set_env.sh ``` +# 请依据实际在下列场景中选择其一,进行在线推理依赖包安装路径的环境变量设置。具体如下(以HwHiAiUser用户安装,安装路径为默认路径为例): +# 场景一:昇腾设备安装部署开发套件包Ascend-cann-toolkit(此时开发环境可进行推理任务)。 +. /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh +# 场景二:昇腾设备安装部署软件包Ascend-cann-nnae。 +. /home/HwHiAiUser/Ascend/nnae/set_env.sh -其他环境变量配置。 - -``` -# 若参见《PyTorch网络模型移植&训练指南》的"环境准备"章节进行环境搭建时安装python3.7.5,或存在多个python3版本时,需要在环境变量中配置python3.7.5的安装路径。 +# 若运行环境中存在多个python3版本时,需要在环境变量中配置python3.7.5的安装路径。 export PATH=/usr/local/python3.7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH @@ -78,63 +63,65 @@ export ASCEND_DEVICE_ID=0 # 输出日志信息,可根据实际修改 export ASCEND_SLOG_PRINT_TO_STDOUT=1 export ASCEND_GLOBAL_LOG_LEVEL=0 + +# TASK多线程下发 export TASK_QUEUE_ENABLE=0 ``` -**表 1** +**表 1** 环境变量说明 -

配置项

+ - - - - - - - - - - - - - - - - - - - - @@ -1178,7 +1180,7 @@ def main(): 2. 导入amp模块后,需要初始化amp,使其能对模型、优化器以及PyTorch内部函数进行必要的改动,初始化代码如下: ``` - model, optimizer = amp.initialize(model, optimizer) + model, optimizer = amp.initialize(model, optimizer,combine_grad=True) ``` 3. 标记反向传播.backward\(\)发生的位置,这样Amp就可以进行Loss Scaling并清除每次迭代的状态,代码如下: @@ -1203,7 +1205,7 @@ def main():

性能优化

-- **[概述](#概述-1.md)** +- **[概述](#概述-0.md)** - **[修改CPU性能模式(X86服务器)](#修改CPU性能模式(X86服务器).md)** @@ -1214,7 +1216,7 @@ def main(): - **[(可选)安装指定版本OpenCV库](#(可选)安装指定版本OpenCV库.md)** -

概述

+

概述

在进行PyTorch模型迁移训练时,部分网络模型会出现1秒内识别的图像数(fps)较低、性能不达标的情况。此时需要针对服务器进行以下优化。 @@ -1227,7 +1229,7 @@ def main(): 提升网络性能需要在X86服务器BIOS设置中将电源策略设为高性能模式,具体操作如下。 -1. 登录ibmc界面,启动虚拟控制台,远程控制选择HTML5集成远程控制台,如[图1](#fig15869135420288)。 +1. 登录iBMC界面,启动虚拟控制台,远程控制选择HTML5集成远程控制台,如[图1](#fig15869135420288)。 **图 1** 远程登录控制台 ![](figures/远程登录控制台.png "远程登录控制台") @@ -1260,7 +1262,7 @@ def main(): cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ``` - 执行以上命令会输出当前CPU模式,参见[表1](#table354392019384)。 + 执行以上命令会输出当前CPU模式,CPU模式说明请参见[表1](#table354392019384)。如果当前CPU模式不是performance模式,请执行以下操作设置CPU为performance模式。否则请跳过以下步骤。 **表 1** CPU模式 @@ -1288,12 +1290,12 @@ def main(): - -

配置项

说明

+

说明

必选/可选

LD_LIBRARY_PATH

+

LD_LIBRARY_PATH

动态库的查找路径,参考上述举例配置。

-
说明:

若系统环境升级了gcc版本(例如Centos、Debian和BClinux系统),需要配置gcc相关环境变量,详情请参见5

+

动态库的查找路径,参考上述举例配置。

+
说明:

若系统环境安装了gcc7.3.0(例如CentOS7.6、Debian和BClinux系统),需要配置gcc相关环境变量,详情请参见5

必选

PATH

+

PATH

可执行程序的查找路径,参考上述举例配置。

+

可执行程序的查找路径,参考上述举例配置。

必选

ASCEND_DEVICE_ID

+

ASCEND_DEVICE_ID

指定芯片的逻辑ID。

+

指定芯片的逻辑ID。

取值范围[0,N-1],默认为0。其中N为当前物理机/虚拟机/容器内的设备总数。

可选

ASCEND_SLOG_PRINT_TO_STDOUT

+

ASCEND_SLOG_PRINT_TO_STDOUT

是否开启日志打屏。取值:

+

是否开启日志打屏。取值:

  • 0或不配置:关闭日志打屏
  • 1:开启日志打屏

可选

ASCEND_GLOBAL_LOG_LEVEL

+

ASCEND_GLOBAL_LOG_LEVEL

设置日志的全局日志级别。取值:

+

设置日志的全局日志级别。取值:

  • 0:对应DEBUG级别。
  • 1:对应INFO级别。
  • 2:对应WARNING级别。
  • 3:对应ERROR级别。
  • 4:对应NULL级别,不输出日志。
  • 其他值为非法值。

可选

TASK_QUEUE_ENABLE

+

TASK_QUEUE_ENABLE

s是否开启TASK多线程下发,绝大多数情况下,打开该功能会进一步提升整网训练性能。取值:

+

是否开启TASK多线程下发,绝大多数情况下,打开该功能会进一步提升整网训练性能。取值:

  • 0或不配置:关闭TASK多线程下发。
  • 1:开启TASK多线程下发。

可选

@@ -150,7 +137,9 @@ export TASK_QUEUE_ENABLE=0 ## 样例代码 -在进行推理应用时,应尽量保证应用在生命周期内不频繁初始化。推理模式通过模型model.eval\(\)进行设置,并且推理过程要在“with torch.no\_grad\(\):”代码分支下运行。本例中,我们将使用Resnet50网络的python代码进行说明。 +在进行推理应用时,应尽量保证应用在生命周期内不频繁初始化。推理模式通过模型model.eval\(\)进行设置,并且推理过程要在“with torch.no\_grad\(\):”代码分支下运行。 + +本例中,我们将使用Resnet50网络的python代码进行说明。 样例代码 resnet50\_infer\_for\_pytorch.py: @@ -246,7 +235,7 @@ def main_worker(npu, args): print("=> creating model '{}'".format(args.arch)) model = models.__dict__[args.arch](zero_init_residual=True) - # 将模型数据置于昇腾AI处理器中 + # 将模型数据复制到昇腾AI处理器中 model = model.to(CALCULATE_DEVICE) optimizer = torch.optim.SGD([ @@ -256,12 +245,12 @@ def main_worker(npu, args): args.lr) # ========================================================================= - # 初始化混合精度模型,使用后可加速运算,但推理结果的准确率可能会轻微降低。可根据实际场景选择使用 + # 初始化混合精度模型,使用后可加速运算,但结果的准确率可能会轻微降低。可根据实际场景选择使用 # ========================================================================= model, optimizer = amp.initialize(model, optimizer, opt_level="O2", loss_scale=1024, verbosity=1) # ========================================================================= - # 加载训练好的模型参数:通过命令行参数“--resume checkpoint文件” + # 加载训练好的模型参数 # ========================================================================= # 从模型文件中恢复模型参数 if os.path.isfile(args.resume): @@ -278,7 +267,7 @@ def main_worker(npu, args): print("=> no checkpoint found at '{}'".format(args.resume)) # ========================================================================= - # 初始化推理数据集 + # 初始化数据集 # ========================================================================= # 图像数据加载与预处理 valdir = os.path.join(args.data, 'val') @@ -296,7 +285,7 @@ def main_worker(npu, args): num_workers=args.workers, pin_memory=True) # ========================================================================= - # 进入在线推理模式 + # 运行validate # ========================================================================= validate(val_loader, model, args) @@ -332,7 +321,7 @@ def validate(val_loader, model, args): # 计算输出 output = model(images) - # 测量结果精度 + # 统计结果精度 acc1, acc5 = accuracy(output, target, topk=(1, 5)) top1.update(acc1[0], images.size(0)) top5.update(acc5[0], images.size(0)) @@ -344,7 +333,6 @@ def validate(val_loader, model, args): # 打印推理运算过程日志 progress.display(i) - # TODO: this should also be done with the ProgressMeter print(' * Acc@1 {top1.avg:.3f} Acc@5 {top5.avg:.3f}'.format(top1=top1, top5=top5)) return top1.avg @@ -380,7 +368,7 @@ class AverageMeter(object): class ProgressMeter(object): - """记录模型运算过程""" + """记录模型运算过程信息""" def __init__(self, num_batches, meters, prefix=""): self.batch_fmtstr = self._get_batch_fmtstr(num_batches) self.meters = meters @@ -424,7 +412,7 @@ if __name__ == '__main__': 1. 下载预训练模型。 - 打开ModelZoo中[ResNet50详情页](https://ascend.huawei.com/zh/#/software/modelzoo/detail/C/cf20ab8b8bea4032a6b056ab503112e4),点击该页面的“下载模型“下载已训练好的模型文件。 + 打开ModelZoo中[ResNet50详情页](https://ascend.huawei.com/zh/#/software/modelzoo/detail/C/cf20ab8b8bea4032a6b056ab503112e4),单击该页面的“下载模型“下载已训练好的模型文件。 2. 编辑推理脚本。 @@ -435,8 +423,10 @@ if __name__ == '__main__': 参考[环境变量配置](#环境变量配置.md)设置环境变量,并执行命令: ``` - python3.7 pytorch-resnet50-apex.py --data /data/imagenet --npu 7 --epochs 90 --resume checkpoint_npu7_epoch53.pth.tar - # 参数'--resume'加载训练好的权重参数文件,用户可根据实际模型名称修改 + python3 pytorch-resnet50-apex.py --data /data/imagenet \ + --npu 7 \ + --epochs 90 \ + --resume ./checkpoint.pth.tar # ./checkpoint.pth.tar为示例预训练模型文件路径 ``` >![](public_sys-resources/icon-note.gif) **说明:** @@ -447,8 +437,6 @@ if __name__ == '__main__': - **[混合精度](#混合精度.md)** -- **[权重更新](#权重更新.md)** -

混合精度

@@ -456,17 +444,15 @@ if __name__ == '__main__': 基于NPU芯片的架构特性,模型运算会涉及到混合精度,即混合使用float16和float32数据类型的应用场景。使用float16代替float32有如下好处: -●对于中间变量的内存占用更少,节省内存的使用。 - -●因内存使用会减少,所以数据传出的时间也会减半。 - -●float16的计算单元可以提供更快的计算性能。 +- 对于中间变量的内存占用更少,节省内存的使用。 +- 因内存使用会减少,所以数据传出的时间也会减少。 +- float16的计算单元可以提供更快的计算性能。 但是,混合精度训练受限于float16表达的精度范围,单纯将float32转换成float16会影响训练收敛情况,为了保证部分计算使用float16来进行加速的同时能保证训练收敛,这里采用混合精度模块Apex来达到以上效果。混合精度模块Apex是一个集优化性能、精度收敛于一身的综合优化库。 ## 特性支持 -混合精度模块功能和优化描述如[表1](#zh-cn_topic_0278765773_table10717173813332)所示: +混合精度模块功能和优化描述如[表1](#zh-cn_topic_0278765773_table10717173813332)所示。 **表 1** 混合精度模块功能 @@ -479,12 +465,12 @@ if __name__ == '__main__':

O1配置模式

Conv, Matmal等使用float16计算,其他如Softmax、BN使用float32

+

Conv, Matmul等使用float16计算,其他如Softmax、BN使用float32

O2配置

+

O2配置模式

除了BN使用float32外,其他绝大部分使用float16

+

BN使用float32,其他绝大部分使用float16

静态Loss Scale功能

@@ -517,12 +503,11 @@ if __name__ == '__main__': model, optimizer = amp.initialize(model, optimizer) ``` - - 可参考[样例代码](#样例参考.md)中的“初始化混合精度模型”: - - ``` - model, optimizer = amp.initialize(model, optimizer, opt_level="O2", loss_scale=1024, verbosity=1) - ``` + 也可参考[样例代码](#样例参考.md)中的“初始化混合精度模型”: + ``` + model, optimizer = amp.initialize(model, optimizer, opt_level="O2", loss_scale=1024, verbosity=1) + ``` ## 混合精度推理 @@ -531,100 +516,30 @@ if __name__ == '__main__': 参考代码:可参考[样例代码](#样例参考.md)实现。 -

权重更新

- -## 背景 - -推理进行的同时,训练服务器不断训练得到新的权重。 - -如果希望使用最新的权重进行推理,可以采用在线推理方式,直接更新权重。 - -## 整体流程 - -**图 1** 权重更新流程示意图 -![](figures/权重更新流程示意图.png "权重更新流程示意图") - -如[图1](#fig6243201383)所示,支持循环地更新权重与执行推理。主要流程: - -1. 模型初始化; -2. 权重加载/更新:获取在线推理模型和权重信息,例如从ckpt文件中加载,实际更新用的权重则来自于外部的key-value; -3. 加载数据; -4. 执行推理图模型。 - -## 样例参考 - -请参考[样例参考](#样例参考.md)。 - -

FAQ

- -- **[pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败.md)** - -- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md)** - - -

pip3.7 install Pillow==5.3.0安装失败

- -## 现象描述 - -pip3.7 install pillow==5.3.0安装失败。 - -## 可能原因 - -缺少必要的依赖,如:libjpeg、python-devel、 zlib-devel 、libjpeg-turbo-devel等等。 - -## 处理方法 - -安装相关依赖,通过如下命令安装: - -- CentOS/EulerOS/Tlinux/BClinux/Suse - - **yum install libjpeg python-devel zlib-devel libjpeg-turbo-devel** - -- Ubuntu/Debian/UOS - - **apt-get install libjpeg python-devel zlib-devel libjpeg-turbo-devel** - - -

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

- -## 现象描述 - -安装“torch-\*.whl”时,提示"ERROR:torchvision 0.6.0 has requirement torch==1.5.0, but you'll have torch 1.5.0a0+1977093 which is incompatible"。 - -![](figures/zh-cn_image_0000001152776305.png) - -## 可能原因 - -安装torch时,会自动触发torchvision进行依赖版本检查,环境中安装的torchvision版本为0.6.0,检查时发现我们安装的torch-\*.whl的版本号与要求的1.5.0不一致,所以提示报错,但实际安装成功。 - -## 处理方法 - -对实际结果无影响,无需处理。 -

安装7.3.0版本gcc

以下步骤请在root用户下执行。 1. 下载gcc-7.3.0.tar.gz,下载地址为[https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz](https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz)。 -2. 安装gcc时候会占用大量临时空间,所以先执行下面的命令清空/tmp目录: +2. 安装gcc时候会占用大量临时空间,请先执行下面的命令清空/tmp目录: ``` sudo rm -rf /tmp/* ``` -3. 安装依赖。 +3. 安装依赖(以CentOS和Ubuntu系统为例)。 + - CentOS执行如下命令安装。 - centos/bclinux执行如下命令安装。 + ``` + yum install bzip2 + ``` - ``` - yum install bzip2 - ``` + - Ubuntu执行如下命令安装。 - ubuntu/debian执行如下命令安装。 + ``` + apt-get install bzip2 + ``` - ``` - apt-get install bzip2 - ``` 4. 编译安装gcc。 1. 进入gcc-7.3.0.tar.gz源码包所在目录,解压源码包,命令为: @@ -665,7 +580,7 @@ pip3.7 install pillow==5.3.0安装失败。 make install ``` - >![](public_sys-resources/icon-caution.gif) **注意:** + >![](public_sys-resources/icon-notice.gif) **须知:** >其中“--prefix“参数用于指定linux\_gcc7.3.0安装路径,用户可自行配置,但注意不要配置为“/usr/local“及“/usr“,因为会与系统使用软件源默认安装的gcc相冲突,导致系统原始gcc编译环境被破坏。示例指定为“/usr/local/linux\_gcc7.3.0“。 @@ -677,7 +592,7 @@ pip3.7 install pillow==5.3.0安装失败。 export LD_LIBRARY_PATH=${install_path}/lib64:${LD_LIBRARY_PATH} ``` - 其中$\{install\_path\}为[3.](#zh-cn_topic_0000001146754749_zh-cn_topic_0000001072593337_l75d31a2874534a2092e80a5f865b46f0)中配置的gcc7.3.0安装路径,本示例为“/usr/local/gcc7.3.0/“。 + 其中$\{install\_path\}为[3.](#zh-cn_topic_0000001146754749_zh-cn_topic_0000001072593337_l75d31a2874534a2092e80a5f865b46f0)中配置的gcc7.3.0安装路径,本示例为“/usr/local/linux\_gcc7.3.0/“。 >![](public_sys-resources/icon-note.gif) **说明:** >本步骤为用户在需要用到gcc升级后的编译环境时才配置环境变量。 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152776305.png" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/figures/zh-cn_image_0000001152776305.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152776305.png" rename to "docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/figures/zh-cn_image_0000001152776305.png" diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..a6aebc6309a376c2a80c2dcb1de1072936233b9b Binary files /dev/null and "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\346\235\203\351\207\215\346\233\264\346\226\260\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/figures/\346\235\203\351\207\215\346\233\264\346\226\260\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\346\235\203\351\207\215\346\233\264\346\226\260\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" rename to "docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/figures/\346\235\203\351\207\215\346\233\264\346\226\260\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" differ diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" differ diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-note.gif" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-note.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-note.gif" differ diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" differ diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" differ diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" differ diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..ea7376bab905c5bb95a78068695e3ecf6fbd2638 --- /dev/null +++ "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" @@ -0,0 +1,573 @@ +# PyTorch安装指南 +- [简介](#简介.md) +- [手动编译安装](#手动编译安装.md) + - [前提条件](#前提条件.md) + - [安装PyTorch框架](#安装PyTorch框架.md) + - [配置环境变量](#配置环境变量.md) + - [安装混合精度模块](#安装混合精度模块.md) +- [使用Ascend Hub镜像](#使用Ascend-Hub镜像.md) + - [Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像.md) + - [配置环境变量](#配置环境变量-0.md) +- [参考信息](#参考信息.md) + - [CMake安装方法](#CMake安装方法.md) + - [安装7.3.0版本gcc](#安装7-3-0版本gcc.md) + - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md) +

简介

+ +用户在准备相关环境进行PyTorch模型的移植及训练时,可以选择在训练服务器中手动编译安装PyTorch框架相关模块,或直接获取Ascend Hub镜像中心提供的基础镜像(镜像中已安装PyTorch模块和混合精度模块),进行模型的移植与训练。 + +**图 1** 环境准备流程图 +![](figures/环境准备流程图.png "环境准备流程图") + +

手动编译安装

+ +- **[前提条件](#前提条件.md)** + +- **[安装PyTorch框架](#安装PyTorch框架.md)** + +- **[配置环境变量](#配置环境变量.md)** + +- **[安装混合精度模块](#安装混合精度模块.md)** + + +

前提条件

+ +## 前提条件 + +- 需完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南》。 +- 需安装3.12.0以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法.md)。 +- 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参考[安装7.3.0版本gcc](#安装7-3-0版本gcc.md)。 +- 需确保环境中已安装patch、git工具,以Ubuntu和CentOS系统为例,命令如下: + - Ubuntu系统 + + ``` + apt-get install patch + apt-get install git + ``` + + - CentOS系统 + + ``` + yum install patch + yum install git + ``` + + + +

安装PyTorch框架

+ +## 安装流程 + +1. 以root或非root用户登录服务器。 +2. 依次执行如下命令安装PyTorch依赖环境。 + + 如果使用非root用户安装Python及其依赖,用户需要在本步骤中的每句命令结尾加上**--user**,命令示例为:**pip3.7 install pyyaml --user** + + ``` + pip3 install pyyaml + pip3 install wheel + ``` + +3. 获取PyTorch源代码。 + + 1. 运行如下命令,获取适配昇腾AI处理器的PyTorch源代码。 + + ``` + git clone https://gitee.com/ascend/pytorch.git + ``` + + 下载的源码主要目录结构如下所示: + + ``` + pytorch + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─test # 测试用例存放目录 + │ ├─README.md + ``` + + 2. 运行如下命令,进入“pytorch“目录,并获取原生PyTorch源代码。 + + ``` + cd pytorch + git clone -b v1.5.0 --depth=1 https://github.com/pytorch/pytorch.git + ``` + + 下载原生pytorch源码后,代码主要目录结构如下所示: + + ``` + pytorch + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─pytorch # 原生pytorch代码目录 + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─test # 测试用例存放目录 + │ ├─README.md + ``` + + 3. 运行如下命令,进入原生pytorch代码目录“pytorch“,并获取PyTorch被动依赖代码。 + + ``` + cd pytorch + git submodule sync + git submodule update --init --recursive + ``` + + + >![](public_sys-resources/icon-note.gif) **说明:** + >受网络波动影响,源码获取时间可能较长,下载过程中请耐心等待。 下载完成之后若没有报错,即生成了PyTorch及其依赖的第三方代码。 + +4. 编译生成适配昇腾AI处理器的PyTorch安装包。 + 1. 进入“pytorch/scripts“文件夹,执行转换脚本,生成适配昇腾AI处理器的全量代码。 + + ``` + cd ../scripts + bash gen.sh + ``` + + 将在"pytorch/pytorch"目录中生成适配昇腾AI处理器的全量代码。 + + 2. 进入适配后的全量代码目录,即“pytorch/pytorch“目录,编译生成pytorch的二进制安装包。 + + ``` + cd ../pytorch + bash build.sh + ``` + + 生成的二进制包在当前的dist目录下,即“pytorch/pytorch/dist”文件夹目录下。 + + +5. 安装PyTorch。 + + 进入“pytorch/pytorch/dist“文件夹目录,执行如下命令安装。 + + ``` + pip3 install --upgrade torch-1.5.0+ascend-cp37-cp37m-linux_{arch}.whl + ``` + + **\{arch\}**表示架构信息,为aarch64或x86\_64。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >若对环境中的PyTorch进行升级时,需要先卸载环境中已安装的PyTorch软件包再执行[5. 安装PyTorch。](#zh-cn_topic_0000001152776301_li49671667141)可以通过执行如下命令查询环境上是否已安装PyTorch。 + >**pip3 list | grep torch** + + +

配置环境变量

+ +安装完软件包后,需要配置环境变量才能正常使用昇腾PyTorch。建议构建启动脚本,例如构建set\_env.sh脚本,使用source set\_env.sh配置当前窗口的环境变量。set\_env.sh脚本内容如下(以root用户安装,安装路径为默认路径为例)。 + +``` +cpu_type=$(echo $HOSTTYPE) + +if [ x"${cpu_type}" == x"x86_64" ];then + cpu_type=x86_64-linux +else + cpu_type=arm64-linux +fi +if [ -d /usr/local/Ascend/nnae/latest ];then + export LD_LIBRARY_PATH=/usr/local/:/usr/local/python3.7.5/lib/:/usr/local/openblas/lib:/usr/local/lib/:/usr/lib64/:/usr/lib/:/usr/local/Ascend/nnae/latest/fwkacllib/lib64/:/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:/usr/local/Ascend/add-ons/:/usr/lib/aarch64_64-linux-gnu:$LD_LIBRARY_PATH + export PATH=$PATH:/usr/local/Ascend/nnae/latest/fwkacllib/ccec_compiler/bin/:/usr/local/Ascend/nnae/latest/toolkit/tools/ide_daemon/bin/ + export ASCEND_OPP_PATH=/usr/local/Ascend/nnae/latest/opp/ + export OPTION_EXEC_EXTERN_PLUGIN_PATH=/usr/local/Ascend/nnae/latest/fwkacllib/lib64/plugin/opskernel/libfe.so:/usr/local/Ascend/nnae/latest/fwkacllib/lib64/plugin/opskernel/libaicpu_engine.so:/usr/local/Ascend/nnae/latest/fwkacllib/lib64/plugin/opskernel/libge_local_engine.so + export PYTHONPATH=/usr/local/Ascend/nnae/latest/fwkacllib/python/site-packages/:/usr/local/Ascend/nnae/latest/fwkacllib/python/site-packages/auto_tune.egg/auto_tune:/usr/local/Ascend/nnae/latest/fwkacllib/python/site-packages/schedule_search.egg:$PYTHONPATH + export ASCEND_AICPU_PATH=/usr/local/Ascend/nnae/latest/ +else + export LD_LIBRARY_PATH=/usr/local/:/usr/local/lib/:/usr/lib64/:/usr/lib/:/usr/local/python3.7.5/lib/:/usr/local/openblas/lib:/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64/:/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:/usr/local/Ascend/add-ons/:/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH + export PATH=$PATH:/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/ccec_compiler/bin/:/usr/local/Ascend/ascend-toolkit/latest/toolkit/tools/ide_daemon/bin/ + export ASCEND_OPP_PATH=/usr/local/Ascend/ascend-toolkit/latest/opp/ + export OPTION_EXEC_EXTERN_PLUGIN_PATH=/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64/plugin/opskernel/libfe.so:/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64/plugin/opskernel/libaicpu_engine.so:/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64/plugin/opskernel/libge_local_engine.so + export PYTHONPATH=/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/python/site-packages/:/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/python/site-packages/auto_tune.egg/auto_tune:/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/python/site-packages/schedule_search.egg:$PYTHONPATH + export ASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest/${cpu_type} +fi +path_lib=$(python3.7 -c """ +import sys +import re +result='' +for index in range(len(sys.path)): + match_sit = re.search('-packages', sys.path[index]) + if match_sit is not None: + match_lib = re.search('lib', sys.path[index]) + if match_lib is not None: + end=match_lib.span()[1] + result += sys.path[index][0:end] + ':' + result+=sys.path[index] + '/torch/lib:' +print(result)""" +) +export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib/:${path_lib}:$LD_LIBRARY_PATH +export TASK_QUEUE_ENABLE=1 + +# (可选)当系统为openeuler时,需设置此命令,取消CPU绑核。 +# unset GOMP_CPU_AFFINITY + +# 请依据实际,在下列场景中选择合适的HCCL初始化方式,并配置相应环境变量。具体如下: +# 场景一:单机场景 +export HCCL_WHITELIST_DISABLE=1 # 关闭HCCL通信白名单 +# 场景二:多机场景。 +export HCCL_WHITELIST_DISABLE=1 # 关闭HCCL通信白名单 +export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请根据实际修改。需要保证使用的网卡IP在集群内是互通的。 +``` + +相关参数介绍参见[表1](#zh-cn_topic_0000001152616261_table42017516135)。 + +**表 1** 环境变量说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

配置项

+

说明

+

LD_LIBRARY_PATH

+

动态库的查找路径,参考上述举例配置。

+

若训练所在系统环境需要升级gcc(例如CentOS、Debian和BClinux系统),则“LD_LIBRARY_PATH”配置项处动态库查找路径需要添加“${install_path}/lib64”,其中“{install_path}”为gcc升级安装路径。请参见5

+

PYTHONPATH

+

Python搜索路径,参考上述举例配置。

+

PATH

+

可执行程序的查找路径,参考上述举例配置。

+

ASCEND_OPP_PATH

+

算子根目录,参考上述举例配置。

+

OPTION_EXEC_EXTERN_PLUGIN_PATH

+

算子信息库路径。

+

ASCEND_AICPU_PATH

+

aicpu算子包路径。

+

TASK_QUEUE_ENABLE

+

使用异步任务下发,异步调用acl接口。建议开启,开启设置为1。

+

HCCL_WHITELIST_DISABLE

+

配置在使用HCCL时是否开启通信白名单。

+
  • 0:开启白名单,无需校验HCCL通信白名单。
  • 1:关闭白名单,需校验HCCL通信白名单。
+

缺省值为0,默认开启白名单。

+

HCCL_IF_IP

+

配置HCCL的初始化通信网卡IP。

+
  • ip格式为点分十进制。
  • 暂只支持host网卡。
+

缺省时,按照以下优先级选定host通信网卡名:docker/local以外网卡(网卡名字字典序升序排列)>docker 网卡 > local网卡

+

unset GOMP_CPU_AFFINITY

+

(可选)当系统为openeuler时,需设置此命令,取消CPU绑核。

+
+ +

安装混合精度模块

+ +## 前提条件 + +1. 请确保运行环境中适配昇腾AI处理器的PyTorch框架能正常使用。 +2. 编译安装Apex前,需参见[配置环境变量](#配置环境变量.md)配置好编译过程依赖的环境变量。 + +## 安装流程 + +1. 以root或非root用户登录服务器。 +2. 获取apex源代码。 + + 1. 运行如下命令,获取适配昇腾AI处理器的apex源代码。 + + ``` + git clone https://gitee.com/ascend/apex.git + ``` + + 下载的源码主要目录结构如下所示: + + ``` + apex + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─tests # 测试用例存放目录 + │ ├─README.md + ``` + + 2. 运行如下命令,进入“apex“目录,并获取原生apex源代码。 + + ``` + cd apex + git clone https://github.com/NVIDIA/apex.git + ``` + + 下载原生apex源码后,代码主要目录结构如下所示: + + ``` + apex + │ ├─apex # 原生apex代码目录 + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─tests # 测试用例存放目录 + │ ├─README.md + ``` + + 3. 进入原生apex代码目录,即“apex/apex“目录。切换至commitid为4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a的代码分支。 + + ``` + cd apex + git checkout 4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a + cd .. + ``` + + + >![](public_sys-resources/icon-note.gif) **说明:** + >受网络波动影响,源码获取时间可能较长,下载过程中请耐心等待。 + +3. 编译生成适配昇腾AI处理器的apex安装包。 + 1. 进入“apex/scripts“文件夹,执行转换脚本,生成适配昇腾AI处理器的全量代码。 + + ``` + cd ../scripts + bash gen.sh + ``` + + 将在"apex/apex"目录中生成适配昇腾AI处理器的全量代码。 + + 2. 进入适配后的全量代码目录,即“apex/apex“目录,编译生成apex的二进制安装包。 + + ``` + cd ../apex + python3 setup.py --cpp_ext --npu_float_status bdist_wheel + ``` + + 生成的二进制包在当前的dist目录下,即“apex/apex/dist”文件夹目录下。 + + +4. 安装apex。 + + 进入“apex/apex/dist“文件夹目录,执行如下命令安装。 + + ``` + pip3.7 install --upgrade apex-0.1+ascend-cp37-cp37m-linux_{arch}.whl + ``` + + **\{arch\}**表示架构信息,为aarch64或x86\_64。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >若对环境中的Apex进行升级时,需要先卸载环境中已安装的PyTorch软件包再执行[4. 安装apex。](#zh-cn_topic_0000001106176190_li425495374416)可以通过执行如下命令查询环境上是否已安装PyTorch。 + >**pip3 list | grep apex** + + +

使用Ascend Hub镜像

+ +- **[Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像.md)** + +- **[配置环境变量](#配置环境变量-0.md)** + + +

Ascend Hub获取PyTorch镜像

+ +## 前提条件 + +- 已完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南》。 +- 宿主机上已安装Docker。 + +## 获取并使用镜像 + +用户可登录[Ascend Hub](https://ascendhub.huawei.com/#/home)获取相应镜像(首次申请需要激活账号)。 + +当前支持的镜像列表如[表1](#zh-cn_topic_0000001118701830_zh-cn_topic_0000001074498056_table1519011227314)所示。用户可根据实际选择所需的镜像进行下载并使用。 + +**表 1** 镜像列表 + + + + + + + + + + + + +

镜像名称

+

镜像版本

+

配套CANN版本

+
+

21.0.2

+

5.0.2

+
+ +

配置环境变量

+ +启动并进入镜像容器后,请参见[配置环境变量](#配置环境变量.md)配置模型训练依赖的环境变量。 + +

参考信息

+ +- **[CMake安装方法](#CMake安装方法.md)** + +- **[安装7.3.0版本gcc](#安装7-3-0版本gcc.md)** + +- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md)** + + +

CMake安装方法

+ +CMake版本升级为3.12.1的方法 + +1. 获取Cmake软件包。 + + ``` + wget https://cmake.org/files/v3.12/cmake-3.12.1.tar.gz --no-check-certificate + ``` + +2. 解压并进入软件包目录。 + + ``` + tar -xf cmake-3.12.1.tar.gz + cd cmake-3.12.1/ + ``` + +3. 执行配置、编译和安装命令。 + + ``` + ./configure --prefix=/usr/local/cmake + make && make install + ``` + +4. 设置软连接。 + + ``` + ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake + ``` + +5. 执行如下命令验证是否安装成功。 + + ``` + cmake --version + ``` + + 如显示“cmake version 3.12.1”则表示安装成功。 + + +

安装7.3.0版本gcc

+ +以下步骤请在root用户下执行。 + +1. 下载gcc-7.3.0.tar.gz,下载地址为[https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz](https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz)。 +2. 安装gcc时候会占用大量临时空间,所以先执行下面的命令清空/tmp目录: + + ``` + sudo rm -rf /tmp/* + ``` + +3. 安装依赖(以CentOS和Ubuntu系统为例)。 + - CentOS执行如下命令安装。 + + ``` + yum install bzip2 + ``` + + - Ubuntu执行如下命令安装。 + + ``` + apt-get install bzip2 + ``` + + +4. 编译安装gcc。 + 1. 进入gcc-7.3.0.tar.gz源码包所在目录,解压源码包,命令为: + + ``` + tar -zxvf gcc-7.3.0.tar.gz + ``` + + 2. 进入解压后的文件夹,执行如下命令下载gcc依赖包: + + ``` + cd gcc-7.3.0 + ./contrib/download_prerequisites + ``` + + 如果执行上述命令报错,需要执行如下命令在“gcc-7.3.0/“文件夹下下载依赖包: + + ``` + wget http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 + wget http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 + wget http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz + wget http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2 + ``` + + 下载好上述依赖包后,重新执行以下命令: + + ``` + ./contrib/download_prerequisites + ``` + + 如果上述命令校验失败,需要确保依赖包为一次性下载成功,无重复下载现象。 + + 3. 执行配置、编译和安装命令: + + ``` + ./configure --enable-languages=c,c++ --disable-multilib --with-system-zlib --prefix=/usr/local/linux_gcc7.3.0 + make -j15 # 通过grep -w processor /proc/cpuinfo|wc -l查看cpu数,示例为15,用户可自行设置相应参数。 + make install + ``` + + >![](public_sys-resources/icon-notice.gif) **须知:** + >其中“--prefix“参数用于指定linux\_gcc7.3.0安装路径,用户可自行配置,但注意不要配置为“/usr/local“及“/usr“,因为会与系统使用软件源默认安装的gcc相冲突,导致系统原始gcc编译环境被破坏。示例指定为“/usr/local/linux\_gcc7.3.0“。 + + +5. 配置环境变量。 + + 当用户执行训练时,需要用到gcc升级后的编译环境,因此要在训练脚本中配置环境变量,通过如下命令配置。 + + ``` + export LD_LIBRARY_PATH=${install_path}/lib64:${LD_LIBRARY_PATH} + ``` + + 其中$\{install\_path\}为[3.](#zh-cn_topic_0000001135347812_zh-cn_topic_0000001173199577_zh-cn_topic_0000001172534867_zh-cn_topic_0276688294_li1649343041310)中配置的gcc7.3.0安装路径,本示例为“/usr/local/gcc7.3.0/“。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >本步骤为用户在需要用到gcc升级后的编译环境时才配置环境变量。 + + +

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

+ +## 现象描述 + +安装“torch-\*.whl”时,提示"ERROR:torchvision 0.6.0 has requirement torch==1.5.0, but you'll have torch 1.5.0a0+1977093 which is incompatible"。 + +![](figures/zh-cn_image_0000001180656411.png) + +## 可能原因 + +安装torch时,会自动触发torchvision进行依赖版本检查,环境中安装的torchvision版本为0.6.0,检查时发现我们安装的torch-\*.whl的版本号与要求的1.5.0不一致,所以提示报错,但实际安装成功 。 + +## 处理方法 + +对实际结果无影响,无需处理。 + diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001172886189.png" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/zh-cn_image_0000001180656411.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001172886189.png" rename to "docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/zh-cn_image_0000001180656411.png" diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..8b6f8a733933b101007a233938709dbe3454e899 Binary files /dev/null and "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" differ diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" differ diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" differ diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-note.gif" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-note.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-note.gif" differ diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" differ diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" differ diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01.md" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01.md" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/PyTorch\346\241\206\346\236\266\344\270\213\347\232\204\347\256\227\345\255\220\351\200\202\351\205\215\346\265\201\347\250\213.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/PyTorch\346\241\206\346\236\266\344\270\213\347\232\204\347\256\227\345\255\220\351\200\202\351\205\215\346\265\201\347\250\213.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/PyTorch\346\241\206\346\236\266\344\270\213\347\232\204\347\256\227\345\255\220\351\200\202\351\205\215\346\265\201\347\250\213.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/PyTorch\346\241\206\346\236\266\344\270\213\347\232\204\347\256\227\345\255\220\351\200\202\351\205\215\346\265\201\347\250\213.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001126846510.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001126846510.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001126846510.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001126846510.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001126846512.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001126846512.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001126846512.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001126846512.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001126846514.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001126846514.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001126846514.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001126846514.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001127006336.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001127006336.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001127006336.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001127006336.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001127006338.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001127006338.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001127006338.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001127006338.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001127006340.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001127006340.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001127006340.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001127006340.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176216.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001172886189.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176216.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001172886189.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001172886191.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001172886191.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001172886191.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001172886191.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001172886193.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001172886193.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001172886193.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001172886193.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001173046107.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001173046107.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001173046107.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001173046107.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001173046109.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001173046109.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001173046109.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001173046109.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001173046111.png" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001173046111.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/figures/zh-cn_image_0000001173046111.png" rename to "docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/figures/zh-cn_image_0000001173046111.png" diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" differ diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" differ diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-note.gif" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-note.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-note.gif" differ diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" differ diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" differ diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01.md" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" similarity index 74% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01.md" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" index 82c6aca110f215d87eb75aeb0f26d42cdb4afd66..b9995f8b8f2099ed4d92f283013c2a69db8a6022 100644 --- "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01.md" +++ "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" @@ -4,15 +4,8 @@ - [迁移流程](#迁移流程.md) - [模型移植评估](#模型移植评估.md) - [环境准备](#环境准备.md) - - [简介](#简介.md) - - [手动编译安装](#手动编译安装.md) - - [前提条件](#前提条件.md) - - [安装PyTorch框架](#安装PyTorch框架.md) - - [配置环境变量](#配置环境变量.md) - - [安装混合精度模块](#安装混合精度模块.md) - - [使用Ascend Hub镜像](#使用Ascend-Hub镜像.md) - - [Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像.md) - - [配置环境变量](#配置环境变量-0.md) + - [准备运行环境](#准备运行环境.md) + - [配置环境变量](#配置环境变量.md) - [模型迁移](#模型迁移.md) - [工具迁移](#工具迁移.md) - [功能介绍](#功能介绍.md) @@ -24,28 +17,28 @@ - [PyTorch接口替换](#PyTorch接口替换.md) - [混合精度](#混合精度.md) - [性能优化](#性能优化.md) - - [概述](#概述-1.md) + - [概述](#概述-0.md) - [修改CPU性能模式(X86服务器)](#修改CPU性能模式(X86服务器).md) - [修改CPU性能模式(ARM服务器)](#修改CPU性能模式(ARM服务器).md) - [安装高性能pillow库(X86服务器)](#安装高性能pillow库(X86服务器).md) - [(可选)安装指定版本OpenCV库](#(可选)安装指定版本OpenCV库.md) - [模型训练](#模型训练.md) - [性能调优和分析](#性能调优和分析.md) - - [前提条件](#前提条件-2.md) + - [前提条件](#前提条件.md) - [调测过程](#调测过程.md) - [总体思路](#总体思路.md) - [采集训练过程相关数据](#采集训练过程相关数据.md) - - [性能优化](#性能优化-3.md) + - [性能优化](#性能优化-1.md) - [亲和库](#亲和库.md) - [来源介绍](#来源介绍.md) - - [功能介绍](#功能介绍-4.md) + - [功能介绍](#功能介绍-2.md) - [精度调测](#精度调测.md) - - [前提条件](#前提条件-5.md) - - [调测过程](#调测过程-6.md) - - [总体思路](#总体思路-7.md) + - [前提条件](#前提条件-3.md) + - [调测过程](#调测过程-4.md) + - [总体思路](#总体思路-5.md) - [精度调优方法](#精度调优方法.md) - [模型保存与转换](#模型保存与转换.md) - - [简介](#简介-8.md) + - [简介](#简介.md) - [模型保存](#模型保存.md) - [导出ONNX模型](#导出ONNX模型.md) - [样例说明](#样例说明.md) @@ -56,7 +49,7 @@ - [分布式训练修改](#分布式训练修改.md) - [脚本执行](#脚本执行.md) - [ShuffleNet模型调优示例](#ShuffleNet模型调优示例.md) - - [样例获取](#样例获取-9.md) + - [样例获取](#样例获取-6.md) - [模型评估](#模型评估.md) - [网络迁移](#网络迁移.md) - [网络调测](#网络调测.md) @@ -65,11 +58,10 @@ - [单算子dump方法](#单算子dump方法.md) - [常用环境变量说明](#常用环境变量说明.md) - [dump op方法](#dump-op方法.md) - - [CMake安装方法](#CMake安装方法.md) + - [安装7.3.0版本gcc](#安装7-3-0版本gcc.md) - [FAQ](#FAQ.md) - [软件安装常见问题](#软件安装常见问题.md) - [pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败.md) - - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md) - [模型和算子运行常见问题](#模型和算子运行常见问题.md) - [在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”](#在模型运行或者算子运行时遇到报错-RuntimeError-ExchangeDevice.md) - [在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”](#在模型运行或者算子运行时遇到报错-Error-in-atexit-_run_exitfuncs.md) @@ -78,7 +70,9 @@ - [在模型运行时遇到报错“RuntimeError: Initialize.”](#在模型运行时遇到报错-RuntimeError-Initialize.md) - [在模型运行时遇到报错“TVM/te/cce error.”](#在模型运行时遇到报错-TVM-te-cce-error.md) - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed.md) + - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”1](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-1.md) - [在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭(export-TASK_QUEUE_ENABLE-0)后仍然遇到报错-HelpACLExecute.md) + - [在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1(failed).md) - [模型调测常见问题](#模型调测常见问题.md) - [在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”](#在模型调测时遇到报错-RuntimeError-malloc-pytorch-c10-npu-NPUCachingAllocator-cpp-293-NPU-error-error-code-is-5.md) - [在模型调测时遇到报错“RuntimeError: Could not run 'aten::trunc.out' with arguments from the 'NPUTensorId' backend.”](#在模型调测时遇到报错-RuntimeError-Could-not-run-aten-trunc-out-with-arguments-from-the-NPUTensorId-backend.md) @@ -114,21 +108,20 @@ 2. 最大限度的继承GPU在PyTorch上的使用方式,可以使用户在将模型移植到昇腾AI处理器设备进行训练时,在开发方式和代码重用方面做到最小的改动。 3. 最大限度的继承PyTorch原生的体系结构,保留框架本身出色的特性,比如自动微分、动态分发、Debug、Profiling、Storage共享机制以及设备侧的动态内存管理等。 4. 扩展性好。在打通流程的通路之上,对于新增的网络类型或结构,只需涉及相关计算类算子的开发和实现。框架类算子,反向图建立和实现机制等结构可保持复用。 -5. 与GPU的使用方式和风格保持一致。用户在使用在线对接方案时,只需在Python侧和Device相关操作中,指定device为昇腾AI处理器,即可完成用昇腾AI处理器在PyTorch对网络的开发、训练以及调试,用户无需额外进一步关注昇腾AI处理器具体的底层细节。这样可以确保用户的最小化修改及完成平台迁移,迁移成本较低。 +5. 与GPU的使用方式和风格保持一致。用户在使用在线对接方案时,只需在Python侧和Device相关操作中,指定device为昇腾AI处理器,即可完成用昇腾AI处理器在PyTorch对网络的开发、训练以及调试,用户无需进一步关注昇腾AI处理器具体的底层细节。这样可以确保用户的最小化修改,迁移成本较低。

约束与限制

-1. infershape阶段算子不支持unknowshape的推导。 -2. cube计算的算子只支持fp16。 -3. 不支持inf/nan类型的输入。 -4. 出现4D以上的format时不能降维。 -5. Apex当前版本的实现方式为python实现,不支持APEX中的自定义优化CUDA Kernel。 -6. Apex当前版本只支持适配昇腾AI处理器的混合精度计算和多种融合优化器功能,其他功能暂未支持。 -7. 集合通信约束: +- infershape阶段算子不支持unknowshape的推导。 +- cube计算的算子只支持float16。 +- 不支持float16类型的inf/nan数据输入输出 。 +- 出现4D以上的format时不能降维。 +- Apex当前版本的实现方式为python实现,不支持APEX中的自定义优化CUDA Kernel。 +- Apex当前版本只支持适配昇腾AI处理器的混合精度计算和多种融合优化器功能,其他功能暂未支持。 +- 集合通信约束: - 数据并行模式中不同device上执行的图相同。 - 只支持1/2/4/8P粒度的分配。 - 只支持int8,int32,float16和float32数据类型。 - - 服务器网卡名称要求以eth开头。

迁移流程

@@ -179,7 +172,7 @@

错误分析

详情请参见《CANN 日志参考》《CANN 开发辅助工具指南 (训练)》中“AI Core Error分析工具使用指南”章节。

+

详情请参见《CANN 日志参考》《CANN 开发辅助工具指南》中“AI Core Error分析工具使用指南”章节。

性能调优和分析

@@ -194,7 +187,7 @@

模型保存与转换

详情请参见模型保存与转换《CANN 开发辅助工具指南 (推理)》中“ATC工具使用指南”章节。

+

详情请参见模型保存与转换《CANN 开发辅助工具指南》中“ATC工具使用指南”章节。

应用软件开发

@@ -216,165 +209,23 @@ 2. 查看算子适配情况。将原始模型及训练脚本迁移到昇腾AI处理器上之前,可以将原始模型及训练脚本在CPU上进行训练,使用dump op方法获取算子信息,与《PyTorch适配算子清单》算子进行比较,查看是否支持。dump op方法参见[dump op方法](#dump-op方法.md),当有不支持算子时参见《PyTorch算子开发指南》进行算子开发。 >![](public_sys-resources/icon-note.gif) **说明:** - >查看算子适配情况也可以先将模型及训练脚本迁移到昇腾AI处理器进行训练来查看报错信息,迁移方法参见下文。一般会提示不能在昇腾AI处理器的backend下运行某个算子。 + >查看算子适配情况也可以先将模型及训练脚本迁移到昇腾AI处理器(迁移方法参见下文)进行训练来查看报错信息。一般会提示不能在昇腾AI处理器的backend下运行某个算子(第一个不支持的算子)。

环境准备

-- **[简介](#简介.md)** - -- **[手动编译安装](#手动编译安装.md)** - -- **[使用Ascend Hub镜像](#使用Ascend-Hub镜像.md)** - - -

简介

- -用户在准备相关环境进行PyTorch模型的移植及训练时,可以选择在训练服务器中手动编译安装PyTorch框架相关模块,也可使用Ascend Hub镜像中心提供的基础镜像(镜像中已安装PyTorch模块和混合精度模块),进行模型的移植与训练。 - -**图 1** 环境准备流程图 -![](figures/环境准备流程图.png "环境准备流程图") - -

手动编译安装

- -- **[前提条件](#前提条件.md)** - -- **[安装PyTorch框架](#安装PyTorch框架.md)** +- **[准备运行环境](#准备运行环境.md)** - **[配置环境变量](#配置环境变量.md)** -- **[安装混合精度模块](#安装混合精度模块.md)** - - -

前提条件

- -## 前提条件 - -- 已完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南》。 -- 需安装3.12.0以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法.md)。 -- 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参见《CANN 软件安装指南》中的“安装7.3.0版本gcc”章节。 -- 需确保环境中已安装patch、git工具,以Ubuntu和CentOS系统为例,命令如下: - - Ubuntu系统 - - **apt-get install patch** - - **apt-get install git** - - - CentOS系统 - - **yum install patch** - - **yum install git** - - - -

安装PyTorch框架

- -## 安装流程 - -1. 以root或非root用户登录服务器。 -2. 依次执行如下命令安装PyTorch依赖环境。 - - 如果使用非root用户安装Python及其依赖,用户需要在本步骤中的每句命令结尾加上**--user**,命令示例为:**pip3.7 install pyyaml --user** - - ``` - pip3.7 install pyyaml - pip3.7 install wheel - ``` - - 若以上过程报错,请参考[FAQ](#FAQ.md)尝试解决问题。 - -3. 获取PyTorch源代码。 - - 1. 运行如下命令,获取适配昇腾AI处理器的PyTorch源代码。 - - ``` - git clone https://gitee.com/ascend/pytorch.git - ``` - - 下载的源码主要目录结构如下所示: - - ``` - pytorch - │ ├─patch # 昇腾AI处理器适配补丁目录 - │ ├─npu.patch - │ ├─scripts # 编译构建目录 - │ ├─gen.sh - │ ├─src # 源码目录 - │ ├─test # 测试用例存放目录 - │ ├─README.md - ``` - - 2. 运行如下命令,进入“pytorch“目录,并获取原生PyTorch源代码。 - - ``` - cd pytorch - git clone -b v1.5.0 --depth=1 https://github.com/pytorch/pytorch.git - ``` - - 下载原生pytorch源码后,代码主要目录结构如下所示: - - ``` - pytorch - │ ├─patch # 昇腾AI处理器适配补丁目录 - │ ├─npu.patch - │ ├─pytorch # 原生pytorch代码目录 - │ ├─scripts # 编译构建目录 - │ ├─gen.sh - │ ├─src # 源码目录 - │ ├─test # 测试用例存放目录 - │ ├─README.md - ``` - - 3. 运行如下命令,进入原生pytorch代码目录“pytorch“,并获取PyTorch被动依赖代码。 - - ``` - cd pytorch - git submodule sync - git submodule update --init --recursive - ``` - - - >![](public_sys-resources/icon-note.gif) **说明:** - >受网络波动影响,源码获取时间可能较长,下载过程中请耐心等待。 下载完成之后若没有报错,即生成了PyTorch及其依赖的第三方代码。 - -4. 编译生成适配昇腾AI处理器的PyTorch安装包。 - 1. 进入“pytorch/scripts“文件夹,执行转换脚本,生成适配昇腾AI处理器的全量代码。 - - ``` - cd ../scripts - bash gen.sh - ``` - - 将在"pytorch/pytorch"目录中生成适配昇腾AI处理器的全量代码。 - - 2. 进入适配后的全量代码目录,即“pytorch/pytorch“目录,编译生成pytorch的二进制安装包。 - - ``` - cd ../pytorch - bash build.sh - ``` - - 生成的二进制包在当前的dist目录下,即“pytorch/pytorch/dist”文件夹目录下。 - - -5. 安装PyTorch。 - - 进入“pytorch/pytorch/dist“文件夹目录,执行如下命令安装。 - - ``` - pip3 install --upgrade torch-1.5.0+ascend-cp37-cp37m-linux_{arch}.whl - ``` - - _**\{arch\}**_表示架构信息,为aarch64或x86\_64。 - >![](public_sys-resources/icon-note.gif) **说明:** - >若环境中已安装了PyTorch或需要对PyTorch进行升级时,需要先卸载环境中已安装的PyTorch软件包再执行[5. 安装PyTorch。](#li49671667141)。 +

准备运行环境

+请参见《PyTorch安装指南》进行PyTorch相关运行环境搭建。

配置环境变量

-安装完软件包后,需要配置环境变量才能正常使用昇腾PyTorch。建议构建启动脚本,例如构建set\_env.sh脚本,使用source set\_env.sh配置当前窗口的环境变量。set\_env.sh脚本内容如下。 +安装完软件包后,需要配置环境变量才能正常使用昇腾PyTorch。建议构建启动脚本,例如构建set\_env.sh脚本,使用source set\_env.sh配置当前窗口的环境变量。set\_env.sh脚本内容如下(以root用户安装,安装路径为默认路径为例)。 ``` cpu_type=$(echo $HOSTTYPE) @@ -427,219 +278,75 @@ export HCCL_WHITELIST_DISABLE=1 # 关闭HCCL通信白名单 export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请根据实际修改。需要保证使用的网卡IP在集群内是互通的。 ``` -相关参数介绍参见下[表1](#table42017516135)。 +相关参数介绍参见[表1](#zh-cn_topic_0000001134654416_zh-cn_topic_0000001152616261_table42017516135)。 **表 1** 环境变量说明 - - + + +

配置项

+ + - - - - - - - - - - - - - - - - - - - - -

配置项

说明

+

说明

LD_LIBRARY_PATH

+

LD_LIBRARY_PATH

动态库的查找路径,参考上述举例配置。

+

动态库的查找路径,参考上述举例配置。

+

若训练所在系统环境需要升级gcc(例如CentOS、Debian和BClinux系统),则“LD_LIBRARY_PATH”配置项处动态库查找路径需要添加“${install_path}/lib64”,其中“{install_path}”为gcc升级安装路径。请参见5

PYTHONPATH

+

PYTHONPATH

Python搜索路径,参考上述举例配置。

+

Python搜索路径,参考上述举例配置。

PATH

+

PATH

可执行程序的查找路径,参考上述举例配置。

+

可执行程序的查找路径,参考上述举例配置。

ASCEND_OPP_PATH

+

ASCEND_OPP_PATH

算子根目录,参考上述举例配置。

+

算子根目录,参考上述举例配置。

OPTION_EXEC_EXTERN_PLUGIN_PATH

+

OPTION_EXEC_EXTERN_PLUGIN_PATH

算子信息库路径。

+

算子信息库路径。

ASCEND_AICPU_PATH

+

ASCEND_AICPU_PATH

aicpu算子包路径。

+

aicpu算子包路径。

TASK_QUEUE_ENABLE

+

TASK_QUEUE_ENABLE

使用异步任务下发,异步调用acl接口。建议开启,开启设置为1。

+

使用异步任务下发,异步调用acl接口。建议开启,开启设置为1。

HCCL_WHITELIST_DISABLE

+

HCCL_WHITELIST_DISABLE

配置在使用HCCL时是否开启通信白名单。

-

1:关闭白名单,需校验HCCL通信白名单。

-

0:开启白名单,无需校验HCCL通信白名单。

-

缺省值为0,默认开启白名单。

+

配置在使用HCCL时是否开启通信白名单。

+
  • 0:开启白名单,无需校验HCCL通信白名单。
  • 1:关闭白名单,需校验HCCL通信白名单。
+

缺省值为0,默认开启白名单。

HCCL_IF_IP

+

HCCL_IF_IP

配置HCCL的初始化通信网卡IP。

-

- ip格式为点分十进制。

-

- 暂只支持host网卡。

-

缺省时,按照以下优先级选定host通信网卡名:docker/local以外网卡(网卡名字字典序升序排列) >docker 网卡 > local网卡

+

配置HCCL的初始化通信网卡IP。

+
  • ip格式为点分十进制。
  • 暂只支持host网卡。
+

缺省时,按照以下优先级选定host通信网卡名:docker/local以外网卡(网卡名字字典序升序排列)>docker 网卡 > local网卡

unset GOMP_CPU_AFFINITY

+

unset GOMP_CPU_AFFINITY

(可选)当系统为openeuler时,需设置此命令,取消CPU绑核。

+

(可选)当系统为openeuler时,需设置此命令,取消CPU绑核。

-

安装混合精度模块

- -## 前提条件 - -1. 请确保运行环境中适配昇腾AI处理器的PyTorch框架能正常使用。 -2. 编译安装Apex前,需参见[配置环境变量](#配置环境变量.md)配置好编译过程依赖的环境变量。 - -## 安装流程 - -1. 以root或非root用户登录服务器。 -2. 获取apex源代码。 - - 1. 运行如下命令,获取适配昇腾AI处理器的apex源代码。 - - ``` - git clone https://gitee.com/ascend/apex.git - ``` - - 下载的源码主要目录结构如下所示: - - ``` - apex - │ ├─patch # 昇腾AI处理器适配补丁目录 - │ ├─npu.patch - │ ├─scripts # 编译构建目录 - │ ├─gen.sh - │ ├─src # 源码目录 - │ ├─tests # 测试用例存放目录 - │ ├─README.md - ``` - - 2. 运行如下命令,进入“apex“目录,并获取原生apex源代码。 - - ``` - cd apex - git clone https://github.com/NVIDIA/apex.git - ``` - - 下载原生apex源码后,代码主要目录结构如下所示: - - ``` - apex - │ ├─apex # 原生apex代码目录 - │ ├─patch # 昇腾AI处理器适配补丁目录 - │ ├─npu.patch - │ ├─scripts # 编译构建目录 - │ ├─gen.sh - │ ├─src # 源码目录 - │ ├─tests # 测试用例存放目录 - │ ├─README.md - ``` - - 3. 进入原生pytorch代码目录,即“apex/apex“目录。切换至commitid为4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a的代码分支。 - - ``` - cd apex - git checkout 4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a - cd .. - ``` - - - >![](public_sys-resources/icon-note.gif) **说明:** - >受网络波动影响,源码获取时间可能较长,下载过程中请耐心等待。 - -3. 编译生成适配昇腾AI处理器的apex安装包。 - 1. 进入“apex/scripts“文件夹,执行转换脚本,生成适配昇腾AI处理器的全量代码。 - - ``` - cd ../scripts - bash gen.sh - ``` - - 将在"apex/apex"目录中生成适配昇腾AI处理器的全量代码。 - - 2. 进入适配后的全量代码目录,即“apex/apex“目录,编译生成apex的二进制安装包。 - - ``` - cd ../apex - python3 setup.py --cpp_ext --npu_float_status bdist_wheel - ``` - - 生成的二进制包在当前的dist目录下,即“apex/apex/dist”文件夹目录下。 - - -4. 安装apex。 - - 进入“apex/apex/dist“文件夹目录,执行如下命令安装。 - - ``` - pip3.7 install --upgrade apex-0.1+ascend-cp37-cp37m-linux_{arch}.whl - ``` - - _**\{arch\}**_表示架构信息,为aarch64或x86\_64。 - - >![](public_sys-resources/icon-note.gif) **说明:** - >若环境中已安装了Apex或需要对Apex进行升级时,需要先卸载环境中已安装的Apex软件包再执行[4](#li425495374416)。 - - -

使用Ascend Hub镜像

- -- **[Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像.md)** - -- **[配置环境变量](#配置环境变量-0.md)** - - -

Ascend Hub获取PyTorch镜像

- -## 前提条件 - -- 已完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南》。 -- 宿主机上已安装Docker。 - -## 获取并使用镜像 - -用户可登录[Ascend Hub](https://ascendhub.huawei.com/#/home)获取相应镜像(首次申请需要激活账号)。 - -当前支持的镜像列表如[表1](#zh-cn_topic_0000001074498056_table1519011227314)所示。用户可根据实际选择所需的镜像进行下载并使用。 - -**表 1** 镜像列表 - - - - - - - - - - - - -

镜像名称

-

镜像版本

-

配套CANN版本

-
-

21.0.2

-

5.0.2

-
- -

配置环境变量

- -启动并进入镜像容器后,请参见[配置环境变量](#配置环境变量.md)配置模型训练依赖的环境变量。 -

模型迁移

- **[工具迁移](#工具迁移.md)** @@ -669,12 +376,301 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 昇腾NPU是AI算力的后起之秀,但目前训练和在线推理脚本大多是基于GPU的。由于NPU与GPU的架构差异,基于GPU的训练和在线推理脚本不能直接在NPU上使用,脚本转换工具提供了将基于GPU的脚本转换为基于NPU的脚本的自动化方法,节省了人工手动进行脚本迁移的学习成本与工作量,大幅提升了迁移效率。 >![](public_sys-resources/icon-note.gif) **说明:** ->- 脚本转换工具根据适配规则,对用户脚本给出修改建议并提供转换功能,大幅度提高了脚本迁移速度,降低了开发者的工作量。但转换结果仅供参考,仍需用户根据实际情况做少量适配。 ->- 脚本转换工具当前仅支持PyTorch训练脚本转换。 +>- 脚本转换工具根据适配规则,对用户脚本给出修改建议并提供转换功能,大幅度提高了脚本迁移速度,降低了开发者的工作量。除使用[表1](#zh-cn_topic_0000001133095885_table4705239194613)里的脚本转换成功后可直接运行外,其他脚本的转换结果仅供参考,仍需用户根据实际情况做少量适配。 +>- [表1](#zh-cn_topic_0000001133095885_table4705239194613)里的原脚本需要在GPU环境下且基于python3能够跑通。 +>- [表1](#zh-cn_topic_0000001133095885_table4705239194613)里的脚本转换后的执行逻辑与转换前保持一致。 +>- 此脚本转换工具当前仅支持PyTorch训练脚本转换。 + +**表 1** 模型支持列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

序号

+

模型名称

+

1

+

3D AttentionNet

+

2

+

3D Nested_UNet

+

3

+

Advanced East

+

4

+

AlexNet

+

5

+

DeeplabV3+(Xception-JFT)

+

6

+

DeepMar

+

7

+

Densenet121

+

8

+

DenseNet161

+

9

+

DenseNet169

+

10

+

DenseNet201

+

11

+

EAST

+

12

+

FCN

+

13

+

FD-GAN

+

14

+

FOTS

+

15

+

GENet

+

16

+

GoogleNet

+

17

+

GRU

+

18

+

Inception V4

+

19

+

InceptionV2

+

20

+

LPRNet

+

21

+

LSTM

+

22

+

MNASNet0_5

+

23

+

MNASNet0_75

+

24

+

MNASNet1_0

+

25

+

MNASNet1_3

+

26

+

MobileNetV1

+

27

+

MobileNetV2

+

28

+

PNet

+

29

+

PSENet

+

30

+

RAFT

+

31

+

RecVAE

+

32

+

ResNet101

+

33

+

ResNet152

+

34

+

ResNet18

+

35

+

ResNet34

+

36

+

ResNet50

+

37

+

Resnext101_32x8d

+

38

+

Resnext50

+

39

+

RNet

+

40

+

Shufflenetv2

+

41

+

SqueezeNet1_0

+

42

+

SqueezeNet1_1

+

43

+

U-Net

+

44

+

VAE+GAN

+

45

+

VGG11

+

46

+

VGG11_BN

+

47

+

VGG13

+

48

+

VGG13_BN

+

49

+

VGG16

+

50

+

VGG16_BN

+

51

+

VGG19

+

52

+

VGG19_BN

+

53

+

VIT-base

+

54

+

Wide_ResNet101_2

+

55

+

Wide_ResNet50_2

+
## 系统要求 -脚本转换工具支持Ubuntu 18.04、Centos 7.6或EulerOS 2.8。 +脚本转换工具支持Ubuntu 18.04、CentOS 7.6或EulerOS 2.8。 ## 环境准备 @@ -758,7 +754,8 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 "ModuleNameModifyRule": [ { "old_name": "module", - "new_name": "new_module" + "new_name": "new_module", + "parent_module":"parent_module" } ] } @@ -814,6 +811,11 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训

新名称

parent_module

+

父级模块名称

+
@@ -828,7 +830,7 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 2. 执行脚本转换工具。 ``` - python3.7.5 ms_fmk_transplt.py -i 原始脚本路径 -o 脚本转换结果输出路径 [-r 自定义规则json文件路径] + python3 ms_fmk_transplt.py -i 原始脚本路径 -o 脚本转换结果输出路径 [-r 自定义规则json文件路径] ``` 3. 完成脚本转换。 @@ -839,7 +841,7 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 ``` ├── xxx_msft // 脚本转换结果输出目录,默认为原始脚本路径。xxx为原始脚本所在文件夹名称。 -│ ├── 生成脚本文件 // 与转换前的脚本文件目录结构一致 +│ ├── 生成脚本文件 // 与转换前的脚本文件目录结构一致。 │ ├── msFmkTranspltlog.txt // 脚本转换过程日志文件。 │ ├── unsupported_op.xlsx // 不支持算子列表文件。 ``` @@ -855,7 +857,7 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训

单P训练模型迁移

-当前在线对接方案优点在于保证在昇腾AI处理器上训练与GPU的使用方式和风格保持一致。用户在使用在线对接方案时,**只需在Python侧和Device相关操作中,指定device为昇腾AI处理器**,即可完成用昇腾AI处理器在PyTorch对网络的开发、训练以及调试。针对单P模型训练,主要迁移改动如下: +当前在线对接方案优点在于保证在昇腾AI处理器上训练与GPU的使用方式和风格保持一致。用户在使用在线对接方案时,**只需在Python侧和Device相关操作中,指定device为昇腾AI处理器**,即可完成用昇腾AI处理器在PyTorch对网络的开发、训练以及调试。针对单P模型训练,主要迁移改动如下。 迁移前GPU代码: @@ -913,7 +915,7 @@ def main():

PyTorch接口替换

-1. 为了使昇腾AI处理器使用PyTorch框架的能力,需要对原生的PyTorch框架进行一定Device层面的适配,对外呈现是需要将跟cpu和cuda相关的接口进行切换;在进行网络迁移时,需要将某些设备相关的接口转换成跟昇腾AI处理器相关的接口,当前适配的设备相关接口参见: +1. 为了使昇腾AI处理器使用PyTorch框架的能力,需要对原生的PyTorch框架进行一定Device层面的适配,对外呈现是需要将跟cpu和cuda相关的接口进行切换;在进行网络迁移时,需要将某些设备相关的接口转换成跟昇腾AI处理器相关的接口,当前适配的设备相关接口请参见[表1](#table1922064517344): **表 1** 设备接口替换 @@ -1114,7 +1116,7 @@ def main(): ## 概述 -基于NPU芯片的架构特性,会涉及到混合精度训练,即混合使用float16和float32数据类型的应用场景。使用float16代替float32有如下一些好处: +基于NPU芯片的架构特性,会涉及到混合精度训练,即混合使用float16和float32数据类型的应用场景。使用float16代替float32有如下好处: - 对于中间变量的内存占用更少,节省内存的使用。 - 因内存使用会减少,所以数据传出的时间也会减半。 @@ -1124,12 +1126,12 @@ def main(): 适配昇腾AI处理器的混合精度模块Apex除了上述优点外,还能提升运算性能。具体如下: -- Apex在进行混合精度运算时,会对模型的grad进行运算,开启combine\_grad开关,可以加速这些运算。具体为将amp.initialize\(\)接口参数combine\_grad设置为True; +- Apex在混合精度运算过程中,会对模型的grad进行运算。开启combine\_grad开关,可以加速这些运算。具体为将amp.initialize\(\)接口参数combine\_grad设置为True; - 适配后的Apex针对adadelta/adam/sgd/lamb做了昇腾AI处理器亲和性优化,得到的NPU融合优化器与原生算法保持一致,但运算速度更快。使用时只需将原有优化器替换为apex.optimizers.\*(“\*”为优化器名称,例如NpuFusedSGD)。 ## 特性支持 -混合精度模块功能和优化描述如[表1](#table10717173813332)所示: +混合精度模块功能和优化描述如[表1](#table10717173813332)所示。 **表 1** 混合精度模块功能 @@ -1142,10 +1144,10 @@ def main():

O1配置模式

Conv, Matmal等使用float16计算,其他如Softmax、BN使用float32

+

Conv,Matmal等使用float16计算,其他如Softmax、BN使用float32

O2配置

+

O2配置模式

除了BN使用float32外,其他绝大部分使用float16

ondemand

按需快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,空闲时间增加就降低频率。

+

按需快速动态调整CPU频率,一有CPU计算量的任务,就会立即达到最大频率运行,空闲时间增加就降低频率。

conservative

按需快速动态调整CPU频率, 比ondemand的调整更保守。

+

按需快速动态调整CPU频率,比ondemand的调整更保守。

schedutil

@@ -1305,21 +1307,21 @@ def main():
2. 安装工具,使用如下命令安装。 + - 以“ubuntu/debian“系统为例。 - ubuntu/debian: + ``` + apt-get install linux-tools-$(uname -r) + ``` - ``` - apt-get install linux-tools-$(uname -r) - ``` + - 以“centos/bclinux/euler“系统为例: - centos/bclinux/euler: + ``` + yum install kernel-tools -y + systemctl daemon-reload + systemctl enable cpupower + systemctl start cpupower + ``` - ``` - yum install kernel-tools -y - systemctl daemon-reload - systemctl enable cpupower - systemctl start cpupower - ``` 3. 设置CPU为performance模式。 @@ -1327,7 +1329,7 @@ def main(): cpupower frequency-set -g performance ``` -4. 再次执行[步骤1](#li158435131344)查看是否已修改。 +4. 再次执行[步骤1](#li158435131344)查看当前CPU模式是否已设置为performance模式。

修改CPU性能模式(ARM服务器)

@@ -1413,8 +1415,8 @@ def main(): 如模型依赖OpenCV,基于训练性能考虑,建议安装OpenCV-3.4.10版本。 -1. 获取源码:_[获取地址](https://opencv.org/releases/)_。 -2. 安装指导:_[获取地址](https://docs.opencv.org/3.4.10/d7/d9f/tutorial_linux_install.html)_。 +1. 获取源码:[获取地址](https://opencv.org/releases/)。 +2. 安装指导:[获取地址](https://docs.opencv.org/3.4.10/d7/d9f/tutorial_linux_install.html)。

模型训练

@@ -1422,14 +1424,14 @@ def main():

性能调优和分析

-- **[前提条件](#前提条件-2.md)** +- **[前提条件](#前提条件.md)** - **[调测过程](#调测过程.md)** - **[亲和库](#亲和库.md)** -

前提条件

+

前提条件

1. 参见[样例说明](#样例说明.md)改造开源代码,使模型能够正常运行,包括数据预处理,前向计算,loss计算,混合精度,反向计算,参数更新等。 2. 模型迁移阶段优先关注模型是否能跑通,现有算子是否能满足,如果遇到不满足的算子需参见《PyTorch算子开发指南》进行算子适配开发。 @@ -1441,7 +1443,7 @@ def main(): - **[采集训练过程相关数据](#采集训练过程相关数据.md)** -- **[性能优化](#性能优化-3.md)** +- **[性能优化](#性能优化-1.md)**

总体思路

@@ -1544,7 +1546,7 @@ def main(): 6. 分析TaskInfo中额外的task,尤其关注transdata。 -

性能优化

+

性能优化

## 算子瓶颈优化 @@ -1560,8 +1562,8 @@ def main(): 1. 获取训练过程中的Profiling数据,参见[Profiling数据采集](#采集训练过程相关数据.md)。 2. 分析Profiling数据分析整网中的D2DCopywithStreamSynchronize/PTCopy/format\_contiguous的耗时。 3. 若发现耗时较大,则需参照以下两种方案解决。 - - 规避方案:PyTorch中View类型框架类算子会导致非连续转连续操作。优化思路为尽量使用计算类算子代替View类框架算子,常见的View类框架算子如View、Permute、Transpose等。更多View类框架算子可参考[https://pytorch.org/docs/stable/tensor\_view.html](https://pytorch.org/docs/stable/tensor_view.html)。 - - 解决方案:加速转连续操作。 + - 方案一:(规避方案)PyTorch中View类型框架类算子会导致非连续转连续操作。优化思路为尽量使用计算类算子代替View类框架算子,常见的View类框架算子如View、Permute、Transpose等。更多View类框架算子可参考[https://pytorch.org/docs/stable/tensor\_view.html](https://pytorch.org/docs/stable/tensor_view.html)。 + - 方案二:(解决方案)加速转连续操作。 ## 框架瓶颈优化 @@ -1585,21 +1587,21 @@ def main(): 2. 查看INFO日志,观察第一个step以后的aclopCompile::aclOp关键字,如果后续接了Match op iunputs/type failed或To compile op则说明该算子存在动态编译,需要优化。 3. 需参照以下两种方案解决。 - 规避方案:在理解模型语义和相关API基础上,使用固定Shape的方式代替动态Shape。 - - 解决方案:减少编译或不需要编译该算子 + - 解决方案:减少编译或不需要编译该算子。

亲和库

- **[来源介绍](#来源介绍.md)** -- **[功能介绍](#功能介绍-4.md)** +- **[功能介绍](#功能介绍-2.md)**

来源介绍

针对公版模型中常见的网络结构和函数,我们针对性地对其进行了优化,使得运算性能大幅度提升,同时,将其集成到Pytorch框架中,便于模型性能调优中使用。 -

功能介绍

+

功能介绍

- @@ -2648,16 +2672,11 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49 详细说明如下: -1. 由于原生实现的torch.transpose\(x, 1, 2\).contiguous\(\)是使用了View类框架算子transpose,造成了非连续场景,如[copy瓶颈优化](#性能优化-3.md)所描述Copy瓶颈,使用channel\_shuffle\_index\_select,在语义相同的情况下使用计算类算子替换框架类算子,从而减少耗时。 - -2. 由于shufflenetv2中含有大量的chunk操作,而chunk操作在Pytorch中为框架类算子,其结果会将一个tensor分割为几个等长的非连续的tensor,而非连续转连续这个操作目前耗时较长,故使用计算类算子消除非连续,如[copy瓶颈优化](#性能优化-3.md)所描述Copy瓶颈。 - -3. 适配层在适配算子时默认指定输出格式为输入格式,但是concat不支持C轴非16整数倍的5HD的格式,会转为4D进行处理,又由于concat后面接的是gatherv2算子,也是仅支持4D格式的算子,所以导致数据格式转换过程为5HD-\>4D-\>concat-\>5HD-\>4D-\>gatherv2-\>5HD,解决方法是修改concat输出格式,当非16整数倍时指定输出格式为4D,优化后数据格式转换过程为5HD-\>4D-\>concat-\>gatherv2-\>5HD,当前针对ShuffleNet的做法具体可参考pytorch/aten/src/ATen/native/npu/CatKernelNpu.cpp 第121行。 - -4. 设置weight初始化格式避免计算过程中反复的transdata,如[copy瓶颈优化](#性能优化-3.md)所描述框架瓶颈。 - -5. 修复了DWCONV weight输出格式指定,避免一些不必要5HD-\>4D。 - +- 由于原生实现的torch.transpose\(x, 1, 2\).contiguous\(\)是使用了View类框架算子transpose,造成了非连续场景,如[copy瓶颈优化](#性能优化-1.md)所描述Copy瓶颈,使用channel\_shuffle\_index\_select,在语义相同的情况下使用计算类算子替换框架类算子,从而减少耗时。 +- 由于shufflenetv2中含有大量的chunk操作,而chunk操作在Pytorch中为框架类算子,其结果会将一个tensor分割为几个等长的非连续的tensor,而非连续转连续这个操作目前耗时较长,故使用计算类算子消除非连续,如[copy瓶颈优化](#性能优化-1.md)所描述Copy瓶颈。 +- 适配层在适配算子时默认指定输出格式为输入格式,但是concat不支持C轴非16整数倍的5HD的格式,会转为4D进行处理,又由于concat后面接的是gatherv2算子,也是仅支持4D格式的算子,所以导致数据格式转换过程为5HD-\>4D-\>concat-\>5HD-\>4D-\>gatherv2-\>5HD,解决方法是修改concat输出格式,当非16整数倍时指定输出格式为4D,优化后数据格式转换过程为5HD-\>4D-\>concat-\>gatherv2-\>5HD,当前针对ShuffleNet的做法具体可参考pytorch/aten/src/ATen/native/npu/CatKernelNpu.cpp 第121行。 +- 设置weight初始化格式避免计算过程中反复的transdata,如[copy瓶颈优化](#性能优化-1.md)所描述框架瓶颈。 +- 修复了DWCONV weight输出格式指定,避免一些不必要5HD-\>4D。 ## 整网排查 @@ -2846,7 +2865,7 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49 15. 使用针对ShufflenetV2场景再次优化后的Gatherv3算子后,整体性能还能继续提升。 -## python侧优化细节 +## Python侧优化细节 Python侧优化主要是通过一些同等语义的修改,使网络在NPU上边的更加亲和。当前非连续转连续容易成为性能瓶颈,而ShufflenetV2中的channel\_shuffle操作就涉及了permute后转连续的操作,导致整网性能在NPU上较差。通过对channel\_shuffle操作进行同等语义的修改,加上和concat操作的融合,使得整网性能得到飞升。采用的是torchvision版本参见[开源链接](https://github.com/pytorch/vision/blob/master/torchvision/models/shufflenetv2.py)。 @@ -3091,7 +3110,7 @@ for group in [2, 4, 8]: - **[dump op方法](#dump-op方法.md)** -- **[CMake安装方法](#CMake安装方法.md)** +- **[安装7.3.0版本gcc](#安装7-3-0版本gcc.md)**

单算子样例编写说明

@@ -3221,34 +3240,35 @@ torch.npu.finalize_dump() **dump.json**字段解释如下。 -

函数名

@@ -1646,23 +1648,23 @@ def main():

精度调测

-- **[前提条件](#前提条件-5.md)** +- **[前提条件](#前提条件-3.md)** -- **[调测过程](#调测过程-6.md)** +- **[调测过程](#调测过程-4.md)** -

前提条件

+

前提条件

优先在同等语义和超参下,跑一定的epoch(推荐完整epoch数的20%),使精度,loss等对齐GPU相应水平,完成后再对齐最终精度。 -

调测过程

+

调测过程

-- **[总体思路](#总体思路-7.md)** +- **[总体思路](#总体思路-5.md)** - **[精度调优方法](#精度调优方法.md)** -

总体思路

+

总体思路

精度问题排查需要找出是哪一步出现的问题,主要以下几个方面: @@ -1721,7 +1723,7 @@ def main(): print(compute_result) ``` - 因昇腾AI处理器硬件架构与cpu不同,计算结果会略有不同。若运算结果较为接近\(一般不高于1e-4\),则认为运算结果正常。 + 因昇腾AI处理器硬件架构与cpu不同,计算结果会略有不同。若运算结果较为接近(一般不高于1e-4),则认为运算结果正常。 2. 通过Pytorch的hook机制来打印正向反向传播中module的输入和输出来分析。 @@ -1761,20 +1763,20 @@ def main():

模型保存与转换

-- **[简介](#简介-8.md)** +- **[简介](#简介.md)** - **[模型保存](#模型保存.md)** - **[导出ONNX模型](#导出ONNX模型.md)** -

简介

+

简介

模型训练完成后,通过Pytorch提供的接口保存模型文件并导出ONNX模型,然后通过ATC工具将其转换为适配昇腾AI处理器的.om文件用于离线推理。 -本章主要介绍如何将训练好的pth文件pth.tar文件转换为ONNX模型,将ONNX模型转换为适配昇腾AI处理器的.om文件流程请参考《CANN 开发辅助工具指南 \(推理\)》手册中“ATC工具使用指南”章节。 +本章主要介绍如何将训练好的pth文件pth.tar文件转换为ONNX模型,将ONNX模型转换为适配昇腾AI处理器的.om文件流程请参考《CANN 开发辅助工具指南》手册中“ATC工具使用指南”章节。 -如果想使用Auto Tune优化功能,请参考《CANN 开发辅助工具指南 \(推理\)》手册中“Auto Tune工具使用指导”章节。 +如果想使用Auto Tune优化功能,请参考《CANN 开发辅助工具指南》手册中“Auto Tune工具使用指导”章节。 离线推理应用构建请参考《CANN 应用软件开发指南\(C&C++, 推理\)》。整体流程如下: @@ -1784,10 +1786,10 @@ def main(): Pytorch在训练过程中,通常使用torch.save\(\)来保存Checkpoint文件,根据模型文件的后续用途会保存为两种格式的模型文件: -- .pth或.pt扩展名的文件:用于在线推理或导出ONNX格式模型,仅保存模型参数,不保存模型结构,以便压缩文件的体积,可以用Netron等可视化工具打开,一般如[图1](#fig315704722610)所示。 +- .pth或.pt扩展名的文件:用于在线推理或导出ONNX格式模型,仅保存模型参数,不保存模型结构,以便压缩文件的体积,可以用Netron等可视化工具打开,一般如[图1 .pth文件](#fig315704722610)所示。 - **图 1** Pth文件 - ![](figures/Pth文件.jpg "Pth文件") + **图 1** .pth文件 + ![](figures/pth文件.jpg "pth文件") 通过**state\_dict**来保存和加载模型,示例如下: @@ -1812,7 +1814,7 @@ Pytorch在训练过程中,通常使用torch.save\(\)来保存Checkpoint文件 ``` - >![](public_sys-resources/icon-caution.gif) **注意:** + >![](public_sys-resources/icon-notice.gif) **须知:** >保存.pth或.pt文件扩展名的文件时要提供模型定义文件,否则无法部署。 - .pth.tar扩展名的文件:可用于在线推理或重新加载后继续训练。保存多个组件,以字典形式保存,常见的组件包括模型和优化器的state\_dict、停止时的epoch、最新记录的训练损失以及外部的torch.nn.Embedding层等。如果仅用于部署推理模型,推荐只在.pth.tar扩展名的文件中保存权重信息即模型的state\_dict。 @@ -1851,7 +1853,7 @@ Pytorch在训练过程中,通常使用torch.save\(\)来保存Checkpoint文件 ->![](public_sys-resources/icon-caution.gif) **注意:** +>![](public_sys-resources/icon-notice.gif) **须知:** >通常情况下,训练图和推理图中对同一个算子处理方式不同(例如BatchNorm和dropout等算子),在输入格式上也有差别,因此在运行推理或导出ONNX模型之前,必须调用model.eval\(\) 来将dropout和batch normalization层设置为推理模式。

导出ONNX模型

@@ -2033,9 +2035,9 @@ if __name__ == "__main__": global best_acc1 # 原代码为使用GPU进行训练,原代码如下: # args.gpu = gpu - ############## npu modify begin ############# + ############## npu modify begin ############# args.gpu = None - ############## npu modify end ############# + ############## npu modify end ############# if args.gpu is not None: print("Use GPU: {} for training".format(args.gpu)) @@ -2113,7 +2115,7 @@ if __name__ == "__main__": # if torch.cuda.is_available(): # target = target.cuda(args.gpu, non_blocking=True) ############## npu modify begin ############# - # 将数据集迁移到NPU上进行计算并修改target数据类型 + # 将数据集迁移到NPU上进行计算并修改target数据类型,以提升性能 if 'npu' in CALCULATE_DEVICE: target = target.to(torch.int32) images, target = images.to(CALCULATE_DEVICE, non_blocking=True), target.to(CALCULATE_DEVICE, non_blocking=True) @@ -2346,7 +2348,7 @@ if __name__ == "__main__": # cudnn.benchmark = True ``` -10. 数据加载器,结合了数据集和取样器,并且可以提供多个线程处理数据集。由于是使用昇腾AI处理器进行训练,因此需要将**pin\_memory**设置为**False**;由于当前仅支持固定shape下的训练,数据流中剩余的样本数可能小于batch大小,因此需要将**drop\_last**设置为**True**;另外需要将验证部分数据集**shuffle**设置为**True**。 +10. 数据加载器,结合了数据集和取样器,并且可以提供多个线程处理数据集。使用昇腾AI处理器进行训练,需要将**pin\_memory**设置为**False**;由于当前仅支持固定shape下的训练,数据流中剩余的样本数可能小于batch大小,因此需要将**drop\_last**设置为**True**;另外需要将验证部分数据集**shuffle**设置为**True**。 代码位置:main.py文件中的main\_worker\(\)(修改部分为字体加粗部分)。 @@ -2523,13 +2525,35 @@ if __name__ == "__main__": 单卡: ``` -python3.7 main.py /home/data/resnet50/imagenet --batch-size 128 --lr 0.1 --epochs 90 --arch resnet50 --world-size 1 --rank 0 --workers 40 --momentum 0.9 --weight-decay 1e-4 +python3.7 main.py /home/data/resnet50/imagenet --batch-size 128 \ # 训练批次大小 + --lr 0.1 \ # 学习率 + --epochs 90 \ # 训练迭代轮数 + --arch resnet50 \ # 模型架构 + --world-size 1 \ + --rank 0 \ + --workers 40 \ # 加载数据进程数 + --momentum 0.9 \ # 动量 + --weight-decay 1e-4 # 权重衰减 ``` 分布式: ``` -python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49 --workers 160 --lr 0.8 --print-freq 1 --arch resnet50 --dist-url 'tcp://127.0.0.1:50000' --dist-backend 'hccl' --multiprocessing-distributed --world-size 1 --batch-size 2048 --epochs 90 --rank 0 --device-list '0,1,2,3,4,5,6,7' --amp +python3.7 main.py /home/data/resnet50/imagenet --addr='1.1.1.1' \ # 示例IP地址,请根据实际修改 + --seed 49 \ # 随机种子 + --workers 160 \ # 加载数据进程数 + --lr 0.8 \ + --print-freq 1 \ + --arch resnet50 \ # 模型架构 + --dist-url 'tcp://127.0.0.1:50000' \ + --dist-backend 'hccl' \ + --multiprocessing-distributed \ # 使用多卡训练 + --world-size 1 \ + --batch-size 2048 \ # 训练批次大小 + --epochs 90 \ # 训练迭代轮数 + --rank 0 \ + --device-list '0,1,2,3,4,5,6,7' \ + --amp # 使用混合精度训练 ``` >![](public_sys-resources/icon-note.gif) **说明:** @@ -2537,7 +2561,7 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49

ShuffleNet模型调优示例

-- **[样例获取](#样例获取-9.md)** +- **[样例获取](#样例获取-6.md)** - **[模型评估](#模型评估.md)** @@ -2546,7 +2570,7 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49 - **[网络调测](#网络调测.md)** -

样例获取

+

样例获取

## 样例获取 @@ -2640,7 +2664,7 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49

512

修复了DWCONV没有指定输出格式为5HD的问题

+

修复了DWCONV没有指定输出格式为5HD的问题。

字段名

+ - - - - - - - - - @@ -3276,7 +3296,7 @@ torch.npu.finalize_dump() 3. 执行msaccucmp.pyc脚本,转换dump文件为numpy文件。举例: - **python3.7.5 msaccucmp.pyc convert -d /home/HwHiAiUser/dump -out /home/HwHiAiUser/dumptonumpy -v 2** + **python3 msaccucmp.pyc convert -d /home/HwHiAiUser/dump -out /home/HwHiAiUser/dumptonumpy -v 2** >![](public_sys-resources/icon-note.gif) **说明:** >-d参数支持传入单个文件,对单个dump文件进行转换,也支持传入目录,对整个path下所有的dump文件进行转换。 @@ -3329,43 +3349,86 @@ torch.npu.finalize_dump() 2. 将改造后的训练脚本在CPU上进行训练,屏幕会打印相关算子信息。 -

CMake安装方法

+

安装7.3.0版本gcc

-CMake版本升级为3.12.1的方法 +以下步骤请在root用户下执行。 -1. 获取Cmake软件包。 +1. 下载gcc-7.3.0.tar.gz,下载地址为[https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz](https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz)。 +2. 安装gcc时候会占用大量临时空间,所以先执行下面的命令清空/tmp目录: ``` - wget https://cmake.org/files/v3.12/cmake-3.12.1.tar.gz --no-check-certificate + sudo rm -rf /tmp/* ``` -2. 解压并进入软件包目录。 +3. 安装依赖。 + + centos/bclinux执行如下命令安装。 ``` - tar -xf cmake-3.12.1.tar.gz - cd cmake-3.12.1/ + yum install bzip2 ``` -3. 执行配置、编译和安装命令。 + ubuntu/debian执行如下命令安装。 ``` - ./configure --prefix=/usr/local/cmake - make && make install + apt-get install bzip2 ``` -4. 设置软连接。 +4. 编译安装gcc。 + 1. 进入gcc-7.3.0.tar.gz源码包所在目录,解压源码包,命令为: - ``` - ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake - ``` + ``` + tar -zxvf gcc-7.3.0.tar.gz + ``` -5. 执行如下命令验证是否安装成功。 + 2. 进入解压后的文件夹,执行如下命令下载gcc依赖包: + + ``` + cd gcc-7.3.0 + ./contrib/download_prerequisites + ``` + + 如果执行上述命令报错,需要执行如下命令在“gcc-7.3.0/“文件夹下下载依赖包: + + ``` + wget http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 + wget http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 + wget http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz + wget http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2 + ``` + + 下载好上述依赖包后,重新执行以下命令: + + ``` + ./contrib/download_prerequisites + ``` + + 如果上述命令校验失败,需要确保依赖包为一次性下载成功,无重复下载现象。 + + 3. 执行配置、编译和安装命令: + + ``` + ./configure --enable-languages=c,c++ --disable-multilib --with-system-zlib --prefix=/usr/local/linux_gcc7.3.0 + make -j15 # 通过grep -w processor /proc/cpuinfo|wc -l查看cpu数,示例为15,用户可自行设置相应参数。 + make install + ``` + + >![](public_sys-resources/icon-caution.gif) **注意:** + >其中“--prefix“参数用于指定linux\_gcc7.3.0安装路径,用户可自行配置,但注意不要配置为“/usr/local“及“/usr“,因为会与系统使用软件源默认安装的gcc相冲突,导致系统原始gcc编译环境被破坏。示例指定为“/usr/local/linux\_gcc7.3.0“。 + + +5. 配置环境变量。 + + 当用户执行训练时,需要用到gcc升级后的编译环境,因此要在训练脚本中配置环境变量,通过如下命令配置。 ``` - cmake --version + export LD_LIBRARY_PATH=${install_path}/lib64:${LD_LIBRARY_PATH} ``` - 如显示“cmake version 3.12.1”则表示安装成功。 + 其中$\{install\_path\}为[3.](#zh-cn_topic_0000001173199577_zh-cn_topic_0000001172534867_zh-cn_topic_0276688294_li1649343041310)中配置的gcc7.3.0安装路径,本示例为“/usr/local/gcc7.3.0/“。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >本步骤为用户在需要用到gcc升级后的编译环境时才配置环境变量。

FAQ

@@ -3385,8 +3448,6 @@ CMake版本升级为3.12.1的方法 - **[pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败.md)** -- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md)** -

pip3.7 install Pillow==5.3.0安装失败

@@ -3411,22 +3472,6 @@ pip3.7 install pillow==5.3.0安装失败。 **apt-get install libjpeg python-devel zlib-devel libjpeg-turbo-devel** -

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

- -## 现象描述 - -安装“torch-\*.whl”时,提示"ERROR:torchvision 0.6.0 has requirement torch==1.5.0, but you'll have torch 1.5.0a0+1977093 which is incompatible"。 - -![](figures/zh-cn_image_0000001106176216.png) - -## 可能原因 - -安装torch时,会自动触发torchvision进行依赖版本检查,环境中安装的torchvision版本为0.6.0,检查时发现我们安装的torch-\*.whl的版本号与要求的1.5.0不一致,所以提示报错,但实际安装成功 。 - -## 处理方法 - -对实际结果无影响,无需处理。 -

模型和算子运行常见问题

- **[在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”](#在模型运行或者算子运行时遇到报错-RuntimeError-ExchangeDevice.md)** @@ -3443,8 +3488,12 @@ pip3.7 install pillow==5.3.0安装失败。 - **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed.md)** +- **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”1](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-1.md)** + - **[在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭(export-TASK_QUEUE_ENABLE-0)后仍然遇到报错-HelpACLExecute.md)** +- **[在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1(failed).md)** +

在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”

@@ -3454,7 +3503,7 @@ pip3.7 install pillow==5.3.0安装失败。 ## 可能原因 -目前在一个线程内,只能调用一个npu设备,当切换不同的npu device时,出现上述错误。 +目前在一个线程内,只能调用一个NPU设备,当切换不同的npu device时,出现上述错误。 ## 处理方法 @@ -3468,11 +3517,11 @@ pip3.7 install pillow==5.3.0安装失败。 ## 可能原因 -在torch初始化时,若未通过torch.npu.device\(id\)指定npu设备,则默认使用device 0设备。若直接使用其他npu设备,如指定在device 1上创建tensor,那么在运行时会出现上述错误。 +在torch初始化时,若未通过torch.npu.device\(id\)指定npu设备,则默认使用device 0设备。若直接使用其他NPU设备,如指定在device 1上创建tensor,那么在运行时会出现上述错误。 ## 处理方法 -在调用npu设备之前,通过torch.npu.set\_device\(device\)指定需要使用的npu设备即可。 +在调用NPU设备之前,通过torch.npu.set\_device\(device\)指定需要使用的NPU设备即可。

在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”

@@ -3503,7 +3552,7 @@ pip3.7 install pillow==5.3.0安装失败。 ## 处理方法 -将hccl模块的路径添加到环境变量中即可,一般hccl库文件路径为安装包下的.../fwkacllib/python/site-packages/hccl。 +将hccl模块的路径添加到环境变量中,一般情况下hccl库文件路径为安装包下的.../fwkacllib/python/site-packages/hccl。

在模型运行时遇到报错“RuntimeError: Initialize.”

@@ -3521,7 +3570,27 @@ pip3.7 install pillow==5.3.0安装失败。 ## 处理方法 -一般可通过重启服务器和所有npu device解决该问题;若重启后仍然存在该问题,检查安装的driver和firmware版本是否匹配,更换正确版本的driver和firmware或者向华为工程师报告求助解决。 +可通过以下步骤解决该问题。 + +1. 重启服务器和所有npu device。 + + 如果问题解决,处理完毕。 + + 如果问题未解决,请执行[2](#li77121667913)。 + +2. 检查安装的driver和firmware版本是否匹配。 + + 如果不匹配,请执行[3](#li967615545918)。 + + 如果匹配,请执行[4](#li475615212912)。 + +3. 更换正确版本的driver和firmware。 + + 如果问题解决,处理完毕。 + + 如果问题未解决,执行步骤四 + +4. 联系华为工程师。

在模型运行时遇到报错“TVM/te/cce error.”

@@ -3535,7 +3604,7 @@ pytorch内调用npu类型算子时,强依赖于te、cce、tvm组件,pytorch ## 处理方法 -更新te等组件版本,具体需要更新te-_.whl和topi-_.whl安装包。在安装的toolkit或者nnae的fwkacllib子目录下(默认安装路径在/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64目录下,更新安装包即可。在该目录下有安装包topi-0.4.0-py3-none-any.whl和te-0.4.0-py3-none-any.whl,分别执行pip install --upgrade topi-0.4.0-py3-none-any.whl,pip install --upgrade te-0.4.0-py3-none-any.whl。 +更新te等组件版本,具体需要更新te-_\*.whl和topi-\*_.whl安装包。在安装的toolkit或者nnae的fwkacllib子目录下(以root安装用户为例:默认安装路径在/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64目录下,更新安装包即可。在该目录下有安装包topi-0.4.0-py3-none-any.whl和te-0.4.0-py3-none-any.whl,分别执行pip3 install --upgrade topi-0.4.0-py3-none-any.whl,pip install --upgrade te-0.4.0-py3-none-any.whl。 ![](figures/FAQ10-1.png) @@ -3594,6 +3663,75 @@ shell报错信息: 根据shell和日志报错信息,两者报错信息不匹配。 +shell报错是在同步操作中和AI CPU错误,而日志报错信息却是在min算子(内部调用ArgMinWithValue\_tvmbin),二者报错信息不对应。一般这类问题出现的原因是由于日志生成的报错信息滞后。 + +报错信息滞后可能是由于AI CPU算子的异步执行,导致报错信息滞后。 + +## 处理方法 + +对于该报错需要根据实际的错误来定位,可参考如下步骤进行处理: + +1. 通过关闭多任务算子下发后发现结果不变,推断在shell脚本报错位置和日志报错算子之前就已出现错误。 +2. 根据报错加上stream同步操作,缩小错误范围,定位错误算子。stream同步操作的作用在于其要求代码所运行到的位置之前的所有计算必须为完成状态,从而定位错误位置。 +3. 通过在代码中加上stream同步操作,确定报错算子为stack。 +4. 打印stack所有参数的shape、dtype、npu\_format,通过构造单算子用例复现问题。定位到问题原因为减法计算输入参数数据类型不同,导致a-b和b-a结果的数据类型不一致,最终在stack算子中报错。 +5. 将stack入参数据类型转换为一致即可临时规避问题。 + +

在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”1

+ +## 现象描述 + +脚本: + +``` + import torch + + def test_sum(): + xs_shape = [22400, 8] + ys_shape = [22400, 8] + gt_bboxes_shape = [22400, 8,4] + xs = torch.rand(xs_shape).npu() + ys = torch.rand(ys_shape).npu() + gt_bboxes = torch.rand(gt_bboxes_shape).npu().half() + left = xs - gt_bboxes[..., 0] + right = gt_bboxes[..., 2] - xs + top = ys - gt_bboxes[..., 1] + bottom = gt_bboxes[..., 3] - ys + # stream = torch.npu.current_stream() + # stream.synchronize() + # left, top 结果是fp32, right, bottom 结果是fp16, + # print(left.dtype, top.dtype, right.dtype, bottom.dtype) + bbox_targets = torch.stack((left, top, right, bottom), -1) #报错位置在这里 + # stream.synchronize() + + bbox_targets = torch.sum(bbox_targets) +``` + +shell报错信息: + +``` + RuntimeError: Run:/usr1/workspace/PyTorch_Apex_Daily_c20tr5/CODE/aten/src/ATen/native/npu/utils/OpParamMaker.h:280 NPU error,NPU error code is:500002 + [ERROR] RUNTIME(160809)kernel task happen error, retCode=0x28, [aicpu timeout]. + [ERROR] RUNTIME(160809)aicpu kernel execute failed, device_id=0, stream_id=512, task_id=24, fault so_name=, fault kernel_name=, extend_info=. + Error in atexit._run_exitfuncs: + Traceback (most recent call last): + File "/usr/local/python3.7.5/lib/python3.7/site-packages/torch/__init__.py", line 429, in _npu_shutdown + torch._C._npu_shutdown() + RuntimeError: npuSynchronizeDevice:/usr1/workspace/PyTorch_Apex_Daily_c20tr5/CODE/c10/npu/NPUStream.cpp:806 NPU error, error code is 0 +``` + +日志信息: + +``` + [ERROR] RUNTIME(12731,python3.7):2021-02-02-22:23:56.475.679 [../../../../../../runtime/feature/src/npu_driver.cc:1408]12828 MemCopySync:drvMemcpy failed: dst=0x108040288000, destMax=1240, src=0x7fe7649556d0, size=1240, kind=1, drvRetCode=17! + [ERROR] RUNTIME(12731,python3.7):2021-02-02-22:23:56.475.698 [../../../../../../runtime/feature/src/logger.cc:113]12828 KernelLaunch:launch kernel failed, kernel=140631803535760/ArgMinWithValue_tvmbin, dim=32, stream=0x55b22b3def50 + [ERROR] RUNTIME(12731,python3.7):2021-02-02-22:23:56.475.717 [../../../../../../runtime/feature/src/api_c.cc:224]12828 rtKernelLaunch:ErrCode=207001, desc=[module new memory error], InnerCode=0x70a0002 +``` + +## 可能原因 + +根据shell和日志报错信息,两者报错信息不匹配。 + shell报错是在同步操作中和ai cpu错误,而日志报错信息却是在min算子(内部调用ArgMinWithValue\_tvmbin),二者报错信息不对应。一般这类问题出现的原因是由于日志生成的报错信息滞后。 报错信息滞后可能是由于AI cpu算子的异步执行,导致报错信息滞后。 @@ -3628,6 +3766,22 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 在模型代码中查找topk算子调用位置,确定该算子是否可由其他算子代替,若可由其他算子报错,暂时使用代替方案,并将算子报错信息报告华为工程师。若无替代算子,请将算子报错信息通知华为工程师解决。 +

在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”

+ +## 现象描述 + +模型训练过程中,查看host训练日志(路径:“/root/ascend/log/plog/“),可能出现如下报错信息。 + +![](figures/20210720-102720(WeLinkPC).png) + +## 可能原因 + +该报错信息是由于调用某一公共API接口导致。 + +## 处理方法 + +该报错信息不影响训练功能与性能,可忽略该报错信息。 +

模型调测常见问题

- **[在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”](#在模型调测时遇到报错-RuntimeError-malloc-pytorch-c10-npu-NPUCachingAllocator-cpp-293-NPU-error-error-code-is-5.md)** @@ -3647,7 +3801,7 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 ## 可能原因 -对于NPUCachingAllocator中malloc类型的错误原因一般为npu显存不足,所需显存大于npu上可用显存。 +对于NPUCachingAllocator中malloc类型的错误原因一般为NPU显存不足,所需显存大于npu上可用显存。 ## 处理方法 @@ -3703,11 +3857,11 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 ## 可能原因 -首先确定报错位置,上述报错路径为.../code/pytorch/torch/init.py,而当前运行路径在.../code/pytorch下,在执行import torch时,默认首先在当前目录下查找torch文件夹,因此报错。此处应是调用在系统目录下安装的torch包,而不是当前目录下的torch。 +首先确定报错位置,上述报错路径为.../code/pytorch/torch/\_\_init\_\_.py,而当前运行路径在.../code/pytorch下,在执行import torch时,默认首先在当前目录下查找torch文件夹,因此报错。此处应是调用在系统目录下安装的torch包,而不是当前目录下的torch。 ## 处理方法 -切换到其他目录执行脚本即可。 +切换到其他目录执行脚本。

其他操作相关问题

@@ -3738,7 +3892,7 @@ npu未使用npu的流同步方法。 ## 处理方法 -使用npu的流同步方法: +使用NPU的流同步方法: ``` stream = torch.npu.current_stream() @@ -3753,11 +3907,11 @@ stream.synchronize() ## 可能原因 -未导入AICPU +未导入AICPU。 ## 处理方法 -导入AICPU: +导入AICPU(以root用户安装Toolkit软件包,安装路径为默认路径为例): ``` export ASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest @@ -3775,7 +3929,7 @@ python进程残留,需要kill。 ## 处理方法 -杀死python进程: +终止python进程: ``` pkill -9 python @@ -3789,7 +3943,7 @@ pkill -9 python ## 可能原因 -PTIndexPut编译的算子和输入的shape对不上, 并有acl\_dynamic\_shape\_op打头的日志字样,确定为动态shape报错。 +PTIndexPut编译的算子和输入的shape不一致, 并有acl\_dynamic\_shape\_op打头的日志字样,确定为动态shape报错。 ## 处理方法 @@ -3884,7 +4038,7 @@ return result 加载权重时先遍历state\_dict字典,修改key值,并使用新建的字典,具体用例参考demo.py。 -脚本: +脚本如下: ``` ckpt = torch.load("checkpoint.pth", map_location=loc) @@ -3916,7 +4070,7 @@ return result ## 处理方法 -在运行脚本中设置正确的IP地址,对于单机情况,设置为本机的IP即可;对于多机情况,每个服务器上脚本中的IP需要设置为master节点的IP。 +在运行脚本中设置正确的IP地址,对于单机情况,设置为本机的IP地址即可;对于多机情况,每个服务器上脚本中的IP需要设置为master节点的IP。

在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”

@@ -3928,7 +4082,7 @@ return result 模型进行分布式训练时,系统防火墙可能会阻截HCCL的集合通信端口的通信。需要根据报错信息,排查通信端口的开放情况,并进行相应设置。 -## 理方法 +## 处理方法 查询出被系统防火墙阻截的集合通信端口,并开放相应端口。 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/1234.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/1234.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/1234.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/1234.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/20210720-102720(WeLinkPC).png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/20210720-102720(WeLinkPC).png" new file mode 100644 index 0000000000000000000000000000000000000000..52a28c311af437ee441fd470e47891faa3a2bd12 Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/20210720-102720(WeLinkPC).png" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ1.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ1.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ1.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ1.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10-1.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10-1.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10-1.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10-1.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ11.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ11.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ11.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ11.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ12.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ12.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ12.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ12.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ13.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ13.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ13.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ13.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ14.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ14.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ14.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ14.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ15.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ15.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ15.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ15.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18-1.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18-1.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18-1.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18-1.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ19.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ19.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ19.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ19.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ2.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ2.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ2.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ2.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ3.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ3.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ3.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ3.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ4.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ4.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ4.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ4.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ5.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ5.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ5.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ5.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6-1.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6-1.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6-1.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6-1.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ7.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ7.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ7.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ7.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8-1.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8-1.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8-1.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8-1.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9-1.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9-1.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9-1.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9-1.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Performance-Config.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Performance-Config.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Performance-Config.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Performance-Config.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Pth\346\226\207\344\273\266.jpg" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Pth\346\226\207\344\273\266.jpg" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Pth\346\226\207\344\273\266.jpg" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Pth\346\226\207\344\273\266.jpg" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Socket-Configuration.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Socket-Configuration.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Socket-Configuration.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Socket-Configuration.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106016350.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106016350.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106016350.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106016350.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176216.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176216.png" new file mode 100644 index 0000000000000000000000000000000000000000..ede83f4bc1b0ed21a9c746c358c45681d5ffb49a Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176216.png" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176222.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176222.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176222.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176222.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152616281.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152616281.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152616281.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152616281.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152616289.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152616289.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152616289.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152616289.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152736233.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152736233.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152736233.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152736233.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267-1.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267-1.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267-1.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267-1.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\346\214\207\345\256\232\347\256\227\345\255\220\345\210\235\345\247\213\345\214\226\346\226\271\345\274\217.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\346\214\207\345\256\232\347\256\227\345\255\220\345\210\235\345\247\213\345\214\226\346\226\271\345\274\217.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\346\214\207\345\256\232\347\256\227\345\255\220\345\210\235\345\247\213\345\214\226\346\226\271\345\274\217.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\346\214\207\345\256\232\347\256\227\345\255\220\345\210\235\345\247\213\345\214\226\346\226\271\345\274\217.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245-2.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245-2.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245-2.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245-2.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..0c6519747dc472f350c66f4d1c5d2cc0f20b4ad8 Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260-0.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260-0.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260-0.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260-0.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260.png" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260.png" rename to "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" differ diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" differ diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-note.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-note.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-note.gif" differ diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" differ diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" differ diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" differ diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01.md" "b/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" similarity index 100% rename from "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01.md" rename to "docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" diff --git a/docs/zh/RELEASENOTE/RELEASENOTE.md b/docs/zh/RELEASENOTE/RELEASENOTE.md new file mode 100644 index 0000000000000000000000000000000000000000..559b2b09b3b907bcf26d01d2a343da946506ba6c --- /dev/null +++ b/docs/zh/RELEASENOTE/RELEASENOTE.md @@ -0,0 +1,139 @@ +# PyTorch版本说明书 +- [用户须知](#用户须知.md) +- [新增特性](#新增特性.md) +- [特性修改](#特性修改.md) +- [已修复问题](#已修复问题.md) +- [已知问题](#已知问题.md) +- [兼容性](#兼容性.md) +

用户须知

+ +本框架基于Facebook主导的开源PyTorch1.5.0进行修改,延续原生的PyTorch特性,使用NPU进行动态图训练;以算子粒度进行模型适配,代码重用性好,支持现有的网络只修改设备类型或数据类型,即可迁移到NPU上使用。 + +

新增特性

+ +**表 1** PyTorch支持的版本特性列表 + + +

字段名

说明

+

说明

dump_list

+

dump_list

待dump数据的算子模型。为空,无需配置。

+

待dump数据的算子模型。为空,无需配置。

dump_path

+

dump_path

dump数据文件存储到运行环境的目录,支持配置绝对路径或相对路径:

+

dump数据文件存储到运行环境的目录,支持配置绝对路径或相对路径:

  • 绝对路径配置以“/”开头,例如:/home/HwHiAiUser/output。
  • 相对路径配置直接以目录名开始,例如:output。

例如:dump_path配置为/home/HwHiAiUser/output,则dump数据文件存储到运行环境的/home/HwHiAiUser/output目录下。

dump_mode

+

dump_mode

dump数据模式,配置如下。

-
  • input:dump算子的输入数据。
  • output:dump算子的输出数据,默认取值output。
  • all:dump算子的输入、输出数据
+

dump数据模式,配置如下。

+
  • output:dump算子的输出数据,默认取值output。
  • input:dump算子的输入数据。
  • all:dump算子的输入、输出数据。

dump_op_switch

+

dump_op_switch

单算子模型dump数据开关,配置如下。

-
  • on:开启单算子模型dump。
  • off:关闭单算子模型dump,默认取值off
+

单算子模型dump数据开关,配置如下。

+
  • off:关闭单算子模型dump,默认取值off。
+
  • on:开启单算子模型dump。
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

一级特性

+

二级特性

+

说明

+

适配训练模型

+

YOLOV4

+

-

+

YOLOV3

+

-

+

DB

+

-

+

RFCN

+

-

+

CRNN

+

-

+

Densenset161

+

-

+

Densenset191

+

-

+

适配NPU的PyTorch特性

+

框架基础功能

+

新增适配算子开发(详见算子清单)。

+

精度对比工具

+

新增精度对比工具,支持训练精度定界。

+

昇腾710芯片

+

新增支持昇腾710芯片在线推理。

+

OS兼容性

+

新增支持ubuntu 18.04.5、OpenEuler 20.03 LTS系统

+
+ +

特性修改

+ +不涉及 + +

已修复问题

+ +不涉及 + +

已知问题

+ + + + + + + + + + + + + + + + + + + + + + + +

已知问题

+

问题描述

+

数据类型支持

+

NPU不支持float16类型的inf/nan数据输入输出。

+

数据Format

+

出现4D以上的format时不能降维。

+

集合通信约束

+

+

要求一次训练任务中不同device上执行的图相同。

+

当前只支持1/2/4/8P粒度的分配。

+

只支持int8,int32,float16和float32数据类型。

+

Apex功能支持

+

Apex当前版本的实现方式主要为python实现,不支持APEX中的自定义优化CUDA Kernel。

+
+ +

兼容性

+ +A800-9010:CentOS 7.6/Ubuntu 18.04/BC-Linux 7.6/Debian 9.9/Debian 10/OpenEuler 20.03 LTS + +A800-9000:CentOS 7.6/Euler 2.8/Kylin v10/BC-Linux 7.6/OpenEuler 20.03 LTS + diff --git a/docs/zh/RELEASENOTE/public_sys-resources/icon-caution.gif b/docs/zh/RELEASENOTE/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/docs/zh/RELEASENOTE/public_sys-resources/icon-caution.gif differ diff --git a/docs/zh/RELEASENOTE/public_sys-resources/icon-danger.gif b/docs/zh/RELEASENOTE/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/docs/zh/RELEASENOTE/public_sys-resources/icon-danger.gif differ diff --git a/docs/zh/RELEASENOTE/public_sys-resources/icon-note.gif b/docs/zh/RELEASENOTE/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/docs/zh/RELEASENOTE/public_sys-resources/icon-note.gif differ diff --git a/docs/zh/RELEASENOTE/public_sys-resources/icon-notice.gif b/docs/zh/RELEASENOTE/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/docs/zh/RELEASENOTE/public_sys-resources/icon-notice.gif differ diff --git a/docs/zh/RELEASENOTE/public_sys-resources/icon-tip.gif b/docs/zh/RELEASENOTE/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/docs/zh/RELEASENOTE/public_sys-resources/icon-tip.gif differ diff --git a/docs/zh/RELEASENOTE/public_sys-resources/icon-warning.gif b/docs/zh/RELEASENOTE/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/docs/zh/RELEASENOTE/public_sys-resources/icon-warning.gif differ