想象一下:有位米其林三星总厨「Gem」,掌管着一家超大餐厅(云端数据中心),麾下的 Gemini 系列大菜享誉全球。但总厨有个梦想——让街边小店、家庭厨房也能端出高级料理。于是他把毕生绝学浓缩成一块块「高汤精华」,让一群天资聪颖的小徒弟快速吸收。这群徒弟,就是 Google 开源的轻量语言模型家族 Gemma。徒弟们身材不同、锅具各异,从 2B 到 27B 多种规格,个个身怀绝技。到了 Gemma-2 这一代,总厨又传授了三招杀手锏:用「高汤蒸馏」传承核心厨艺(知识蒸馏)、用「近看食材+偶尔环顾后厨」的刀法处理长订单(Local-Global Sliding Window 注意力)、给调味料设定上限防止翻车(Logit Soft Capping)。最后,再根据客人的真实反馈反复调整菜谱(RLHF 对齐)。如今这些轻量小厨已经走进手机、笔记本甚至离线设备,让普通人也能尝到星级味道。这篇内容,就用这条「师徒传承」的主线,把 Gemma/Gemma-2 的开源小语言模型生态完整讲给你听。

岗位关联

从 Gemma 家族你能看到「强模型蒸馏小模型→小模型跑端侧」的完整工业化路径,学会它,意味着你可以在预算有限、隐私敏感的真实项目中独立完成模型的选型、微调与部署,这是端侧 AI 时代 AI 工程师的核心竞争力。

目录
  1. 可视化演示
  2. 家族全貌:总厨与他的徒弟们
  3. 知识蒸馏:喝了总厨的高汤
  4. 注意力创新:近看食材,偶尔环顾后厨
  5. 稳定性优化:调味要有上限
  6. 人类对齐:让客人说了算
  7. 端侧生态:小厨房的大舞台
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示Gemma/Gemma-2的核心机制,通过源头/管道/节点/终端四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Gemma/Gemma-2:Gemm Gemma系列定位与多规格架构 Gemma-2的知识蒸馏训练策 核心机制可视化 Gemma/Gemma-2整体架构与关键组件

家族全貌:总厨与他的徒弟们

总厨 Gem 的后厨里,锅具从小到大排成一排:小奶锅适合煮单人份,汤锅适合家庭聚餐,大炒锅则能应付宴席。为了让不同规模的餐厅都能用上自己的厨艺,Gem 挑选了一批徒弟,从身材小巧的 2B、7B,到膀大腰圆的 9B、27B,各有所长。Gemma 家族的诞生,正是基于 Gemini 系列的研究成果——不是把 Gemini 的模型直接「减肥」,而是以 Gemini 为师、从头训练出一批全新的轻量级选手。

Gemma 一词源自拉丁语「gemma」,意为「宝石」。Google 希望这批开源的小语言模型像宝石一样,小而璀璨,任何人都能拿去做二次开发。与闭源的 Gemini 不同,Gemma 采用开放许可发布,权重公开可下载,支持多种主流框架。开发者可以把它接入自己的应用,甚至基于它微调出专属模型,再部署到手机、笔电等端侧设备上。

不过,用模型之前得先掂量掂量「记忆体量」。一个语言模型在内存里占多大地方,其实和它有多少参数、每个参数用多少字节存储直接相关:

回到后厨:选锅要看灶台,选模型要看设备。2B 的小奶锅适合手机,9B 的汤锅适合笔记本,27B 的大炒锅则要有强劲的桌面工作站。先算清楚内存账,再挑合身的徒弟,是 Gemma 家族落地的第一步。

