资料摘要:personal chatgpt 25 — LLAMA 3 整体介绍(与 LLama 2 的不同?)
本讲由真实视频转录与作者 notebook/代码交叉整理。原始层:🔒 带时间戳视频转录;课程总览:personal chatgpt — LLMs 实践系列。
本讲围绕 Llama 3 初始版做发布信息与源码速览:权重申请、8B/70B 规格、15T+ token 训练量、8K 上下文、128,256 词表、GQA、RoPE、SwiGLU/RMSNorm,以及 Meta 原始仓库中的 tokenizer、模型并行 embedding、Transformer block 和生成 demo。notebook 还复算 8B 参数量约 8.03B。
1. 获取权重与发布边界
Section titled “1. 获取权重与发布边界”课程录制时 Meta 原始权重和 Hugging Face 权重都需要申请访问;下载链接/许可流程具有时效性。课程提醒原始权重与 HF 转换版的目录、加载代码不同。
2. 相比 Llama 2 的主要变化
Section titled “2. 相比 Llama 2 的主要变化”课程聚焦:
- 规模仍以 8B、70B 为主;
- 训练语料提升到 15T+ tokens;
- 初始发布版 context length 为 8K;
- 词表增至
128256,并改用基于 tiktoken 的 tokenizer; - 8B 也使用 GQA,而 Llama 2 小模型主要还是 MHA;
- 架构主体仍是 decoder-only Transformer、RMSNorm、SwiGLU、RoPE。
3. 8B 配置与参数量
Section titled “3. 8B 配置与参数量”notebook 中 8B 关键配置:
dim = 4096n_layers = 32n_heads = 32n_kv_heads = 8vocab_size = 128256multiple_of = 1024ffn_dim_multiplier = 1.3rope_theta = 500000
参数复算由 embedding、每层 Q/K/V/O、FFN、norm 和 output 组成,得到约 8.03B。GQA 使 K/V 投影维度由 32 头降为 8 头,但 Q/O 仍按查询头宽度计算。
4. Tokenizer 与词表并行
Section titled “4. Tokenizer 与词表并行”Meta 源码用 tokenizer model 文件和 tiktoken 规则编码,并定义 BOS/EOS/保留 special tokens。大词表增加 embedding 与 output projection 参数,也改善多语言和代码片段的 token 压缩。
源码中的 VocabParallelEmbedding 把词表维度分到多个进程:每个 worker 只持有一段词表 embedding,再通过并行通信组合结果。它解决的是权重/计算分片,不是 tokenizer 算法本身。
5. Transformer 与生成 demo
Section titled “5. Transformer 与生成 demo”模型 block 延续前几讲已分析的组成:
- token embedding;
- RMSNorm → attention(GQA + RoPE + KV Cache);
- 残差;
- RMSNorm → SwiGLU FFN;
- 最终 norm 与 vocabulary projection;
generate做自回归采样。
课程最后分别查看 base completion 与 instruct/chat demo 的提示格式。
公式 / 代码要点
Section titled “公式 / 代码要点”GQA 的本地重复数:
self.n_local_heads = args.n_heads // model_parallel_sizeself.n_local_kv_heads = self.n_kv_heads // model_parallel_sizeself.n_rep = self.n_local_heads // self.n_local_kv_headsFFN 隐层计算遵循源码的 4 * dim、2/3 缩放、ffn_dim_multiplier 与 multiple_of 对齐流程,而不是简单固定为 4d。
00:51:说明权重需要申请。02:43:进入模型架构/前向源码概览。03:00:指出初始版上下文由 Llama 2 的 4K 提升到 8K。03:36:强调训练 token 量达到 15T 级。06:02:开始复算 8B 参数量约 8.03B。10:03:进入模型架构源码。10:28:查看128256词表。14:47:查看VocabParallelEmbedding。16:15:进入官方 demo。19:01:查看 instruct/chat 提示格式。
- 本讲对应 2024-04 的 Llama 3 初始发布,不能把 Llama 3.1 的 128K context 或 405B 配置回填进本讲。
- notebook 中存在本地权重/tokenizer 路径和模型并行启动假设;没有获批权重无法完整运行 demo。
- 两进程模型并行要求正确的
torchrun/分布式环境;单卡只能运行适配后的较小/量化版本。 - 参数量复算是架构核对,可能不包含实现中所有非参数 buffer,也不等于运行显存。
与前后讲关系
Section titled “与前后讲关系”- 前接第 17–22 讲:前面逐模块讲 Llama 2;本讲用同一源码视角比较 Llama 3。
- 后接第 26 讲:单独展开 GPT-4o 的
o200k_basetokenizer,并比较更大词表的压缩效果。 - 后接第 29 讲:系统对比 Llama 2 7B 与 Llama 3 8B 的逐层差异。
- Llama 3 8B 的 Q 头与 KV 头各是多少?
- 为什么词表增大既可能减少 token 数,也会增加 embedding/output 参数?
VocabParallelEmbedding分片的是哪个维度?- 本讲的 8K context 为什么不能写成 128K?
- 8.03B 参数量主要由哪些矩阵组成?
- 视频:LLAMA 3 整体介绍(与 LLama 2 的不同?)
- 转录:🔒 personal chatgpt 25 视频转录
- 课件 / 代码:🔒 llama3_0419.ipynb
- 视频描述中的补充资料:https://www.bilibili.com/video/BV1xP411x7TL
- 视频描述中的补充资料:https://www.bilibili.com/video/BV1Zu4y1B7gM/
- 视频描述中的补充资料:https://www.bilibili.com/video/BV1e14y1C7G8/
- 视频描述中的补充资料:https://www.bilibili.com/video/BV1Dh4y1P7KY/
- 视频描述中的补充资料:https://www.bilibili.com/video/BV18u411M7j1/
- 视频描述中的补充资料:https://www.bilibili.com/video/BV1FB4y1Z79y/
- 视频描述中的补充资料:https://www.bilibili.com/video/BV1vc411o7fa/
- 视频描述中的补充资料:https://www.bilibili.com/video/BV1Ea4y1d7wx/
- 滴答清单抓取时学习状态:已完成。
- 视频正文采用自动语音识别;关键术语已用标题、notebook 与源码校正,无法确认的口语细节不扩写。
- notebook 未执行的 CUDA、权重下载、训练或外部 API 单元,不表述为已复现实验。