Files
2026-02-04 17:39:32 +08:00

184 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div align="center">
Torch-MLU-Ops
===========================
![system](https://img.shields.io/badge/system-ubuntu22.04_debian10.11-blue.svg)![python](https://img.shields.io/badge/python-3.10-green)![pytorch](https://img.shields.io/badge/pytorch-2.1_2.4_2.5-green)![release](https://img.shields.io/badge/release-1.3.2-green.svg)![license](https://img.shields.io/badge/license-BSD_3-blue.svg)
<div align="center">
<b>
<a href="https://www.cambricon.com/docs/sdk_1.15.0/bangtransformer_0.4.0/index.html">
<font size="4"> 📖 Torch_MLU_Ops用户手册</font>
</a>
</b>
&nbsp;&nbsp;&nbsp;&nbsp;
<b>
<a href="https://developer.cambricon.com/">
<font size="4"> 🌏 寒武纪开发者社区</font>
</a>
</b>
&nbsp;&nbsp;&nbsp;&nbsp;
<b>
<a href="https://sdk.cambricon.com/download?sdk_version=V1.13.0&component_name=Basis">
<font size="4"> 🛠️ 依赖组件获取</font>
</a>
</b>
</div>
---
<div align="left">
## 目录
- [Torch-MLU-Ops](#torch-mlu-ops)
- [目录](#目录)
- [简介](#简介)
- [安装](#安装)
- [环境要求](#环境要求)
- [通过docker镜像启动](#通过docker镜像启动)
- [编译安装](#编译安装)
- [测试](#测试)
- [目录结构](#目录结构)
- [关键特性](#关键特性)
## 简介
Torch-MLU-Ops是寒武纪设计和开发的PyTorch第三方算子库。对于使用PyTorch框架的开发者通过Torch-MLU-Ops能够便捷地使用这些自定义算子进行算子的集成、评测和业务部署。
Torch-MLU-Ops已全量覆盖LLMLarge Language Model推理场景下的常见算子。作为后端已支持Cambricon vLLM、Cambricon TGI、Cambricon Stable Diffusion web UI、Cambricon ComfyUI以及Cambricon Diffusers。
## 安装
### 环境要求
Torch-MLU-Ops支持的操作系统以及软件依赖如下。
不同平台支持的软件版本如下:
| 操作系统 | 编译器版本 | CMake版本 |
| ------------------------| ----------------------| -------------------------- |
| Ubuntu22.04 x86-64 | gcc 9.4.0或者更高版本 | 3.10或者更高版本 |
| Debian10.11 x86-64 | gcc 9.4.0或者更高版本 | 3.10或者更高版本 |
编译、运行Torch-MLU-Ops同时还需要配置以下依赖。
| Torch-MLU-Ops | Torch-MLU | CNNL | CNNL_Extra | CNCL | CNToolkit |
| -----------------| ------------------| ---------| --------------- | --------| -----------|
| v1.3.2 | v1.24.1 | v1.28.3 | v1.12.3 | v1.24.1 | v3.15.6 |
| v1.3.1 | v1.24.1 | v1.28.3 | v1.12.2 | v1.24.1 | v3.15.5 |
| v1.3.0 | v1.24.0 | v1.28.2 | v1.12.1 | v1.24.0 | v3.15.4 |
| v1.2.3 | v1.24.0 | v1.28.1 | v1.12.1 | v1.24.0 | v3.15.3 |
| v1.2.2 | v1.23.1 | v1.27.4 | v1.11.3 | v1.23.0 | v3.14.3 |
| v1.2.1 | v1.23.1 | v1.27.3 | v1.11.3 | v1.22.3 | v3.14.2 |
| v1.2.0 | v1.23.0 | v1.27.1 | v1.11.1 | v1.22.1 | v3.14.1 |
| v1.1.4 | v1.22.2 | v1.26.7 | v1.10.4 | v1.21.1 | v3.13.7 |
| v1.1.3 | v1.22.2 | v1.26.6 | v1.10.3 | v1.21.1 | v3.13.5 |
此外运行Torch-MLU-Ops还依赖PyTorch环境。Torch-MLU-Ops已支持的PyTorch版本请参考。
| Torch-MLU-Ops | PyTorch |
| -----------------| ------------------|
| v1.3.2 | v2.1, v2.4, v2.5 |
| v1.3.1 | v2.1, v2.4, v2.5 |
| v1.3.0 | v2.1, v2.4, v2.5 |
| v1.2.3 | v2.1, v2.4, v2.5 |
| v1.2.2 | v2.1, v2.4, v2.5 |
| v1.2.1 | v2.1, v2.4, v2.5 |
| v1.2.0 | v2.1, v2.4, v2.5 |
| v1.1.4 | v2.1, v2.3, v2.4 |
| v1.1.3 | v2.1, v2.3 |
### 通过docker镜像启动
寒武纪提供的解决方案镜像已提供了Torch-MLU-Ops所需要的依赖请参考Cambricon PyTorch Container Image使用。您可以从[寒武纪开发者社区](https://account.cambricon.com/interaction/SMmmcGFmw837gghtZ7VR4)获取该镜像。
### 编译安装
Torch-MLU-Ops编译脚本依赖于`NEUWARE_HOME`环境变量该环境变量指向寒武纪CNToolkit的安装路径通常为`/usr/local/neuware`
在运行示例程序前,您需要将`NEUWARE_HOME`中的`lib64`目录添加到`LD_LIBRARY_PATH`环境变量中,例如:
```shell
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NEUWARE_HOME/lib64
```
如果您使用寒武纪提供的docker镜像以上环境变量均已经被设置好了。
设置好`NEUWARE_HOME`环境变量后您可以使用以下命令编译Torch-MLU-Ops。
从远端clone仓库进入项目的主目录
```shell
cd torch_mlu_ops
```
源码安装:
```shell
pip install -e .
```
wheel包安装
```shell
python setup.py bdist_wheel
pip install dist/torch_mlu_ops*.whl
```
> _注意如果安装过程中遇到权限问题请获取相关权限或切换到拥有权限的user执行pip install 这步操作。_
移除Torch-MLU-OpsOptional
```shell
pip uninstall torch_mlu_ops
```
### 测试
在测试前请确保Torch-MLU-Ops已安装您可以通过 `pip list` 命令查询Torch-MLU-Ops的安装情况。若有如下类似打印则表明安装成功。
```shell
torch-mlu-ops 1.1.0+pt21
```
Torch-MLU-Ops模块的导入方法请参考。
```python
import torch_mlu_ops as tmo
```
`./tests/ops_pytest`目录下,提供了`ops`级别的测试示例程序,您可以参考如下命令进行测试。
```shell
cd tests/ops_pytest/
./run_test.sh
# or 单独测试某个测例,例如
python test_flash_attention.py
```
`./tests/kernels_pytest`目录下,提供了`kernels`级别的测试示例程序,您可以参考如下命令进行测试。
```shell
cd tests/kernels_pytest
./build.sh # 需要先编译
./run_test.sh
```
## 目录结构
```
torch_mlu_ops
|-- benchmarks ## 性能benchmarks测试代码目录
|-- csrc ## C以及BangC源码目录
| |-- common
| |-- kernels
| |-- ops
| `-- torch_api
|-- docs ## 文档目录
| |-- release_notes
| `-- user_guide
|-- tests ## 测试代码目录包含了kernel和ops级别的测试
| |-- kernels_pytest
| `-- ops_pytest
|-- tools ## 工具目录主要包含CI相关代码
| |-- ci
`-- torch_mlu_ops ## PyTorch第三方算子接口实现相关代码
```
## 关键特性
Torch-MLU-Ops提供的自定义算子列表以及接口说明请参考[Torch-MLU-Ops用户手册](./docs/user_guide/)。