[译] 请查收这份资料包,两周学会 LLM

169 阅读9分钟

一份详尽的每日学习 LLM 路线图,带你从入门到进阶,另外附赠学习小妙招。

本文译自《How I Studied LLMs in Two Weeks: A Comprehensive Roadmap》,原文作者:Hesam Sheikh

了解 LLM 的底层原理,正在成为机器学习领域的必备技能。无论给自己的应用程序选择合适的模型、检索领域通用知识,还是讨论 LLM 在理解、创造和显示 AGI 等方面的潜力,第一步都是了解 LLM 是什么

在本文中,我将分享我的学习经验,以及我所发现的最有助于在 14 天内入门 LLM 的学习资源,并教会你用较短时间也取得这样的进展。这份路线图可以帮你学到几乎所有的要点。

踏上学习 LLM 之旅的契机

我很痴迷于更深入地研究各种概念,即使是那些我已经知道的概念。我已经能够读懂 LLM 相关的专业资料,已经能够开发 Agent 或微调模型。但这种程度还远远不能满足我。

我想了解大型语言模型的数学原理,对它的运作有一个直观的理解,并弄明白它的行为模式背后的原因。

我对这个领域已经有了一定的熟悉程度,所以我确切地知道我的知识差距在哪里。实话说,我在机器学习领域已有的背景知识帮了我大忙,让我能在两周内掌握 LLM 知识,否则我花的时间可能会超过一个月。

我的学习资料

我启动这个学习之旅,不仅是为了熟悉 LLM,还有我感兴趣的许多其他课题(如量子机器学习、JAX 框架等)。所以为了清晰地记录整个过程,我创建了 ml-retreat 这个 GitHub 仓库。 这么做是为了让我们从惯性工作中抽离出来,审视自认为已知的知识并查缺补漏。

image.png

这个仓库收到的反响远超我的预期。在撰写本文时,它已经收到了 330 颗 ⭐ 星,并且还在持续增加。原来我的这份涵盖了所有最优学习资源的完整路线图,正是许多人求而未得的。

所有这些我用到的资料,目前都是免费的,你不需要花一分钱。

我学习 LLM 主要分三步走:

1. 从零搭建一个 LLM

这部分涉及到语言模型的基础知识 —— Token 和位置嵌入、自注意机制、Transformers 架构、始祖级论文《Attention is All You Need》和微调的基础知识等等。虽然每个主题都有了大量资料可以用,但其中一份重要资料就是 Sebastian Raschka 的「从零搭建一个 LLM」(可以在线免费阅读)。这本书把每个知识点都娓娓道来,尽可能做到容易消化吸收。

image.png

从我的经验来看,这个阶段的挑战是「自注意机制」—— 难以学懂的并非它是什么,而是它的原理。自注意机制如何映射 token 之间相互关联的上下文? Query、Key 和 Value 各代表什么以及为什么它们至关重要?我建议在这部分上要尽可能多地花时间,因为它本质上是 LLM 功能的核心。

003.jpeg

2. LLM 幻觉

在第二部分,我想了解什么是 LLM 幻觉,以及为什么 LLM 会产生幻觉。这更多是我个人想解开的疑惑,但这也使我能够多角度地理解 LLM。

我还学到了「位置偏差(Positional Bias)」,这让 LLM 更偏好位置临近的 token,而把远距离的 token 遗忘掉。我学到了「暴露偏差(Exposure Bias)」,意思是在推理过程中,预测出一个错误的 token 可能会带偏下一个 token 的生成,就像滚雪球一样。我还学到了数据、训练和推理这每一个环节都是如何导致幻觉的。

image.png

对于研究人员和使用 LLM 开发应用的人来说,LLM 幻觉都是一个非常令人头疼的问题。 我强烈建议你花时间去研究一下 LLM 幻觉的成因以及缓解幻觉的方法。

3. LLM 的边界:注意力之外

在最后两个阶段里,你会学到 LLM 的工作原理。虽然有一些技术不是那么基础,但现在已经是构建 LLM 的主流操作了。这里有:

  • 暂停 token:让 LLM 有更多时间去“思考”。
  • Infini-attention:利用历史 token 的记忆,使得 LLM 拥有非常大的上下文窗口(如 Gemini 的 1M 上下文窗口)。
  • RoPE(旋转位置嵌入,Rotary Positional Embedding):一种相对位置嵌入方法,它让 LLM 能关注到序列中较远的 token,Llama 等其他许多大模型都在使用。
  • KV 缓存:复用之前已经生成的 token,省略重复计算,从而加快生成速度。
  • MoE(混合专家模型,Mixture of Experts):把几个较小的 LLM 组合起来,而不是直接用一个大号的 LLM。这种技术在 Mistral 的模型中非常常见。他们的 8 个 7B 模型在某些任务上的性能甚至可以超过 Llama 2 70B,真的令人印象深刻!

