资料摘要:personal chatgpt 15 — llama2 源码初步(text completion & chat completion)
本讲由真实视频转录与作者 notebook/代码交叉整理。原始层:🔒 带时间戳视频转录;课程总览:personal chatgpt — LLMs 实践系列。
本讲从 Hugging Face 封装切换到 Meta 的 facebookresearch/llama 参考实现,说明源码与权重需分别取得,比较 Llama/Llama 2 的权重目录和并行切分,并演示两个入口:example_text_completion.py 做文本续写,example_chat_completion.py 做结构化的多轮对话。二者最终都调用生成逻辑,但输入格式和所用 checkpoint 不同。
1. 源码、许可与权重
Section titled “1. 源码、许可与权重”课程先克隆 Llama 源码,再通过 Meta 申请页面取得下载链接和权重。Notebook 只保留说明、截图与命令,没有附带模型权重。
Llama 2 的三个规模为 7B、13B、70B。课程说明较大模型的权重会被切成多个 shard,并需要用 torchrun --nproc_per_node 启动对应数量的进程。这里的进程数必须与所下载 checkpoint 的模型并行切分匹配,不能任意设置。
2. Text completion
Section titled “2. Text completion”文本补全入口接受字符串 prompt,并让模型继续生成。Notebook 给出的 7B 命令使用单进程,13B 命令使用双进程。max_seq_len 和 max_batch_size 控制运行边界。
3. Chat completion
Section titled “3. Chat completion”对话入口使用 Chat checkpoint,并把多轮消息组织为 role/content 结构。课程展示同一批多轮对话如何送入 chat_completion。它不是简单地把文件名从 text 改成 chat;训练过的 checkpoint 和 prompt 协议也不同。
4. 尺寸与硬件限制
Section titled “4. 尺寸与硬件限制”课程在源码配置中查看 7B 的 dim=4096、n_heads=32 等参数,并说明自己的环境只能执行到 13B。该陈述是讲师环境记录,不是模型最低硬件规范。
公式 / 代码
Section titled “公式 / 代码”# 7B text completiontorchrun --nproc_per_node 1 example_text_completion.py \ --ckpt_dir ./weights/llama-2-7b/ \ --tokenizer_path ./weights/tokenizer.model \ --max_seq_len 128 --max_batch_size 4
# 13B chat completiontorchrun --nproc_per_node 2 example_chat_completion.py \ --ckpt_dir ./weights/llama-2-13b-chat/ \ --tokenizer_path ./weights/tokenizer.model \ --max_seq_len 512 --max_batch_size 8多头注意力的每头维度为:
| 时间 | 内容 |
|---|---|
| 00:57 | 说明源码与权重分开,权重需申请下载 |
| 01:57 | 权重下载目录与下载脚本 |
| 02:55 | 比较 Llama 与 Llama 2 的参数规模;ASR 的“43B”应为 13B |
| 03:45 | 查看 7B 的 hidden dimension 与 attention heads |
| 05:37 | 讲师环境只能执行到 13B |
| 08:07 | 13B 权重分片与多进程加载 |
| 13:25 | 转入 Chat 模型与对话入口 |
| 21:01 | 多轮对话输入与统一生成接口 |
| 21:55 | 总结申请、下载与两类 completion |
- 运行标签:not-as-written(Notebook 本身)。 Notebook 主要保存截图和 shell 命令;真正运行需要另行克隆 Meta Llama 源码、取得许可权重、准备
tokenizer.model和正确目录。 - 7B/13B 命令依赖支持 NCCL/torch distributed 的 GPU 环境;进程数必须匹配 checkpoint shard 数。
source_bundle缺少../imgs/llama_weights.png和../imgs/llama2-weights.png,主仓库中图片存在。- Notebook 中命令属于当时参考实现布局;后续 Llama 仓库结构可能变化。
- 本次未下载权重或执行推理。
与前后讲关系
Section titled “与前后讲关系”- 承接第 14 讲: 从 Transformers
pipeline转入 Meta 原始参考实现。 - 引出第 17–20 讲: 后续逐个拆解 Llama 2 源码中的 RMSNorm、SwiGLU、RoPE 与 KV Cache。
- 与第 16 讲并行: 第 15 讲关注基础推理源码,第 16 讲暂时切到 TRL/RLHF 训练接口。
- 为什么获取 Llama 2 源码并不等于已经获得模型权重?
- Text completion 与 Chat completion 在 checkpoint 和输入格式上分别有什么差异?
--nproc_per_node为什么不能随意设置?- 7B 模型
dim=4096、32 个头时,每头维度是多少? - 本讲 Notebook 为什么被标记为
not-as-written而不是可直接运行?
- 视频:llama2 源码初步(text completion & chat completion)
- 转录:🔒 personal chatgpt 15 视频转录
- 课件 / 代码:🔒 llama2_src_01.ipynb
- 滴答清单抓取时学习状态:已完成。
- 视频正文采用自动语音识别;关键术语已用标题、notebook 与源码校正,无法确认的口语细节不扩写。
- notebook 未执行的 CUDA、权重下载、训练或外部 API 单元,不表述为已复现实验。