跳转到内容

Llama 面试题

10 道题
分类
AI 与大模型
子分类
llm
题目数
10 道
已阅读 0 / 10 题
1 Llama 系列模型从 Llama 1 到 Llama 3 经历了哪些关键架构演进?

答案:

Llama 系列在保留 Decoder-only Transformer 基础架构的前提下,三代模型逐步引入主流高效结构:

代际位置编码注意力机制激活函数归一化上下文长度词表
Llama 1 (2023.2)RoPEMHA(标准多头)SwiGLUPre-RMSNorm2K32K BPE
Llama 2 (2023.7)RoPEMHA + GQA(70B)SwiGLUPre-RMSNorm4K32K
Llama 3 (2024.4)RoPEGQA(全规格)SwiGLUPre-RMSNorm8K(训练),可外推128K TikToken

关键演进点:

  • RoPE(Rotary Position Embedding):通过复数旋转矩阵将相对位置信息编码进 Q/K,向后兼容任意长度外推,是 Llama 全系标配。
  • SwiGLU 激活函数:将 FFN 的单门控升级为三分支(gate / up / down),数学形式为 SwiGLU(x) = (xW1 ⊙ σ(xW2)) W3,相比 ReLU/GELU 在同参数量下获得更低 loss。
  • GQA(Grouped-Query Attention):将 KV Head 分组共享,Llama 2 70B 首次引入 8 组 KV,Llama 3 全规格(8B/70B/405B)默认启用 GQA,显著降低推理时 KV Cache 显存占用。
  • Pre-RMSNorm:归一化置于 Attention / FFN 之前,配合 DeepNorm 残差结构稳定深层网络训练。
  • 词表扩容:Llama 3 将 SentencePiece 32K 词表替换为 128K TikToken,多语言编码效率提升 4–6 倍。

架构稳定 + 数据/规模扩张是 Llama 系列的核心迭代哲学。

2 RoPE(Rotary Position Embedding)的原理是什么?相比绝对位置编码有何优势?

答案:

RoPE 通过对 Query 和 Key 向量施加与位置相关的旋转矩阵,将绝对位置转化为相对位置的内积表达,使注意力分数自然包含相对距离信息。

数学原理:

对二维向量 q = (q0, q1),在位置 m 施加旋转:

q'_0 = q0 * cos(mθ) - q1 * sin(mθ)
q'_1 = q0 * sin(mθ) + q1 * cos(mθ)

高维场景将向量按相邻两维分组成 d/2 个子空间,每个子空间使用不同的频率 θ_i = base^(-2i/d)base=10000)。注意力内积 <f(q,m), f(k,n)> 仅与 (m-n) 有关。

核心优势:

  • 长度外推:训练 8K 上下文后,可通过 base 重缩放(如 YaRN、PI、NTK-aware)外推到 32K、128K,无需重训。
  • 相对位置敏感:Attention 分数天然依赖 token 相对距离,符合语言序列的平移不变性。
  • 无额外参数:相比 BERT 风格的可学习位置嵌入,RoPE 不引入额外参数。
  • 远程衰减:相对距离越大,内积受旋转相位差影响,天然带远程衰减偏置。
# RoPE 简化实现(PyTorch 风格伪代码)
def apply_rope(x, cos, sin):
    # x: [batch, seq, head, dim]
    x1, x2 = x[..., 0::2], x[..., 1::2]
    rotated = torch.stack([-x2, x1], dim=-1).reshape_as(x)
    return x * cos + rotated * sin

Llama 2/3 在推理侧可通过 RoPE 缩放系数(rope_thetarope_scaling.type=linear/dynamic)灵活调整上下文窗口。

3 SwiGLU 激活函数的工作机制?Llama 为何选择 SwiGLU 而非 ReLU/GELU?

答案:

SwiGLU 是 GLU(Gated Linear Unit)的 Swish 变体,将传统 FFN 的两分支扩展为三分支门控结构。

数学形式:

FFN_SwiGLU(x) = (Swish(x·W_gate) ⊙ x·W_up) · W_down
              = (σ(x·W_gate) ⊙ x·W_gate ⊙ x·W_up) · W_down

其中 为逐元素乘,W_gateW_up 形状相同(d_model × d_ff),W_downd_ff × d_model

相比 ReLU/GELU 的优势:

激活函数参数量表达形式关键特性
ReLU2 × d × d_ffmax(0, xW1) W2简单、稀疏激活
GELU2 × d × d_ffxΦ(x) W2平滑、概率解释
SwiGLU3 × d × d_ff(σ(xW1)·xW2) W3门控+平滑,loss 更低
  • 门控机制:Swish 门 σ(xW_gate) 动态控制信息流通,模型可学习"哪些维度需要激活"。
  • 训练效率:PaLM 论文实验显示,同等参数下 SwiGLU 在 perplexity 上稳定优于 ReLU/GELU。
  • Llama 的工程取舍:为保持总参数量不变,将 d_ff 设为 8/3 × d_model 并向上对齐到 256 倍数(如 Llama 2 7B:d_ff=11008)。

