PyPTO
🔥最新动态
- 2026/04/10:0.2.0版本发布,变更前端表达方法,提升易用性、增强功能及性能,完善各模块能力,优化开发体验与运行效率
- 2026/03/30:v0.1.2版本发布,支持集群训练场景、优化框架编译性能与基础性能、修复已知整网集成问题
- 2026/03/09:v0.1.1版本发布,支持新前端、进一步增加API丰富程度、修复一些已知问题
- 2026/01/06:v0.1.0版本发布,PyPTO项目初始版本
- 2025/12:PyPTO项目首次上线。
🚀概述
PyPTO(发音:pai p-t-o)是一款面向AI加速器的高性能编程框架,旨在简化复杂融合算子乃至整个模型网络的开发流程,同时保持高性能计算能力。该框架采用创新的PTO(Parallel Tensor/Tile Operation)编程范式,以基于Tile的编程模型为核心设计理念,通过多层次的中间表示(IR)系统,将用户通过API构建的AI模型应用从高层次的Tensor图逐步编译成硬件指令,最终生成可在目标平台上高效执行的可执行代码。
核心特性
- 基于 Tile 的编程模型:所有计算都基于Tile(硬件感知的数据块)进行,充分利用硬件并行计算能力和内存层次结构
- 多层级计算图转换:通过编译Pass将Tensor Graph转换为Tile Graph、Block Graph和Execution Graph,每一步包括一系列Pass优化流程
- 自动化代码生成:编译结果通过CodeGen生成底层PTO虚拟指令代码,再通过编译器将虚拟指令代码编译成目标平台的可执行代码
- MPMD 执行调度:可执行代码被加载到设备侧,通过MPMD(Multiple Program Multiple Data)的方式调度到设备上的处理器核
- 完整的工具链支持:全流程的编译中间产物和运行时性能数据可通过IDE集成的工具链可视化识别性能瓶颈,开发者也可以通过工具链控制编译和调度行为
- Python 友好 API:提供直观的Tensor级别抽象,贴近算法开发者的思维模式,支持动态Shape和符号化编程
- 分层抽象设计:对不同开发者暴露不同抽象层次,算法开发者使用Tensor层次,性能专家使用Tile层次,系统开发者使用Block层次
目标用户
- 算法开发者:主要使用Tensor层次编程,快速实现和验证算法,专注于算法逻辑
- 性能优化专家:可使用Tile或Block层次,进行深度性能调优,以实现极致性能
- 系统开发者:可在Tensor/Tile/Block和PTO虚拟指令集层次上进行三方框架对接或集成,以及工具链开发
⚡️最佳实践样例
PyPTO提供了丰富的示例代码,涵盖从基础操作到复杂模型实现的多个层级。一些最佳实践样例参考:
大模型实现样例
- DeepSeekV3.2 SFA -稀疏Flash Attention量化实现
- DeepSeekV3.2 MLA-PROLOG -MLA Indexer Prolog量化实现
- GLM V4.5 Attention -GLM注意力机制实现
- GLM V4.5 ExpertsSelector -GLM专家选择器实现
学习路径
在 examples目录下,我们规划了多个层级的样例:
- beginner/:基础操作示例,帮助初学者快速上手PyPTO编程
- intermediate/:中级示例,包括自定义操作、神经网络模块等
- advanced/:高级示例,包括复杂模式和多函数组合
在 models/目录下,我们提供了部分大模型实现样例,供快速移植和部署
这些示例可以帮助开发者学习如何编写PyPTO算子,从简单的Tensor操作到复杂的模型网络实现。
⚡️快速入门
若您希望快速体验PyPTO的使用和开发过程,请访问如下文档获取简易教程。
- 环境部署:介绍项目基础环境的搭建,包括软件包和第三方依赖的获取和安装。
- 编译安装:环境部署后,介绍如何快速获取或编译PyPTO软件包并安装。
- 样例运行:安装PyPTO软件包后,介绍如何快速实现样例运行。
📖文档资源
若您希望深入体验项目功能并修改源码,请访问如下文档获取详细教程。
🔍目录结构
关键目录如下:
├── docs/ # 文档资源
│ ├── api/ # API参考文档
│ ├── contribute/ # 贡献指南文档
│ └── tutorials/ # PyPTO编程指南
│
├── examples/ # 示例代码
│ ├── 01_beginner/ # 初级示例
│ ├── 02_intermediate/ # 中级示例
│ └── 03_advanced/ # 高级示例
│
├── models/ # 模型实现示例
│
├── python/ # Python源码
│ ├── pypto/ # Python包源码根目录
│ ├── src/ # pybind11源码根目录
│ └── tests/ # Python测试用例源码(UTest, STest)
│
├── framework/ # C++源码根目录
│ ├── include/ # C++对外头文件
│ ├── src/ # C++源码
│ │ ├── codegen/ # 代码生成模块
│ │ ├── passes/ # 编译Pass模块
│ │ └── ...
│ └── tests/ # C++测试用例源码
│
├── tools/ # 工具脚本
│
├── cmake/ # 构建所需的CMake公共配置及脚本
├── build_ci.py # CI执行构建、执行UTest、执行STest辅助脚本
├── CMakeLists.txt # 顶层CMakeLists.txt,定义所有对外公开编译开关
├── pyproject.toml # Python编译工具配置文件
├── LICENSE # 许可证文件
└── setup.py # Python编译工具脚本文件(setuptools)
📝相关信息
联系我们
- 问题反馈:通过GitCode【Issues】提交问题
- 功能建议:通过GitCode【讨论】参与交流
- 技术支持:参考文档或提交Issue
注意:本文档会持续更新,请关注最新版本。
Metadata
Release files for pypto 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pypto-0.2.0-cp312-cp312-manylinux2014_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ x86-64 | Details |
| pypto-0.2.0-cp312-cp312-manylinux2014_aarch64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ ARM64 | Details |
| pypto-0.2.0-cp311-cp311-manylinux2014_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.17+ x86-64 | Details |
| pypto-0.2.0-cp311-cp311-manylinux2014_aarch64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.17+ ARM64 | Details |
| pypto-0.2.0-cp310-cp310-manylinux2014_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.17+ x86-64 | Details |
| pypto-0.2.0-cp310-cp310-manylinux2014_aarch64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.17+ ARM64 | Details |
| pypto-0.2.0-cp39-cp39-manylinux2014_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.17+ x86-64 | Details |
| pypto-0.2.0-cp39-cp39-manylinux2014_aarch64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.17+ ARM64 | Details |
Total release size: 68.6 MB
Release files / pypto-0.2.0-cp312-cp312-manylinux2014_x86_64.whl
| Download URL | pypto-0.2.0-cp312-cp312-manylinux2014_x86_64.whl |
|---|---|
| Size | 8.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
2a44eaf2a88c7acd3c82d52cd605be15d2761b0379acf1b0624602b783e173d1
|
|
BLAKE2b-256 checksum How to use checksums |
cddf57eac6aba69aa52b7bcc4481a447f812b8a22119bf91ef5ee2c320ebd79f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / pypto-0.2.0-cp312-cp312-manylinux2014_aarch64.whl
| Download URL | pypto-0.2.0-cp312-cp312-manylinux2014_aarch64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
c90e4dd22f0640c31a76d45eb182b3be8741b01c31fcab4745cc55528252a11e
|
|
BLAKE2b-256 checksum How to use checksums |
353429a2225b2337e9894d4be40163a23dcf576b24b4488b7b2863f75bf94971
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / pypto-0.2.0-cp311-cp311-manylinux2014_x86_64.whl
| Download URL | pypto-0.2.0-cp311-cp311-manylinux2014_x86_64.whl |
|---|---|
| Size | 8.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c4fd72cfcbe9c332cfa878f49ac7a90b00bb0b8396b9557b55cc8c58972a513e
|
|
BLAKE2b-256 checksum How to use checksums |
ce1b9ae73a4350c34839d243488e0949c1fba7f7b9a67b37f8f30387c9cf0ef5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / pypto-0.2.0-cp311-cp311-manylinux2014_aarch64.whl
| Download URL | pypto-0.2.0-cp311-cp311-manylinux2014_aarch64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
e75e51f3ae8caf4764c1abb1a5e6faae58c43fedf6a45c60140029197b8b51cb
|
|
BLAKE2b-256 checksum How to use checksums |
677a105678391e37312e996e77920499885a78733878d229941a1fd185ff0196
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / pypto-0.2.0-cp310-cp310-manylinux2014_x86_64.whl
| Download URL | pypto-0.2.0-cp310-cp310-manylinux2014_x86_64.whl |
|---|---|
| Size | 8.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
9b6f5659542b8fd1f5df2902a78d5d8d795763fbcc95cccf3c9d2dec1d854067
|
|
BLAKE2b-256 checksum How to use checksums |
699179985ef5c6dad36bcea90aa7a8b7459948884f515d6ca2864536073340f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / pypto-0.2.0-cp310-cp310-manylinux2014_aarch64.whl
| Download URL | pypto-0.2.0-cp310-cp310-manylinux2014_aarch64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
50a9f7a2fe7ff992d9e68e09d27601916b02bd903e40f48b84edd85cb510c657
|
|
BLAKE2b-256 checksum How to use checksums |
2b9b74c68bcd48be21ab2c8f5294fe5d918aa5d75c2efbe5322682f6f1ce3519
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / pypto-0.2.0-cp39-cp39-manylinux2014_x86_64.whl
| Download URL | pypto-0.2.0-cp39-cp39-manylinux2014_x86_64.whl |
|---|---|
| Size | 8.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
174c96966cdbcd4d59f2725d83b75a98e736231f339fab4ac8edb901df80f66b
|
|
BLAKE2b-256 checksum How to use checksums |
9ca2dd1940762d1d17616a57d75408ff402731b0ac7dd2ad3c904b040b50f682
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / pypto-0.2.0-cp39-cp39-manylinux2014_aarch64.whl
| Download URL | pypto-0.2.0-cp39-cp39-manylinux2014_aarch64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
2849c9a973a6f8cd16d0dc1c19e812839aa8f632dcd72d0de17b0d43eb2923ee
|
|
BLAKE2b-256 checksum How to use checksums |
b3cdc65d0c4c486df20ed31b43b397d5b918e52a9906ccdcaf0aadc32e6921fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|