本项目目的在于以最简的方式实现一个全流程的ai编译器/运行时, 这套技术有很多种方法可以实现, 在不严重影响性能的前提下, 会尽量挑选代码和逻辑最简单的方案.
- 使用python来实现, 因为python代码读写更方便. 尽量使用最新的python.
- 依赖pytorch, 使用pytorch来接入更多常见模型.
- 引入pytorch
- 接入torch compile
- 从函数地址解析函数
- 在训练时也调用自定义的compiler
- 解析出计算图
- 定义新的graph/node格式
- node定义中添加namespace信息
- 添加torch和aten的namespace, 覆盖简单模型.
- node中添加location信息
-
添加多输出的支持(输出tuple的情况不能总是转换成多个输出. 考虑输出是dict的情况) - 添加sub-graph的支持
- build函数看起来没用, 考虑移除掉, 或者替换成from_parser.
- 添加numpy的namespace, 覆盖简单模型, 用于实现运行时.
- 编译简单的四则运算
- 简单的四则运算运行时
testing:
pytest tests
generate requirements.txt:
poetry export --format requirements.txt --output requirements.txt --without-hashes