当前位置: 首页 > backend >正文

facebook开源Triton编写GPU内核的编程模型速读:KernelLLM

KernelLLM

一、引言

KernelLLM 是一个基于 Llama 3.1 Instruct 的大型语言模型,专为使用 Triton 编写 GPU 内核的任务而训练。其目标是使 GPU 编程更加普及和高效,满足日益增长的高性能 GPU 内核需求。

二、模型介绍

(一)模型架构

KernelLLM 是一个自回归语言模型,采用优化的变压器架构。它以 Llama 3.1-8B-Instruct 为基础,经过监督指令微调。

(二)训练数据

模型在大约 25000 个 PyTorch 模块及其等效 Triton 内核实现的配对示例上进行训练,同时还使用了通过 torch.compile() 和其他提示技术生成的合成样本。训练数据集结合了来自 TheStack 的筛选代码和合成示例。

(三)训练过程

KernelLLM 使用监督指令微调方法进行训练,训练了 10 个周期,批次大小为 32,使用标准的 SFT 食谱,超参数的选择基于训练数据保留子集上的困惑度。训练在 16 个 GPU 上进行了大约 12 小时的墙钟时间,总共 192 个 GPU 小时。

三、模型性能

(一)性能评估

KernelLLM 在 KernelBench-Triton 基准测试中的表现优于多个基线模型,包括 GPT-4o 和 DeepSeek V3。在单次推理中,8B 参数的 KernelLLM 超过了这些大型模型。在多次推理中,其性能也超过了 DeepSeek R1。

(二)基准测试

KernelLLM 在 KernelBench-Triton 基准测试中的具体性能数据如下表所示:

模型参数 (B)得分Pass@k
KernelLLM820.21
KernelLLM851.810
KernelLLM857.120
DeepSeek V3671161
GPT-4o~200151
Qwen2.532151
Llama 3.370131
Llama 3.181420
Llama 3.1861
Llama R1 Distill7011推理
DeepSeek R1671301

KernelLLM 的推理使用温度=1.0 和 top_p=0.97 进行。

四、使用方法

(一)安装

要使用 KernelLLM,需要安装以下依赖项:transformers、accelerate、torch 和 triton。

(二)基本用法

通过导入 kernelllm 模块并初始化 KernelLLM 模型,可以将 PyTorch 代码转换为优化的 Triton 代码。

(三)交互式 REPL

用户还可以使用内置的 REPL 接口,启动交互式会话,输入 PyTorch 代码并接收 Triton 优化实现。

(四)高级选项

KernelLLM 提供了自定义生成过程的多种方法,包括实时流式输出和生成原始文本。

五、局限性与未来工作

KernelLLM 存在一些局限性,如可能产生不正确的 API 引用和语法错误,在指令遵循能力方面有限。生成的代码在结构上类似于编译器生成的输出,且模型经常无法实现有意义的内核。错误分析显示,常见问题与变量命名、张量形状、类型处理和数值精度有关。

未来的工作可能包括改进模型的指令遵循能力,减少错误并提高生成代码的质量。

六、模型细节

(一)开发者

KernelLLM 的开发人员是 Meta。

(二)输入与输出

模型仅输入文本,并生成文本作为输出。

(三)架构

KernelLLM 是一个自回归语言模型,采用优化的变压器架构。

(四)训练日期

KernelLLM 于 2025 年 3 月进行训练。

(五)状态

这是一个在离线数据集上训练的静态模型。

(六)许可

许可详情请参阅 LICENSE.pdf。

(七)预期用途

KernelLLM 预期用于商业和研究目的,适用于英语、相关编程语言、Python 和 Triton。

(八)硬件与软件

训练使用了自定义训练库。训练 KernelLLM 在 H100-80GB 硬件上总共需要 250 小时的计算时间,不包括基础模型的训练。

(九)伦理考虑与局限性

KernelLLM 及其变体是一项新技术,使用时存在风险。到目前为止进行的测试仅限于英语,尚未涵盖所有场景。因此,开发人员应在部署 KernelLLM 的任何应用程序之前,针对其特定应用进行安全测试和调整。

七、核心技术创新点

在这里插入图片描述

http://www.xdnf.cn/news/8477.html

相关文章:

  • Python 中的多线程与多进程:真假并行的直观对比
  • synchronized 实现原理
  • 20250523-关于Unity中的GUID简介(未完待续)
  • Ntfs!FindFirstIndexEntry函数中ReadIndexBuffer函数的作用是新建一个Ntfs!_INDEX_LOOKUP_STACK结构
  • Kotlin-数组,集合类以及序列
  • 解决MybatisPlus使用Druid1.2.11连接池查询PG数据库报Merge sql error的一种办法
  • 豆瓣的 PyPI 源关闭后替代方案
  • 怎样判断服务器网络质量的状态?
  • 【博客系统】博客系统第四弹:令牌技术
  • 亚马逊跨境战:解码退货率管控的底层逻辑与战术拆解
  • 论文解读: 2023-Lost in the Middle: How Language Models Use Long Contexts
  • Java与Go差别在哪
  • **代换积分法**或**变量替换法**)
  • 【论文阅读】Stop Overthinking:高效大模型推理技术综述
  • 26考研|高等代数:λ-矩阵
  • 07_分类器不确定评估
  • 京东外卖分润系统部署实操!0门槛入驻+全平台接入+自定义比例...这些人,赚翻了!
  • Terraform本地windows部署
  • 安全生态与职业跃迁
  • 相机--基础
  • [Datagear] 实现按月颗粒度选择日期的方案
  • 精益数据分析(81/126):从Timehop案例看病毒性增长的黑客式策略
  • 数据的获取与读取篇---获取数据
  • 客服中心大模型应用演进路线:从传统服务到超级智能助手的转型
  • leetcode513. 找树左下角的值:层序遍历中的深度与顺序控制之道
  • Maven 项目介绍
  • 什么是HTTP
  • FFTW图像处理入门
  • 支持电子病历四级的云HIS系统,云HIS系统源码,医院管理信息系统
  • 5月23日day34打卡