llm.c

简单纯粹的C/CUDA实现LLMs

2024-04-18

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集成以提升性能(默认关闭以缩短编译时间)

快速开始:

  1. 复现GPT-2(124M):详细步骤见Discussion #481
  2. CPU/GPU训练:包含CPU(fp32)和GPU(CUDA)训练的简易参考实现
  3. 入门套件:提供download_starter_pack.sh脚本快速下载预训练权重和分词数据集
  4. 单元测试:支持与PyTorch实现的结果比对

适用场景:

  • 教学实践:学习如何用C/CUDA从零实现LLM
  • 科研复现:以最小开销复现GPT-2/GPT-3训练流程
  • 性能优化:对比手写内核与cuBLAS等库的实现效果

社区协作:

欢迎贡献其他语言移植版本(C++/Rust/Java等),可通过GitHub Issues/PR或Discord频道交流(Zero to Hero的#llmc或GPU MODE的#llmdotc

开源协议:

MIT

Artificial Intelligence Machine Learning CUDA C Programming GPT