斯坦福CS336课程:从零打造你的大语言模型

斯坦福公开CS336课程,手把手教你从零开始构建大语言模型!课程涵盖数据、模型、训练、优化和对齐等关键环节,实战性强,干货满满。

原文标题:新鲜出炉!斯坦福2025 CS336课程全公开:从零开始搓大模型

原文作者:机器之心

冷月清谈:

斯坦福大学2025年春季CS336课程“从头开始创造语言模型”已在网上全面公开课程材料。该课程旨在通过引导学生从零开始构建语言模型的全过程,从而帮助他们全面理解语言模型。课程内容涵盖预训练数据收集和清理、Transformer模型构建、模型训练以及部署前的评估等环节。课程分为基础、系统、扩展、数据、对齐和推理强化学习五个单元,包含BPE分词器、Transformer架构、Adam优化器、Flash Attention 2、分布式数据并行等多个实践性作业。此外,课程还邀请了阿里巴巴达摩院和Facebook AI的研究员进行客座讲座。学习本课程需要熟练掌握Python,并具备深度学习、系统优化、大学微积分、线性代数、基础概率与统计以及机器学习等相关知识。

怜星夜思:

1、课程提到作业4是关于数据处理,包括Common Crawl的HTML转换、过滤和去重。在真实场景中,除了这些,数据清洗还可能遇到哪些挑战?如何有效地解决这些问题?
2、课程中提到了对齐(Alignment)这个概念,包括SFT和RLHF。大家觉得对齐的目的是什么?除了提升模型在特定任务上的指标,还有没有更深层次的意义?
3、课程提到了Scaling Law,并通过IsoFLOP拟合。Scaling Law有什么意义?我们应该如何理解和利用Scaling Law来指导大模型的训练?

原文内容

机器之心报道

编辑:Panda


斯坦福大学 2025 年春季的 CS336 课程「从头开始创造语言模型(Language Models from Scratch)」相关课程和材料现已在网上全面发布! 



  • 课程视频:https://www.youtube.com/watch?v=SQ3fZ1sAqXI&list=PLoROMvodv4rOY23Y0BoGoBGgQ1zmU_MT_

  • 课程主页:https://stanford-cs336.github.io/spring2025/


这是该课程的教职工阵容:



其中,讲师 Tatsunori Hashimoto 现为斯坦福大学计算机科学系助理教授。此前,他是斯坦福大学 John C. Duchi 和 Percy Liang 的博士后,研究机器学习模型平均性能和最差性能之间的权衡。在博士后研究之前,他在麻省理工学院攻读研究生,导师是 Tommi Jaakkola 和 David Gifford。他本科在哈佛大学学习统计学和数学,导师是 Edoardo Airoldi。他的研究成果已总计获得了超 3 万引用。



另一位讲师 Percy Liang 是斯坦福大学计算机科学系副教授,同时也是基础模型研究中心(CRFM)主任,同时也有参与以人类为中心的人工智能(HAI)、人工智能实验室、自然语言处理研究组和机器学习研究组等的研究工作。他本科毕业于 MIT,之后在该校获得工程学硕士学位,导师是 Michael Collins;之后,他在伯克利获得博士学位,导师是 Michael Jordan 和 Dan Klein;后来他进入谷歌从事博士后研究。Percy Liang 是一位引用量超过 10 万的研究大牛,我们此前也曾多次报道他的研究成果。



CS336 课程简介


CS336 课程的目标是「引导学生完成开发自己的语言模型的整个过程,从而帮助他们全面理解语言模型。」该课程借鉴了操作系统课程中从零开始创建完整操作系统的教学方法,引导学生完成语言模型创建的各个环节,包括预训练的数据收集和清理、Transformer 模型的构建、模型训练以及部署前的评估。



该课程包含 5 个单元,分别是基础、系统、扩展、数据、对齐和推理强化学习。


该课程也非常注重实践操作,因此也需要相当多的学习和开发时间。Percy Liang 也在 𝕏 上简单分享了学生需要实践的内容,包括:



  • 作业 1(使基本流程正常运行):实现 BPE 分词器、Transformer 架构、Adam 优化器,并在 TinyStories 和 OpenWebText 上训练模型。只允许使用 PyTorch 原语(不能直接调用 torch. nn. Transformer 或 torch. nn. Linear)。

  • 作业 2(让 GPU 运行起来):在 Triton 中实现 Flash Attention 2、分布式数据并行 + 优化器分片。

  • 作业 3(Scaling Law):使用 IsoFLOP 拟合 Scaling Law。为了模拟训练运行的高风险,学生会获得一个训练 API [超参数→损失] 和一个固定的计算预算,并且必须选择提交哪些运行来收集数据点。在后台,训练 API 是通过在一系列预先计算的运行之间进行插值来支持的。

  • 作业 4(数据):将 Common Crawl HTML 转换为文本,过滤(质量、有害内容、PII),删除重复数据。这是一项苦差事,却没有得到足够的重视。

  • 作业 5(对齐):实现监督微调、专家迭代、GRPO 和变体,在 Qwen 2.5 Math 1.5B 上运行 RL 以提升在 MATH 上的指标。我们也曾考虑过让学生自己实现推理(inference),但决定(可能是明智的)让人们使用 vllm


更具体来说,CS336 课程的 5 个单元包含 19 门课。这里简单总结了该课程的目录,你可以在课程主页下载相应的材料:


  • 课程概述和 token 化

  • PyTorch 和资源(包括内存和计算资源)

  • 架构与超参数

  • 混合专家(MoE)

  • GPU

  • Kernel,Triton

  • 并行化

  • 并行化

  • Scaling Law

  • 推理

  • Scaling Law

  • 评估

  • 数据

  • 数据

  • 对齐 ——SFT/RLHF

  • 对齐 —— 强化学习

  • 对齐 —— 强化学习

  • 客座讲座:阿里巴巴达摩院研究员、Qwen 团队技术负责人 Junyang Lin(林俊旸)

  • 客座讲座:Facebook AI 研究科学家、Llama 3 预训练负责人 Mike Lewis