代价是 FFN 参数量增加 50%,需在 d_ff 上做缩减以保持总参数对齐。

4 Llama 2 与 Llama 3 的核心差异是什么?

答案:

维度Llama 2Llama 3
发布时间2023.72024.4
模型规格7B / 13B / 70B8B / 70B / 405B
上下文长度4K8K(可外推至 128K)
词表32K SentencePiece128K TikToken
注意力MHA(7B/13B)+ GQA(70B 8组)GQA(全规格,8B/70B 8组,405B 16组)
训练数据2T tokens15.6T tokens(~8×)
训练算力~1.7M GPU hours(H100)~39.3M GPU hours(24×)
多语言支持弱(英语主导)大幅增强(5% 非英语数据显式扩充)
推理能力基础 CoT显著提升(IFEval、MMLU 接近 GPT-4)
商业许可7B 月活 > 7 亿需特殊许可Llama 3 Community License 更宽松(70B+ 仍受限)

关键技术升级:

  • GQA 全面化:8B 即启用 GQA,推理时 KV Cache 显存约为 MHA 的 1/8,吞吐提升明显。
  • 数据规模质变:15.6T tokens 中代码数据占比 4 倍以上,PubMed/ArXiv 等专业语料大幅扩充。
  • DPO(Direct Preference Optimization):后训练阶段引入 DPO 替代 RLHF 部分流程,对齐效率更高。
  • Llama 3.1 / 3.2 / 3.3 迭代:3.1 扩展 128K 上下文(RoPE base=500K + 缩放),3.2 新增 1B/3B 轻量 + 11B/90B 多模态视觉,3.3 将 70B 升级为类 405B 训练配方的精简版。

Llama 3.1(405B)在 MMLU、HumanEval、GSM8K 等基准上首次接近闭源 GPT-4 水平,是开源 LLM 的里程碑。

5 GQA(Grouped-Query Attention)的原理与价值?Llama 3 为何全规格启用?

答案:

GQA 是 MHA(Multi-Head Attention)与 MQA(Multi-Query Attention)的折中方案:将 Q Head 分为 G 组,每组共享同一对 KV Head。

结构对比:

注意力变体Q HeadKV HeadKV Cache 显存(Llama 8B)质量
MHA3232100%最优
GQA-832412.5%接近 MHA
MQA3213.1%明显下降

工作原理:

  • MHA:每个 Q Head 独立计算 K/V,参数与计算量最大。
  • MQA:所有 Q Head 共享 1 组 K/V,KV Cache 最小但质量损失明显。
  • GQA:Q Head 分组共享 KV(如 32 Q → 4 KV),组内共享 K/V 投影矩阵。

Llama 3 的设计取舍:

  • 推理加速:KV Cache 显存随序列长度线性增长,70B 模型 128K 上下文下 MHA 显存可能超过权重本身;GQA-8 让 128K 部署成为可能。
  • 吞吐提升:KV 读取是 Attention 计算瓶颈,KV Head 减少 → 内存带宽压力降低 → 推理吞吐提升 30%–50%。
  • 质量保留:Llama 3 论文显示,GQA-8 与 MHA 在下游任务上差距 < 0.5%,远优于 MQA。
# Hugging Face transformers GQA 配置示例
attention:
  num_attention_heads: 32        # Q head
  num_key_value_heads: 8         # KV head(GQA-8 = 32/4)
  hidden_size: 4096
  head_dim: 128

GQA 已成为 Llama 3、Mistral、Qwen2 等主流开源 LLM 的标准配置。

6 Code Llama 是什么?相比基础 Llama 2 有哪些关键改造?

答案:

Code Llama 是 Meta 在 Llama 2 基础上针对代码生成任务微调的代码专用模型,发布于 2023.8,覆盖 7B / 13B / 34B 三个规格。

三种变体:

变体用途上下文关键能力
Code Llama通用代码补全16K多语言代码生成、补全
Code Llama - PythonPython 专项16KPython 代码专项优化
Code Llama - Instruct指令对齐16K自然语言指令生成代码(类 Copilot 体验)

相对 Llama 2 的改造:

  • 数据:500B tokens 代码数据 + 8B tokens 代码相关自然语言(GitHub commit、StackOverflow),以 Python 为主(85%),辅以 C++/Java/JS/PHP 等。
  • 长上下文注入:训练中将 RoPE 位置编码参数 rope_theta 从 10000 提升到 1000000,扩展至 16K 上下文,专门用于长文件代码补全。
  • 微调策略:基于 Llama 2 二次预训练(code infilling 用 FIM 任务),再针对 Python 专项继续训练,最后用自指令 + GPT-4 标注的代码指令对 SFT + RLHF。
  • 词表保留:复用 Llama 2 的 32K 词表,代码 token 编码效率未单独优化。

