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

news2024/12/21 7:00:06

文章目录

  • 一、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.coloradmin.cn/o/2263129.html

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

相关文章

28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强

A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法&#xff1a;无模型水下图像增强方法&#xff1a;基于深度学习的水下图像增强方法&#xff1a; 论文方法概述像素分布…

ArkTs组件的学习

一. AlphabetIndexer 可以与容器组件联动用于按逻辑结构快速定位容器显示区域的组件 参数名类型必填说明arrayValueArray<string>是字母索引字符串数组&#xff0c;不可设置为空selectednumber是初始选中项索引值若超出索引值范围则取默认值0 class Lxr{tImg:Resource…

Python读取Excel批量写入到PPT生成词卡

一、问题的提出 有网友想把Excel表中的三列数据&#xff0c;分别是&#xff1a;单词、音标和释义分别写入到PPT当中&#xff0c;每一张PPT写一个单词的内容。这种批量操作是python的强项&#xff0c;尤其是在办公领域&#xff0c;它能较好地解放双手&#xff0c;读取Excel表后…

百度面试手撕 go context channel部分学习

题目 手撕 对无序的切片查询指定数 使用context进行子协程的销毁 并且进行超时处理。 全局变量定义 var (startLoc int64(0) // --- 未处理切片数据起始位置endLoc int64(0) // --- 切片数据右边界 避免越界offset int64(0) // --- 根据切片和协程数量 在主线程 动态设…

Otsu 二值化算法:原理、实现与应用

摘要&#xff1a; 本文深入探讨了 Otsu 二值化算法&#xff0c;详细阐述其原理&#xff0c;包括类间方差的计算与阈值确定机制。分别给出了该算法在 C#、Python 和 C 中的实现代码示例&#xff0c;并对代码进行了详细注释与分析。此外&#xff0c;还探讨了 Otsu 二值化算法在图…

uniApp使用腾讯地图提示未添加maps模块

uniApp使用腾讯地图&#xff0c;打包提示未添加maps模块解决方案 这是报错信息&#xff0c;在标准基座运行的时候是没问题的&#xff0c;但是打包后会提示未添加&#xff0c;可以通过在mainfest里面把地图插件上腾讯地图的key更换高德地图的key&#xff0c;定位服务可以继续用腾…

Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。

网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是&#xff0c;则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时&#xff0c;Mihomo网卡会消失&#xff0c;所以提示找不到网卡…

scala中正则表达式的使用

正则表达式&#xff1a; 基本概念 在 Scala 中&#xff0c;正则表达式是用于处理文本模式匹配的强大工具。它通过java.util.regex.Pattern和java.util.regex.Matcher这两个 Java 类来实现&#xff08;因为 Scala 运行在 Java 虚拟机上&#xff0c;可以无缝使用 Java 类库&…

apache应用(客户机地址限制、用户授权限制、日志分割、AWStats日志分析)

目录 一、 客户机地址限制 二、 用户授权限制 三、 日志分割 使用rotatelogs分割工具 使用第三方工具cronolog 四、 AWStats日志分析 具体的apache软件安装可以阅读我之前的文章apache安装https://blog.csdn.net/m0_68472908/article/details/139348739?spm1001.2014.300…

护士资格实践题库(含解析)

1.患者女&#xff0c;30岁。诊断类风湿关节炎入院&#xff0c;经使用药物治疗后患者关节疼痛减轻&#xff0c;但出现体重增加、满月脸、向心性肥胖。提示存在何种药物的副作用&#xff08; &#xff09; A.泼尼松 B.环磷酰胺 C.硫唑嘌呤 D.吲哚美辛 E.阿司匹林 【答案】…

网络安全概论——防火墙原理与设计

一、防火墙概述 防火墙是一种装置&#xff0c;它是由软件/硬件设备组合而成&#xff0c;通常处于企业的内部局域网与 Internet 之间&#xff0c;限制 Internet 用户对内部网络的访问以及管理内部用户访问 Internet 的权限。换言之&#xff0c;一个防火墙在一个被认为是安全和可…

接口测试-Fidder及jmeter使用

一、接口测试的基础 1.接口的含义 也叫做API&#xff0c;是一组定义、程序及协议的集合&#xff0c;提供访问一组例程的能力&#xff0c;无需访问源码获理解内部工作细节 2.接口的分类 代码内部的接口&#xff0c;程序模块间的接口&#xff0c;对于程序接口测试&#xff0c;需…

postman设置cookie

postman发送请求的时候&#xff0c;如何顺带cookie? 示例&#xff1a; Cookie: locale_areazh; contryzh_cn;

Java-31 深入浅出 Spring - IoC 基础 启动IoC XML与注解结合的方式 配置改造 applicationContext.xml

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

jmeter连接mysql

查询mysql数据库版本 SELECT VERSION(); 下载jmeter mysql 驱动jar包&#xff0c;版本低于mysql版本&#xff0c;放在jmeter的lib 路径下 MySQL :: Download MySQL Connector/J (Archived Versions) 添加JDBC Connection Configuration 填写 variable name 及数据库信息 注意…

计算机网络基础(2):网络安全/ 网络通信介质

1. 网络安全威胁 网络安全&#xff1a;目的就是要让网络入侵者进不了网络系统&#xff0c;及时强行攻入网络&#xff0c;也拿不走信息&#xff0c;改不了数据&#xff0c;看不懂信息。 事发后能审查追踪到破坏者&#xff0c;让破坏者跑不掉。 网络威胁来自多方面&#xff1a…

数据分析实战—IMDB电影数据分析

1.实战内容 1.加载数据到movies_df&#xff0c;输出前5行&#xff0c;输出movies_df.info(),movies_df.describe() # &#xff08;1&#xff09;加载数据集&#xff0c;输出前5行 #导入库 import pandas as pd import numpy as np import matplotlib import matplotlib.pyplo…

windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网

一、应用场景说明 当我们的一台windows服务器中毒&#xff0c;变成别人肉鸡&#xff0c;不断向外请示非法网站或攻击其它服务器。 要彻底清除相关木马或病毒往往需要的时间比较长&#xff0c;比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。 其实这就是一…

线性代数基础与应用:基底 (Basis) 与现金流及单期贷款模型(中英双语)

具体请参考&#xff1a;https://web.stanford.edu/~boyd/vmls/ 下面的例子来源于这本书。 线性代数基础与应用&#xff1a;基底 (Basis) 与现金流及单期贷款模型 在线性代数中&#xff0c;基底&#xff08;Basis&#xff09;是一个重要的概念&#xff0c;广泛应用于信号处理、…

微信小程序的消息头增加的字段不能有下滑线,字段大写字母自动转换消息字母

微信小程序的消息头增加的字段不能有下滑线&#xff0c;字段大写字母自动转换消息字母。这个是微信小程序的坑。 正式环境&#xff1a; 微信小程序的消息头增加了一个字段device_id,结果node.js打印出来的字段没有该字段。 [2024-12-20T09:45:54.476] [DEBUG] app - ctx.head…