我经常收到读者的提问,关于如何阅读我的书(或多本书),以及如何从中获取最大收益,这些书是关于从头开始构建 LLM 的。我的建议通常基于我自己阅读技术书籍的方式。这并非一种放之四海而皆准的方法,但我认为分享出来可能会很有用。
-
最好是离线阅读章节,远离电脑。 无论是经典的纸质书形式,还是至少在没有互联网的数字设备上阅读。这真的有助于提高专注时间,最大限度地减少阅读时的干扰。高亮或批注令人困惑或有趣的内容是很好的,但在这一阶段我不会去查找任何东西。在这个阶段我也不会运行代码。至少现在还不会。
-
在第二次通读时,输入并运行章节中的代码。 复制粘贴代码很诱人,因为重新输入工作量很大,但这通常能帮助我对代码思考得更多(而不仅仅是扫一眼)。如果我得到的结果与书中的不同,我会查看本书的 GitHub 仓库并尝试那里的代码。如果结果仍然不同,我会尝试查看是否是由于不同的包版本、随机种子、CPU/CUDA 等原因造成的。如果我仍然找不出原因,询问作者也不是一个坏主意(通过书籍论坛、公共 GitHub 仓库的问题或讨论,以及作为最后的手段,电子邮件)。
-
在第二次通读和重新输入代码后,通常是尝试练习题以巩固理解的好时机。 检查我是否真正理解了内容,并且能够独立使用它进行工作。
-
回顾高亮和批注部分。 如果与某个给定项目相关,我会在我的笔记文档中收藏重要的学习或要点。通常,我还会查找额外的参考文献,以便阅读更多关于感兴趣的主题。此外,如果我在之前的通读和练习后仍有任何感觉未得到解答的问题,我会在网上搜索以了解更多信息。
-
前面的步骤都是关于吸收知识。 但最终,我总是希望以某种方式使用这些知识。因此,我会思考哪些项目可以从我所学到的知识中受益,并将其整合到项目中。这可能涉及使用章节中的主要概念,但有时也会涉及我在学习过程中学到的小知识点,例如,即使是像在我的项目中显式调用 torch.mps.manual_seed(seed)torch.mps.manual\_seed(seed)torch.mps.manual_seed(seed) 而不是仅仅调用 torch.manual_seed(seed)torch.manual\_seed(seed)torch.manual_seed(seed) 是否真的有区别这样微不足道的事情。
当然,以上建议都不是一成不变的。如果某个主题总体上非常熟悉或容易,而我阅读这本书的主要目的是为了获取后续章节中的一些信息,那么跳读(skim)一个章节是可以接受的(以免浪费我的时间)。
无论如何,我希望这能有所帮助。祝阅读和学习愉快!
2419

被折叠的 条评论
为什么被折叠?