HumanEval 表现:

模型HumanEval (pass@1)
Llama 2 70B29.3%
Code Llama 34B48.8%
Code Llama 34B - Instruct40.4%
GPT-3.548.1%

与商用 Copilot 的差距:Code Llama 34B 已接近 GPT-3.5 水平,但低于 GPT-4(67%),适合本地化代码补全与离线开发场景。

7 Llama 4 相比 Llama 3 有什么重大架构变化?

答案:

Llama 4 于 2025.4 发布,首次在 Llama 主线版本中引入 MoE(Mixture of Experts)架构原生多模态 能力。

维度Llama 3.3 70BLlama 4 ScoutLlama 4 Maverick
架构DenseMoE(17B 总参 / 16 专家 / 每次激活 17B)MoE(128 专家 / 每次激活 17B)
总参数70B109B400B
激活参数70B17B17B
上下文128K10M tokens(史上最长)1M
模态纯文本多模态(文本 + 图像)多模态(文本 + 图像)
专家路由每次激活 2 专家每次激活 2 专家

核心架构升级:

  • 稀疏激活 MoE:每次前向仅激活 17B 参数(共 109B / 400B),推理成本接近 17B 模型,但知识容量更大。
  • iRoPE(interleaved RoPE):Llama 4 Scout 实现 10M 上下文窗口的关键,通过交错 RoPE + 温度缩放注意力,在 256K 训练窗口基础上外推到 10M。
  • 早期融合多模态:视觉编码器与文本 Token 在输入层融合(非 Llama 3.2 的 Adapter 式后期融合),支持图像 + 文本联合理解。
  • FP8 训练:在 H100 上使用 FP8 混合精度训练 22T tokens,能效比 Llama 3 提升 10 倍。

应用场景变化:

  • Scout:单 H100 可部署,主打长文档理解(整本书 / 代码仓库级)。
  • Maverathon:与 GPT-4o、Claude 3.5 Sonnet 同台竞技,定位多模态旗舰。
  • Behemoth(预览):2T 总参数的"教师模型",用于蒸馏 Maverick。

Llama 4 是开源 LLM 首次在多模态 + 长上下文 + MoE 三个维度同时对齐闭源前沿模型。

8 Llama 模型的商业使用限制是什么?Llama Community License 有哪些关键条款?

答案:

Meta 通过 Llama Community License(LCL)发布模型权重,并非完全开源(不符合 OSI 定义),核心限制体现在"超大用户"门槛与禁止滥用条款。

Llama 2 / 3 关键许可条款:

条款详细说明
月活用户门槛上一月活 > 7 亿 的企业 / 组织需向 Meta 申请特殊许可
禁止改进用于训练竞品不得使用 Llama 权重训练、改进其他基础 LLM(防止头部竞品复用)
禁止再分发微调权重作为商业 SaaS 闭源微调后权重可发布,但不得以"封闭 API 服务"形式对外提供(即禁止"OpenAI 式"套壳)
安全要求必须按 Meta 的《Responsible Use Guide》部署,包含内容过滤、滥用监测
命名限制不得使用 “Llama” 命名衍生模型(衍生模型如 Vicuna、Alpaca 需改名)
输出归属衍生模型输出归使用者,但需在显著位置标注"基于 Meta Llama 构建"

Llama 3 / 3.1 调整:

  • 明确豁免纯欧盟用户产品的 7 亿 MAU 限制(应对 GDPR 监管)。
  • 允许在生成式 AI 工具中作为后端集成。
  • 衍生模型(Llama 3.1/3.2/3.3)许可条款延续。

实际影响:

  • 7 亿 MAU 门槛几乎只影响 Meta、谷歌、微软、字节、阿里等头部厂商。
  • 中小公司、开源社区、个人使用几乎无门槛
  • 与 Qwen(Apache 2.0 + 商用协议)、Mistral(Apache 2.0)、DeepSeek(更宽松)相比,Llama 是合规要求最严格的开源旗舰模型。

Code Llama 沿用 Llama 2 同等许可;Llama 4 在 2025 进一步放宽部分条款,但保留大用户门槛与禁止竞品训练条款。

9 Alpaca、Vicuna 等 Llama 衍生模型有什么异同?它们在 LLM 演进中的历史地位是什么?

答案:

Llama 1 开源(2023.2)后,社区基于其权重做指令微调,催生了"低成本开源 ChatGPT"潮流。

