deepseek(2)——deepseek 关键技术
1 Multi-Head Latent Attention (MLA)
MLA的核心在于通过低秩联合压缩来减少注意力键(keys)和值(values)在推理过程中的缓存,从而提高推理效率:
c t K V = W D K V h t c_t^{KV} = W^{DKV}h_t ctKV=WDKVht
[ k t , 1 C ; k t , 2 C ; ⋯ ; k t , n h C ] = k t C = W U K c t K V [k_{t, 1} ^{C}; k_{t, 2} ^{C}; \cdots; k_{t, n_h} ^{C}] = k_t^C = W^{UK}c^{KV}_t [kt,1C;kt,2C;⋯;kt,nhC]=ktC=WUKctKV
k t R = R o P E ( W K R h t ) k_t^R = RoPE(W^{KR}h_t) ktR=RoPE(WKRht)
h t , i = [ k t , i C ; k t R ] h_{t, i} = [k_{t, i} ^C; k_t^R] ht,i=[kt,iC;ktR]
[ v t , 1 C ; v t , 2 C ; ⋯ ; v t , n h C ] = v t c = W U V c t K V [v_{t, 1} ^{C}; v_{t, 2} ^{C}; \cdots; v_{t, n_h} ^{C}] = v_t^c = W^{UV}c_t^{KV} [vt,1C;vt,2C;⋯;vt,nhC]=vtc=WUVctKV
对于 query,也会做类似的处理:
c t Q = W D Q h t c_t^Q = W^{DQ}h_t ctQ=WDQht
$$
[q_{t, 1} ^C; q_{t, 2} ^C; \cdots; q_{t, n_h} ^C] = q_t^C = W{UQ}c_tQ
$$
[ q t , 1 R ; q t , 2 R ; ⋯ ; q t , n h R ] = q t R = R o P E ( W Q R c t Q ) [q_{t, 1} ^R; q_{t, 2} ^R; \cdots; q_{t, n_h} ^R] = q_t^R = RoPE(W^{QRc_t^Q}) [qt,1R;qt,2R;⋯;qt,nhR]=qtR=RoPE(WQRctQ)
q t , i = [ q t , i C ; q t , i R ] q_{t, i} = [q_{t, i}^C; q_{t, i}^R] qt,i=[qt,iC;qt,iR]
最终的注意力输出 u t u_t ut 是通过将 Query q t q_t qt 和 Key k t k_t kt 进行 softmax 归一化之后的点积,在乘以 Value v t v_t vt 得到:
O t i = ∑ j = 1 t S o f t m a x j ( q t , i T k j , i d h + d h R ) v j , i ′ C O_t^i = \sum _{j=1} ^{t} Softmax _j\left( \frac{q_{t, i}^T k_{j, i}}{\sqrt{d_h + d_h^R}} \right) v_{j, i^{'}} ^{C} Oti=j=1∑tSoftmaxj dh+dhRqt,iTkj,i vj,i′C
u t = W O [ O t , 1 ; O t , 2 ; ⋯ ; O t , n h ] u_t = W^O [O_{t, 1}; O_{t, 2}; \cdots; O_{t, n_h}] ut=WO[Ot,1;Ot,2;⋯;Ot,nh]
1.1 无辅助损失负载平衡的 DeepSeekMoE
在混合专家(MoE)模型中,专家负载的不平衡会导致路由崩溃或增加计算开销。传统的方法通常采用辅助损失来鼓励负载平衡,但过大的辅助损失会引入不可忽视的干扰梯度,从而损害模型性能。
为了避免在训练过程中产生不良梯度,DeepSeek 提出了一种无辅助损失的负载平衡策略(Loss-Free Balancing),通过动态调整每个专家的偏差来控制负载平衡,而不引入干扰梯度。
DeepSeekMoE 的基本流程:
h t ′ = u t + ∑ i = 1 N s F F N i ( s ) ( u t ) + ∑ i = 1 N r g i , t F F N i ( r ) ( u t ) h_t^{'} = u_t + \sum _{i=1} ^{N_s} {FFN _i ^{(s)}} (u_t) + \sum _{i=1} ^{N_r}g_{i, t} FFN _i ^{(r)} (u_t) ht′=ut+i=1∑NsFFNi(s)(ut)+i=1∑Nrgi,tFFNi(r)(ut)
g i , t = g i , t ′ ∑ j = 1 N r g j , t ′ g_{i, t} = \frac{g_{i, t}^{'}}{\sum _{j=1} ^{N_r} g_{j, t} ^{'}} gi,t=∑j=1Nrgj,t′gi,t′
g j , t ′ = { s i , t , s i , t ∈ T o p k ( s j , t ∣ 1 ≤ j ≤ N r , K r ) , 0 , o t h e r w i s e , g_{j, t} ^{'} = \begin{cases} s_{i, t}, & s_{i, t} \in Topk({s_{j, t} | 1 \leq j \leq N_r}, K_r), \\ 0, & otherwise, \end{cases} gj,t′={si,t,0,si,t∈Topk(sj,t∣1≤j≤Nr,Kr),otherwise,
s i , t = S i g m o i d ( u t T e i ) s_{i, t} = Sigmoid(u_t^T e_i) si,t=Sigmoid(utTei)
针对专家负载不均衡的问题,为每个专家引入了一个偏置项 b i b_i bi,并将其加到亲和力得分 s i , t s_{i,t} si,t 上:
g j , t ′ = { s i , t + b i , s i , t ∈ T o p k ( s j , t + b i ∣ 1 ≤ j ≤ N r , K r ) , 0 , o t h e r w i s e , g_{j, t} ^{'} = \begin{cases} s_{i, t} + b_i, & s_{i, t} \in Topk({s_{j, t} + b_i | 1 \leq j \leq N_r}, K_r), \\ 0, & otherwise, \end{cases} gj,t′={si,t+bi,0,si,t∈Topk(sj,t+bi∣1≤j≤Nr,Kr),otherwise,
偏置项仅用于路由。与FFN输出相乘的门控值仍然来源于原始得分 s i , t s_{i,t} si,t 。
在训练过程中,持续监控每个训练步骤中整个 batch 的专家负载。在每个步骤的末尾,如果相应的专家过载,将减少偏置项 b i b_i bi;如果相应的专家欠载,将增加偏置项 b i b_i bi。通过动态调整,DeepSeek-V3 在训练期间保持专家负载平衡,并比通过纯辅助损失鼓励负载平衡的模型实现了更好的性能。
1.2 互补序列级辅助损失
为了防止任何单个序列内的极端不平衡,还采用了互补序列级辅助损失。这种损失鼓励每个序列中的专家负载保持平衡。
L B a l = α ∑ i = 1 N r f i P i , \mathcal{L} _{Bal} = \alpha \sum _{i=1} ^{N_r}f_i P_i, LBal=αi=1∑NrfiPi,
f i = N r K r T ∑ t = 1 T 1 ( s i , t ∈ T o p k ( s j , t ∣ 1 ≤ j ≤ N r , K r ) ) , f_i = \frac{N_r}{K_r T} \sum _{t=1} ^T \mathcal{1} (s_{i, t} \in Topk({s_{j, t} | 1 \leq j \leq N_r}, K_r)), fi=KrTNrt=1∑T1(si,t∈Topk(sj,t∣1≤j≤Nr,Kr)),
s i , t ′ = s i , t ∑ j = 1 N r s j , t , s_{i, t} ^{'} = \frac{s_{i, t}}{\sum _{j=1} ^{N_r} s_{j, t}}, si,t′=∑j=1Nrsj,tsi,t,
P i = 1 T ∑ t = 1 T s i , t ′ P_i = \frac{1}{T} \sum _{t=1} ^T s_{i, t} ^{'} Pi=T1t=1∑Tsi,t′
其中 1 ( ⋅ ) \mathcal{1}(\cdot) 1(⋅) 标识指标函数。
1.3 节点限制路由
DeepSeek-V3 采用了一种受限的路由机制来限制训练过程中的通信成本。确保每个 token 最多被发送到 M 个节点,这些节点是根据每个节点上分布的专家的最高 T r T_r Tr 个亲和分数之和来选择的。
1.4 无 Token 丢弃
由于有效的负载平衡策略,DeepSeek-V3 在完整的训练过程中保持了良好的负载平衡。因此,在训练期间,DeepSeek-V3 不会丢弃任何 token。此外,还实施了特定的部署策略以确保推理时的负载平衡,所以 DeepSeek-V3 在推理期间也不会丢弃 token。
2 多 Token 预测(Multi-Token Prediction/MTP)
Multi-Token Prediction / MTP 实现使用 K 个顺序模块来预测 K 个额外的 Token。
第 i个 MTP 模块包括一个共享的特征层 E m b ( ⋅ ) Emb(·) Emb(⋅),一个共享的输出头 O u t H e a d ( ⋅ ) OutHead(·) OutHead(⋅),一个 Transformer 块 T R M i ( ⋅ ) TRM_i(·) TRMi(⋅),以及一个投影矩阵 W i ∈ R d × 2 d W_i \in R^{d×2d} Wi∈Rd×2d。对于第 i 个输入 T o k e n t i Tokent_i Tokenti,在第 i 个预测深度,首先结合第 (i-1) 深度的第 i 个 Token 的表示 h i − 1 ∈ R d h_{i-1} \in R^d hi−1∈Rd 和第 (i+1) 个 Token 的嵌入 d ( t i + 1 ) ∈ R d d(t_{i+1}) \in R^d d(ti+1)∈Rd,通过线性投影:
h i ′ k = M k [ R M S N o r m ( h i k − 1 ) ; R M S N o r m ( E m b ( t i + k ) ) ] h_i ^{'k} = M_k [RMSNorm(h_i ^{k-1}); RMSNorm(Emb(t_{i+k}))] hi′k=Mk[RMSNorm(hik−1);RMSNorm(Emb(ti+k))]
对于每个 MTP 模块,其嵌入层与主模型共享。结合后的 h i ′ h_{i} ^{'} hi′ 作为第 i 深度的 Transformer 块的输入,产生当前深度的输出表示 h i h_i hi:
h 1 : T − k k = T R M k ( h 1 : T − k ′ k ) h_{1 : T-k} ^ {k} = TRM _k (h_{1 : T-k} ^ {'k}) h1:T−kk=TRMk(h1:T−k′k)
其中 T 标识输入序列的长度,:
表示切片操作(包括左右边界)。
最后,以 h i h_i hi 为输入,共享的输出头将计算第 i 个额外预测 Token 的概率分布:
p i + k + 1 k = O u t H e a d ( h i k ) p _{i+k+1} ^k = OutHead(h_i ^k) pi+k+1k=OutHead(hik)
输出头 O u t H e a d ( ⋅ ) OutHead(·) OutHead(⋅) 将表示线性映射到logits
,然后应用 S o f t m a x ( ⋅ ) Softmax(·) Softmax(⋅)函数计算第 i 个额外 Token 的预测概率。同时,对于每个 MTP 模块,其输出头与主模型共享。
2.1 MTP 训练目标
计算一个交叉熵损失 L M T P k \mathcal{L}^k _{MTP} LMTPk:
L M T P k = C r o s s E n t r o p y ( p 2 + k : T + 1 k , t 2 + k : T + 1 ) = − 1 T ∑ i = 2 + k T + 1 log P i k [ t i ] \mathcal{L}^k _{MTP} = CrossEntropy(p_{2+k:T+1}^{k}, t_{2+k:T+1}) = -\frac{1}{T} \sum _{i=2+k} ^{T+1} \log P_{i} ^{k}[t_i] LMTPk=CrossEntropy(p2+k:T+1k,t2+k:T+1)=−T1i=2+k∑T+1logPik[ti]
其中 T 表示输入序列长度, t i t_i ti 表示第 i 个位置的 ground-truth Token, P i k [ t i ] P_{i} ^{k}[t_i] Pik[ti] 表示第 i 个 MTP 模块给出的 t i t_i ti 的相应预测概率。
最后,计算所有深度的 MTP 损失的平均值,并乘以一个权重因子 λ \lambda λ,得到整体 MTP 损失 L M T P \mathcal{L} _{MTP} LMTP,它作为 DeepSeek-V3 的训练目标:
L M T P = λ D ∑ k = 1 D L M T P k \mathcal{L} _{MTP} = \frac{\lambda}{D} \sum _{k=1} ^{D} \mathcal{L}^k _{MTP} LMTP=Dλk=1∑DLMTPk
2.2 推理中的 MTP
MTP 策略主要旨在提高主模型的性能,在推理过程中,可以直接丢弃 MTP 模块,主模型可以独立且正常地工作。
此外,还可以将这些 MTP 模块用于推理的 decoding,以进一步改善生成延迟。
3 deepseek 是如何生成思考过程的
3.1 基于规则的检查
对于数学问题:“2 + 3 * 4 等于多少?”
系统知道正确答案是 14。它将查看 DeepSeek V3(RL 代理)生成的输出,并专门检查 <answer>
标签内的内容。如果 <answer>
标签包含14
(或数字相同的内容),它会得到正奖励,比如说 +1。如果它错了,它会得到 0 奖励,甚至可能是负奖励。 --> (正确性检查)
3.2 格式化奖励
DeepSeek R1 Zero 还需要学习正确构建其推理,并且可以使用 <think>
和 <answer>
标签,正确设置格式的奖励较少。
检查模型输出是否正确地将推理过程包含在 <think> …</think>
中,并将最终答案包含在 <answer>… </answer>
中。
3.3 奖励训练模板
为了使奖励模型有效,研究人员设计了一个特定的训练模板。该模板充当蓝图,指导 DeepSeek-V3-Base 如何在强化学习过程中构建其响应。
原始模板:
A conversation between User and Assistant. The user asks a question, and
the Assistant solves it. The assistant first thinks about the reasoning
process in the mind and then provides the user with the answer. The reasoning
process and answer are enclosed within <think> </think> and <answer> </answer>
tags respectively, i.e., <think> reasoning process here </think>
<answer> answer here </answer>. User: {prompt}. Assistant:
这种结构化输出对于研究人员以后窥视模型的推理步骤非常重要。
训练 DeepSeek-R1-Zero 时,使用此模板为其提供提示。例如对于这里的数学问题,输入如下:
A conversation between User and Assistant. The user asks a question, and
the Assistant solves it. The assistant first thinks about the reasoning
process in the mind and then provides the user with the answer. The reasoning
process and answer are enclosed within <think> </think> and <answer> </answer>
tags respectively, i.e., <think> reasoning process here </think>
<answer> answer here </answer>. User: What is 2 + 3 * 4?. Assistant:
期望模型生成符合模板的输出:
<think>
Order of operations:
multiply before add. 3 * 4 = 12. 2 + 12 = 14
</think>
<answer>
14
</answer>
DeepSeek 团队有意保持这个模板简单并专注于结构,而不是告诉模型如何推理。
3.4 DeepSeek R1 Zero 的强化学习训练过程
第一步是使用旧策略(即强化学习更新之前的 DeepSeek-V3-Base 模型)生成多个可能的输出。在一次训练迭代中,假设 GRPO 采样一组 G = 4
个输出:
- o1:
<think>2 + 3 = 5, 5 * 4 = 20</think> <answer> 20</answer>
(运算顺序不正确 - o2:
<think>3 * 4 = 12, 2 + 12 = 14</think> <answer>14</answer>
(正确) - o3:
<answer>14</answer>
(正确,但缺少 标签) - o4:
<think>...一些胡言乱语的推理...</think> <answer> 7<answer>
(不正确且推理不佳)
每个输出将根据正确性和推理质量进行评估并分配奖励。
为了引导模型进行更好的推理,基于规则的奖励系统应运而生。每个输出都根据以下条件分配奖励:
- 准确度奖励:答案是否正确。
- 格式奖励:推理步骤是否使用 标签正确格式化。
奖励分配如下:
输出 | 准确率奖励 | 格式奖励 | 总奖励 |
---|---|---|---|
o1 | 0 | 0.1 | 0.1 |
o2 | 1 | 0.1 | 1.1 |
o3 | 1 | 0 | 1 |
o4 | 0 | 0.1 | 0.1 |
模型应该学会偏爱奖励更高的输出,同时降低生成不正确或不完整输出的概率。
为了确定每个输出对模型性能的改善或恶化程度,使用奖励值计算优势。优势有助于通过强化更好的输出来优化策略。计算平均第一个奖励:
M e a n R e w a r d = 0.1 + 1.1 + 1 + 0.1 4 = 0.575 Mean Reward = \frac{0.1 + 1.1 + 1 + 0.1}{4} = 0.575 MeanReward=40.1+1.1+1+0.1=0.575
标准差(近似值)= 0.5,现在计算每个输出的优势:
A i = r i − M e a n R e w a r d S t a n d a r d D e v i a t i o n A_i = \frac{r_i - Mean Reward}{Standard Deviation} Ai=StandardDeviationri−MeanReward
即:
A 1 = 0.1 − 0.575 0.5 ≈ − 0.95 A_1 = \frac{0.1 - 0.575}{0.5} \approx -0. 95 A1=0.50.1−0.575≈−0.95
A 2 = 1.1 − 0.575 0.5 ≈ 1.05 A_2 = \frac{1.1 - 0.575}{0.5} \approx 1.05 A2=0.51.1−0.575≈1.05
A 3 = 1 − 0.575 0.5 ≈ 0.85 A_3 = \frac{1 - 0.575}{0.5} \approx 0.85 A3=0.51−0.575≈0.85
A 4 = 0.1 − 0.575 0.5 ≈ − 0.95 A_4 = \frac{0.1 - 0.575}{0.5} \approx -0. 95 A4=0.50.1−0.575≈−0.95
输出 o2 和 o3 获得正优势,这意味着应该鼓励它们。输出 o1 和 o4 获得负优势,这意味着应该阻止它们。
然后,GRPO 使用计算出的优势来更新策略模型 (DeepSeek-V3-Base),以增加生成具有高优势的输出(如 o2 和 o3)的概率,并降低具有低优势或负优势的输出(如 o1 和 o4)的概率。
更新根据以下内容调整模型权重:
- 策略比率:在新策略与旧策略下生成输出的概率。
- 裁剪机制:防止过大的更新,这可能会破坏训练的稳定性。
- KL 发散惩罚:确保更新不会偏离原始模型太远。
这确保在下一次迭代中,模型更有可能生成正确的推理步骤,同时减少不正确或不完整的响应。
因此,RL 是一个迭代过程。使用不同的推理问题重复上述步骤数千次。每次迭代都会逐渐提高模型的能力:
- 执行正确的操作顺序
- 提供逻辑推理步骤
- 始终使用正确的格式
随着训练的深入,模型会从错误中吸取教训,在解决推理问题方面变得更加准确和有效。
4 由 deepseek R1 ZERO 到 deepseek R1
4.1 R1 Zero 的两个主要问题
- 标签内的推理过程难以阅读,使人类难以理解和分析
- 语言混合,当被问到多语言问题时,模型有时会在同一个回答中混合使用多种语言,导致输出不一致和混乱。
为了修复 R1 Zero 问题并真正让 DeepSeek 推理正确,研究人员进行了冷启动数据收集和监督微调。
4.1 冷启动数据
4.1.2 使用长 CoT 进行少量提示
他们为 DeepSeek-V3 Base 提供了一些问题示例以及非常详细的分步解决方案,称为思维链 (CoT)。这个想法是让模型通过示例学习并开始模仿这种分步推理风格。
对于示例问题 2 + 3 * 4
等于多少?,他们可能会显示如下提示:
Problem Examples with Solutions:Problem: What's the square root of 9 plus 5?
Solution: | special_token | First, find the square root of 9, which is 3.
Then, add 5 to 3. 3 + 5 equals 8. | special_token | Summary: The answer is 8.Problem: Train travels at 60 mph for 2 hours, how far?
Solution: | special_token | Use the formula: Distance = Speed times Time.
Speed is 60 mph, Time is 2 hours. Distance = 60 * 2 = 120 miles.
| special_token | Summary: Train travels 120 miles.Problem: What is 2 + 3 * 4?
Solution:
那些 | special_token |
东西只是将推理步骤与摘要分开的标记,使模型可以清楚地学习结构。
看到这些示例后,模型应该学会以类似的格式给出答案,例如 2 + 3 * 4
等于多少?
| special_token | Following order of operations (PEMDAS/BODMAS),
do multiplication before addition. So, first calculate 3 * 4 = 12.
Then, add 2 to 12. 2 + 12 = 14. | special_token | Summary: The answer is 14.
4.1.2 直接提示
他们收集数据的另一种方法是直接提示模型不仅解决问题,而且还要逐步明确地展示其推理,然后仔细检查其答案。这是为了促进更仔细和周到的问题解决。
对于 12 + 3 * 4
等于多少?,提示可能是:
Problem: Solve this, show reasoning step-by-step, and verify:
What is 2 + 3 * 4?
4.1.3 后处理细化
他们甚至使用了已经训练过的 R1 Zero 模型的输出。尽管 R1 Zero 存在问题,但它可以进行一些推理。因此,他们采用了 R1 Zero 的输出,并让人类标注者使其更清晰、更结构化,并纠正其中存在的错误。
例如,混乱的 R1 Zero 输出可能是:
<think> ummm... multiply 3 and 4... get 12... then add 2...</think>
<answer> 14 </answer>
然后人类会对其进行改进,使其更清晰、格式更好:
| special_token | Reasoning: To solve this, we use order of operations,
doing multiplication before addition.
Step 1: Multiply 3 by 4, which is 12.
Step 2: Add 2 to the result: 2 + 12 = 14.
| special_token | Summary: The answer is 14.
最终获得了非常好的冷启动数据:
- 高质量推理示例:每个示例都展示了良好的逐步推理。
- 一致、可读的格式: | special_token | 格式使所有内容统一且易于处理。
- 人工检查:他们确保过滤掉任何不好的例子,因此数据干净可靠。
获得此冷启动数据后,他们进行了监督微调 (SFT)。
4.2 监督微调
SFT 第 1 阶段的核心思想是使用监督学习来教 DeepSeek-V3-Base 如何产生高质量、结构化的推理输出。向模型展示了许多良好推理的例子,并要求它学习模仿这种风格。
对于 SFT,需要将冷启动数据格式化为输入-目标对。对于数据集中的每个推理问题,都会创建一个这样的对:
输入 = 提示或问题描述本身
User: What is 2 + 3 * 4? Assistant:
目标是希望模型学习生成的理想输出:
| special_token | According to the order of operations (PEMDAS/BODMAS) ...
Summary: The answer is 14.
微调过程从输入开始:
- 提示 + 目标推理,在此提供一个问题和一个结构化的推理示例。这会训练模型(DeepSeek-V3-Base 模型)以生成结构良好的响应。
- 在预测下一个标记中,模型会生成推理序列中的下一个单词。使用损失函数将其与比较目标标记(计算损失)中的实际下一个标记进行比较。损失越大,意味着预测距离正确标记越远。
- 在更新模型参数中,反向传播和优化器会调整模型的权重以改进其预测。这个过程循环往复,重复许多输入目标对,每次迭代逐渐提高模型结构化推理能力。
4.3 推理导向强化学习
前面说明了基于 deepseek V3 base 的 STF 训练,为了真正提高其推理能力,研究人员引入了推理导向强化学习。
这一阶段,依然使用相同的 GRPO 算法,但是奖励系统有所改变,添加了语言一致性奖励,来解决 R1 Zero 的语言混淆的问题。简单说就是使用英语问问题,期望得到的回答是英语的。
在计算 RL 阶段的总奖励时,会将语言一致性的奖励得分考虑在内,为语言一致性奖励分配的权重较小。
4.4 拒绝抽样
对于推理数据,DeepSeek 团队希望获得绝对最佳示例以进一步训练模型。为此,他们使用了一种称为拒绝抽样的技术。
为了改进推理数据,DeepSeek 使用了拒绝抽样。对于“2 + 3 * 4 等于多少?”,他们会从上一阶段模型生成许多输出。然后他们会评估每个输出的正确性(答案“14”)和推理的可读性。只有正确且推理充分的最佳输出才会被保留,而其他输出则被拒绝。对于复杂的推理,生成奖励模型用于判断推理质量。严格的过滤器会删除混合语言、漫无边际的推理或不相关的代码。此过程会产生约 600k 个高质量推理样本。
除了精炼推理数据外,他们还添加了非推理数据(约 20 万个样本),用于一般技能:写作、问答、翻译等,有时还会使用思维链来完成复杂任务。
最后,SFT 第 2 阶段使用下一个标记预测在组合数据集(精炼推理 + 非推理)上训练前一个模型检查点。此阶段使用来自拒绝采样的顶级示例进一步改进推理,并将模型推广到更广泛的任务,同时保持用户友好性。
4.5 适用于所有场景的 RL
奖励系统现在还考虑:
- 有用性,评估摘要(如果生成)是否提供了除答案之外的有用背景。
- 无害性,检查整个输出是否安全且无偏见。这些通常由根据人类偏好训练的单独奖励模型进行评估。
最终的奖励信号是准确度、有用性和无害性分数的加权组合。
现在,训练数据包括:
- 多样化组合,包括推理问题
- 一般 QA 提示
- 写作任务
- 偏好对,其中人类指出两个模型输出中的哪一个在有用性和无害性方面更好
5 模型蒸馏
在 DeepSeek 团队能够创建性能良好的 DeepSeek R1 后,他们进一步将更大的模型提炼为性能更高的小型模型,供社区使用,蒸馏过程的工作原理如下:
- 数据准备:收集 800k 个推理样本。
- DeepSeek-R1 输出:对于每个样本,教师模型(DeepSeek-R1)的输出用作学生模型的目标。
- 监督式微调 (SFT):学生模型(例如 Qwen-1.5B、Llama-14B)基于这 800k 个样本进行微调,以匹配 DeepSeek-R1 输出。
- 蒸馏模型:学生模型现在被精炼成更小的版本,但保留了 DeepSeek-R1 的大部分推理能力。
- 结果:获得更小、更快且具有良好推理能力的模型,随时可以部署。
相关文章:
deepseek(2)——deepseek 关键技术
1 Multi-Head Latent Attention (MLA) MLA的核心在于通过低秩联合压缩来减少注意力键(keys)和值(values)在推理过程中的缓存,从而提高推理效率: c t K V W D K V h t c_t^{KV} W^{DKV}h_t ctKVWDKVht…...
机器学习之条件概率
1. 引言 概率模型在机器学习中广泛应用于数据分析、模式识别和推理任务。本文将调研几种重要的概率模型,包括EM算法、MCMC、朴素贝叶斯、贝叶斯网络、概率图模型(CRF、HMM)以及最大熵模型,介绍其基本原理、算法流程、应用场景及优势。 2. EM算法(Expectation-Maximizati…...
第四天 文件操作(文本/CSV/JSON) - 异常处理机制 - 练习:日志文件分析器
Python文件操作与异常处理完全指南:从入门到实战 一、为什么要学习文件操作和异常处理? 在Python编程的初级阶段,我们主要处理内存中的数据。但当我们需要: 永久保存数据处理各种格式的数据文件分析系统日志构建数据处理管道 …...
多onnx模型导出合并调研(文本检测+方向分类+文本识别)
👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… 💫签名:面朝大海,春暖花开! 多onnx模型合并导出调研(文本检测+方向分类+文本识别) 引言1,尝试合并两个模型(文本方向分类+文本识别模型)(并行合并)(1)文本方向分类(2)文本识别模型(…...
linux scp复制多层级文件夹到另一服务器免密及脚本配置
文章目录 生成 SSH 密钥对将公钥复制到目标服务器验证免密登录scp 多级文件夹复制脚本 生成 SSH 密钥对 在本地机器上,使用 ssh-keygen 命令生成 SSH 密钥对。打开终端并执行以下命令: ssh-keygen -t rsa 按提示连续按回车键,默认会在 ~/.ss…...
Ubuntu 22.04 安装向日葵远程控制
1. 前言 由于公司客户的服务器用是图形化桌面,所以我们需要一个远程控制工具来控制服务器,目前市面上两款比较热门的控制软件就是ToDesk和向日葵了,我们今天就来学习一下向日葵的使用 2. 下载软件 前往向日葵官网下载 向日葵远程控制app官…...
Spring Boot(十七):集成和使用Redis
Redis(Remote Dictionary Server,远程字典服务器)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Spring Boot 中集成和使用Redis主要涉及以下几个步骤: 添加依赖 在项目的pom.xml文件中添加Redis的依赖。Spring Boot提供了对Redis的集…...
Redisson - 分布式锁和同步器
文章目录 锁(Lock)公平锁(Fair Lock)联锁(MultiLock)红锁(RedLock) 【已废弃】读写锁(ReadWriteLock)信号量(Semaphore)可过期许可信号…...
LabVIEW时间触发协议
介绍了基于LabVIEW开发的时间触发协议应用,通过实例解析了FlexRay总线的设计与优化。通过技术细节、系统构建和功能实现等方面,探讨了LabVIEW在现代工业通信系统中的应用效能,特别是在提高通信可靠性和实时性方面的贡献。 项目背景 在工…...
IDEA的使用
idea的介绍 IntelliJ IDEA 是由 JetBrains 公司开发的一款功能强大的集成开发环境(IDE),主要用于Java语言的开发,但同时也支持其他多种编程语言如Kotlin、Groovy、Scala等。它被广泛认为是专业软件开发者的首选工具之一ÿ…...
unity一个图片的物体,会有透明的效果
如图 想要去掉这个透明效果 选择一个高层级的layer即可。...
IP报文格式
IPv4 头部结构(共 20 字节,不含可选字段) 1. 版本(Version) 长度:4 比特 作用:标识 IP 协议版本(IPv4 值为 4,IPv6 值为 6)。 示例:0100&#x…...
2025最新-智慧小区物业管理系统
目录 1. 项目概述 2. 技术栈 3. 功能模块 3.1 管理员端 3.1.1 核心业务处理模块 3.1.2 基础信息模块 3.1.3 数据统计分析模块 3.2 业主端 5. 系统架构 5.1 前端架构 5.2 后端架构 5.3 数据交互流程 6. 部署说明 6.1 环境要求 6.2 部署步骤 7. 使用说明 7.1 管…...
sql结尾加刷题
找了一下mysql对extractvalue()、updatexml()函数的官方介绍https://dev.mysql.com/doc/refman/5.7/en/xml-functions.html#function_extractvalue ExtractValue(xml_frag, xpath_expr) 知识点 解释一下这两个参数xml_frag,是xml标记片段,第二个参数…...
UE4学习笔记 FPS游戏制作26 UE中的UI
文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式函数绑定属性绑定事件绑定 九宫格分割图片 几个概念 UMG:UE的UI编辑器 slate UI: UE的UI的编辑语言 创建一个UI蓝图 右键用…...
pnpm 依赖升级终极指南:从语义化版本控制到 Monorepo 全局更新的企业级实践
要使用 pnpm 更新所有依赖包,可以通过以下命令实现: 1. 更新所有依赖到符合语义化版本的范围 pnpm update该命令会根据 package.json 中定义的版本范围(如 ^1.0.0 或 ~2.3.4)更新依赖包到最新兼容版本,但不会突破版本…...
C++:类和对象(二)
目录 const成员函数 1. 基本语法 2. const 成员函数的作用 (1) 保证对象不被修改 (2) 提高代码安全性 (3) 支持 const 对象 3. 示例 (1) 基本用法 (2) const 对象只能调用 const 成员函数 (3) mutable 成员变量 4. const 成员函数的重载 初始化列表 基本语法 为什…...
【Django】教程-2-前端-目录结构介绍
【Django】教程-1-安装创建项目目录结构介绍 3. 前端文件配置 3.1 目录介绍 在app下创建static文件夹, 是根据setting中的配置来的 STATIC_URL ‘static/’ templates目录,编写HTML模板(含有模板语法,继承,{% static ‘xx’ …...
2025年渗透测试面试题总结-某快手-安全工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 快手-安全工程师 一、Linux提权技术:Dirty Cow漏洞深度解析 1.1 漏洞技术原理 1.2 漏洞影…...
数据结构之栈
目录 1 简介 2 栈的基本概念 3 代码实现 4 代码解析(部分) 4.1 初始化栈 4.2 入栈 4.3 出栈 4.4 只读获取栈顶元素(peek) 4.5 判断是否为空 4.6 获取栈大小 4.7 十进制转换为二进制 5 核心操作分析 6 总结 1 简介 栈…...
【AndroidRTC-10】webrtc是如何确定双端的编解码类型?
Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题:webrtc-android是如何确定编解码类型,如何调整视…...
深度求索(DeepSeek):以AI之力重塑医疗未来
目录 一、智能诊断:打破医疗认知的“分辨率极限” 二、药物研发:重构分子世界的“造物逻辑” 三、医疗资源重构:打造分级诊疗的“神经中枢” 四、健康管理:编织个体化医学的“防护网” 五、伦理与进化:构建医疗AI…...
【HTML 基础教程】HTML 属性
HTML 属性 属性是 HTML 元素提供的附加信息。 属性通常出现在 HTML 标签的开始标签中,用于定义元素的行为、样式、内容或其他特性。 属性总是以 name"value" 的形式写在标签内,name 是属性的名称,value 是属性的值。 HTML 属性 …...
macOS 制作dmg磁盘映像安装包
制作dmg磁盘影像安装包需要准备一下材料: 1. 导出的APP 2. 背景图片 3. 应用程序替身 前两种材料很容易得到。 下面介绍一下 应用程序替身制作过程: Finder —> 选中 应用程序 --> 找到顶部菜单栏中 的 前往 ----> 选择上层文件夹选中应用程…...
Appium中元素定位之一组元素定位API
应用场景 和定位一个元素相同,但如果想要批量的获取某个相同特征的元素,使用定位一组元素的方式更加方便 在 Appium 中定位一组元素的 API 与定位单个元素的 API 类似,但它们返回的是一个元素列表(List<MobileElement>&am…...
webstorm中element-ui标签无法跳转源码
原本用的webstorm2019,之前的项目开发时切实体验过跳转element-ui源码,觉得很香。 更新了webstorm至2024,居然不行了,能弹出来提示,但就是找不到定义。 不知道是不是2024版本的问题,node_moudles不管我是否手动添加exc…...
【蓝桥杯】算法笔记1
1.暴力枚举 给定一个正整数n,请找出所有满足a + b = n的整数对(a, b),其中a和b都是正整数,且a ≤ b。 输入格式:一个正整数n (1 ≤ n ≤ 10⁶) 输出格式:所有符合条件的(a, b)对,每行一对,按a的升序排列。如果没有符合条件的对,输出"No solution"。 问题分…...
Pytorch学习笔记(十一)Learning PyTorch - What is torch.nn really
这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 What is torch.nn really? 部分。主要是教你如何一步一步将最原始的代码进行重构至pytorch标准的代码,如果你已经熟悉了如何使用原始代码以及pytorch标准形式构建模型,可以跳过这一篇。 …...
OpenGL ES 2.0与OpenGL ES 3.1的区别
如果硬件支持且需要更高质量的图形效果,推荐3.1;如果兼容性和开发简便更重要,且效果需求不高,2.0更合适。不过现代车载系统可能越来越多支持3.x版本,所以可能倾向于使用3.1,但具体情况还需调查目标平台的硬…...
【Unity3D脚本与系统设计6】鼠标触摸超时待机实现
实现步骤 在Unity中实现一个功能,当鼠标或触摸超过一定时间没有操作时,自动返回待机界面。 检测输入 首先,我需要检测用户的输入,无论是鼠标还是触摸。Unity的Input系统可以检测到鼠标和触摸事件,比如Input.GetAxis…...
SpringMVC 入门教程
一、SpringMVC 简介 SpringMVC 是基于 MVC 设计模式的轻量级 Web 框架,核心功能包括: 请求分发:通过 DispatcherServlet 统一处理请求。注解驱动:使用 Controller、RequestMapping 简化开发。视图解析:支持 JSP、Thy…...
矿山自动化监测解决方案
1.行业现状 为贯彻落实《中共中央国务院关于推进安全生产领域改革发展的意见》《“十四五”矿山安全生产规划》(应急〔2022〕64号)、《国务院安委会办公室关于加强矿山安全生产工作的紧急通知》(安委办〔2021〕3号)等有关工作部署…...
el-table + el-pagination 前端实现分页操作
el-table el-pagination 前端实现分页操作 后端返回全部列表数据,前端进行分页操作 html代码 <div><el-table :data"tableData" border><el-table-column label"序号" type"index" width"50" /><el…...
NIO ByteBuffer 总结
目录 基本概念创建 ByteBuffer核心属性关键方法切换模式读写操作压缩数据 基本概念 java.nio.ByteBuffer 是 Java NIO 中一个核心类, 用于高效处理二进制数据的读写操作。应用于通道(Channel)的I/O操作。作用: 数据缓冲…...
华为hcia——Datacom实验指南——配置IPv4静态路由,默认路由和浮动静态路由
什么是IPv4 IPv4静态路由,是手动配置的,不会随着网络拓扑的变化而变化,所配置的路由信息也不会在网络中传播,所以它主要运用在小型网络或者作为动态路由的补充。 IPv4的配置 配置的命令很简单 IP route-static (目…...
Git入门——常用指令汇总
以下是一份精心整理的 Git常用指令速查表,基本覆盖日常开发使用场景,建议收藏备用👇 🔧 环境配置 指令作用git config --global user.name "你的名字"设置全局用户名git config --global user.email "你的邮箱&qu…...
深入解析 MyBatis-Plus 批量操作:原理、实现与性能优化
引言 在高并发、大数据量场景下,批量数据库操作是提升系统性能的核心手段之一。本文以 MyBatis-Plus 为例,深入剖析 批量更新 和 自定义批量插入 的实现原理,并结合实战代码与性能测试,揭示其在高性能场景下的应用价值。 批量更新:动态 SQL 的极致运用 原理与 SQL 生成…...
2025年成都市双流区农业科技试验示范基地建设方案申报条件材料和补贴程序、时间安排
成都市双流区2025年农业科技试验示范基地建设方案申报条件材料和补贴程序、时间安排如下,需要申报的可指导! 一、成都市双流区农业科技试验示范基地申报 (一)基地建设数量。2025年建设农业科技试验示范基地2个。 (二…...
8路CXP相机采集系统介绍
8xCXP相机采集系统介绍 目录 1 系统概述 4 2 硬件架构 5 2.1 FPGA处理单元 5 2.2 CXP接口层 6 2.3 CXP相机说明与使用要求 7 2.4 SSI控制器板 8 3 FPGA方案 9 3.1 FPGA实现 9 3.2 Block Design说明 10 4 软件方案 14 4.1 嵌入式层 14 4.2 上位机软件(C…...
vue2前端日志数据存储,推荐(IndexedDB)
前言:首先,我得回忆一下IndexedDB的基本概念和用法,确保自己理解正确。IndexedDB是一个浏览器内置的数据库,允许存储大量结构化数据,支持事务和索引查询,适合需要离线存储的应用场景。 接下来,用…...
onedav一为导航批量自动化导入网址(完整教程)
OneNav作为一个功能强大的导航工具,支持后台管理、加密链接、浏览器书签批量导入等功能,能够帮助用户轻松打造专属的导航页面。今天,我将为大家详细介绍如何实现OneNav导航站的批量自动化导入网址。 1、建立要批量导入的表格 格局需要创建表格,表格的要求是一定要有需要,…...
Ubuntu Linux安装PyQt5并配置Qt Designer
一 安装 PyQt5 借助 apt 包管理器来安装 PyQt5 及其相关的开发工具: sudo apt install python3-pyqt5 pyqt5-dev-tools 假如报错, You might want to run apt --fix-broken install to correct these. 直接执行: sudo apt --fix-…...
无人机螺旋桨平衡标准
螺旋桨平衡是确保无人机(UAV)平稳运行、可靠性和使用寿命的关键过程。螺旋桨的不平衡会导致振动、噪音,并加速关键部件的磨损,从而对飞行性能产生负面影响。 ISO 21940-11:2016标准为旋翼平衡提供了一个广泛引用的框架,定义了可接受的不平衡…...
基于MCP协议的多模态模型优化在医疗3D打印精密人工关节制造中的研究
一、引言 1.1 研究背景与意义 在全球人口老龄化趋势愈发明显的当下,诸如骨关节炎、类风湿性关节炎这类关节疾病的发病率不断攀升,进而使得人工关节置换手术的需求呈现出激增态势。人工关节置换手术作为治疗终末期关节疾病的有效手段,能够显著缓解患者疼痛,提升关节功能与生…...
ESLint报错:Could not find config file.
如果你的ESLint的版本大于 8,同时使用 .eslinrc.js 和 .eslintignore 作为配置文件,且目前用的是 VSCODE ,就有可能遇到报错: Could not find config file. 这个是因为 VSCode 中 ESLint 插件的配置 eslint.useFlatConfig 的问题…...
npm install 卡在创建项目:sill idealTree buildDeps
参考: https://blog.csdn.net/PengXing_Huang/article/details/136460133 或者再执行 npm install -g cnpm --registryhttps://registry.npm.taobao.org 或者换梯子...
drizzleDumper:基于内存搜索的Android脱壳工具
一、工具介绍 drizzleDumper 是一款基于内存搜索的 Android 脱壳工具,主要用于从加固的 Android 应用程序中提取原始的 DEX 文件。它通过分析应用程序运行时的内存,定位并提取被加固的 DEX 文件,从而帮助开发者、安全研究人员进行逆向工程和…...
信号处理中的窗
窗函数(Window Function)是一种在信号处理中常用的工具,用于对信号进行截断和加权处理。它在频谱分析、滤波器设计以及信号处理的许多其他领域中都发挥着重要作用。 窗函数的基本概念 窗函数本质上是一个有限长度的序列,通常用于…...
FFmpeg学习:AVPacket结构体
1.AVPacket结构体 FFmpeg中用于封装一帧的编码数据的结构体(比如H264视频帧或者AAC音频帧),主要用于编解码过程中数据的载体,使用av_read_frame()读取获得,或者使用avcodec_send_packet()进行解码,与AVFra…...
34.[前端开发-JavaScript基础]Day11-王者轮播图-书籍购物车-BOM对象-JSON
1 认识BOM操作 认识BOM 2 全局对象window window对象 window对象的作用 window常见的属性 window常见的方法 3 事件对象event window常见的事件 4 location、history location对象常见的属性 Location对象常见的方法 URLSearchParams history对象常见属性和方法 5 navigato…...