Mmem=P×q\displaystyle M_{mem} = P \times q
  1. 参数总数 P模型里所有可学习的权重个数,就像菜谱里所有的原料条目。Gemma-2B 就有约 20 亿个参数。
    P=2×109\displaystyle P = 2 \times 10^9
  2. 单参数字节数 q每个参数用几个字节表示。常用 fp16 半精度是 2 字节,int8 量化后只要 1 字节,int4 则压缩到 0.5 字节。
    q=2  (fp16)\displaystyle q = 2 \; \text{(fp16)}
  3. 总内存 M两者相乘,得到权重大小。2B 参数、fp16 精度,大约需要 4GB 内存——就像一口锅能装多少汤,由锅的大小和汤的浓度共同决定。
    Mmem=2×109×2=4×109  字节≈4GB\displaystyle M_{mem} = 2 \times 10^9 \times 2 = 4 \times 10^9 \; \text{字节} \approx 4\text{GB}

知识蒸馏:喝了总厨的高汤

总厨 Gem 发现,光让徒弟们旁观自己颠勺炒菜,进步太慢。于是他发明了一种速成法:把几十年的厨艺精华熬成一小块浓缩高汤,徒弟喝下去,立刻领悟其中奥妙。在深度学习里,这招叫知识蒸馏——让一个强大的教师模型(Gemini)把「思考过程」以软标签的形式教给一个小学生模型(Gemma)。

教师模型在预测时,输出的不只是「对的答案」,还有每个候选答案的概率分布。比如面对「猫是____」这个句子,教师会给出「动物 80%、宠物 10%、食物 5%」这样的软分布。学生不仅学标准答案,更学教师的「犹豫程度」——这种柔软的分布里藏着教师对语言世界的细腻理解。Gemma-2 的 9B 模型,正是从更大的 27B 教师模型蒸馏而来,蒸馏出来的 9B 在多个基准上甚至反超了同体量的其他开源模型。

蒸馏的损失函数由两部分组成:一部分要求学生答对标准答案(交叉熵),另一部分要求学生模仿教师的软分布(KL 散度),两者按比例加权:

徒弟喝了高汤后,训练成本大幅下降——不用从零摸索,也不需要像教大模型那样喂天文数字般的语料。Gemma-2 用更少的算力,就练出了远超同规模的模型,这正是「站在巨人肩膀上」的威力。

LKD=α LCE(y,ps)+β KL(pt ∥ ps)\displaystyle L_{KD} = \alpha \, L_{CE}(y, p^{s}) + \beta \, \mathrm{KL}(p^{t} \, \| \, p^{s})
  1. 交叉熵项 L_CE衡量学生预测与真实答案的差距。它像「标准答案对错分」,答对了加分,答错了扣分。
    LCE(y,ps)=−∑iyilog⁡pis\displaystyle L_{CE}(y, p^{s}) = -\sum_{i} y_i \log p^{s}_i
  2. 教师软标签 p^t教师的输出除以温度系数后取 softmax,温度越高,分布越「柔和」,就像高汤兑水越稀释,味道越清淡。
    pit=exp⁡(zit/τ)∑jexp⁡(zjt/τ)\displaystyle p^{t}_i = \frac{\exp(z^{t}_i / \tau)}{\sum_j \exp(z^{t}_j / \tau)}
  3. KL 散度项衡量两个分布的距离,学生分布与教师分布越接近,这一项越小。它像「模仿分」,学得像,分数就高。
    KL(pt∥ps)=∑ipitlog⁡pitpis\displaystyle \mathrm{KL}(p^{t} \| p^{s}) = \sum_i p^{t}_i \log \frac{p^{t}_i}{p^{s}_i}
  4. 加权组合α 和 β 控制「对错分」和「模仿分」的权重。总厨既要求徒弟答对题,也要求徒弟继承自己的风格,两者缺一不可。
    LKD=α⋅LCE+β⋅KL(pt∥ps)\displaystyle L_{KD} = \alpha \cdot L_{CE} + \beta \cdot \mathrm{KL}(p^{t} \| p^{s})

注意力创新:近看食材,偶尔环顾后厨