模型发布时间基础模型训练方法训练数据关键创新局限
Stanford Alpaca2023.3LLaMA 7BSelf-Instruct SFT52K GPT-3.5 生成指令极低成本($600 复现)中文弱、依赖 GPT-3.5 API
Vicuna2023.3LLaMA 13BShareGPT SFT70K ChatGPT 真实对话多轮对话 + 长上下文训练时长短,复杂推理弱
WizardLM2023.4LLaMA 7BEvol-Instruct SFT52K 进化指令指令复杂度迭代进化需 GPT-4 评估成本高
Koala2023.4LLaMA 13B混合数据 SFT学术 + ShareGPT + Alpaca学术对话 + 蒸馏数据规模小,评测未公开
Chinese-LLaMA2023.4LLaMA 7B/13B中文词表扩充 + SFT中文指令集中文词表扩展 + LoRA词表扩展引入训练不稳定

共同技术路径:

  1. 数据蒸馏:用 GPT-3.5/GPT-4 生成或真实 ShareGPT 对话作为教师信号。
  2. LoRA / 全参数 SFT:Alpaca 用全参数,Vicuna 用 LoRA 起步后转全参数。
  3. 评测基准:MT-Bench、AlpacaEval、LMSYS Chatbot Arena 成为开源 Chat 模型事实标准。

历史地位:

  • Alpaca:证明 $600 成本可复现类 ChatGPT 模型,引发"指令微调民主化"浪潮。
  • Vicuna:证明 高质量对话数据比纯指令数据更重要,MT-Bench 评测的奠基者。
  • WizardLM:提出 Evol-Instruct,启发了 WizardMath、WizardCoder 系列。
  • Chinese-LLaMA:首次系统解决 中文词表扩展 问题,为后续 Chinese-Alpaca、Firefly 等中文模型铺路。

这一波衍生模型本质是 Llama 1 时代对"开源 ChatGPT 路径"的探索,直接催生了 Mistral、Qwen、DeepSeek 等完全自主训练的开源大模型生态。

10 本地部署 Llama 的主流工具有哪些?Ollama 与 vLLM 的定位差异是什么?

答案:

本地部署 Llama 主流工具分两类:消费级/开发用(Ollama、llama.cpp、LM Studio)与生产级服务化(vLLM、TGI、SGLang、TensorRT-LLM)。

工具定位核心引擎适用场景并发能力
Ollama一键本地运行llama.cpp个人开发、本地体验单用户
llama.cpp底层推理引擎纯 C++/GGUF嵌入式、CPU/Mac 推理单用户
LM Studio图形化本地运行llama.cpp非命令行用户单用户
vLLM高吞吐生产服务PagedAttention企业级 API 服务高并发(>100 QPS)
TGIHugging Face 官方Rust + 优化 kernelsHF 生态集成中高并发
SGLang结构化生成RadixAttentionAgent / 多轮复杂调用高并发 + 低延迟
TensorRT-LLMNVIDIA 极致性能TensorRTGPU 集群生产最高吞吐
MLX / OMLXApple Silicon 优化MLX 框架M1/M2/M3/M4 Mac单用户/小并发

Ollama vs vLLM 核心差异:

flowchart LR
    subgraph Ollama["Ollama 开发者 / 个人本地"]
        O1["目标用户:开发者 / 个人"]
        O2["模型格式:GGUF(CPU/GPU/Metal 通用)"]
        O3["部署:单进程 serve
默认监听 127.0.0.1:11434"] O4["并发:单请求串行
适合交互式 CLI / 单 API"] O5["优势:零配置、跨平台
模型仓库 registry.ollama.ai 完善"] O6["命令:ollama run llama3.2:8b-instruct-q4_K_M"] end subgraph vLLM["vLLM 生产环境 / 服务化"] V1["目标用户:生产环境 / 服务化部署"] V2["模型格式:HF Safetensors
FP16/BF16/INT8/AWQ/GPTQ"] V3["部署:OpenAI 兼容 HTTP 服务器
支持动态批处理"] V4["并发:PagedAttention 显存分页
千级并发请求"] V5["优势:生产级吞吐
比 HF Transformers 高 14-24×"] V6["命令:vllm serve meta-llama/Meta-Llama-3-8B-Instruct"] end

生产部署建议:

  • GPU 资源充足 + 高并发:vLLM(首选)或 TensorRT-LLM。
  • Apple Silicon 集群:MLX / OMLX。
  • Agent / 多轮工具调用:SGLang(RadixAttention 复用 prefix 缓存)。
  • 边缘 / 离线 / 个人开发:Ollama(最快上手)。
  • HF 生态深度集成:TGI。

实际生产环境中常见组合:vLLM 做主推理 + Ollama 给开发本地调试。vLLM 0.4+ 已支持 Llama 3.1/3.2/3.3/4 全规格的 BF16、AWQ、GPTQ 量化,吞吐可达 H100 上 5000+ tokens/s/卡(8B 模型)。