今天凌晨,前特斯拉 Autopilot 负责人、OpenAI 科学家 Andrej Karpathy 发布了一个仅用 1000 行代码即可在 CPU/fp32 上实现 GPT-2 训练的项目「llm.c」。GitHub 链接:https://github.com/karpathy/llm.c 消息一出,立即引发了机器学习社区的热烈讨论,项目的 Star 量不到七个小时就冲上了 2000。有网友表...
几天前,前特斯拉 Autopilot 负责人、OpenAI 科学家 Andrej Karpathy 发布了一个仅用 1000 行代码即可在 CPU/fp32 上实现 GPT-2 训练的项目「llm.c」。 llm.c 旨在让大模型(LM)训练变得简单 —— 使用纯 C 语言 / CUDA,不需要 245MB 的 PyTorch 或107MB 的 cPython。例如,训练 GPT-2(CPU、fp32)仅...
所有的double类型数据的长度是64位,其中一位符号位,11位指数位,剩下52个尾数位。
.bin文件包含有int32的原始数据流,这些整数代表了通过GPT-2分词器定义的Token ID。当然,也可以通过运行prepro_tinystories.py来对TinyStories数据集进行分词处理。理论上讲,现在已经能够开始训练模型了。但是,目前基于CPU和FP32的参考代码运行效率极低,无法从零开始训练这些模型。因此,我们选择先用OpenAI发布的GPT...
精度降低与新层支持:后续计划包括将精度由fp32降至fp16及更低,以减少内存需求与提高计算速度。此外,项目还将添加如RoPE(相对位置编码)等更多层,以支持更先进的LLM架构,如llama 2、mistral、gemma等 教程与视频:当项目进入更为稳定的状态时,Karpathy计划制作一系列详细视频,从零开始逐步展示如何构建该项目。此外,他...
.bin 文件是由 int32 数字组成的原始字节流,用 GPT-2 tokenizer 表示 token ID。你也可以使用 prepro_tinystories.py 对 TinyStories 数据集进行 tokenize。 原则上,按照步骤走到这里就可以训练模型了。 不过,Andrej Karpathy 表...
从这里开始还有一些扩展,比如精度从 fp32 下降到 fp16 或更低,以及一些更多的层(比如 RoFE)来支持更先进的架构。 卡帕西表示,后面还将出一个视频进行更加详细的讲解。 更多的代码在 GitHub 项目页中有更具体展示。 后面他还加了一个如何从 PyTorch 迁移到 C 的教程。
利用这段代码,你可以在PyTorch中从头开始训练Llama 2 LLM架构,然后将权重保存为原始二进制文件,并加载到一个约500行C文件(run. c)中。目前,该文件使用fp32对模型进行推理。在云Linux开发环境中,Karpathy用一个维度为288、6层、6头的模型(约1500万参数)在fp32下以约100 tok/s的速度进行推理,而这也...
这次,Andrej Karpathy 单纯通过 C/CUDA 实现大语言模型训练,且无需 245 MB PyTorch 或 107 MB cPython。例如,训练 GPT-2(CPU,fp32 单精度)需要在单个文件中使用约 1000 行简洁代码,可立即编译并运行、且与 PyTOrch 参考实现完全匹配。 从某种意义上说,Karpathy 确实在尝试重新设计 LLM 的架构。他通过 llm...
这个项目的主要目标是实现一个简单的推理引擎,因此并不打算作为一个生产级别的库。项目的灵感来源于 llama.cpp,但他希望打造一个更简洁的版本,因此选择硬编码 Llama 2 架构,坚持使用 fp32,并且只使用纯 C 语言编写一个无依赖的推理文件。 到目前为止,llama2.c 项目在 GitHub 上已经揽获 4.3K stars,还在不断...