上一章 · 返回首页 · 内容清单 · 下一章

这里把“运行了什么”“它对应什么原理”“怎样检验理解”连起来。单元格编号按notebook原始cell数组从1开始,包含markdown cell;与编辑器显示的执行计数In[7]不同。

12.1 Lecture01/02/03:重复内容应该怎样读

Lecture01前部介绍历史、深度学习基础、分词与embedding;中部attention;后部现代架构与模型发展。Lecture02大量重叠,Lecture03先讲历史再讲架构差异。重复不是需要背三份相同定义,而是用不同呈现检查你是否理解相同机制。

学习历史时按“瓶颈→改变→代价”组织:

演变之前的困难机制变化新增代价/未解决问题
n-gram→neural LM稀疏、有限窗口连续表示共享统计训练与优化成本
RNN/LSTM→attention长依赖、递归瓶颈按内容访问历史attention存算成本
2017 Transformer→decoder-only LM任务架构与生成目标需要统一因果next-token、预训练迁移生成序列依赖仍存在
post-LN→pre-norm/RMSNorm深层优化和归一化开销更直接残差路径、简化norm仍需初始化/学习率管理
绝对PE→RoPE位置关系与长度处理Q/K旋转、相对点积超长外推仍有限
MHA→GQA/MQAKV显存/带宽共享KV头质量与自由度折中
ReLU FFN→SwiGLU特征变换表达/效率平滑门控乘法三投影参数预算
dense→MoE总容量与活跃compute捆绑条件专家激活路由、均衡和通信
重复全前缀→KV cache历史重复计算缓存因果不变状态cache内存增长
连续KV预分配→PagedAttention碎片和预留浪费块映射与按需分配表、引用、kernel复杂度
朴素attention→FlashAttention中间T²矩阵HBM读写分块+online softmax更复杂kernel和重计算
预训练→SFT→RL续写与人类任务目标不一致示范与奖励优化数据偏差、奖励投机
PPO→GRPOcritic成本与估值困难组内奖励baseline多rollout、组退化与归一化偏差

课程中的模型榜单、产品名、开放程度、价格、CUDA安装建议具有时点性;本包按课件语境保留,不作为2026-11-01实时榜单或安装保证。GPT-4参数等带“supposedly”的说法不应写成公开已证实事实。

12.2 Tutorial01:Coding agent 与软件工程练习

37页主要内容:工具/套餐、环境、CLI与IDE、音乐播放器、薪资系统三个层级。学习重点不是记某产品价格,而是把自然语言任务变成数据结构、计算规则、可验证输出。

音乐播放器任务让你练习界面、播放状态、事件、音轨与资源组织;薪资Level1管理部门/岗位/职级/员工关系;Level2把基础工资、规则、扣款等变成配置化计算;Level3在同岗/部门分布等依据上形成建议。生成代码后需要检验业务逻辑和边界,不能只看页面能打开。

legacy/lab/lab01与Lab01_alternated中的HTML/CSS/JS、工资服务、tests、音乐文件是你已有的应用作品/生成资源;不是新的LLM理论讲义,不把每首音频当考试材料。它们可用于理解agent循环:读需求→规划→调用工具/改代码→测试→根据错误修正。

真正应能解释:模型参数负责输出策略,工具执行发生在外部环境;工具返回作为新context进入下一轮。工具调用不是模型凭空获得终端执行能力,也不是一次生成JSON就完成业务验证。

12.3 Tutorial02 与 PyTorch/LLM notebook

环境层次:硬件→驱动→CUDA运行库/框架→Python环境→模型代码→权重/tokenizer→应用。nvidia-smi显示的CUDA版本通常是驱动支持上限,nvcc --version查toolkit编译器版本,torch.version.cuda反映该PyTorch构建所用CUDA版本,三者不是同一对象。

uv/venv隔离包和解释器;Jupyter kernel决定notebook实际使用哪个环境。终端装了torch不等于当前kernel能import。GPU可用还需模型张量、输入张量放同一兼容device。

week2 notebook Cells3–4检查环境;Cells5–8用合成回归训练TinyMLP,重点是forward→loss→zero_grad→backward→step;Cells9–14下载/加载tokenizer和模型、运行生成;Cells15–20对比greedy、temperature/top-p/top-k、beam;Cells21–24看运行信息和故障提示。

AutoConfig给结构,AutoModelForCausalLM加载模型/权重,AutoTokenizer处理输入。模型文件目录通常需要config、权重分片/索引、tokenizer词表与特殊token/chat template配置;只拷贝一个权重文件不保证可加载。HF/ModelScope是分发来源,不是不同的注意力原理。

