MCPcopy Create free account

hub / github.com/ckd0817/LLM-Interview-Code / functions

Functions41 in github.com/ckd0817/LLM-Interview-Code

↓ 3 callersFunctionlog_softmax
数值稳定的 Log Softmax 函数 使用 Log-Sum-Exp 技巧保证数值稳定性。 公式: log_softmax(x) = x - log(sum(exp(x))) Args: logits: 未归一化的对数概率 [batch_siz
loss/EntropyLoss.py:44
↓ 2 callersMethodrepeat_kv
复制 KV 头以匹配 Q 头数 将 num_kv_heads 个头复制扩展为 num_heads 个头。 Args: x: 输入张量 [batch_size, num_kv_heads, seq_len, head_dim
attention/GroupQueryAttention.py:60
↓ 1 callersMethod_norm
RMS 归一化核心计算 Args: x: 输入张量 [batch_size, seq_len, model_dim] Returns: 归一化后的张量 [batch_size, seq_len, m
normalization/RMSNorm.py:33
↓ 1 callersFunctionplot_ppo_clip
绘制 PPO 截断函数的可视化图表 展示 PPO 在不同优势值下如何限制策略更新的幅度。
loss/PPOLoss.py:55
↓ 1 callersMethodprecompute_freqs
预计算旋转位置编码的频率 Args: head_dim: 编码维度 max_seq_len: 最大序列长度 theta: 旋转基数 Returns:
position/RotaryEmbedding.py:38
↓ 1 callersMethodreset_parameters
初始化 LoRA 权重 - A 使用 Kaiming 均匀初始化 - B 初始化为零,确保初始状态时 LoRA 输出为零
peft/LoRALinear.py:61
↓ 1 callersFunctionsoftmax
数值稳定的 Softmax 函数 通过减去最大值来避免数值溢出问题。 Args: logits: 未归一化的对数概率 [batch_size, num_classes] Returns: softmax: 归一化的概率分布 [b
loss/EntropyLoss.py:15
FunctionKL_divergence
KL 散度(Kullback-Leibler Divergence) 衡量两个概率分布 P 和 Q 之间的差异。 公式: D_KL(P || Q) = sum(P(x) * (log P(x) - log Q(x))) 常用于知识蒸馏、DPO 训练等场景。
loss/EntropyLoss.py:103
Method__init__
(self, model_dim, num_heads, num_kv_heads, dropout_p=0.0)
attention/GroupQueryAttention.py:36
Method__init__
(self, dropout_p=0.0)
attention/ScaledDotProductAttention.py:25
Method__init__
(self, model_dim, num_heads, dropout_p=0.0)
attention/MultiHeadAttention.py:28
Method__init__
(self, model_dim, num_heads, head_dim, latent_dim, rope_dim, dropout_p=0.0)
attention/MultiLatentAttention.py:36
Method__init__
(self, head_dim, max_seq_len=2048, theta=10000.0)
position/RotaryEmbedding.py:27
Method__init__
(self, model_dim, eps=1e-8)
normalization/RMSNorm.py:28
Method__init__
(self, model_dim, eps=1e-5)
normalization/LayerNorm.py:25
Method__init__
(self, model_dim, num_experts, top_k)
ffn/MoE.py:31
Method__init__
(self, model_dim, intermediate_dim)
ffn/FFN.py:25
Method__init__
(self, model_dim, intermediate_dim)
ffn/SwiGLUFFN.py:29
Method__init__
(self, ignore_index=-100)
loss/PretainLoss.py:24
Method__init__
(self)
loss/SFTLoss.py:24
Method__init__
(self, in_features, out_features, rank=8, alpha=1.0, dropout=0.0)
peft/LoRALinear.py:36
Functioncompute_grpo_advantages
计算 GRPO 中的优势函数 GRPO 去掉了 Critic 网络,使用组内归一化代替传统的优势估计。 对于每个问题生成一组回答,然后计算组内的相对优势。 公式: A = (R - mean(R)) / (std(R) + eps) Args:
loss/GRPOLoss.py:13
Functioncompute_kl_penalty
计算 KL 散度惩罚项 使用 Schulman 估计器计算 KL 散度,该方法具有较低的方差。 公式: KL(P || Q) ≈ E_P[exp(log Q - log P) - (log Q - log P) - 1] 推导: KL(P || Q)
loss/GRPOLoss.py:88
Functioncross_entropy_loss
交叉熵损失函数 用于分类任务的标准损失函数。 公式: CE = -log(p[y]),其中 y 是真实类别 Args: logits: 模型输出的未归一化对数概率 [batch_size, num_classes] targets
loss/EntropyLoss.py:74
Functiondpo_loss
计算 DPO 损失 DPO 的核心思想是:将奖励函数参数化为策略和参考策略的对数比率, 然后直接在偏好数据上优化这个隐式奖励。 公式: L_DPO = -E[log sigmoid(β * (log(π_θ(y_w|x) / π_ref(y_w|x)) - lo
loss/DPOLoss.py:14
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, model_dim] mask: 注意力掩码 [batch_size, 1, seq_len, seq_len] 或 [1, 1, s
attention/GroupQueryAttention.py:92
Methodforward
前向传播 Args: q: 查询张量 [batch_size, num_heads, seq_len_q, head_dim] k: 键张量 [batch_size, num_heads, seq_len_k, he
attention/ScaledDotProductAttention.py:29
Methodforward
前向传播 Args: x_query: 查询输入 [batch_size, seq_len_q, model_dim] x_context: 上下文输入(用于生成 K 和 V)[batch_size, seq_len
attention/MultiHeadAttention.py:47
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, model_dim] mask: 注意力掩码,用于屏蔽某些位置 [batch_size, num_heads, seq_len, se
attention/MultiLatentAttention.py:62
Methodforward
对查询和键应用旋转位置编码 Args: xq: 查询张量 [batch_size, seq_len, num_heads, head_dim] xk: 键张量 [batch_size, seq_len, num_he
position/RotaryEmbedding.py:69
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, model_dim] Returns: 归一化后的张量 [batch_size, seq_len, model_di
normalization/RMSNorm.py:54
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, model_dim] Returns: 归一化后的张量 [batch_size, seq_len, model_di
normalization/LayerNorm.py:31
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, model_dim] Returns: output: 专家混合输出 [batch_size, seq_len, m
ffn/MoE.py:50
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, model_dim] Returns: 输出张量 [batch_size, seq_len, model_dim]
ffn/FFN.py:38
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, model_dim] Returns: 输出张量 [batch_size, seq_len, model_dim]
ffn/SwiGLUFFN.py:43
Methodforward
前向传播 Args: logits: 模型输出的未归一化对数概率 [batch_size, seq_len, vocab_size] labels: 真实词元索引 [batch_size, seq_len]
loss/PretainLoss.py:28
Methodforward
前向传播 Args: logits: 模型输出的未归一化对数概率 [batch_size, seq_len, vocab_size] labels: 真实词元索引 [batch_size, seq_len]
loss/SFTLoss.py:27
Methodforward
前向传播 Args: x: 输入张量 [batch_size, seq_len, in_features] Returns: 输出张量 [batch_size, seq_len, out_featu
peft/LoRALinear.py:74
Functiongrpo_loss
计算 GRPO 损失 GRPO 的损失函数与 PPO 类似,但通常包含显式的 KL 散度惩罚项。 公式: L = E[min(r_t * A_t, clip(r_t) * A_t)] + β * KL(π || π_ref) Args: old_
loss/GRPOLoss.py:43
Functionppo_clip_loss
计算 PPO 截断损失 PPO 通过截断重要性采样比率来限制策略更新的幅度: L_CLIP = E[min(r_t * A_t, clip(r_t, 1-ε, 1+ε) * A_t)] 其中 r_t = π_θ(a_t|s_t) / π_θ_old(a_t|s_
loss/PPOLoss.py:15
Methodrotate_half
将张量分成两半并旋转 Args: x: 输入张量 [..., head_dim] Returns: 旋转后的张量 [..., head_dim]
position/RotaryEmbedding.py:88