跳转到内容

输入关键词开始搜索

    资料摘要:personal chatgpt 15 — llama2 源码初步(text completion & chat completion)

    视频摘要更新 2026-08-02置信度 high待阅读原始来源 ↗#深度#大模型#课程#personal-chatgpt

    本讲由真实视频转录与作者 notebook/代码交叉整理。原始层:🔒 带时间戳视频转录;课程总览:personal chatgpt — LLMs 实践系列

    本讲从 Hugging Face 封装切换到 Meta 的 facebookresearch/llama 参考实现,说明源码与权重需分别取得,比较 Llama/Llama 2 的权重目录和并行切分,并演示两个入口:example_text_completion.py 做文本续写,example_chat_completion.py 做结构化的多轮对话。二者最终都调用生成逻辑,但输入格式和所用 checkpoint 不同。

    课程先克隆 Llama 源码,再通过 Meta 申请页面取得下载链接和权重。Notebook 只保留说明、截图与命令,没有附带模型权重。

    Llama 2 的三个规模为 7B、13B、70B。课程说明较大模型的权重会被切成多个 shard,并需要用 torchrun --nproc_per_node 启动对应数量的进程。这里的进程数必须与所下载 checkpoint 的模型并行切分匹配,不能任意设置。

    文本补全入口接受字符串 prompt,并让模型继续生成。Notebook 给出的 7B 命令使用单进程,13B 命令使用双进程。max_seq_lenmax_batch_size 控制运行边界。

    对话入口使用 Chat checkpoint,并把多轮消息组织为 role/content 结构。课程展示同一批多轮对话如何送入 chat_completion。它不是简单地把文件名从 text 改成 chat;训练过的 checkpoint 和 prompt 协议也不同。

    课程在源码配置中查看 7B 的 dim=4096n_heads=32 等参数,并说明自己的环境只能执行到 13B。该陈述是讲师环境记录,不是模型最低硬件规范。

    Terminal window
    # 7B text completion
    torchrun --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 completion
    torchrun --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

    多头注意力的每头维度为:

    dhead=dmodelnheads=409632=128(7B)d_{\text{head}}=\frac{d_{\text{model}}}{n_{\text{heads}}} =\frac{4096}{32}=128\quad(7\text{B})

    时间 内容
    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 仓库结构可能变化。
    • 本次未下载权重或执行推理。
    • 承接第 14 讲: 从 Transformers pipeline 转入 Meta 原始参考实现。
    • 引出第 17–20 讲: 后续逐个拆解 Llama 2 源码中的 RMSNorm、SwiGLU、RoPE 与 KV Cache。
    • 与第 16 讲并行: 第 15 讲关注基础推理源码,第 16 讲暂时切到 TRL/RLHF 训练接口。
    1. 为什么获取 Llama 2 源码并不等于已经获得模型权重?
    2. Text completion 与 Chat completion 在 checkpoint 和输入格式上分别有什么差异?
    3. --nproc_per_node 为什么不能随意设置?
    4. 7B 模型 dim=4096、32 个头时,每头维度是多少?
    5. 本讲 Notebook 为什么被标记为 not-as-written 而不是可直接运行?
    • 滴答清单抓取时学习状态:已完成
    • 视频正文采用自动语音识别;关键术语已用标题、notebook 与源码校正,无法确认的口语细节不扩写。
    • notebook 未执行的 CUDA、权重下载、训练或外部 API 单元,不表述为已复现实验。