device_map解决设备放置,不意味着自动开启任何期望的并行训练;torch_dtype控制主要数值格式,不保证每个内部算子同dtype。安装命令依版本而变,不应机械执行课件中的驱动卸载步骤来复习原理。

legacy Lab02与新版notebook主要有OpenMP环境设置差异;legacy Lab03的(1)版本比新版多三行tqdm显示相关导入/重绑定,提取的其余源cell内容一致。notebook文件字节差异也可能包含执行输出/元数据,不能都解释成课程知识变化。

uv_tutorial_2.pdf另有14页:pip兼容接口直接操作环境,项目接口维护pyproject.toml与uv.lock。uv add记录项目依赖并更新锁;uv pip install主要安装到环境,不自动记录项目声明;sync使环境与锁/依赖文件对齐,run在项目环境执行;uvx用于隔离运行CLI工具。Python解释器、包依赖、系统驱动是不同层,锁Python包不等于锁住所有GPU系统依赖。

12.4 Tutorial03:本地推理与聊天机器人

15页流程:加载→generate→pipeline→采样参数→prompt组成→聊天项目。第10页“do_sample=False与temperature/top-p/top-k配合”表述容易误解:常见Transformers用法中,关闭采样会令这些采样参数不生效或警告,应按具体配置分支判断;greedy与beam也要看num_beams。

chat template通常通过apply_chat_template把messages转成模型认识的角色/轮次字符串或IDs;add_generation_prompt提示开始assistant输出。必须核对是否重复添加special tokens。多轮历史会变长,需要明确截断/摘要策略;仅在Python列表保存history不是跨请求KV自动复用。

输出截断可能来自max_new_tokens/上下文长度/EOS/服务端限制,不能只判断模型“不知道答案”。思考型模型可能把输出预算先用于reasoning,导致最终可见回复为空。模型特定thinking参数不是所有模型通用开关。

Hands-on Project_ Build a Local Chatbot.md要求理解代码、记录实验;用它检查输入管道、history、生成设置、异常处理与device管理。不要把任何“生成成功一次”的日志当成所有任务正确率。

12.5 Tutorial04:最重要的从零实现

Cells内容精读时要回答
2–7QKV与scaled attention为什么最后一维softmax?为什么Q/K末维相同?
8–10causal mask上三角还是下三角被屏蔽?包括自己吗?
11–12split/combine headsview和transpose如何改变索引对应?
13–19MHA、FFN、sinusoidal PE子层内是否已经包含residual/norm?
20–25padding、encoderQ/K长度不同怎么造mask?
26–33decoder与完整Transformerself-attention和cross-attention分别读谁?
34–43现代架构、RMSNorm、RoPE、GQA哪里cast FP32?KV头如何共享?
44–51SwiGLU与现代LM组装每个子层的residual/norm是否重复?
52–57周期序列训练与生成标签如何shift?推理为何取最后位置?

课件组件有的把residual/norm包在模块内部,有的统一放block外部;复用前先检查,重复加残差就换了网络。周期序列准确率高仅证明学会该玩具规律,不能证明具备一般语言理解。

12.6 Tutorial05/06:服务和实验

Tutorial05 PPTX共23页:云资源→IP/port→SSH→vLLM→模型下载/部署→调用。week6的Tutorial05 PDF共29页,新增/扩展纯CPU安装、glibc兼容、Python升级、WSL等环境路径,并调整了示例启动参数。这是跨格式的实质补充,不能因同名PPTX逐字节未变就忽略PDF。服务器IP区分主机,port区分服务端点;私有地址172.18…需要对应路由,不是任何互联网环境都可达。

环境排查应先定位层级:包安装失败可能是Python版本/平台wheel/glibc不兼容,GPU不可用可能是驱动/运行时不兼容,服务启动失败可能是模型架构/参数/依赖。关闭某个采样后端只绕开那条后端路径,不能普遍修复所有CUDA版本不兼容。原课件具体版本数字是当时示例,不当成永久要求。

部署链条:确认GPU/框架→模型文件完整→启动服务并加载成功→检查模型列表→客户端请求→解析状态/输出/usage→基准实验。服务端与客户端是两个进程,不能把客户端安装SDK当成服务端已启动。

Chapter_4_vllm_lab.md的完整主线是logits→decoding→自回归→cache→服务→benchmark→日志。手写decoder每次model(generated)未显式传回past_key_values,因此跨调用重复前缀计算;模型在某次调用内部创建了cache,也不代表下一次调用自动复用。

