llm.c 是一个用纯C和CUDA实现的极简大型语言模型(LLM)项目,旨在通过轻量化设计实现高效运行,无需依赖PyTorch或cPython等框架的额外开销。该项目专注于预训练领域,完整复现了GPT-2和GPT-3模型架构,并包含并行的PyTorch参考实现用于对比。
核心特点:
- 纯C/CUDA实现:无需PyTorch(245MB)或cPython(107MB)等大型框架
- 性能优势:当前比PyTorch Nightly快约7%
- 教育导向:
dev/cuda
目录提供详细注释的代码和内核实现 - 多GPU支持:包含基于OpenMPI/共享文件系统/TCP socket的多节点训练脚本
- Flash Attention:可选cuDNN集成以提升性能(默认关闭以缩短编译时间)
快速开始:
- 复现GPT-2(124M):详细步骤见Discussion #481
- CPU/GPU训练:包含CPU(fp32)和GPU(CUDA)训练的简易参考实现
- 入门套件:提供
download_starter_pack.sh
脚本快速下载预训练权重和分词数据集 - 单元测试:支持与PyTorch实现的结果比对
适用场景:
- 教学实践:学习如何用C/CUDA从零实现LLM
- 科研复现:以最小开销复现GPT-2/GPT-3训练流程
- 性能优化:对比手写内核与cuBLAS等库的实现效果
社区协作:
欢迎贡献其他语言移植版本(C++/Rust/Java等),可通过GitHub Issues/PR或Discord频道交流(Zero to Hero的#llmc
或GPU MODE的#llmdotc
)
开源协议:
MIT