Llama 面试题
10 道题- 分类
- AI 与大模型
- 子分类
- llm
- 题目数
- 10 道
1 Llama 系列模型从 Llama 1 到 Llama 3 经历了哪些关键架构演进?
答案:
Llama 系列在保留 Decoder-only Transformer 基础架构的前提下,三代模型逐步引入主流高效结构:
| 代际 | 位置编码 | 注意力机制 | 激活函数 | 归一化 | 上下文长度 | 词表 |
|---|---|---|---|---|---|---|
| Llama 1 (2023.2) | RoPE | MHA(标准多头) | SwiGLU | Pre-RMSNorm | 2K | 32K BPE |
| Llama 2 (2023.7) | RoPE | MHA + GQA(70B) | SwiGLU | Pre-RMSNorm | 4K | 32K |
| Llama 3 (2024.4) | RoPE | GQA(全规格) | SwiGLU | Pre-RMSNorm | 8K(训练),可外推 | 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_theta、rope_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_gate 与 W_up 形状相同(d_model × d_ff),W_down 为 d_ff × d_model。
相比 ReLU/GELU 的优势:
| 激活函数 | 参数量 | 表达形式 | 关键特性 |
|---|---|---|---|
| ReLU | 2 × d × d_ff | max(0, xW1) W2 | 简单、稀疏激活 |
| GELU | 2 × d × d_ff | xΦ(x) W2 | 平滑、概率解释 |
| SwiGLU | 3 × 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 2 | Llama 3 |
|---|---|---|
| 发布时间 | 2023.7 | 2024.4 |
| 模型规格 | 7B / 13B / 70B | 8B / 70B / 405B |
| 上下文长度 | 4K | 8K(可外推至 128K) |
| 词表 | 32K SentencePiece | 128K TikToken |
| 注意力 | MHA(7B/13B)+ GQA(70B 8组) | GQA(全规格,8B/70B 8组,405B 16组) |
| 训练数据 | 2T tokens | 15.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 Head | KV Head | KV Cache 显存(Llama 8B) | 质量 |
|---|---|---|---|---|
| MHA | 32 | 32 | 100% | 最优 |
| GQA-8 | 32 | 4 | 12.5% | 接近 MHA |
| MQA | 32 | 1 | 3.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 - Python | Python 专项 | 16K | Python 代码专项优化 |
| 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 70B | 29.3% |
| Code Llama 34B | 48.8% |
| Code Llama 34B - Instruct | 40.4% |
| GPT-3.5 | 48.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 70B | Llama 4 Scout | Llama 4 Maverick |
|---|---|---|---|
| 架构 | Dense | MoE(17B 总参 / 16 专家 / 每次激活 17B) | MoE(128 专家 / 每次激活 17B) |
| 总参数 | 70B | 109B | 400B |
| 激活参数 | 70B | 17B | 17B |
| 上下文 | 128K | 10M 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 Alpaca | 2023.3 | LLaMA 7B | Self-Instruct SFT | 52K GPT-3.5 生成指令 | 极低成本($600 复现) | 中文弱、依赖 GPT-3.5 API |
| Vicuna | 2023.3 | LLaMA 13B | ShareGPT SFT | 70K ChatGPT 真实对话 | 多轮对话 + 长上下文 | 训练时长短,复杂推理弱 |
| WizardLM | 2023.4 | LLaMA 7B | Evol-Instruct SFT | 52K 进化指令 | 指令复杂度迭代进化 | 需 GPT-4 评估成本高 |
| Koala | 2023.4 | LLaMA 13B | 混合数据 SFT | 学术 + ShareGPT + Alpaca | 学术对话 + 蒸馏数据 | 规模小,评测未公开 |
| Chinese-LLaMA | 2023.4 | LLaMA 7B/13B | 中文词表扩充 + SFT | 中文指令集 | 中文词表扩展 + LoRA | 词表扩展引入训练不稳定 |
共同技术路径:
- 数据蒸馏:用 GPT-3.5/GPT-4 生成或真实 ShareGPT 对话作为教师信号。
- LoRA / 全参数 SFT:Alpaca 用全参数,Vicuna 用 LoRA 起步后转全参数。
- 评测基准: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) |
| TGI | Hugging Face 官方 | Rust + 优化 kernels | HF 生态集成 | 中高并发 |
| SGLang | 结构化生成 | RadixAttention | Agent / 多轮复杂调用 | 高并发 + 低延迟 |
| TensorRT-LLM | NVIDIA 极致性能 | TensorRT | GPU 集群生产 | 最高吞吐 |
| MLX / OMLX | Apple 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 模型)。