作者:互联网 时间: 2026-10-05 11:30:02
实际看llm-from-scratch,先要确认它的用途:从基本原理构建现代多模式 LLM 及其整个生态系统:数学、张量、autograd、分词器、Transformer、手写 C/CUDA 内核、分布式训练、RLHF、推理引擎等相关能力。部署与运行环境里,权限、依赖和环境差异会放大维护成本。我会在非生产环境复现一次安装与运行,检查依赖锁定、权限边界、日志、回滚和资源消耗。它适合愿意维护环境并重视故障恢复的工程团队;采用前仍要看维护状态和试跑结果。

LLM 从头开始
总结。 现代语言模型及其周围的一切,都是根据第一原则手工构建的:没有 NumPy,没有 PyTorch,根本没有库。该旅程从基本算术开始,以读取和生成文本和图像的模型结束,该模型在手写的 CUDA 内核上进行训练,并通过终端聊天和与代理、工具和工件的网络聊天提供服务。每一步都是公开地、逐个模块地学习、构建和记录的。
内容
目标
获取从头开始编写、训练和服务现代语言模型所需的每一项技术知识,以便代码库可以在给定相同量的训练数据和计算的情况下遵循已发布的前沿模型配方。这项工作按顺序遵循两个学习计划:从零开始的 先决条件计划,以及从最基本的组件到最少组件构建完整堆栈的 LLM 计划。三个诚实的警告构成了这个目标:
特点
完成的系统的作用是,LLM 计划模块中内置的每个功能都在括号中给出:
建筑
软件堆栈,从底层向上;每层仅使用其下面的层:
| 图层 | 组件 | 模块 |
|---|---|---|
| 数值核心 | 数学库、伪随机数、张量、自动微分、模块、优化器 | L01至L05 |
| 发动机 | CPU、CUDA 内核上的 C 引擎、GPU 训练后端、图形编译器 | L16至L22、L31、L34 |
| 数据 | Unicode 和正则表达式、分词器、压缩和数据格式、TLS 和 HTTPS、爬行、过滤、图像 | L09至L12、L39至L42、L63 |
| 型号 | Transformer 及其变体、专家混合、状态空间模型、视觉编码器、扩散模型 | L13至L15、L30至L32、L64至L66 |
| 培训 | 预训练、分布式训练、评估、训练后 | L23至L25、L35至L38、L52至L60 |
| 推理 | 推理引擎、量化、开放权重加载、结构化生成 | L26至L29 |
| 产品展示 | API 服务器、会话、终端和网络聊天、工件、工具、代理、技能、插件、工作量级别 | L43至L51、L61、L62、L67 |
每个算法组件都存在两次:一个纯 Python 参考,首先编写以理解它,以及一个 C 或 CUDA 版本以提高速度,始终根据参考进行验证。
从头开始的正策
规则:平台可以使用;堆栈的每个算法都是手工编写的。模块 L00 中编写的脚本会根据允许列表检查每个导入。
允许
__expf,PTX),操作系统(系统调用,来自os.urandom的熵),编译器和驱动程序。os、sys、io、pathlib、shutil、tempfile、subprocess、 signal)、二进制数据(struct、ctypes、mmap)、网络和并发(socket、select、selectors、 asyncio、threading、multiprocessing)、端子(termios、tty)、工装(argparse、logging、 unittest、time)、语言助手(dataclasses、typing、enum、functools、itertools)。malloc、pthread、mmap、套接字)。nvcc、NVRTC、运行时和驱动程序 APIs、仅包装硬件类型和指令的标头(cuda_fp16.h、cuda_bf16.h、mma.h、 cooperative_groups、cuda_pipeline)、分析器(Nsight、NVTX)。手工重写,从未导入
math、random、statistics、re、json、heapq、bisect、 hashlib、hmac、secrets、base64、ssl、urllib、http、zlib、 gzip、zipfile、sqlite3、unicodedata。libm(expf、logf、...)、BLAS、LAPACK、OpenMP 运行时、任何第三方库的软件函数。math.exp 等标准函数在测试中仍然可用,作为手写副本的参考。
要求和工具
nvcc,安装在必备模块 SY03 中)。/professor 会话的 Claude Code。开始使用
git clone [email protected]:Louis-Cagnion/llm-from-scratch.git。/professor:Claude 读取 CLAUDE.md 和进度文件,然后提供下一个模块或其直接评估。项目如何运行
/professor模式完成:解释、问题和渐进式提示,从来没有现成的解决方案。学习课程以法语进行;该存储库中的每个文档都是英文的。评价
/professor 模式创建的,从未提前编写,并对照练习日志进行检查。进度跟踪、日志和帖子
progress/modules.md:经过验证的模块及其日期。progress/exercises/<module>.md:模块的每次学习和评估练习(日期、种类、能力、结构、背景和价值观),因此不会重复使用。logbook/YYYY-MM-DD.md:每个工作日一个文件,每个会话一个部分,针对组合:做了什么、如何做、阻止了什么、决定了什么、衡量了什么、学到了什么。每个条目均由 Claude 在会议中起草,然后由作者更正和验证。posts/:LinkedIn 后草稿,每个里程碑一个(验证模块块、训练第一个模型、测量结果),从日志中编写。状态
两个计划均已设计(49 个必备模块,70 个 LLM 模块)。每个必备模块都有其详细的文件;接下来是 LLM 计划的模块文件。学习从先决条件的第一阶段开始。
法律框架
模块 L68 详细介绍了所有这些内容。
存储库布局
| 路径 | 内容 |
|---|---|
prerequisites/ |
先决条件计划及其模块文件 |
llm/ |
LLM 计划及其模块文件 |
progress/ |
经过验证的模块和练习日志 |
logbook/ |
组合的每日日志 |
posts/ |
LinkedIn 后草稿 |
src/, tests/, tools/, docs/ |
LLM 计划的代码、其测试、帮助脚本和技术文档(在模块 L00 中创建) |
CLAUDE.md |
克劳德代码课程说明 |
数据集和模型权重存储在存储库外部。
本项目中使用AI
Claude Code (Anthropic) 与作者一起设计了两个学习计划,并由独立的 Claude 代理人审查它们是否缺少主题和顺序错误;以/professor模式担任老师(讲解、提示、现场评价);并起草日志条目和帖子草稿,并由作者更正和验证。模型及其工具的所有代码均由作者编写。