image.png

为了巩固这些知识点,我研究了 Meta 的 Llama 模型的架构和源码,这其中包含了我提到的许多知识点。再次友情提示,这些在我的仓库里都有。

我的学习资源

我并不是只凭一份资料就学到所有这些的。

对于 LLM 的基础知识的学习来自「从零搭建一个 LLM」。

此外我还阅读了许多论文。阅读论文似乎很困难,但它们含金量非常高。尤其是那些开创技术先河的论文(如始祖级别的 Transformers 论文),以及那些融汇了诸多论文并直接总结出精华概要的调查论文。

image.png

↑ Andrej Karpathy 的视频合集

YouTube 视频也特别有用。我将 YouTube 视频视为我研究许多领域的第一步,让自己形成一个初步的印象和概念。我强烈建议观看 Andrej Karpathy 的视频合集,其中包含了 LLM 知识的绝大部分视频。没有什么方法能比让一个天才带你从入门到精通 LLM 更棒了!

学前班内容

学习 LLM 并不复杂,但对初学者来说也没有那么容易。对机器学习及相关学科有一个基础的理解,会让学习过程更加丝滑。

数学

  • 线性代数:向量、矩阵、矩阵乘法等
  • 概率和统计:概率、随机变量分布、期望和方差、最大似然估计(MLE)等基础知识
  • 微积分:微分和积分 (特别是反向传播)、偏导数(用于梯度优化)
  • 最优解:梯度下降,随机梯度下降(SGD)、高级优化器(如 ADAM)

编程和框架

  • Python:熟悉 Numpy 和 Pandas 等库
  • 深度学习框架:TensorFlow 或 PyTorch,熟悉模型训练、调试和评估

深度学习基础

  • 了解感知器、激活函数和层概念。 反向传播和梯度下降。 损失函数(交叉熵,MSE)
  • 卷积神经网络 (CNN):理解模型中每一层是如何运行的(可选但有用)

当然,某些概念你可能还很陌生。但并不是说必须先弄懂全部背景知识再开始学习 LLM。如果有时候学起来很痛苦,记住,这是每个人的必经阶段,而你可以之后再回头来深入学习它们。

附赠小技巧

以下是我一路上积累的一些经验,也许能帮到你:

享受过程

我确实提到了,我在两周内学会了这些知识。它们并没有超级复杂,我说的两周,是为了说明这些并不难学。我建议你不要给这个学习过程设一个严格的期限。当然了,当我开始学的时候,我并没有特意要在 14 天内就学完。但我确实两周就做到了。这个学习过程也可能很容易就持续 1 个月,但只要我享受到在知识海洋里进一寸有进一寸的愉悦,我就没在怕的。

别按图索骥

听起来可能很自相矛盾,但我的学习路径可能仅适合我自己。不要完全照搬我的路线图。虽然它对我十分有效,但并不保证对你有相同效果。

学习是一种非常因人而异的体验。你所学到的,是你已知的知识和你想知道的知识的结晶。这对任何人来说都是不同的。所以请不要按照我的路线图走,而是只选择你感兴趣的部分。对于任何其他路线图也都是如此。没有一本书、一份资料或一张路线图是最好的,所以不要将自己限制在单一信源上。

别万事求全

当你打开一本书、一个 YouTube 视频或一篇论文来学习时,你并没有签下生死状必须要学完它。你完全可以空降进来、拿走你想要的知识点,然后潇洒闪人。尤其是论文这种载体,阅读起来非常耗时。所以以下是我的建议:

在阅读任何材料之前,先明确你想要解决的问题,然后专心寻找答案。这可以避免将时间浪费在可能很棒但没有帮助的不相关内容上。

总结

社区伙伴们对我的仓库和我分享的学习路径给予了热烈支持,这让我惊喜万分。我将继续学习更多的领域知识,如 Omni 模型、ViT、GNN、量子机器学习等等,还有更多列在我的清单上。所以请保持关注我的 X 帖子,我会在那里分享我的笔记摘要。

另外,我目前分享的学习资源都放在这个 GitHub 仓库 ml-retreat 里了。

感谢你读完本文。如果你对进一步阅读感兴趣,可以试试下面这些: