放弃CUDA编程! CMU和其他人使用十二件衬衫的代码

- 编辑:足球滚球app下载 -

放弃CUDA编程! CMU和其他人使用十二件衬衫的代码

在AI领域,NVIDIA开发的CUDA是推动大型语言模型(LLM)培训和理解的主要计算机。但是,CUDA驱动的LLM认可面临着高手动优化成本和高端到端延迟的缺点,以及进一步的优化或寻找更好的继任者。最近,CMU的助理教授Zhihao Jia更改了游戏玩法,并启动了一个名为“ Mirage Persistent内核(MPK)”的录音机,该记录器可以自动将LLM转换为eptimige Megakernel,从而将LLM意图降低了1.2至6.7倍。 GitHub Address: https://github.com/mirage-project/mirage/tree/mpk blog address: https://zhihaojia.medium.com/compiling-clms-to-to-megakernel-a- path-to-wateency-averference-cf7840913C17PK pushed to llm closerDelay.在单个A100-40GB GPU中,MPK每个令牌每个令牌的Qwen3-8b从14.5毫秒(VLLM/SGLANG)减少到12.5毫秒,估计基于带宽记忆,估计10毫秒的理论下限。 MPK非常易于使用。您只需要数十个Python代码线即可在高性能的巨型内核中累积LLM,即可在整个过程中无需CUDA编程即可实现快速概念。评论部分还对MPK有积极的看法,并提出了一些未来的扩展方向。有必要引入MPK减少LLM延迟的最有效方法之一是将所有计算和通信保持在单个巨型内核中,也称为连续内核。在此设计中,系统只需启动GPU核心即可按一层执行整个Modelo-from-for loeser toely-gpu通信,而没有中断。此方法为性能提供了一些主要的优势:删除内核启动开销:通过避免使用双内核呼叫,即使在多GPU环境中也可以删除内核启动开销;跨层软件管道的实现使内核可以在计算当前层的同时为下一层加载数据。 ove计算和通信的r层:因为巨型核心可以同时执行计算和GPU计算操作,从而隐藏通信延迟。尽管有这些好处,但在巨型内核中积累的LLM仍然很困难。现有的高级ML框架般的Pytorch,Triton和TVM-DID不支持Mega-Kernel本身的端到端。此外,现在LLM系统是由各种内核库构建的:用于通信,FlashInfer或Flashhattention的NCCL或NVSHMEM,以进行大量注意计算,以及用于自定义计算的CUDA或TRITON。这种碎片使得将整个侵权管道包括在一个内核中非常困难。那么,这个过程可以通过集成自动自动化吗?受这个问题的启发,来自CMU,华盛顿大学,加州大学伯克利分校,NVIDIA和TSINGUA University的团队开发了MPK-A编译器和运行时系统,它们会自动将LLM从许多GPU转换为HIGH绩效巨型核心。 MPK发布了端到端GPU融合的好处,而开发人员的手册中只需要很少的努力即可。 MGA KTHE MPK具有MPK的主要优势,是通过删除内核启动开销,并在计算,数据加载和GPU通信的整个层中叠加来实现过度的LLM遗憾。图1显示了MPK性能和现有LLM识别系统与单GPU和多GPU调整的比较(有关详细信息,请参见上文)。除了优化单个GPU外,MPK还将计算和GPU通信结合到单个巨型核心中。这种设计使MPK可以最大程度地播放计算和通信。因此,随着GPU的数量增加,改善MPK相对于当前系统的性能会增加,从而使其在多GPU扩展方案中尤其有效。 MPK如何工作MPK的工作原则G具有以下两个主要组件的kassistance:MPK编译器,将LLM的计算图转换为 - 优化任务图;第2部分:MPK运行时系统,该系统在单个巨型内核中执行任务图,以实现高吞吐量和低延迟。 Compiler-Ang proseso ng pagkalkula ng pag-convert ng LLM sa mga fine-grained graph graph Ang LLM ay karaniwang kinakatawan bilang isang pagkalkula ng graph, kung saan ang bawat node ay tumutugma sa isang operator ng computing (tulad ng pagpaparami ng matrix, mekanismo ng pansin)o isang odive ng komunikasyon ng koleksyon(tulad ng all-yreduce),在ang gilid ay kumakatawan sa依赖性ng data sa pagitan ng mga操作员。现有系统通常为每个操作员启动独立的GPU内核。但是,“单操作员单核”实现模型很难实现管道优化,因为密度是在整个内核的粗粒级别实现的,而不是t的实际级别他的数据单元。常见的例子是矩阵(MATMUL)的复制,然后是所有操作减少:在现有系统中,所有内核还原必须等待才能完成整个MATMUL内核。实际上,每个全减少数据块仅取决于MATMUL的局部输出结果。逻辑依赖关系与实际依赖关系之间的这种不匹配是计算和通信的严重限制的重叠潜力。下图2显示,MPK编译器正在将Pytorch转换为LLM的图表计算,以最大程度地提高暴露并行性。次优的解决方案显示在右侧 - 它引入了不必要的数据和国际希望的障碍,从而导致交叉-Layer -Layer管道的机会有限。为了解决此问题,MPK引入的编译器可以自动将LLM计算图转换为带有谷物的谷物谷物。该任务的图显然获得了依赖关系在子内核水平上,可以对跨层管道进行更根本的优化。具体而言,在MPK工作图(如图2所示)中:一个任务(形状 - 矩形表示),该任务表示分配给单个GPU流媒体多处理器(SM)的计算/通信单元。事件(圆形表示),该事件表示任务之间的同步点。用餐机制,每个任务都会释放出指向动机事件的边缘,该事件在完成所有相关活动后会被激活。依赖机制,每个任务都会从因事件接收边缘,表明该任务在激活事件后立即开始。活动图激活了MPK,以发现计算图无法使用的管道优化机会。例如,MPK可能会开发优化任务的图 - 每个全还原任务仅取决于生成其输入的MATMUL的相应工作,美国实现了大块的执行和计算通信的覆盖。除了开发任务优化映射外,MPK还通过Mirage内核超台化器自动为每个任务生成CUDA高性能实现,从而确保了任务在GPU流媒体多处理器(SMS)中得到很好的执行。第2部分:Runtime-dodduct一个MPK工作映射MPK包含一个内置的GPU运行系统系统,该系统允许在单个GPU Mega-Key中执行任务的完整映射。这使系统可以在认知过程中获得对任务和调度的细粒度控制,而无需其他内核启动。为了实现此机制,MPK的静态MPK分区在GPU中所有流式多处理器(SM)在两个启动 - 任期角色中:工人和调度程序。工作SMS和计划的SMS的数量是在内核启动时配置的,总数等于物理SMS的总数,这完全避免了动态上下文t帽子在上面移动。每个工作单元的工作单元都有流媒体多处理器(SM)并保持一个独家队列。它的实现将涉及以下有效而简洁的循环过程:获取任务:文本从队列执行下一个任务。执行计算:运行任务(例如矩阵繁殖/InterGPU的注意机制/运动机制)。事件触发器:完成任务后通知事件事件。循环的实现:重复上述过程。这种机制不仅确保了工作单元负载的持续全面运行,而且还实现了整个层和跨操作中异步工作的实施。调度单元调度决策由共享MPK调度单元处理,每个调度单元以一个线程捆绑包(纱)运行。因为每个流多处理器(SMS)可以容纳多个螺纹束,因此单个SM可以同时tumakbo高达4个计划单元。每个计划联合国它保持了激活事件的队列,并继续执行以下操作:事件删除:删除取决于令人满意的激活事件(即,所有预工作均已完成)。启动任务:一组取决于激活事件的任务的时间表。分布式调度机制在整个SM中实施可扩展的实施时,可以最大程度地减少上述合作。驱动事件的实施。图3显示了MPK实现时间表,其中每个矩形代表运行工作单元的任务;每个圆圈代表一个事件。完成任务后,它会增加与触发事件相对应的计数器。当反击达到预设阈值时,该事件被视为激活并添加到调度单元的队列中。然后,调度单元开始开始活动的所有任务。该设计启用软件管道,并允许计算和通信之间的重叠诸如基质复制(MATMUL)任务之类的ations可以与不同层的注意活动同行完成。当有一些数学结果可用时,可能会开始使用Alleduce。由于所有调度和任务移动都发生在主要上下文中,因此活动之间的开销非常低,通常仅1-2微秒,可以允许良好的多层,多GPU LLM LLM工作负载实现。下一步是团队对MPK制作巨型内核编译易于使用和高性能的愿景。当前,您只需要十二个-Python代码线(主要用于指定巨型内核的输入和输出)即可在巨型内核中组装LLM。在这个方向上仍然有一个宽阔的探索空间,目前积极解决的一些主要领域包括以下内容:支持现代GPU架构。下一个里程碑是扩大MPK,以支持Nvidia Blackwell等下一代体系结构。一个主要挑战是如何线程捆绑包专业化,这是一种优化新GPU的基本技术,该技术与巨型MPK内核实现模型集成在一起。处理动态工作负载。 MPK目前正在构建一个静态任务图,该图限制了处理动态工作负载(例如MOE模型)的能力。该团队开发了新的集成技术,这些技术使MPK支持巨型内核中条件的控制和实现的动态流动。高级调度和任务分配。 MPK在工作级别上打开了新的细粒度调度功能。虽然当前的实施使用简单的轮询计划来提供流媒体多处理器(SMS)之间的任务,但团队在高级调度策略中看到了诸如优先级意识或提倡吞吐量的高级调度策略的机会,这些机会可以应用于科学潜伏期Latency Lealence Levence Levence Levence Levence(SLO)Hybrid Batch批次处理。团队认为,MPK代表了LLM推理的主要变化SARKLOAD与GPU结合在一起,并渴望与社区合作,并存这一愿景以前进。该项目快速重复,感兴趣的合作伙伴很高兴加入该贡献。