总厨做菜时有个习惯:绝大部分时间,他只盯着手边那一小块台面——眼前的葱姜蒜、正在锅里翻腾的食材。但他每隔一阵,都会抬头环顾整个备菜间,确认冷藏柜里还有什么存货、烤箱里的菜烤得如何了。这种「近看为主、远眺为辅」的注意力分配,正是 Gemma-2 处理长文本的秘密武器。

标准 Transformer 的全局注意力,让每个词都能「看见」句子里所有其他词。这就像让厨师每炒一个菜都要环顾整个厨房一周,菜多了还行,一旦句子长达几千词,计算量会随长度平方爆炸。Gemma-2 采用了局部滑动窗口注意力:每个词只和它附近固定数量的词互动,比如只看前后 512 个词——只关心手边的食材。同时,模型每隔几层就插入一层全局注意力,抬头看看整篇文章的全局脉络。

注意力机制的数学核心是「按相关度加权求和」:把每个词变成查询 Q、键 K、值 V 三个向量,用 Q 和 K 的点积衡量词与词的相关度,再归一化成权重,最后加权求和得到新表示。滑动窗口的加入,则是在相关度矩阵上加一个掩码 M,把窗口之外的词「屏蔽」掉:

靠着「近看为主、远眺为辅」的交替排列,Gemma-2 处理长文本时既保持了全局理解力,又把注意力计算成本大幅压低。这就好比总厨既不会错过锅里的菜,也不会忘记烤箱里的肉,还能在有限的人力下同时照看十桌客人。

