丰言的博客

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。

对日常Pytorch的使用进行归纳和总结。

阅读全文 »

Pytorch中AveragedModel实现了随机权重平均 (SWA) 和指数移动平均 (EMA) 的平均模型。

官方文档

SWA示例

在下面的示例中,swa_model是累积权重平均值的 SWA 模型。我们总共训练模型 300 个时期,并切换到 SWA 学习率计划,并开始在第 160 个时期收集参数的 SWA 平均值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
loader, optimizer, model, loss_fn = ...
swa_model = torch.optim.swa_utils.AveragedModel(model)
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=300)
swa_start = 160
swa_scheduler = SWALR(optimizer, swa_lr=0.05)

for epoch in range(300):
for input, target in loader:
optimizer.zero_grad()
loss_fn(model(input), target).backward()
optimizer.step()
if epoch > swa_start:
swa_model.update_parameters(model)
swa_scheduler.step()
else:
scheduler.step()

# Update bn statistics for the swa_model at the end
torch.optim.swa_utils.update_bn(loader, swa_model)
# Use swa_model to make predictions on test data
preds = swa_model(test_input)

EMA示例

在下面的示例中,ema_model是 EMA 模型,它累积权重的指数衰减平均值,衰减率为 0.999。我们总共训练模型 300 个时期,并立即开始收集 EMA 平均值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
loader, optimizer, model, loss_fn = ...
ema_model = torch.optim.swa_utils.AveragedModel(model, multi_avg_fn=torch.optim.swa_utils.get_ema_multi_avg_fn(0.999))

for epoch in range(300):
for input, target in loader:
optimizer.zero_grad()
loss_fn(model(input), target).backward()
optimizer.step()
ema_model.update_parameters(model)

# Update bn statistics for the ema_model at the end
torch.optim.swa_utils.update_bn(loader, ema_model)
# Use ema_model to make predictions on test data
preds = ema_model(test_input)

在DeepSeek的模型层面,有两个值得关注的点:

  • Multi-head Latent Attention(MLA):这个结构对传统Transformer中的MHA结构进行改进,主要目标有两个:
    1. 降低推理时KV Cache的存储开销;
    2. 缓解GQA和MQA等方法导致的模型性能损耗。
  • DeepSeekMoE:这部分结构和DeepSeek-MoE 中保持一致,两个核心思想是:
    1. Fine-grained Expert Segmentation,即将FFN中间层隐层维度拆分成多个更小的维度;
    2. Shared Expert Isolation,设置共享专家捕获常识性知识。

这篇文章先来说第一个部分, MLA(Multi-head Latent Attention)算法的原理。

阅读全文 »

通过Python传文件。

1
2
3
4
5
6
7
8
# 服务端
# Python2
python -m SimpleHTTPServer 39090
# Python3
python -m http.server 39090

# 客户端获取文件方法
wget {容器IP}:39090/filename

ModernBERT 是一个全新的模型系列,在速度和准确性两个维度上全面超越了 BERT 及其后继模型。这个新模型整合了近年来大语言模型(LLMs)研究中的数十项技术进展,并将这些创新应用到 BERT 风格的模型中。

论文地址:

论文代码:

阅读全文 »