以牛客网《剑指Offer》题目为准,共66道
SSR搭建教程
随着服务器的入门门槛越来越低,使用自己的服务器搭建一个梯子或者放一些自己的网站(博客)也越来越简单。下面主要总结一下使用服务器搭建梯子的方法。
NLG 常用评价指标:BLEU、METEOR、ROUGE
PyTorch 使用 DistributedDataParallel 进行分布式训练教程
PyTorch 进行分布式训练,可以使用 nn.DataParallel
和 nn.parallel.DistributedDataParallel
两种方式嘛,但 DistributedDataParallel
拥有天然的优势,能够保证显存分配均衡,而且支持多机多卡分布式训练。
并行处理机制
DistributedDataParallel
每个进程对应一个独立的训练过程,与其他并行进程之间只进行少量的信息交换。
- 各进程的模型进行初始化时执行一次
broadcast
保证各进程模型初始参数一致; - 每个进程读取不同的数据进行前向传播,并计算得到
loss
和梯度; - 将梯度汇总并求平均,
broadcast
到其他进程; - 各个进程执行完整的反向传播更新参数。
由于各个进程模型初始化相同、执行相同的梯度更新,所以各个进程的模型参数永远是相同的。
ERNIE-GEN 原理解析
ERNIE-GEN 是面向生成任务的预训练-微调框架,首次在预训练阶段加入span-by-span 生成任务,让模型每次能够生成一个语义完整的片段。在预训练和微调中通过填充式生成机制和噪声感知机制来缓解曝光偏差问题。此外, ERNIE-GEN 采样多片段-多粒度目标文本采样策略, 增强源文本和目标文本的关联性,加强了编码器和解码器的交互。
论文链接:https://arxiv.org/abs/2001.11314
开源地址:https://github.com/PaddlePaddle/ERNIE/tree/repro/ernie-gen
Paddle 的数据读取
Paddle 在训练过程中评测模型
模型的测试评价与训练的 fluid.Program
不同。在测试评价中:
测试评价不进行反向传播,不优化更新参数。
测试评价执行的操作可以不同。
例如 BatchNorm 操作,在训练和测试时执行不同的算法。
测试评价模型与训练模型可以是完全不同的模型。
Paddle 的 LoDTensor
LoD (Level-of-Detail) Tensor 是 Paddle 的高级特性,是对 Tensor 的一种扩充。关于 LoDTensor 的官方介绍请见 LoDTensor 基本概念 和 LoDTensor Api。