【推理优化】把模型交给编译器:TensorRT-LLM 与 CUDAGraph
为什么需要编译优化翻阅深度学习框架的发展史,你会发现一个有趣的现象:PyTorch 用起来越顺手,它在性能上欠的债就越多。torch.nn.Module把每一个算子都封装成了一次独立调用,这种设计带来了无与伦比的灵活性——你可以随时用if分支改变计算图、在任意位置插入print调试。但这份灵活性的代价,恰恰是它把所有性能优化的大门都焊死了。要理解这个论断,得先从最顶层看 PyTorch 的执行模型。当你在 GPU 上执行output = model(input)时,框架并不是把整个模型当成一个整体"交给" GPU,而是把模型翻译成一条条独立的 kernel 启动指令,依次向 GPU 下达。每个 kernel 负责一个算子(比如一次矩阵乘法、一次激活函数、一次归一化),GPU 执行完一个,CPU 再去启动下一个。如此往复,直到整个计算图跑完。这套模型的问题,就藏在它"逐算子"这三个字里。下面从三个维度拆解。kernel launch:被低估的固定开销GPU 上的一个 kernel 从 CPU 发起到 GPU 开始执行,大约需要3 到 10 微秒(取决于驱动、架构和任

相关新闻

最新新闻

日新闻

周新闻

月新闻