Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

MiniMind 学习笔记

这本书用于系统整理我基于 MiniMind 项目以及之前零零散散的的 LLM 学习笔记。希望能把大部分LLM相关的内容都串起来,形成一个比较完整的学习地图。内容会持续更新,欢迎大家一起讨论和补充。

我自己的感觉是,LLM 的学习除了算法理论层面,更重要的是实践层面。之前我看了很多课程和文章,也推了很多公式,但是直到我自己亲自写了一遍代码,把这些算法和概念对应到具体实现上之前,始终有一种“看懂了,但没有真正理解”的感觉。很多东西单看原理会觉得明白了,但一旦落到训练流程、张量维度、数据处理和代码实现上,就会发现这中间其实还隔着很多层。

学习方法

所以我现在越来越觉得,入门 LLM 时最重要的事情之一,不是先把所有理论一次性学完,而是先建立起一个整体框架,然后尽快去做一些能在短时间内看到反馈的实践。因为如果一开始就扎进大量细节里,很容易在各种术语、公式和论文之间迷失;但如果能先把一个最小流程跑通,再回头去看很多概念,就会清楚很多。

实践推荐

这里我特别推荐 MiniMind 这个项目。它是一个非常完整的 LLM 训练框架,真正做到了让你从零到一自己训练一个模型。并且它把整个流程,以及其中大部分核心概念,都用大部分人可以真正上手实现的代码展现了出来。尤其是训练部分,我自己最大的感受就是:会写 Transformer,和真的能把一个模型训练出来,是完全不同的两个概念。

问题导向

我这部分笔记就是基于这个学习过程的整理。另一点我希望以问题导向来串联这份笔记,目标不是简单堆知识点,而是尽量把学习 LLM 时那些真正关键的问题串起来,既能构建一个整体框架的骨架,作为学习地图,又能随时把细节核心的东西插入到这棵搜索库的合适位置,比如:

  • 一个 LLM 系统整体包含哪些部分?
  • 模型的输入输出到底是什么?
  • Tokenizer、Embedding、Attention 这些模块在代码里到底长什么样?
  • 预训练、微调、对齐这些概念在训练流程里分别对应什么?

我会尽量按照“先有整体认识,再进入细节;先能动手,再补理论;用问题串起学习过程”的思路来整理这些内容。这样一来,笔记更像是一份持续生长的学习地图,而不只是零散的知识摘抄。

这部分笔记大概会分为三种类型的介绍:

  1. 理论方面:主要整理一些核心概念的理解,比如什么是预训练、什么是微调、什么是 DPO 等,以及相关的算法背景。
  2. 实践方面:主要记录代码实现的细节,比如如何准备数据、如何理解训练流程,尤其是训练部分的一些关键实现和实际操作。
  3. Tips 方面:我会把一些常用的代码写法和经验整理成 cookbook,比如 PyTorch 的常见用法、调试时容易遇到的问题等。