A high-performance programming framework for tile-centric computing
Project description
PyPTO
🔥Latest News
- [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 在多个 AI 工作负载上展现出优异的性能表现. 框架通过多层级优化和硬件感知的代码生成, 能够充分利用 AI 加速器的计算资源.
(性能对比数据待补充)
⚡️快速入门
若您希望快速体验 PyPTO 的使用和开发过程, 请访问如下文档获取简易教程.
- 环境部署: 介绍项目基础环境的搭建, 包括软件包和第三方依赖的获取和安装.
- 编译安装: 环境部署后, 介绍如何快速获取或编译 PyPTO 软件包并安装.
- 样例运行: 安装 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)
📝相关信息
-
安全声明
PyPTO 项目致力于保障用户数据和应用的安全. 在使用本框架时, 请注意:
- 请从官方渠道获取 PyPTO 软件包
- 定期更新到最新版本以获取安全补丁
- 在生产环境中使用前, 请进行充分的安全测试
- 如发现安全问题, 请通过安全渠道报告
联系我们
- 问题反馈: 通过 GitHub Issues 提交问题
- 功能建议: 通过 GitHub Discussions 参与讨论
- 技术支持: 参考文档或提交 Issue
注意: 本文档会持续更新, 请关注最新版本.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pypto-0.1.0-cp312-cp312-manylinux2014_x86_64.whl.
File metadata
- Download URL: pypto-0.1.0-cp312-cp312-manylinux2014_x86_64.whl
- Upload date:
- Size: 7.1 MB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ab083295effdc10927e390faf21875a0eb3b3f585a04706fa9fb30bff51f231
|
|
| MD5 |
5ce5600621ce758d6a6ba0ad9969a495
|
|
| BLAKE2b-256 |
7190f85b68a412ad4b2983b77aae05b31fbe2187b61fb72f548e83885922c67a
|
File details
Details for the file pypto-0.1.0-cp312-cp312-manylinux2014_aarch64.whl.
File metadata
- Download URL: pypto-0.1.0-cp312-cp312-manylinux2014_aarch64.whl
- Upload date:
- Size: 7.0 MB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
764c140952d4c96a3a800d7f9a5afec336741f57828d78db9ab8bcdb199e9ba2
|
|
| MD5 |
3f34438e45da7692a75122c945755d64
|
|
| BLAKE2b-256 |
de90c425411975abf462cfd2232c2be7ea8044872840ad9629c027428ad484a3
|
File details
Details for the file pypto-0.1.0-cp311-cp311-manylinux2014_x86_64.whl.
File metadata
- Download URL: pypto-0.1.0-cp311-cp311-manylinux2014_x86_64.whl
- Upload date:
- Size: 7.1 MB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c999b5114c8be4e5ef1a0dee7a7580208db4ed3a58996110d8363d874a6919c5
|
|
| MD5 |
d58f60a45a5fae68f69bb7bb17b1f339
|
|
| BLAKE2b-256 |
ee3afc1f04d3dab5722987d151b721e3bb0f58328d4091414f31c76b3d6aa49b
|
File details
Details for the file pypto-0.1.0-cp311-cp311-manylinux2014_aarch64.whl.
File metadata
- Download URL: pypto-0.1.0-cp311-cp311-manylinux2014_aarch64.whl
- Upload date:
- Size: 7.0 MB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f466e7cbf0335d875001e9233a04b8e8fd7301846d1f1562d3f0d2195231637
|
|
| MD5 |
6b6528b39ac3c687477333d60481e557
|
|
| BLAKE2b-256 |
091bde72e400e83efefbc4fba02c8c14ad5e8aafb712afd43337fd3b09fd6b29
|
File details
Details for the file pypto-0.1.0-cp310-cp310-manylinux2014_x86_64.whl.
File metadata
- Download URL: pypto-0.1.0-cp310-cp310-manylinux2014_x86_64.whl
- Upload date:
- Size: 7.1 MB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69ff188af699210108d9a4b0e5ffdaabbe04b333104851d9415120d786da6aca
|
|
| MD5 |
a3c41627e34ea15679c27143df52c3b4
|
|
| BLAKE2b-256 |
bcf51f12ceb27b8b31b52c64beb7a1410803e0e84cf5055e9f94ad44f9abd3ff
|
File details
Details for the file pypto-0.1.0-cp310-cp310-manylinux2014_aarch64.whl.
File metadata
- Download URL: pypto-0.1.0-cp310-cp310-manylinux2014_aarch64.whl
- Upload date:
- Size: 7.0 MB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52a3bb432e1fcc675d5d115fcf01c7c7479f2e7bab65187ecab3d712d5917c58
|
|
| MD5 |
79d04b35255958a2115c58eb6c001ae5
|
|
| BLAKE2b-256 |
bcae8f28e77855592a27c1b3b0a803594f63e84f45ce3dbe5446888f22de51b7
|
File details
Details for the file pypto-0.1.0-cp39-cp39-manylinux2014_x86_64.whl.
File metadata
- Download URL: pypto-0.1.0-cp39-cp39-manylinux2014_x86_64.whl
- Upload date:
- Size: 7.1 MB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01729ce4e9f2c87ec2d9b7e2c5d0903c26908ac1211db3d26bb2d180b4084457
|
|
| MD5 |
2b90a3edd017913cc4af0ed16422d852
|
|
| BLAKE2b-256 |
dba5e69f79f61b282015da287e666b410b961f1b675b373f3a1bed8e37da845b
|
File details
Details for the file pypto-0.1.0-cp39-cp39-manylinux2014_aarch64.whl.
File metadata
- Download URL: pypto-0.1.0-cp39-cp39-manylinux2014_aarch64.whl
- Upload date:
- Size: 7.0 MB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02a3ce6c1a73e7eeb3ab747304c543b24f6b45f6d2da01214029cf8a5658fc51
|
|
| MD5 |
ea59b1481cf93610c058a1c90ddcbf48
|
|
| BLAKE2b-256 |
e95852e24654cc6413cfee5106c25a83984feeb01f9098cc5cccc5858e02e0da
|