Attn(Q,K,V)=softmax(QK⊤dk+M)V\displaystyle \mathrm{Attn}(Q,K,V) = \mathrm{softmax}\left( \frac{QK^{\top}}{\sqrt{d_k}} + M \right) V
  1. 查询与键的点积 QK^T计算每个词与其他词的相关度得分。味道相近的食材(语义相关的词)得分高,就像酱油和生抽放一起很和谐。
    QK⊤∈Rn×n\displaystyle QK^{\top} \in \mathbb{R}^{n \times n}
  2. 缩放因子 1/√d_k防止点积值过大导致 softmax 梯度消失。它像给调味料定个基准量,避免某一味盖过所有味道。
    1dk\displaystyle \frac{1}{\sqrt{d_k}}
  3. 掩码矩阵 M窗口之外的词对应的位置设为负无穷,经过 softmax 后权重变成 0。这就是「不让厨师分心去看台面之外的东西」。
    Mij={0j∈[i−w,i]−∞otherwise\displaystyle M_{ij} = \begin{cases} 0 & j \in [i-w, i] \\ -\infty & \text{otherwise} \end{cases}
  4. 加权求和 V把窗口中保留词的 Value 按注意力权重加权平均,得到融合上下文的新表示。
    Vnew=∑jsoftmax(QK⊤dk+M)ijVj\displaystyle V_{new} = \sum_j \mathrm{softmax}\left( \frac{QK^{\top}}{\sqrt{d_k}} + M \right)_{ij} V_j

稳定性优化:调味要有上限

再厉害的厨师,也有失手的时候。总厨年轻时有一次做鱼汤,手一抖盐罐子全倒进去了,整锅汤报废。后来他订了一条铁律:每次调味前,先尝尝,超过上限的咸味一律「压下来」。这个「封顶」的思路,对应 Gemma-2 中的 Logit Soft Capping。

在模型训练中,logit 是模型输出层未归一化的原始得分。极端情况下,某些 logit 值会变得非常大,就像那锅过咸的鱼汤——数值溢出、梯度爆炸,训练直接崩溃。Logit Soft Capping 的做法是:把 logit 先除以一个上限值 c,经过双曲正切函数 tanh 压缩到 (-1, 1) 区间,再乘以 c 放大回去。这样无论输入多大,输出都被温柔地限制在 [-c, c] 之内:

有了这道调味上限,训练过程中的数值变得可控,梯度不再暴涨暴跌,模型收敛更平稳。在 Gemma-2 中,Logit Soft Capping 同时用在注意力得分和最终输出 logit 上——既保证注意力分布不发散,也保证最终预测不失控。总厨的那锅鱼汤,从此再没翻车过。

z^=c⋅tanh⁡(zc)\displaystyle \hat{z} = c \cdot \tanh\left( \frac{z}{c} \right)
  1. 输入缩放 z/c先把原始 logit 按上限 c 归一化。c 通常取 30 左右,像定好盐罐的最高刻度。
    z′=zc\displaystyle z' = \frac{z}{c}
  2. tanh 压缩双曲正切函数把任意实数映射到 (-1, 1) 之间。它的特性是:输入越小越接近线性,输入越大越趋于饱和——小咸淡正常调味,大咸淡硬压回来。
    tanh⁡(z′)∈(−1,1)\displaystyle \tanh(z') \in (-1, 1)
  3. 恢复幅度乘以 c 让输出回到和 logit 相近的量级,保证模型表达能力不掉线。
    z^=c⋅tanh⁡(z′)\displaystyle \hat{z} = c \cdot \tanh(z')
  4. 极限行为当 z 很大时,tanh 趋近于 1,输出趋近于 c。这就是「封顶」——咸味再冲,也不会超过上限。
    lim⁡z→+∞c⋅tanh⁡(z/c)=c,lim⁡z→−∞c⋅tanh⁡(z/c)=−c\displaystyle \lim_{z \to +\infty} c \cdot \tanh(z/c) = c, \quad \lim_{z \to -\infty} c \cdot \tanh(z/c) = -c

人类对齐:让客人说了算

菜谱再完美,也得客人点头说好吃才算数。总厨带徒弟有个「毕业考核」:每道菜先试营业,让真实客人试吃打分,徒弟根据反馈调整配方。这套「以人为师」的流程,在 AI 里叫RLHF——基于人类反馈的强化学习对齐。

具体分三步。第一步,收集人类对模型输出的打分(比如「这段回答有帮助吗」),训练一个奖励模型,它就像一个经验丰富的品鉴师,能自动给新菜品打分。第二步,让待训练的策略模型生成回答,由奖励模型打分。第三步,用强化学习优化策略,让模型更倾向于输出高分回答。Gemma 系列正是在预训练之后,经历多轮 RLHF 对齐,才变得听话、安全、贴合人类偏好,而不是一个只会「掉书袋」的技术狂。

但这里有个隐患:如果模型只想着讨好奖励模型,可能钻空子说出一些语法正确但内容荒谬的话。所以,目标函数里要加一个KL 惩罚项,约束策略模型不要偏离最初的参考模型太远——这就像总厨规定:徒弟可以按客人反馈微调口味,但川菜不能改成甜品,底线不能丢。最终优化目标如下:

经过 RLHF 对齐的 Gemma,回答更有礼貌、更拒绝有害请求、更贴合人类的使用习惯。就像毕业考核通过的徒弟,既能拿手好菜赢得回头客,也知道什么食材绝不能碰——安全与美味,缺一不可。

R(x,y)=rθ(x,y)−β KL(πθ(y∣x) ∥ πref(y∣x))\displaystyle R(x, y) = r_{\theta}(x, y) - \beta \, \mathrm{KL}\big( \pi_{\theta}(y | x) \, \| \, \pi_{\mathrm{ref}}(y | x) \big)
  1. 奖励打分 r_θ奖励模型给出的分数,衡量回答 y 在上下文 x 下有多讨客人喜欢。
    rθ(x,y)∈R\displaystyle r_{\theta}(x, y) \in \mathbb{R}
  2. 参考策略 π_ref对齐训练前的原始模型分布,相当于总厨原汁原味的「老菜谱」。
    πref(y∣x)\displaystyle \pi_{\mathrm{ref}}(y | x)
  3. KL 偏离惩罚当前策略与参考策略的 KL 散度。偏离越远,惩罚越大,防止模型为了高分而彻底改变本性。
    KL(πθ∥πref)=∑yπθ(y∣x)log⁡πθ(y∣x)πref(y∣x)\displaystyle \mathrm{KL}\big( \pi_{\theta} \| \pi_{\mathrm{ref}} \big) = \sum_y \pi_{\theta}(y|x) \log \frac{\pi_{\theta}(y|x)}{\pi_{\mathrm{ref}}(y|x)}
  4. 平衡系数 β控制「讨好客人」和「守住底线」的权重。β 太小,模型可能胡言乱语;β 太大,模型又学不到新偏好。
    max⁡θ  Ex,y∼πθ[rθ(x,y)−β KL(πθ∥πref)]\displaystyle \max_{\theta} \; \mathbb{E}_{x, y \sim \pi_{\theta}} \big[ r_{\theta}(x,y) - \beta \, \mathrm{KL}\big( \pi_{\theta} \| \pi_{\mathrm{ref}} \big) \big]

端侧生态:小厨房的大舞台

徒弟们学成出师,最终要奔赴的是千家万户的小厨房——手机、笔记本电脑、智能音箱、车载系统。这些小厨房的灶台(内存)很小,电源(算力)有限,怎么让总厨的菜谱在小厨房里照样施展?答案是:把菜谱缩印成小卡片。

模型量化就是「缩印」的核心手段。之前提到,fp16 精度下 2B 模型约需 4GB 内存,而换成 int4 量化后,同样 2B 模型仅需约 1GB——恰好能塞进现代手机的运行内存。量化的思路极其朴素:把连续的权重值舍入到离散的整数刻度上,如同把菜谱里的「盐少许」变成「盐 3 克」,牺牲一点精度,换来体积骤减:

量化之外,Gemma 生态还配套了内存复用、算子融合、缓存优化等手段,加上 Keras、JAX、PyTorch、Ollama 等框架的全面支持,开发者可以像搭积木一样把模型塞进各种端侧设备。在同等参数规模下,Gemma-2 在多项基准测试中与 Llama-3-8B、Mistral-7B 等同类开源模型正面交锋,表现名列前茅——小厨房做出的菜,照样敢端上大席。

w^=round(w−zs)⋅s+z,s=max⁡(w)−min⁡(w)2b−1\displaystyle \hat{w} = \mathrm{round}\left( \frac{w - z}{s} \right) \cdot s + z, \qquad s = \frac{\max(w) - \min(w)}{2^{b} - 1}
  1. 量化步长 s把权重的取值范围均匀切成 2^b 份,b 是量化位数。int4 就是 16 份,int8 就是 256 份——像把一勺盐平分成 16 个小格。
    s=wmax⁡−wmin⁡2b−1\displaystyle s = \frac{w_{\max} - w_{\min}}{2^{b} - 1}
  2. 零点 z原始权重的最小值映射到量化空间的哪个整数,保证零点不漂移。
    z=wmin⁡\displaystyle z = w_{\min}
  3. 四舍五入 round把连续权重映射到最近的整数刻度,这是信息压缩发生的时刻,精度损失也源于此。
    wq=round(w−zs)\displaystyle w_q = \mathrm{round}\left( \frac{w - z}{s} \right)
  4. 反量化还原乘回步长、加回零点,得到近似原始权重的值,用于推理计算。
    w^=wq⋅s+z\displaystyle \hat{w} = w_q \cdot s + z

AI 应用场景

手机离线智能助理

阶段:端侧推理部署

解决的问题:传统云端 AI 助理依赖网络,断网即瘫痪,且对话记录上传云端有隐私风险。采用 Gemma-2B 量化后直接部署在手机本地,推理不联网、数据不出设备,响应速度反而更快。

具体案例:某手机厂商在旗舰机型中内置 2B 的 Gemma-2 量化模型,支持离线语音摘要、日程提取、短信润色。用户在飞行模式下也能调用助理,敏感对话全部在本机 NPU 上完成,时延低于 500 毫秒。

企业私有化文档问答

阶段:微调与推理

解决的问题:企业知识库涉及商业机密,不能调用公有大模型 API。传统关键词检索答非所问。用 Gemma-7B 做检索增强生成(RAG),配合企业内部文档向量库,模型只在本机 GPU 服务器上运行。

具体案例:一家律师事务所部署了 Gemma-2-7B 作为本地问答引擎,对三千份合同做语义检索与要点归纳。经过少量法律问答数据的指令微调后,检索命中率和答案准确率均超过此前使用的闭源 API 方案,且数据零外泄。

离线翻译与教育终端

阶段:模型压缩与端侧部署

解决的问题:偏远地区网络不稳定,学生无法访问在线翻译和教育资源。传统规则翻译生硬。Gemma-2-2B 经量化后部署在低成本教育平板中,提供离线中英互译、作文批改、口语纠错。

具体案例:某公益项目向山区学校发放内置 Gemma-2 离线模型的平板电脑。学生在无网环境下完成英语作文后,模型即时给出语法修正和改写建议,推理全程本地运行,设备成本控制在千元以内。

Python 演示

python39 行
import math  def softmax(logits):    m = max(logits)    exps = [math.exp(v - m) for v in logits]    total = sum(exps)    return [e / total for e in exps]  def logit_soft_cap(logits, c=30.0):    return [c * math.tanh(v / c) for v in logits]  def kl_divergence(p, q):    return sum(pi * math.log(pi / qi + 1e-9) for pi, qi in zip(p, q))  def distillation_loss(student_logits, teacher_logits, label, alpha=0.5, beta=0.5, c=30.0, tau=2.0):    t_soft = softmax([v / tau for v in logit_soft_cap(teacher_logits, c)])    s_soft = softmax([v / tau for v in student_logits])    ce = -math.log(softmax(student_logits)[label] + 1e-9)    kd = kl_divergence(t_soft, s_soft)    return alpha * ce + beta * kd  def estimate_memory_gb(num_params, bytes_per_param):    return num_params * bytes_per_param / (1024 ** 3)  if __name__ == "__main__":    student_logits = [2.3, 0.7, 0.2]    teacher_logits = [18.0, 9.0, 3.0]    loss = distillation_loss(student_logits, teacher_logits, label=0)    print("student probs:", [round(x, 4) for x in softmax(student_logits)])    print("capped teacher probs:", [round(x, 4) for x in softmax(logit_soft_cap(teacher_logits, 8.0))])    print("distillation loss:", round(loss, 4))    print("2B fp16 memory:", round(estimate_memory_gb(2e9, 2), 2), "GB")    print("2B int4 memory:", round(estimate_memory_gb(2e9, 0.5), 2), "GB")
目的:用纯 Python 复现 Gemma-2 训练与部署中的三个关键组件——Logit Soft Capping、知识蒸馏损失和参数量内存估算,让你直观看到小模型「学得快、用得省」的来源。
  1. def logit_soft_cap(logits, c=30.0)对应正文的调味上限公式,把极端 logit 压回 [-c, c],防止训练数值爆炸。
  2. t_soft = softmax([v / tau for v in logit_soft_cap(teacher_logits, c)])教师 logit 先封顶再除以温度软化,得到富含「犹豫程度」的软标签。
  3. kd = kl_divergence(t_soft, s_soft)计算学生与教师分布的距离,也就是「模仿分」。
  4. return alpha * ce + beta * kd标准答案分与模仿分按比例相加,组成完整的蒸馏损失。
  5. estimate_memory_gb(2e9, 2)2B 参数、fp16 精度约 4GB;换成 int4 后约 1GB,解释了为何能跑进手机。

常见误区

误区「Gemma 既然基于 Gemini,那肯定是从大模型上裁剪、压缩得到的,反正都是 Gemini 的子集。」

正解完全不是。Gemma 不是剪枝产物,而是使用 Gemini 模型作为教师,通过知识蒸馏从零训练出来的独立模型。剪枝是「削掉菜里不用的边角料」,蒸馏则是「把高汤精华浓缩后让新徒弟重新做一道菜」。Gemma 拥有自己的参数分布和训练轨迹,只是「神韵」上继承了 Gemini。

为何常见:Gemma 官方宣传「基于 Gemini 研究」,大众很自然地把「基于」理解成「裁剪自」,忽略了蒸馏这一核心训练范式的存在。

误区「27B 肯定比 7B 强,7B 肯定比 2B 强,小模型就是大模型的廉价替代品,不值得认真对待。」

正解参数规模不是唯一决定因素。经过知识蒸馏的 Gemma-2-9B,在多项基准上反超了同级别的其他开源 7B/8B 模型;而 2B 模型在特定任务(摘要、分类、简单问答)上,经过良好微调后完全够用。而且小模型延迟低、可离线、成本廉,在许多场景下「够好」比「最好」更有价值。

为何常见:人们习惯用参数量直接排名,忽略了训练质量、数据质量和蒸馏技术对模型能力的巨大提升。

误区「全局注意力能看到所有词,信息最全,效果肯定最好,滑动窗口只是节省算力的妥协。」

正解全局注意力计算量随序列长度平方增长,长文本下内存和耗时都难以承受。Gemma-2 用局部滑动窗口加周期性全局注意力的交替设计,实现了效率与效果的双赢——就像厨师一直盯着手边食材,但每隔几道菜抬头看看全局,比每时每刻环顾整个厨房更高效。

为何常见:大家熟悉标准 Transformer 的全局注意力,容易把「看得多」等同于「看得好」,忽略了计算代价和信息冗余问题。

误区「Logit Soft Capping 是不是用来禁止模型说脏话、过滤敏感词的?给 logit 设上限就等于给内容设红线。」

正解完全跑偏了。Logit Soft Capping 是数值稳定技术,目的是防止训练和推理时 logit 值过大导致梯度爆炸或数值溢出,跟内容安全没有关系。内容安全靠的是 RLHF 对齐、安全指令微调和分类器过滤。前者是「控制咸淡防止翻车」,后者是「哪些食材不许下锅」。

为何常见:「Capping」一词容易让人联想到「审查」「限制」,而它实际作用的对象是训练数值,不是语义内容。

误区「Gemma 都开源了,那我可以随便商用,改个名卖钱都行。」

正解Gemma 采用的自定义许可与纯 Apache 2.0 有区别,官方明确禁止某些受限用途,并对商用场景有条款约束。开源代表「权重公开、可二次开发」,不必然代表「无任何限制」。部署前务必阅读许可证原文,就像借了总厨的菜谱开店,得先看看是不是允许你挂牌营业。

为何常见:开源社区中 Apache/MIT 协议深入人心,很多人想当然地把所有开源模型都等同于「零限制」。

面试题

Q1. Gemma 系列模型的技术源头是?

单选题 · easy

  • A.Gemini 模型研究← 正确答案
  • B.GPT-4 模型研究
  • C.LLaMA 模型研究
  • D.BERT 模型研究

答案:A。Gemma 是 Google 基于自家 Gemini 研究成果开源的轻量模型家族,如同徒弟师承总厨 Gem。GPT-4 来自 OpenAI,LLaMA 来自 Meta,BERT 是 Google 早期模型但并非 Gemma 的源头。

Q2. Gemma-2B 在 fp16 精度下,权重约需多少内存?

单选题 · easy

  • A.约需要 4GB 内存← 正确答案
  • B.约需要 40GB 内存
  • C.约需要 0.4GB 内存
  • D.约需要 400MB 内存

答案:A。内存 = 参数量 × 单参数字节数。20 亿参数 × 2 字节(fp16)≈ 40 亿字节 ≈ 4GB。这跟「锅的容量 = 锅数 × 单锅大小」是一个道理。

Q3. 知识蒸馏损失函数通常包含哪些项?

多选题 · easy

  • A.交叉熵损失← 正确答案
  • B.教师软标签的 KL 散度← 正确答案
  • C.梯度裁剪项
  • D.学习率调度项

答案:AB。蒸馏损失 = α × 交叉熵(标准答案分)+ β × KL 散度(模仿教师分布分)。梯度裁剪和学习率调度是训练工程手段,不属于损失函数的组成部分。

Q4. 知识蒸馏中 KL 散度项的主要作用是?

单选题 · mid

  • A.匹配教师的软标签分布← 正确答案
  • B.减少模型的参数量
  • C.加快数据加载速度
  • D.压缩模型的存储空间

答案:A。KL 散度衡量学生输出分布与教师软标签分布的差距,让学生「模仿教师的犹豫与风格」。参数压缩是量化的事,数据加速是工程优化的事,都与 KL 项无关。

Q5. 局部滑动窗口注意力的主要优势是?

单选题 · mid

  • A.降低长序列的计算量← 正确答案
  • B.提升模型的参数量
  • C.省去位置编码的引入
  • D.消除激活函数的依赖

答案:A。每个词只与窗口内的词交互,计算量随序列长度线性增长,而非全局注意力的平方增长。它并不减少参数、不替代位置编码,也不消除激活函数。

Q6. 关于 Gemma-2 的局部-全局注意力,下列说法正确的是?

多选题 · mid

  • A.局部层使用滑动窗口关注邻近词元← 正确答案
  • B.局部层能有效降低长文本计算成本← 正确答案
  • C.模型完全放弃了对全局信息的利用
  • D.局部层与全局层采用交替排列← 正确答案

答案:ABD。Gemma-2 的每几层局部注意力之间会插入一层全局注意力,并未放弃全局信息。局部窗口管「近处食材」,全局层负责「环顾后厨」,两者交替分工。

Q7. Logit Soft Capping 使用的函数形式是?

单选题 · mid

  • A.c 乘以 tanh(z/c)← 正确答案
  • B.直接截断 z 的值
  • C.sigmoid(z) 乘以 c
  • D.z 平方后再开根号

答案:A。c·tanh(z/c) 把 logit 平滑压缩到 [-c, c],既封住极端值又不破坏正常梯度。直接截断会让梯度断崖,sigmoid 会改变分布形态,平方开根号反而放大波动。

Q8. RLHF 中奖励模型的作用是?

单选题 · mid

  • A.给模型输出打质量分← 正确答案
  • B.扩大模型参数量
  • C.加速数据加载进程
  • D.裁剪语料词汇表

答案:A。奖励模型是「品鉴师」,根据人类偏好给输出打分,打分结果用于指导策略模型优化。它不改变参数规模、不参与数据 IO,也不管词汇表。

Q9. RLHF 目标函数中加入 KL 惩罚项的目的是?

单选题 · hard

  • A.防止策略偏离参考模型太远← 正确答案
  • B.提升奖励模型的预测准确率
  • C.降低推理时的内存占用
  • D.加快注意力机制的运算速度

答案:A。KL 惩罚约束策略模型不要为了高分而彻底偏离原始参考模型,守住「本性底线」。奖励模型准确率靠数据与训练提升,内存与速度属于部署优化,与目标函数无关。

Q10. 将 Gemma-2B 的权重量化为 int4 后,权重约占多少内存?

单选题 · extreme

  • A.约需要 1GB 内存← 正确答案
  • B.约需要 4GB 内存
  • C.约需要 8GB 内存
  • D.约需要 16GB 内存

答案:A。int4 每参数 0.5 字节,20 亿 × 0.5 字节 = 10 亿字节 ≈ 1GB。量化把「高汤浓缩成小卡片」,同样 2B 的锅,从 fp16 的 4GB 压到 1GB,才能装进手机的小抽屉里。