readme.md 2.52 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87



# Custom Op ONNXRuntime
## Purpose
`Adding the custom operator implementation and registering it in ONNX Runtime`

## 环境配置
### Docker(方法一)
拉取镜像:

```plaintext
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:2.4.1-ubuntu22.04-dtk25.04-py3.10-fixpy-onnx1.19.2
```

创建并启动容器:

```plaintext
docker run --shm-size 16g --network=host --name=test --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/customop_onnxruntime:/home/customop -it <Your Image ID> /bin/bash
```

### Dockerfile(方法二)
```
cd ./docker
docker build --no-cache -t customop:test .

docker run --shm-size 16g --network=host --name=video_ort --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/customop_onnxruntime:/home/customop -it <Your Image ID> /bin/bash
```

## 使用
### 编译工程
```
git clone http://developer.sourcefind.cn/codes/modelzoo/customop_onnxruntime.git
cd customop_onnxruntime
python model.py     // 生成模型
bash compile.sh     // 编译生成算子库
```

### 运行示例
1. 目录
```
rocm_custom_op
├── compile.sh              // 编译脚本
├── custom_op_library.cc    // 注册自定义算子
├── custom_op_library.h
├── docker
├── include
├── model.py               // 创建自定义模型
├── readme.md
├── rocm_ops.cc             // 调用自定义算子
├── rocm_ops.h
├── rocm_ops.hip            // 自定义算子实现
└── benchmark.py                // 测试算子
```

2. 执行步骤
```
python test.py      // 测试模型     
```

3. 备注
```
1.在model.py中,定义了一个add.onnx模型。如需重新定义模型,请修改该文件。
2.在compile.sh中,选项--offload-arch=gfx906,请将gfx906替换为本机适配的rocm架构(可用rocminfo | grep gfx查看)。
3.若需测试别的自定义算子,修改内容如下:
    3.1 修改rocm_ops.hip,重新实现自定义算子
    3.2 修改rocm_ops.cc, 修改对自定义算子的调用
    3.3 修改model.py,修改自定义模型的创建
    3.4 修改benchmark.py,修改运行模型的输入数据
```

## result


### 精度


## 应用场景
### 功能
添加ORT custom op

## 源码仓库及问题反馈
- http://developer.sourcefind.cn/codes/modelzoo/customop_onnxruntime.git

## 参考资料
- https://github.com/microsoft/onnxruntime
- https://onnxruntime.ai/docs/extensions/add-op.html