<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Course | Lin Shang</title><link>https://lin-shang.github.io/tags/course/</link><atom:link href="https://lin-shang.github.io/tags/course/index.xml" rel="self" type="application/rss+xml"/><description>Course</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 14 Dec 2025 00:00:00 +0800</lastBuildDate><image><url>https://lin-shang.github.io/media/icon_hu_7fea8c3aa2e7dad1.png</url><title>Course</title><link>https://lin-shang.github.io/tags/course/</link></image><item><title>Let's learn Stanford CS336 - LLM Systems!</title><link>https://lin-shang.github.io/courses/stanford-cs-336/</link><pubDate>Sun, 14 Dec 2025 00:00:00 +0800</pubDate><guid>https://lin-shang.github.io/courses/stanford-cs-336/</guid><description>&lt;h2 id="课程简介"&gt;课程简介&lt;/h2&gt;
&lt;h3 id="前言"&gt;前言&lt;/h3&gt;
&lt;p&gt;语言模型是现代自然语言处理（NLP）应用的基石，它开创了一种新范式，即通过单一的通用系统来处理一系列下游任务。随着人工智能（AI）、机器学习（ML）和自然语言处理领域的不断发展，深入理解语言模型对于科学家和工程师而言都变得至关重要。本课程旨在让学生全面理解语言模型，引导他们完成自主开发语言模型的全过程。借鉴操作系统课程中从零构建完整操作系统的思路，我们将带领学生了解语言模型创建的各个方面，包括预训练的数据收集与清洗、Transformer模型构建、模型训练以及部署前的评估。&lt;/p&gt;
&lt;p&gt;所有在线信息：https://stanford-cs336.github.io/spring2025/
这是一门5学分的课程。&lt;mark&gt;&lt;em&gt;2024年春季课程评价中的评论：整个作业的工作量大约相当于CS 224n的所有5项作业加上期末项目的总和。而这还仅仅是第一个家庭作业。&lt;/em&gt;&lt;/mark&gt;&lt;/p&gt;
&lt;h3 id="你为什么应该选这门课"&gt;你为什么应该选这门课&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;你有强烈的欲望想了解事物的工作原理。&lt;/li&gt;
&lt;li&gt;你想锻炼自己的研究工程能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="你为什么不应该选这门课"&gt;你为什么不应该选这门课&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;你实际上想在这个季度完成研究工作。（去和你的导师谈谈。）&lt;/li&gt;
&lt;li&gt;你有兴趣了解人工智能领域最热门的新技术（例如，多模态、RAG等）。（你应该为此选一门研讨会课程。）&lt;/li&gt;
&lt;li&gt;你想在自己的应用领域取得好成果。（你应该直接提示或微调现有的模型。）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="如何在家跟进学习"&gt;如何在家跟进学习&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;所有的 lecture 材料和作业都会发布在网上，所以你可以自行跟进学习。&lt;/li&gt;
&lt;li&gt;lecture 会通过CGOE（前身为SCPD）录制，并会在YouTube上发布（会有一定延迟）。&lt;/li&gt;
&lt;li&gt;我们计划明年再次开设这门课。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="作业"&gt;作业&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;5项作业（基础、系统、缩放定律、数据、对齐）.&lt;/li&gt;
&lt;li&gt;没有框架代码，但我们会提供单元测试和适配器接口来帮助你检查正确性。&lt;/li&gt;
&lt;li&gt;先在本地实现以测试正确性，然后在集群上运行以进行基准测试（准确性和速度)。&lt;/li&gt;
&lt;li&gt;部分作业设有排行榜（在给定的训练预算下最小化困惑度）。&lt;/li&gt;
&lt;li&gt;人工智能工具（如CoPilot、Cursor）可能会影响学习效果，所以使用时请自行承担风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ## 目录 --&gt;
&lt;!-- Hugo 会自动生成侧边栏，这里也可以手写一些索引 --&gt;
&lt;h2 id="这门课程为何存在"&gt;这门课程为何存在？&lt;/h2&gt;
&lt;h3 id="为什么我们需要这门课"&gt;为什么我们需要这门课？&lt;/h3&gt;
&lt;p&gt;我们不妨来问问
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;response = query_gpt4o(prompt=&amp;#34;why teach a course on buliding language models from scratch? Answer in one sentence.&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(responese)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Teaching a course on building language models from scratch provides foundational understanding of natural language processing techniques, fosters innovation, and enables effective adaptation of models to specific tasks and domains.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;目前存在的很明显的问题：AI 领域的研究者们逐渐和底层的关键技术断联。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;8 年前，研究者会亲自实现并训练他们自己的模型。&lt;/li&gt;
&lt;li&gt;6 年前，研究者们会下载一个模型 (e.g., BERT), 并且亲自 fine-tune它。&lt;/li&gt;
&lt;li&gt;现在，研究者们可能只会去提示一个强大的专有模型（往往 close-source，e.g., GPT/Claude/ Gemini/-series）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从汇编语言到面向对象编程，从众多的小模型到一个专有的大模型，完成一个具体任务的抽象程度在逐渐变高，这确实极大的提升了生产力，但是代价是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;相较于编程语言或者操作系统，这些抽象是有漏洞的，不稳定的。&lt;/li&gt;
&lt;li&gt;仍然有一些基础工作需要研究，而这些研究会推翻现有的技术栈。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要完成基础研究，就必须充分的理解这项技术。所以这门课的出发点是通过搭建来完成理解，除此之外还有一些小问题……&lt;/p&gt;
&lt;h3 id="语言模型的工业化"&gt;语言模型的工业化&lt;/h3&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Industrialization of Language Models"
srcset="https://lin-shang.github.io/courses/stanford-cs-336/language_factory_hu_9577716f3f47346a.webp 320w, https://lin-shang.github.io/courses/stanford-cs-336/language_factory_hu_e634b03fe8b068c8.webp 440w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://lin-shang.github.io/courses/stanford-cs-336/language_factory_hu_9577716f3f47346a.webp"
width="440"
height="247"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;此外，关于前沿模型是如何构建的，没有公开的细节。&lt;/li&gt;
&lt;li&gt;出自
的 Section 2 &lt;mark&gt;Scope and Limitations of this Technical Report:&lt;/mark&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;This report focuses on the capabilities, limitations, and safety properties of GPT-4. GPT-4 is aTransformer-style model [39] pre-trained to predict the next token in a document, using both publicly available data (such as internet data) and data licensed from third-party providers. The model was then fine-tuned using Reinforcement Learning from Human Feedback (RLHF) [40]. &lt;mark&gt;Given both the competitive landscape and the safety implications of large-scale models like GPT-4, this report contains no further details about the architecture (including model size), hardware, training compute dataset construction, training method, or similar.&lt;/mark&gt;
We are committed to independent auditing of our technologies, and shared some initial steps and ideas in this area in the system card accompanying this release. We plan to make further technical details available to additional third parties who can advise us on how to weigh the competitive and safety considerations above against the scientific value of further transparency.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="大就是强-more-is-different"&gt;大就是强 （More is different）&lt;/h3&gt;
&lt;p&gt;前沿模型对我们来说确实有些遥不可及，但是构建一个 1B参数以内的小语言模型往往不能够代表的大模型的经验认知。&lt;/p&gt;
&lt;p&gt;
：用于注意力机制与多层感知机（MLP）的浮点运算（FLOPs）占比会随规模变化。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="fraction of FLOPs spent in attention versus MLP changes with code"
srcset="https://lin-shang.github.io/courses/stanford-cs-336/scaling_params_table_hu_dc404a65f23ae8d.webp 320w, https://lin-shang.github.io/courses/stanford-cs-336/scaling_params_table_hu_783783b8a9ed0dfb.webp 480w, https://lin-shang.github.io/courses/stanford-cs-336/scaling_params_table_hu_8108312fb0a39401.webp 600w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://lin-shang.github.io/courses/stanford-cs-336/scaling_params_table_hu_dc404a65f23ae8d.webp"
width="600"
height="474"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;示例 2: 随着模型 scaling 产生的
趋势&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="emergency of behavior with scaling"
srcset="https://lin-shang.github.io/courses/stanford-cs-336/emergency_behavior_hu_e59868dda0cdcfdc.webp 320w, https://lin-shang.github.io/courses/stanford-cs-336/emergency_behavior_hu_febbc933de176f06.webp 480w, https://lin-shang.github.io/courses/stanford-cs-336/emergency_behavior_hu_9d67f10e3cd213e1.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://lin-shang.github.io/courses/stanford-cs-336/emergency_behavior_hu_e59868dda0cdcfdc.webp"
width="760"
height="537"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="我们可以从这门课上学习到什么可以迁移到前沿模型上的知识"&gt;我们可以从这门课上学习到什么可以迁移到前沿模型上的知识？&lt;/h3&gt;
&lt;p&gt;知识有三种类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;机制：事物如何运作（Transformer是什么，模型并行如何利用GPU）&lt;/li&gt;
&lt;li&gt;思维模式：充分发挥硬件性能，认真对待规模（缩放定律）&lt;/li&gt;
&lt;li&gt;直觉：哪些数据和建模决策能产生良好的准确性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我们可以教授机制和思维模式（这些是可以迁移的）。
我们只能部分教授直觉（不一定能跨规模迁移）。&lt;/p&gt;
&lt;h3 id="直觉"&gt;直觉？🤷&lt;/h3&gt;
&lt;p&gt;一些设计决策根本（尚未）没有合理依据，只是源于实验。
例子：诺姆·沙泽尔（Noam Shazeer）介绍
的论文。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;We have extended the GLU family of layers and proposed their use in Transformer. In a transfer-learning setup, the new variants seem to produce better perplexities for the de-noising objective used in pre-training as well as better results on many downstream language-understanding tasks. These architectures are simple to implement, and have no apparent computational drawbacks. &lt;mark&gt;We offer no explanation as to why these architectures seem to work: we attribute their success. as all else. to divine benevolence.&lt;/mark&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="苦涩的教训-the-bitter-lesson"&gt;苦涩的教训 (The bitter lesson)&lt;/h3&gt;
&lt;p&gt;错误解读：规模是唯一重要的，算法并不重要。
正确解读：具有可扩展性的算法才是重要的。&lt;/p&gt;
&lt;p&gt;&lt;mark&gt;准确率=效率×资源&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;实际上，在更大规模下，效率要重要得多（不能浪费）。
表明，2012年至2019年间，在ImageNet上的算法效率提升了44倍。
问题框架：在给定一定的计算和数据预算的情况下，人们能构建出的最佳模型是什么？
换句话说，就是要最大化效率！&lt;/p&gt;
&lt;h2 id="当前格局"&gt;当前格局&lt;/h2&gt;
&lt;h3 id="神经网络出现前21世纪10年代前"&gt;神经网络出现前（21世纪10年代前）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;用于测量英语熵的语言模型
&lt;/li&gt;
&lt;li&gt;关于n元语法语言模型的大量研究（用于机器翻译、语音识别）
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="神经组件21世纪10年代"&gt;神经组件（21世纪10年代）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;首个神经语言模型
&lt;/li&gt;
&lt;li&gt;序列到序列建模（用于机器翻译）
&lt;/li&gt;
&lt;li&gt;Adam优化器
&lt;/li&gt;
&lt;li&gt;注意力机制（用于机器翻译）
&lt;/li&gt;
&lt;li&gt;Transformer架构（用于机器翻译）
&lt;/li&gt;
&lt;li&gt;专家混合模型
&lt;/li&gt;
&lt;li&gt;模型并行化
,
,
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="早期基础模型21世纪10年代末"&gt;早期基础模型（21世纪10年代末）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ELMo：基于LSTM的预训练，微调对任务有帮助
&lt;/li&gt;
&lt;li&gt;BERT：基于Transformer的预训练，微调对任务有帮助
&lt;/li&gt;
&lt;li&gt;谷歌的T5（110亿参数）：将所有内容转化为文本到文本的形式
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="迈向规模化更封闭"&gt;迈向规模化，更封闭&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI的GPT-2（15亿参数）：文本流畅，首次出现零样本迹象，分阶段发布
&lt;/li&gt;
&lt;li&gt;缩放定律：为规模化提供希望和可预测性
&lt;/li&gt;
&lt;li&gt;OpenAI的GPT-3（1750亿参数）：上下文学习，封闭模型
&lt;/li&gt;
&lt;li&gt;谷歌的PaLM（5400亿参数）：规模庞大，训练不足
&lt;/li&gt;
&lt;li&gt;DeepMind的Chinchilla（700亿参数）：计算最优缩放定律
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="开源模型"&gt;开源模型&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;EleutherAI的开源数据集（The Pile）和模型（GPT-J） [Gao 2020]
,
&lt;/li&gt;
&lt;li&gt;元宇宙的OPT（1750亿参数）：GPT-3的复现，存在诸多硬件问题
&lt;/li&gt;
&lt;li&gt;Hugging Face / BigScience的BLOOM：专注于数据来源
&lt;/li&gt;
&lt;li&gt;元宇宙的Llama模型
,
&lt;/li&gt;
&lt;li&gt;阿里巴巴的通义千问（Qwen）模型
&lt;/li&gt;
&lt;li&gt;深度求索（DeepSeek）的模型
,
,
&lt;/li&gt;
&lt;li&gt;AI2的OLMo 2
,
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="开放程度"&gt;开放程度&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;封闭模型（例如，GPT-4o）：仅提供API访问
&lt;/li&gt;
&lt;li&gt;开源权重模型（例如，深度求索模型）：提供权重，包含架构细节的论文，部分训练细节，无数据细节
&lt;/li&gt;
&lt;li&gt;开源模型（例如，OLMo）：提供权重和数据，包含大部分细节的论文（但不一定包含原理、失败的实验）
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="当今的前沿模型"&gt;当今的前沿模型&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Anthropic的
&lt;/li&gt;
&lt;li&gt;xAI的
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>