Skip to content

工作坊测验:用于 PII 提取的 QLoRA 微调 ​

最后更新:2026 年 9 月 15 日

选择题 ​

  1. 以下哪项正确描述了使用 load_in_4bit=True、bnb_4bit_quant_type="nf4" 和 bnb_4bit_compute_dtype=torch.bfloat16 的 QLoRA?
    • A) 激活值和优化器状态会与基础权重一起变为 4 位
    • B) 受支持的基础权重以 4 位形式存储并冻结,量化线性层路径使用 BF16 计算,并训练适配器
    • C) BF16 计算会抵消 NF4,因此所有基础权重都以 16 位形式存储
    • D) 双重量化意味着将基础权重训练两次
显示答案

答案:B

权重存储、计算数据类型和可训练参数是彼此独立的选择。NF4 可减少基础权重的存储占用,而 BF16 指定该计算路径使用的计算数据类型。双重量化会对量化常数再次进行量化。适配器、梯度、优化器状态、激活值和更高精度模块的内存也必须单独计算。

  1. 一个线性层的输入宽度为 2,048,输出宽度为 768。标准 LoRA 使用秩(rank)16 和 alpha 32,且没有可训练偏置或额外模块。适配器参数数量和 alpha/r 缩放值是多少?
    • A) 1,572,864 个参数,缩放值为 2
    • B) 45,056 个参数,缩放值为 32
    • C) 45,056 个参数,缩放值为 2
    • D) 32,768 个参数,缩放值为 0.5
显示答案

答案:C

A 的形状是 (16, 2048),B 的形状是 (768, 16),因此参数数量为 16 × (2048 + 768) = 45,056。标准 LoRA 会按 32 / 16 = 2 缩放更新量。2048 × 768 = 1,572,864 计算的是基础矩阵,而不是适配器。秩稳定 LoRA 使用不同的缩放规则。

  1. 规划训练内存时,应如何解读 Qwen 的“总参数量 30.5B / 激活参数量 3.3B”?
    • A) 激活参数量描述单个词元(token)的稀疏计算路径;还必须分别考虑总权重、适配器、梯度、优化器状态和激活值
    • B) 实际只加载 3.3B 个参数,因此其他专家不占内存
    • C) 由于 30.5B × 4 bits = 15.25GB,总训练内存恰好是 15.25GB
    • D) 每个词元(token)选择八个专家意味着 LoRA 只会插入整个模型中的八个专家
显示答案

答案:A

激活参数量涉及单个词元(token)的计算路径,不能代替整个模型的存储预算。15.25 十进制 GB 是理想化的 4 位权重估算,没有计入量化元数据和其他训练内存。适配器的插入目标与特定批次实际选中的专家也属于不同概念。

  1. 有 1,600 条训练记录,微批大小为 1,梯度累积为 8,使用一个数据并行工作进程,并执行 80 次优化器更新。假设没有打包,也没有不完整的最后一批,那么有效批大小、训练样本累计参与次数和训练轮次(epoch)比例是多少?
    • A) 有效批大小为 1,累计参与 80 次,占 0.05 个 epoch
    • B) 有效批大小为 8,累计参与 1,280 次,占 0.8 个 epoch
    • C) 有效批大小为 80,累计参与 6,400 次,占 4 个 epoch
    • D) 有效批大小为 8,累计参与 640 次,占 0.4 个 epoch
显示答案

答案:D

有效批大小为 1 × 8 × 1 = 8,训练样本累计参与次数为 80 × 8 = 640。一个 epoch 需要 1600 / 8 = 200 次更新,因此 80 次更新相当于 0.4 个 epoch。当前的“full”标签表示执行模式,并不表示已完成一个 epoch 或已收敛。对于相同数量的样例,不同序列长度也可能产生不同的训练 token 数量。

  1. 对于不包含任何实体且助手的内容目标为空的文档,在仅针对补全文本计算损失时应检查什么?
    • A) 所有标签都是 -100,因此该记录不会对训练产生任何贡献
    • B) 提示和填充位置会被忽略,但有效的补全文本词元(例如助手的 EOS)仍受监督
    • C) 只忽略 EOS,而将整个源提示作为提取答案进行训练
    • D) NF4 使 EOS 和损失掩码都不再必要,因此无需检查
显示答案

答案:B

负样例应教会模型结束回答,而不提取实体。该模型将 <|im_end|> 用作 EOS。在实际聊天模板应用并截断后,应验证仍有一些受监督标签。实际补全文本可能包含额外词元,例如换行符;不应将标签序列全部被忽略的情况视为正常的负样例训练。

  1. 比较秩和数据增强选项时,应如何使用评估集?
    • A) 在一致的验证条件下筛选候选方案,冻结配置,然后在锁定的测试集上进行最终基线/候选比较
    • B) 查看每个候选方案的测试分数,并选择最高者
    • C) 先生成所有增强衍生数据,再随机分配到训练集、验证集和测试集
    • D) 当小型过拟合子集上的损失下降后立即部署,不检查泛化能力
显示答案

答案:A

使用验证集调优,并将测试集留到最终比较。目前的训练器会在每次运行前后评估测试集,包括冒烟测试,因此它本身并不是安全的 HPO 循环。教学用的调优路径还需要单独修改。应先按原始数据族进行拆分,只增强训练集的衍生数据;小型过拟合检查用于诊断学习路径,并不能证明模型具备泛化能力。

  1. 在 Transformers 4.57.6 中,应如何检查 Qwen3 MoE 实现当前使用的七个 LoRA 目标后缀?
    • A) 将其替换为 "all-linear" 并跳过检查,因为选中的模块相同
    • B) 始终改用 target_parameters,因为每种 MoE 都使用原始参数
    • C) 检查实际模块名称/数量,并确认覆盖注意力投影和专家的 gate_proj/up_proj/down_proj,同时排除单独的路由器 gate
    • D) 预期整个模型中只有七个线性模块,因为目标名称有七个
显示答案

答案:C

此版本会在 ModuleList 中将专家实现为 nn.Linear 投影。一个后缀会在多个层和专家中重复出现,因此后缀数量不等于模块数量。对于已发布的配置,应将预期的 48 × (4 + 3 × 128) = 18,624 个线性目标与实际清单进行比较。"all-linear" 可能会额外包含路由器等模块,而 target_parameters 则用于采用原始参数的另一种实现。

  1. 你在目录中找到目前仍受支持的 AL2023 PyTorch DLC。重新启用历史示例的 GPU 执行前,下一步应做什么?
    • A) 只更改镜像标签,并安装包含 torch==2.8.0 的旧锁定依赖
    • B) 移除日期保护条件,并因 ECR 中存在该镜像而提交完整运行
    • C) 因 CPU 检查已通过,就记录 GPU 量化加载和反向传播已成功
    • D) 验证镜像仓库/标签/摘要,以及 Python/CUDA/驱动程序、依赖项、工具包和 MLflow 的整套版本组合,执行已获授权的 GPU 冒烟测试;替代方案尚未验证前,保留现有保护条件
显示答案

答案:D

PyTorch 2.8 DLC 已于 2026 年 8 月 6 日结束补丁支持。目录中出现更新的条目,并不代表新的版本组合已针对本软件包验证为可用替代方案。新的镜像系列也可能使用不同于 pytorch-training 的镜像仓库,而安装旧的 torch 锁定版本可能会撤销迁移。GPU 预检查是未来测试流程的一部分;CPU 检查或查到镜像都不能证明 GPU 执行成功。


返回学习材料

向文档提问

按 Enter 发送,按 Shift+Enter 换行。