1.tvm的主线感觉更新太慢,文档太落后,在自动驾驶领域不支持Blackwell平台,跨平台其实吹牛的更多。我觉得自动驾驶用不起来。
2.性能最快的还是tensorrt/tensorrt_llm这条路,纯cuda路线面临大量cuda算子开发,比如vllm llama.cpp
3.nvidia平台,简单的推理算子如果没有直接cuda写就行,如果对于比较新还复杂的算子,得用cutlass来写呢。如果要快速验证,用triton来快速写新算子实现,然后导出为cubin文件,然后plugin加载这个triton导出算子也是没有问题的。目前triton最新版本不支持thor,感觉明年能支持。"Triton for Prototyping, CUTLASS for Production"
3.tvm的relay/relax的定位类似triton。但是支持力度天壤之别。Triton 是“写算子的 DSL/工具链。Relax 是“图级别 IR。如果relax只写算子那么两个功能类似。
4.感觉基于mlir的路线已经打败tvm了。pytorch->torch-mlir->各种mlir->llvm ir。
pytorch->triton->各种mlir->llvm ir
感觉已经完成占领了生态位。
5.triton不是和和tensorrt对标的,对标的是cublas cunlaslt。所以triton导出的ptx和cubin能被tensorrt plugin加载。
6.最新的cutlass也支持了基于mlir的python dsl。
7.tvm 目前看最有价值的是计算图自动调优的能力,等于把部分复杂和通用算子可以用tvm来作。但是tvm很难支持最新的硬件,需要使用者来适配,这个不容易。 TVM MetaSchedule 有一个问题是对新硬件支持慢,还得自己的公司投入人来开发适配,还不能合入主线,因为主线不受控制,主线api疯狂变更。所以有价值的点在于这个公司需要在非常多的平台上部署模型,然后拉出一个分支来进行自己产品的迭代,定期从主线捞想法看看是否能借鉴。
8.tvm 主线的量化支持INT8,不支持INT4.
9.在动态形状支持上,TVM和MLIR正在殊途同归。双方都认识到,将形状计算从数据计算中解耦,并将其作为图中的显式操作,是正确的技术路线。
- MLIR 在这条路上起步更早,基础更扎实,其设计从一开始就体现了这种清晰性。
- TVM 则是通过痛苦的实践(Relay)认识到了这一点,并通过Relax IR进行了彻底的革新,试图追赶并超越。