专栏名称: GiantPandaCV
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
今天看啥  ›  专栏  ›  GiantPandaCV

GTX 4090 的 cuda graph 诡异

GiantPandaCV  · 公众号  · 3D  · 2024-12-12 17:53
    

主要观点总结

本文主要探讨了模型推理时在GTX 4090上是否应开启CUDA Graph的问题。通过一系列实验观察,发现在不同模型和配置下,CUDA Graph对性能的影响不尽相同。文章总结了在哪种情况下应开启CUDA Graph,以及背后的可能原因。

关键观点总结

关键观点1: GTX 4090上的模型推理性能与CUDA Graph的开启与否有关。

作者在GTX 4090上使用了VLLM、HuggingFace和SGLang等推理框架,并测试了不同模型在不同配置下的性能。发现对于某些模型和配置,开启CUDA Graph对性能无影响,而对于其他模型和配置,开启CUDA Graph能显著提高性能。

关键观点2: 特定情况下需要开启CUDA Graph。

作者在实验中观察到,在GTX 4090上,对于某些特定的模型配置(如TP4或TP8),需要开启CUDA Graph来保持高性能。而对于其他配置(如TP1/TP2),开启CUDA Graph对性能没有明显影响。

关键观点3: 实验结果可能与底层kernel launch的实现有关。

作者猜测开启与否的背后原因可能与底层kernel launch的实现有关。他提到在不同配置下,开启CUDA Graph可能会影响kernel launch的时间,从而影响推理性能。


文章预览

0x0. 前言 今天聊一个最近有趣的发现,那就是模型推理时是否应该在 GTX 4090 上开启 cuda graph ?在 GTX 4090 上用推理框架如VLLM/SGLang等,什么情况下才应该开启 CUDA Graph?目前只能说一下我的观察过程和结论,背后可能的原因也请大佬不吝赐教。 0x1. 问题发生的背景 某天,我想看一下在 GTX 4090 单卡情况下使用VLLM和Qwen2-7B时离线推理一个 prompt 的时候相比于 HuggingFace 原始的推理有多大的性能提升。 这里主要关注decoding过程中每个iter的速度,因为prefill只有一次,且 VLLM/SGLang 都不会通过 cuda-graph 来加速prefill过程,并且decoding会触发频繁的 cuda kernel launch。 然后,我写了下面2个脚本,分别用于测试VLLM和HuggingFace Qwen2-7B的推理性能,我使用nsight system来profile,脚本开头是profile的指令。 vllm 推理脚本 # /opt/nvidia/nsight-systems/2024.5.1/bin/nsys profile --trace-fork-before-exec ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览