另外,在考虑学习这门课程之前,你应该先具备以下能力:


  • 熟练掌握 Python:大部分课程作业将使用 Python 完成。与大多数其他 AI 课程不同,本课程只会给学生提供极少的脚手架。你编写的代码量将至少比其他课程多一个数量级。因此,熟练掌握 Python 和软件工程至关重要。

  • 有深度学习和系统优化经验:本课程的很大一部分内容是关于如何使神经语言模型在多台机器的 GPU 上快速高效地运行。我们希望学生能够熟练掌握 PyTorch,并了解内存层次结构等基本系统概念。

  • 大学微积分、线性代数(例如 MATH 51、CME 100):你应该能够轻松理解矩阵 / 向量符号和运算。

  • 基础概率与统计(例如 CS 109 或同等课程):你应该了解概率、高斯分布、均值、标准差等基础知识。

  • 器学(例如 CS221、CS229、CS230、CS124、CS224N):你应该熟悉机器学习和深度学习的基础知识。


顺带一提,CS336 课程还为完成课程的学生赠送了纪念 T 恤,有如下 4 种图案。你觉得如何呢?



© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:liyazhou@jiqizhixin.com

数据清洗这块,根据我的经验,最tricky的是“bad words”的过滤。你怎么定义哪些词是“bad words”?不同culture,不同背景的人理解都不一样。而且,就算定义好了,怎么保证过滤的全面性和准确性?用正则表达式?太死板了。用模型?容易误伤。感觉永远没法做到完美,只能不断迭代优化。更别提有些“bad words”还会不断进化,出现各种变体和隐语,简直防不胜防。

楼上说的很有道理,对齐确实关乎伦理和价值观。但从技术角度看,对齐也可以理解为一种特殊的泛化。我们希望模型不仅能在训练数据上表现良好,还能在面对未知的、复杂的情况时,做出符合人类期望的反应。这需要模型具备一定的推理能力、常识知识和安全意识。SFT和RLHF只是手段,最终目标是打造一个更加智能、可靠、值得信赖的AI系统。

对齐(Alignment)这个概念让我想起了之前OpenAI搞得那个红队测试。说白了,就是想方设法去“攻破”模型,看看它在什么情况下会出错,会产生有害的输出。这种测试很重要,可以帮助我们发现模型存在的潜在风险,并及时进行修复。所以,对齐不仅仅是让模型听话,还要让它有足够的“免疫力”,能够抵御各种恶意攻击和诱导。

我认为对齐不仅仅是为了提升指标,更重要的是让模型更好地服务于人类社会。简单来说,就是让模型说人话,做好事,别乱来。SFT和RLHF都是为了实现这个目标,前者让模型模仿人类的语言习惯和知识,后者让模型学习人类的价值观和偏好。更深层次的意义在于,我们需要确保AI的发展方向与人类的利益保持一致,避免出现AI失控或者被滥用的情况。这关系到全人类的未来啊!

这个问题问得好!数据清洗的坑可太多了。除了提到的 HTML 转换、过滤和去重,实际中还会遇到各种编码问题(UTF-8、GBK等等),特殊字符干扰,内容格式不一致(日期、货币单位等),以及更头疼的语义噪声(比如各种营销文案、无意义的占位符等等)。解决这些问题,一方面要靠强大的正则表达式和文本处理工具,另一方面需要结合领域知识,针对特定问题定制清洗规则。更进一步,可以考虑引入机器学习模型,自动识别和清理低质量或有害数据。感觉是个长期斗争的过程啊!

Scaling Law 的意义在于它提供了一种理论框架,帮助我们理解模型规模、数据量和计算资源之间的关系。通过 Scaling Law,我们可以预测在给定计算预算下,模型规模和数据量如何分配才能获得最佳性能。这对于指导大模型的训练至关重要,可以避免盲目地增加模型规模或者数据量,从而节省大量的时间和资源。当然Scaling Law也不是万能的,它只是一种近似规律,实际训练中还需要考虑各种因素。

我理解Scaling Law就像炼丹术里的配方。你知道放多少药材,用多大的火候,才能炼出最好的丹药。但是,Scaling Law只是告诉你一个大致的方向,具体的配方还需要根据实际情况进行调整。比如,模型的架构、数据的质量、训练的方法等等,都会影响最终的效果。所以,Scaling Law可以作为参考,但不能完全依赖。

Scaling Law 让我想到一个问题:我们是不是陷入了一种“唯规模论”的陷阱?好像只要模型够大,数据够多,就能解决一切问题。但实际上,模型的智能不仅仅取决于规模,还取决于架构的创新、算法的优化、知识的融合等等。也许未来会出现一种新的范式,不需要那么大的模型和数据,也能达到甚至超越现在的效果。毕竟,人脑的规模并不大,但却拥有强大的智能。

同意楼上的观点,数据清洗确实是个脏活累活,但又是模型效果的基石。我补充一点,数据来源的可靠性也很重要。Common Crawl 这种公开数据还好,如果数据来自不可靠的爬虫或者其他渠道,可能引入版权问题、法律风险,甚至是恶意数据攻击。因此,在数据清洗之前,一定要做好数据来源的评估和审计。另外,对于涉及用户隐私的数据,要严格遵守相关法律法规,进行脱敏处理。