Open NMT-py 玩具模型使用说明

前排提示:本文仅适合纯萌新玩家,算是官方指南的补档。(大佬请直接关闭网页,避免浪费时间)

截至到2023.3.15,最新的OpenNMT-py环境要求

  • Python >= 3.7

  • PyTorch >= 1.9.0

如果是老版本的OpenNMT-py,需要自己找相应版本的库(有些比较老,不容易安装,如果可以用新版最好用新版,新版ONMT精简了很多冗余代码)

Step1:安装OpenNMT-py

pip install OpenNMT-py

或者使用下面的指令(需要安装Git,若无Git不推荐使用)

git clone https://github.com/OpenNMT/OpenNMT-py.git
cd OpenNMT-py
pip install -e .

Step2:下载玩具数据集(英语→德语)

wget https://s3.amazonaws.com/opennmt-trainingdata/toy-ende.tar.gz
tar xf toy-ende.tar.gz
cd toy-ende

数据由并行源 () 和目标 () 数据组成,每行包含一个句子,标记用空格分隔:srctgt

  • src-train.txt

  • tgt-train.txt

  • src-val.txt

  • tgt-val.txt

Step3:配置Yaml环境

# toy_en_de.yaml

## Where the samples will be written
save_data: toy-ende/run/example
## Where the vocab(s) will be written
src_vocab: toy-ende/run/example.vocab.src
tgt_vocab: toy-ende/run/example.vocab.tgt
# Prevent overwriting existing files in the folder
overwrite: False

# Corpus opts:
data:
    corpus_1:
        path_src: toy-ende/src-train.txt
        path_tgt: toy-ende/tgt-train.txt
    valid:
        path_src: toy-ende/src-val.txt
        path_tgt: toy-ende/tgt-val.txt
...

这个配置包含了一些设置,用于指导训练和评估一个英德翻译模型,文件中的设置如下:

  • save_data: 用于保存样本的目录路径。

  • src_vocab: 用于保存源语言词汇表的路径。

  • tgt_vocab: 用于保存目标语言词汇表的路径。

  • overwrite: 设置为 False,以防止覆盖已有文件。(若想覆盖已有文件则将其赋值为True

  • data: 包含两个数据集的设置,分别是 corpus_1valid。(分别为训练集测试集

  • path_src: 用于指定源语言数据文件的路径。

  • path_tgt: 用于指定目标语言数据文件的路径。

注:注意修改这里的路径,指南中给的路径并不能直接使用,如果不知道如何给路径,就设置为绝对路径,但是这样会把路径写死,每次变更都要重新写路径。

通过此配置,我们可以构建训练模型所需的词汇表:

onmt_build_vocab -config toy_en_de.yaml -n_sample 10000

在这个指令中,-config toy_en_de.yaml 指定了配置文件的名称为 toy_en_de.yaml-n_sample 10000 则表示使用前 10000 个样本来构建词汇表。这个选项通常用于加速词汇表构建过程,特别是当数据集很大时。

Step4:训练模型

首先配置Yaml环境:

# toy_en_train.yaml

# Vocabulary files that were just created
src_vocab: toy-ende/run/example.vocab.src
tgt_vocab: toy-ende/run/example.vocab.tgt

# Corpus opts:
data:
    corpus_1:
        path_src: toy-ende/src-train.txt
        path_tgt: toy-ende/tgt-train.txt
    valid:
        path_src: toy-ende/src-val.txt
        path_tgt: toy-ende/tgt-val.txt

# Train on a single GPU
world_size: 1 #这行代码指定了使用单个GPU进行训练。
gpu_ranks: [0]#这行代码指定了GPU的编号,这里为0号GPU

# Where to save the checkpoints
save_model: toy-ende/run/model
save_checkpoint_steps: 500#这行代码指定了多少步保存一次模型。
train_steps: 1000#这行代码指定了训练的步数。
valid_steps: 500#这行代码指定了多少步验证一次模型。
onmt_train -config toy_en_de.yaml

在这个指令中,-config toy_en_de.yaml 指定了配置文件的名称为 toy_en_de.yaml,即将使用这个配置文件来指定模型的训练参数。

注:Github中给的Yaml不能直接使用,他们给出的指令中并没有读取数据,要按我这个来。

Step5:翻译

onmt_translate -model toy-ende/run/model_step_1000.pt -src toy-ende/src-test.txt -output toy-ende/pred_1000.txt -gpu 0 -verbose
  • -model toy-ende/run/model_step_1000.pt:这是模型的路径和名称,表示使用的是训练步数为1000时保存的模型文件。

  • -src toy-ende/src-test.txt:这是测试集数据的路径和名称,表示需要进行翻译的源语言文本。

  • -output toy-ende/pred_1000.txt:这是输出文件的路径和名称,表示将翻译结果输出到文件“pred_1000.txt”中。

  • -gpu 0:这是指定使用的GPU编号,这里是0号GPU。

  • -verbose:这是可选参数,表示输出更详细的信息。

注:这里的模型和路径都需要做修改,否则报错。

Step6:发布

onmt_release_model --model toy-ende/run/model_step_1000.pt --output toy-ende/run/model_step_1000_release.pt
  • --model toy-ende/run/model_step_1000.pt:这是模型的路径和名称,表示需要发布的模型文件。

  • --output toy-ende/run/model_step_1000_release.pt:这是输出文件的路径和名称,表示发布后的模型文件名称。

这个模型我还在学习,过几日或许会发布使用图像数据集的方法。。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值