Buddy Compiler 选择使用 TorchDynamo 作为 Trace 工具对接 AI 模型,并使用 Aten IR 作为对接层级,通过 MLIR Python Bindings 实现 Dynamo Compiler 生成 TOSA/Linalg Ops,从而实现了从 PyTorch 到 MLIR 的转换。
Buddy Compiler 是一个结合了 MLIR 和 PyTorch 的编译生态的工具,它实现了 LLaMA 的端到端推理通路。通过 Buddy Compiler,我们可以将 AI 模型从 PyTorch 转换为 MLIR,并进行优化和下降,最终生成可执行文件。
Buddy Compiler 的设计原则是技术路线标准化、上手门槛低和优化上限高。为了实现这一目标,Buddy Compiler 选择使用 TorchDynamo 作为 Trace 工具对接 AI 模型,并使用 Aten IR 作为对接层级。通过 MLIR Python Bindings 实现的 Dynamo Compiler 可以将 PyTorch 的 Aten IR 转换为 MLIR 的 TOSA/Linalg Ops。
Buddy Compiler 的编译通路可以面向通用硬件进行优化。它使用了 MLIR Core Dialect 进行实现,从而实现了最大化的复用,并且与所有 LLVM/MLIR 的工具兼容。在优化方面,Buddy Compiler 采用了针对循环的并行计算优化和针对矩阵乘法的向量化优化。
它还可以生成面向特定加速器的代码,例如 Gemmini 加速器。目前,Buddy Compiler 已经在 X86AVX512平台上进行了测试,同时还在进行 Arm Neon 和 RISC-V Vector Extesion 的广泛测试。未来,Buddy Compiler 还计划支持 GPU 的优化,并增加前端的覆盖程度,以及将多模态大模型编译到多种硬件平台上。
总的来说,Buddy Compiler 通过结合 MLIR 和 PyTorch 的编译生态,实现了 LLaMA 的端到端推理通路。它的设计原则是标准化技术路线、降低上手门槛和提高优化上限。通过 Buddy Compiler,我们可以将 AI 模型从 PyTorch 转换为 MLIR,并进行优化和下降。
Buddy Compiler 的编译通路可以面向通用硬件进行优化,并已在 X86AVX512平台上进行了测试。未来,Buddy Compiler 还计划支持更多的硬件平台,并增加前端的覆盖程度。通过 Buddy Compiler,我们可以更好地利用软硬件协同设计,实现高效的大模型推理。