fairseq fairseq Fairseq

fairseq Fairseq Facebook

2 分钟阅读

fairseq

Fairseq是一个由Facebook开发的序列建模工具包,旨在帮助研究人员和开发者训练自定义模型,用于翻译、摘要生成、语言建模以及其他文本生成任务。它实现了多种序列建模方法,包括卷积神经网络(CNN)、轻量和动态卷积模型、长短期记忆网络(LSTM)和自注意力变换器(Transformer)等。

使用场景
  1. 机器翻译
  • 支持多种语言间的机器翻译任务,提供预训练模型和适合多语言翻译的方案。
  1. 文本摘要
  • 可以训练模型从长文本中生成简洁的摘要,适用于新闻、科学文献等领域。
  1. 语言建模
  • 包括基于CNN和Transformer的语言模型,用于生成自然语言文本如对话、脚本等。
  1. 语音识别
  • 提供了如wav2vec等模型,适用于自监督学习的语音表示和无监督语音识别。
  1. 生成式任务
  • 支持各种生成文本的任务,如故事生成、对话生成等。
特性
  • 多GPU训练 : 支持单机多GPU或多机分布式训练。
  • 快速生成 : 实现了多种搜索算法,如束搜索、采样(包括top-k和top-p)等。
  • 梯度累积 : 允许在单个GPU上进行大批量训练。
  • 混合精度训练 : 使用混合精度训练加速训练速度并减少GPU内存消耗。
  • 可扩展性 : 用户可以轻松注册新的模型、损失函数、任务、优化器和学习率调度器。
  • 灵活的配置 : 基于Hydra的配置框架,支持代码、命令行和文件的混合配置。
  • 参数分片与CPU卸载 : 支持将参数和优化状态分片并卸载到CPU,适合大型模型训练。
安装

基本安装步骤如下:

git clone https://github.com/pytorch/fairseq cd fairseq pip install –editable ./

若需要更快的训练,可以安装NVIDIA的apex库:

git clone https://github.com/NVIDIA/apex cd apex pip install -v –no-cache-dir –global-option="–cpp_ext" –global-option="–cuda_ext"
–global-option="–deprecated_fused_adam" –global-option="–xentropy"
–global-option="–fast_multihead_attn" ./

社区与支持

Fairseq除了一些预训练模型外,还提供详细的文档和示例,帮助用户快速上手。有关完整的文档和更多示例,可访问Fairseq官方文档