最近在学习与使用Fairseq框架时,发现关于Fairseq框架的资料着实比较少,且资料略微有些晦涩难懂,所以就想用源码结合实例,用最直接的方式介绍关于Fairseq的使用,希望能对刚入门的同学有一些小小的帮助😁
目前也有其他一些NLP框架,比如Huggingface、Allennlp、Texar等。在实际编码过程中,也需要简单了解其他框架实现方式,方便移植到我们自己的项目中来。
本文使用fairseq版本为0.9.0,主要以在SAMSum上进行BART fine-tune为实例。
本系列大致包含以下几篇文章:
(一)Fairseq 安装与使用
(二)Fairseq 预处理
(三)Fairseq 模型
(四)Fairseq 任务
(五)Fairseq 评价指标
(六)Fairseq 训练
(七)Fairseq 推断
Fairseq 简介
Fairseq主要用于翻译、摘要、语言建模以及其他文本生成任务,可以很方便地训练我们自己的模型。更新速度快,且使用人数多,开源代码也相对较多,方便我们学习。
Fairseq 安装
一般来说,涉及到修改模型的话,会选择进行本地安装:
git clone https://github.com/pytorch/fairseq
cd fairseq
pip install --editable ./
直接clone项目的话,会下载最新的版本。如果我们需要其他历史版本,则可以选择从release中下载相应版本。但实际上由于迭代更新较快,即使同一版本也可能会有一些差别,且在release版本中也可能出现之前版本中未出现的问题,这里就需要多去查询相关issue。
如果需要加速训练,这里需要安装apex(如果是在conda虚拟环境中安装,则需要cuda版本与cudatoolkit版本一致):
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" ./
但实际上,我一直没有使用上述install命令安装成功过😅,均是采用了python setup.py install --cuda_ext --cpp_ext
,或回退到历史版本(适用pytorch1.7及以下版本),git checkout f3a960f80244cf9e80558ab30f7f7e8cbf03c0a0
,才最终安装成功。
Fairseq 使用
本地安装之后,一般采用两种方式进行开发。一是直接在fairseq项目中修改、添加模块;二是在自定义文件夹中添加文件,并使用--user-dir引用。
下一篇文章(二)Fairseq 预处理,主要介绍fairseq对文本进行BPE分词以及生成fairseq训练时需要的文件。