已有远端结果中的一个重要不一致:results/notes.md写“共享前缀尚无结果”,但目录里实际存在prefix_cache_results.csv。CSV是较直接的观测证据,摘要可能较旧。

该CSV六行shared组prompt约1036–1038tokens,different组611–613tokens,输出也不同且无内部cache指标。因此不能仅凭shared更慢得出prefix cache无效;输入长度与输出长度都混杂。并发CSV中短答并发4吞吐高于8、长答8更高,只支持本轮负载下的描述;每组8请求不足以刻画稳定p95。

12.7 Lab6 Qwen3-Next:逐段精读

Cells内容需要警惕
3–16attention与causal mask缩放与mask次序;全mask行
17–45标准Transformer组件原始encoder-decoder与decoder-only别混
47–50gated attentionsigmoid gate调节attention输出,不等于SwiGLU
51–64dense→MoE→sparse/hybrid检查是否真的只执行选中专家;缺失组件定义
66–68字符词表与加法batch输入/标签/答案mask的位置必须逐索引画出来
69–70toy backbone与MTP headsaux hidden detach;多偏移target mask
71训练与优化Muon/AdamW参数分组;warmup/cosine;clip;CPU数据生成
72–74greedy验证/benchmark逐个验证不省forward;真答案长度已知;样本集对齐
76–840.01B模型配置/tokenizer参数预算、头维约束、special tokens
85–91DeepSpeed与vLLM训练checkpoint导出为可服务格式,版本兼容需验证

gated attention示意:output=Wo(sigmoid(g)⊙Attn(q,k,v))。gate是输入相关调节,softmax仍在attention内部;它并非MoE专家选择。

两组tiny配置比较:Option1 vocab8000、routed F96/shared F64;Option2 vocab8192、routed F128/shared F128;其他多个参数一致。Option2宽度更利于某些硬件对齐,但更多总参数和活跃计算,数据有限时也可能更难训练,不能只凭8192是2的幂就断言全面更好。

仅算8专家SwiGLU+一个共享专家,每层Option1 3×256×(8×96+64)=638,976;Option2 3×256×(8×128+128)=884,736。Top2活跃expert部分分别196,608和294,912参数。再加router、mixer、embedding/head、norm等才能得总量;是否共享LM head影响V×D是否算两次。

<pad>占位补齐,mask掉无效位置;<eos>表示结束,应在有效结束处学习;<unk>表示词表无法编码单元。完整byte-level方案往往不依赖unk处理普通文本,但保留special token仍可能用于兼容;special token必须训练/保存/加载一致。

12.8 Tutorial07:把已学现代模块再接到MoE

Cells4–19重建RMSNorm、RoPE、mask、GQA、SwiGLU、现代block与LM head;Cells21–25周期序列训练/生成;Cells27–30 TopK路由与梯度;Cells31–35共享专家/练习;Cells37–47替换FFN,组装MoE LM、训练和路由观察。

重点沿一条loss路径追踪:CE→LM head→层间残差/attention→MoE输出→连续路由权重和被选中专家。未被选中专家在该token上没有FFN计算路径;不同token可选不同专家,所以整个batch中很多专家仍会更新。

12.9 Assignment1:粒度标尺

Q1要求推理/解码实验;Q2要求RoPE手算、bf16实现、相对位置证明与固定内容验证;Q3要求明确矩阵的attention手算、稳定softmax、batch实现与未来扰动实验。考试若“考得很细”,至少应能在不复制notebook的情况下复现这些原理和变式。

GPT_Generated_Assignment1与refine是既有解答草稿,不是独立真值;以正式题面、推导和数值验证为准。Assignment1_try/q2.ipynb与q3.ipynb为0字节空文件,不能算已完成学习材料。

12.10 视频和两站怎样纳入内容地图

本地两份同大小vLLM视频需按hash去重。抽帧可见主题:KV cache、vLLM LLM API、I/O插件、多硬件、PyTorch生态、hybrid allocator、compiler优化、piecewise CUDA graph、sleep mode等。后半更偏服务工程扩展:减少CPU launch开销、混合状态分配、训练/rollout切换资源,而非新的attention数学公式。

本包未逐句转写音轨,故不能以抽帧代替完整视频精读。TA站5001的照片显示从机器学习/深度学习基础到文本表示、Attention/Transformer的目录;5000照片显示“知习”练习站登录页。站内完整章节和题目没有实际读取,本次直接请求与浏览器均空响应。待可达后应按本包主题对照补充,不能预先声称站内只包含这些内容。


上一章 · 返回首页 · 内容清单 · 下一章

Built with LogoFlowershow