【NLP】序列到序列(seq2seq)建模工具fairseq使用详解

文章目录

  • 一、fairseq简介
  • 二、安装方式
    • 2.1 pip安装
    • 2.2 源码安装
  • 三、fairseq命令工具
    • 3.1 fairseq-preprocess
    • 3.2 fairseq-train
    • 3.3 fairseq-generate
    • 3.4 fairseq-interactivate
    • 3.5 fairseq-score
    • 3.6 fairseq-eval-lm
  • 4. 常见报错
    • 报错1
  • 参考资料

一、fairseq简介

fairseq 是 Facebook AI Research Sequence-to-Sequence Toolkit 的缩写,是一款开源的神经机器翻译框架。它基于PyTorch开发,用于 训练和评估各种序列到序列(seq2seq)模型 ,广泛应用于自然语言处理(NLP)任务,如机器翻译、文本生成、语音识别等。它支持多种模型架构,包括但不限于 Transformer、LSTM 和 Convolutional models,并且具有高效的多GPU训练和分布式训练功能。

  • fairseq官方文档:https://fairseq.readthedocs.io/en/latest/#
  • Github源码:https://github.com/facebookresearch/fairseq

二、安装方式

2.1 pip安装

pip install fairseq

2.2 源码安装

pip方式的安装可能对应需要最新版的同学会有弊端(原因在于pip库相对于 Github源码库会有版本更替的延迟)。

因此,也可以直接基于git源码安装,命令如下:

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

注意:fairseq 需要匹配对应的 pytorch 及 cudatoolkit 版本!

三、fairseq命令工具

  • fairseq-preprocess:数据预处理,建词表,处理训练数据,保存成二进制文件
  • fairseq-train: 训练一个新的模型,可以选择1个或多个GPU。
  • fairseq-generate:inference部分,可以translate 预处理好的数据。
  • fairseq-interactive:infenrence部分,模型交互,如一个训练好的机器翻译模型,可以采用此命令实现交互翻译。
  • fairseq-score:计算BLEU值。
  • fairseq-eval-lm:模型评估。

3.1 fairseq-preprocess

参考:https://fairseq.readthedocs.io/en/latest/command_line_tools.html#fairseq-preprocess

(一)预处理参数
在这里插入图片描述

3.2 fairseq-train

参考:https://fairseq.readthedocs.io/en/latest/command_line_tools.html#fairseq-train

(一) 数据集加载
在这里插入图片描述

(二) 模型选择

--arch, -a
# fairseq中集成了大量的模型类型,只需按照自己的任务需求选择即可,也可以自己进行训练。

(三) 模型优化

在这里插入图片描述

(四) 使用示例

CUDA_VISIBLE_DEVICES=0 fairseq-train data-bin/iwslt14.tokenized.de-en \--optimizer nag \ --lr 0.25 \ --clip-norm 0.1 \ --dropout 0.2 \ --max-tokens 4000 \--arch fconv_iwslt_de_en \ --save-dir checkpoints/fconv

3.3 fairseq-generate

参考: https://fairseq.readthedocs.io/en/latest/command_line_tools.html#fairseq-generate

3.4 fairseq-interactivate

参考: https://fairseq.readthedocs.io/en/latest/command_line_tools.html#fairseq-interactive

3.5 fairseq-score

参考: https://fairseq.readthedocs.io/en/latest/command_line_tools.html#fairseq-score

3.6 fairseq-eval-lm

参考: https://fairseq.readthedocs.io/en/latest/command_line_tools.html#fairseq-eval-lm

4. 常见报错

报错1

  • 报错信息:
mm = mmap.mmap(fid.fileno(), bytes, access=acc, offset=start)
ValueError: cannot mmap an empty file
Exception ignored in: <bound method MMapIndexedDataset.__del__ of <fairseq.data.indexed_dataset.MMapIndexedDataset object at 0x7fb0772f1a90>>
  • 解决方式:安装apex
    参考:https://github.com/facebookresearch/fairseq/issues/3903
