算子使用指导(ATB Python API)
- 导入ATB Python API模块。
在代码中,通过以下方式导入ATB Python API模块:
import torch_atb
- 创建算子对象实例。
- 单算子
- 图算子
根据设计的图算子结构,通过tensorName设置各个组合OP的tensor之间的对应关系创建图算子。
用图构造器构图:
- 构图方式一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
builder = torch_atb.Builder("Graph") x = builder.add_input("x") y = builder.add_input("y") elewise_add = torch_atb.ElewiseParam() elewise_add.elewise_type = torch_atb.ElewiseParam.ElewiseType.ELEWISE_ADD layer1 = builder.add_node([x, y], elewise_add) add_out = layer1.get_output(0) z = builder.add_input("z") builder.reshape(add_out, lambda shape: [1, shape[0] * shape[1]], "add_out_") elewise_mul = torch_atb.ElewiseParam() elewise_mul.elewise_type = torch_atb.ElewiseParam.ElewiseType.ELEWISE_MUL layer2 = builder.add_node(["add_out_", z], elewise_mul) builder.mark_output(layer2.get_output(0)) Graph = builder.build()
- 构图方式二:
graph = torch_atb.GraphBuilder("Graph") \ # 设置图算子的名称 .set_input_output(["x", "y", "z"], ["out"]) \ # 指定图的输入输出tensorName .add_operation(elewise_add, ["x", "y"], ["add_out"]) \ # 添加图中需要的单算子,及使用的tensor .reshape("add_out", lambda shape: [1, shape[0] * shape[1]], "add_out_") \ # 在需要更新输出tensor的shape时,使用lambda表达式动态更新 .add_operation(elewise_mul, ["add_out_", "z"], ["out"]) \ .build() # 结束构图、创建图算子
- 构图方式一:
- 准备输入数据。
准备输入tensor,确保设备(npu、cpu)、数据类型符合预期。
x = torch.randn(2, 3, dtype=torch.float16).npu() y = torch.randn(2, 3, dtype=torch.float16).npu()
- 执行操作。
使用forward方法完成操作,并获取输出:
outputs = op.forward([x, y]) # 如果使用图算子,则outputs = graph.forward([x, y, z]) torch.npu.synchronize()
父主题: 加速库使用指导