git clone https://github.com/NVIDIA/apex
cd apex
# if pip >= 23.1 
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings "--build-option=--cpp_ext" --config-settings "--build-option=--cuda_ext" ./
# otherwise
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --global-option="--cpp_ext" --global-option="--cuda_ext" ./

apex的安装可参考:https://blog.csdn.net/u012856866/article/details/144526882

参考资料

  • 实习日记(二):序列建模工具包——Fairseq
  • 使用fairseq从头开始训练一个中英神经机器翻译模型
  • 探索Facebook NLP框架Fairseq的强大功能
  • Fairseq 机器翻译全流程一文速通 (NMT, WMT, translation)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

108. 将有序数组转换为二叉搜索树(java)

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,…

flink集群搭建 详细教程

一、环境准备 1、准备三台服务器 三台服务器ip 115.120.227.194 jobmanger 123.60.154.232 taskmanger 36.111.173.249 taskmanger 2、给三台主机分别配置主机名 #第一台机器 hostnamectl set-hostname hadoop01#第二台机器 hostnamectl set-hostname hadoop02#第三台…

C# opencvsharp 流程化-脚本化-(2)ROI

ROI ROI也是经常需要使用的方法。特别是在图像编辑中。ROI又称感兴趣的区域&#xff0c;但是图像是矩阵是矩形的&#xff0c;感兴趣的是乱八七糟的&#xff0c;所以还有一个Mask需要了解一下的。 public class RoiStep : IImageProcessingStep{public ImageProcessingStepType…

修改vscode设置的原理

转载请标明出处&#xff1a;小帆的帆的专栏 修改vscode设置 首先需要理解的是&#xff0c;vscode的系统设置和插件设置都是通过settings.json文件管理的。 vscode中有三个Settings&#xff0c;三个Settings分别对应三个settings.json文件 Default Settings&#xff1a;默认…

【我的 PWN 学习手札】IO_FILE 之 stdin任意地址写

我们知道&#xff0c;stdin会往“缓冲区”先读入数据&#xff0c;如果我们劫持这个所谓“缓冲区”到其他地址呢&#xff1f;是否可以读入数据到任意地址&#xff1f;答案是肯定的。 注意&#xff01;代码中的“-------”分隔&#xff0c;是为了区分一条调用链上不同代码片段&am…

用C#(.NET8)开发一个NTP(SNTP)服务

完整源码&#xff0c;附工程下载&#xff0c;工程其实也就下面两个代码。 想在不能上网的服务器局域网中部署一个时间服务NTP&#xff0c;当然系统自带该服务&#xff0c;可以开启&#xff0c;本文只是分享一下该协议报文和能跑的源码。网上作为服务的源码不太常见&#xff0c;…

【UE5 C++课程系列笔记】09——多播委托的基本使用

目录 多播委托——申明委托 一、DECLARE_MULTICAST_DELEGATE 二、DECLARE_DYNAMIC_MULTICAST_DELEGATE 多播委托——绑定委托 一、Add 二、AddStatic 三、AddRaw 四、AddSP 五、AddUObject 六、Remove 七、RemoveAll 多播委托——执行 载荷数据 上一篇&#xff1a;…

Python 写个 《系统信息采集工具》为重装系统做准备。。。

图样&#xff1a; 原码&#xff1a; # 系统信息采集工具 # 2024-12-18 # 作者&#xff1a;Hoye # 版本&#xff1a;1.0 # 功能&#xff1a;采集系统信息并保存到文件 # 使用方法&#xff1a; # 1. 运行程序 # 2. 点击“采集系统信息”按钮 # 3. 等待信息采集完成 # 4. 选择保存…

Ubuntu搭建ES8集群+加密通讯+https访问

目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…

【Linux】磁盘空间莫名消失,找不到具体原因的思路

磁盘空间莫名消失&#xff0c;找不到具体原因的思路 先说下常见的几种原因&#xff1a; 1、删除的文件未释放空间 2、日志或过期文件未及时清理 3、inode导致 4、隐藏文件夹或者目录 6、磁盘碎片 最后一种单独介绍。 环境&#xff1a;情况是根分区&#xff08;/&#xf…

机动车油耗计算API集成指南

机动车油耗计算API集成指南 引言 在当今社会&#xff0c;随着机动车数量的持续增长和环保意识的不断增强&#xff0c;如何有效管理和降低车辆油耗成为了车主、车队管理者以及交通政策制定者共同关注的问题。为了帮助这些群体更好地理解和优化燃油消耗情况&#xff0c;本接口能…

Fiddle突然抓不到虚拟机的地址

Fiddle不抓虚拟机的地址了 查看是否更换了ip地址,我是因为换了网络 更换正确的ip地址

C语言基础(五)【控制语句与循环综合应用篇猜数字游戏】

文章目录 前言一、实现一个猜数字游戏二、游戏实现的步骤1. 随机数生成1.1 rand1.2 srand1.3 time1.4 设置随机数的范围 2. 菜单函数的实现 3. 游戏函数的实现 二、猜数字游戏的实现1. 不限制次数 2. 限制次数为 5 总结 前言 学习过前面有关控制语句跟循环的相关知识&#xf…

javac 编译java文件源码 怎么生成 ast语法树 步骤详解

在 javac 中&#xff0c;编译源代码并生成抽象语法树&#xff08;AST&#xff09;是一个多步骤的过程&#xff0c;涉及从源码解析到最终生成字节码。以下是详细步骤&#xff0c;描述了如何使用 javac 编译源码并生成 AST。 1. 准备源文件 javac 首先需要源文件。这些源文件是…

手游和应用出海资讯:怪物猎人AR手游累计总收入已超过2.5亿美元、SuperPlay获得迪士尼纸牌游戏发行许可

NetMarvel帮助游戏和应用广告主洞察全球市场、获取行业信息&#xff0c;以下为12月第一周资讯&#xff1a; ● 怪物猎人AR手游累计总收入已超过 2.5 亿美元 ● SuperPlay获得迪士尼纸牌游戏发行许可 ● 腾讯混元大模型上线文生视频能力 ● 网易天下事业部一拆三&#xff0c;蛋仔…

酷克数据携手江西移动入选“星河(Galaxy)”数据库潜力案例

2024 年 12 月 18 - 19 日&#xff0c;为推动打造行业交流平台&#xff0c;驱动产业创新共荣&#xff0c;大数据技术标准推进委员会以“数据重塑价值 智能链接未来”为主题&#xff0c;在北京召开为期两天的“2024 数据资产管理大会”。 在会上&#xff0c;第八届大数据“星河&…

Mysql语法之DQL查询的多行函数

Mysql的多行函数和分组 目录 Mysql的多行函数和分组多行函数概念常用的多行函数 数据分组概念语法where和having的区别 语句关键字及执行顺序语句关键字执行顺序 实际操作基本语句格式和多行操作筛选语句格式 多行函数 概念 不管函数处理多少条&#xff0c;只返回一条记录&…

Ubuntu22.04上安装esp-idf

一、安装准备# 建议使用Ubuntu 20.04 或 Ubuntu 22.04 操作系统 为了在 Ubuntu 22.04 中使用 esp-idf&#xff0c;需要安装一些依赖包 sudo apt-get install git wget flex bison gperf python3\python3-pip python3-venv cmake ninja-build ccache\libffi-dev libssl-dev dfu…

WPF 依赖属性和附加属性

除了普通的 CLR 属性&#xff0c; WPF 还有一套自己的属性系统。这个系统中的属性称为依赖属性。 1. 依赖属性 为啥叫依赖属性&#xff1f;不叫阿猫阿狗属性&#xff1f; 通常我们定义一个普通 CLR 属性&#xff0c;其实就是获取和设置一个私有字段的值。假设声明了 100 个 …

在linux系统的docker中安装GitLab

一、安装GitLab&#xff1a; 在安装了docker之后就是下载安装GitLab了&#xff0c;在linux系统中输入命令&#xff1a;docker search gitlab就可以看到很多项目&#xff0c;一般安装第一个&#xff0c;它是英文版的&#xff0c;如果英文不好可以安装twang2218/gitlab-ce-zh。 …