论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)

文章目录

  • 资源引用
  • 复现过程
    • 虚拟环境创建
    • 通过 pip 或者 anaconda 安装依赖
    • 数据集
    • 下载 GPT-2 预训练模型(medium尺寸的)并进行训练
      • 解决作者的代码错误
      • 解决安装包的版本问题
  • 总结

资源引用

  • 代码网址[github]
  • 论文:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation

复现过程

虚拟环境创建

论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第1张图片

  • 无论你是根据 github 提供的命令来创建虚拟环境,还是使用自己的虚拟环境都要执行第一步
    touch set_environment.sh
  • 因为后面的运行需要根据这个文件
    • 如果你是自己通过 anaconda 创建虚拟环境,那么你的 set_environment.sh 这个文件里面什么都不用写
    • 或者你使用作者提供的下述命令写入到 set_environment.sh 文件中来创建你的虚拟环境并激活

    在这里插入图片描述

通过 pip 或者 anaconda 安装依赖

论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第2张图片

  • 在作者提供的文件中,有这么三个 .sh 文件,这三个文件使用三种不同的方式安装依赖,你选择一个执行即可。比如我选择用 pip 在我的虚拟环境中配置相关的依赖,那我执行的就是
    bash scripts/amr2txt/install_x86_with_pip.sh

    论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第3张图片

    • 下面展示的就是 install_x86_with_pip.sh 文件中的内容,这一步其实没有什么神秘的,只是给你安装一些现成的依赖,还有作者使用的一些工具,比如 stog,meteor
      论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第4张图片
  • 直接执行他的安装命令可能会出现一些问题,所以建议读者按照下面的步骤进行操作:

    他原本的 requirements.txt 是这么写的:
    论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第5张图片
    但是这样安装肯定是有问题的,因此我采取了如下手段:

    • 首先单独将 torch 安装好,也就是去 torch 的官网,找到 1.1 版本,然后用 pip 命令安装(这里安装的是 cpu 版本,因为我的代码在服务器上跑,本地只是调试一下,所以我就下了 cpu版本,大家根据自己的需要调整)
      论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第6张图片
    • 剩下的就是常规安装了
      • requirements.txt 中的 >= 的符号全部改成一个确定的版本
      • 然后为了速度,我给他们都加了清华源的后缀,最终我的 requirements.txt 文件如下所示:
        论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第7张图片

数据集

论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第8张图片

  • 这个数据集他在 github 这里写错了,在论文里写的是 LDC2017T10

论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第9张图片

  • 这个数据集的获取你必须参考我的另一篇 【文章】。在那里面我会详细地讲述如何处理 LDC2017T10 数据集到本文要求的这种结构
  • 文中强调要按照这个路径来保存数据集:

论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第10张图片

  • 但是实际上从网站上下载下来的数据集的结构是这样的
    论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第11张图片
  • 要得到 github 中规定的那种结构,需要按照 【文章】 对这个数据集进行预处理
    • 如果你借鉴了那篇文章,最终可以得到这样的数据集结构:
      论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第12张图片

    • 将这三个标红的文件复制到你当前 DATA 文件路径下并分别改名成为 train.amr,test.amrdev.amr 友情提示:当你给这些文件改名的时候,不要在 pycharm 的项目中改,你最好打开 pycharm 这个项目所在的文件夹进行操作,因为你如果直接在 pycharm 这个界面中修改文件名称,可能导致与其相关联的一些引用发生改变)
      论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第13张图片

    • 改完名称之后的目录应该长成下面的样子:
      论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第14张图片

    • 现在可以继续执行下面的步骤了

下载 GPT-2 预训练模型(medium尺寸的)并进行训练

解决作者的代码错误

在这里插入图片描述

  • 当执行这一步脚本的时候,程序会根据 DATA 中的三个文件夹生成 feature/basic 路径下 train, devtest 所需要的所有文件,并且会帮你下载预训练模型 GPT-2,具体操作想研究的话可以去看看代码。
    论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第15张图片
  • 但是作者代码中写错了一个地方,导致我 debug 了好久好久好久才发现,我们需要首先改正这个地方,然后再去运行上述的 sh 指令
    • 作者原本在 scripts/amr2txt/preprocess.py 中的写法是我注释掉的部分,正确的操作应该是我在图中红色圈出来的部分,也就是
      token_line = re.compile('^# ::tokens (.*)')
    • 如果按照作者的写法,那么最终生成的
      feature/basic/train.tok.text
      feature/basic/dev.tok.text
      feature/basic/test.tok.text
      三个文件都会是空的
      论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第16张图片
  • 按照我的写法最终生成的那三个 tok.text 文件的内容大致如下图所示:
    论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第17张图片

解决安装包的版本问题

  • 解决完作者本身存在的代码问题,当你重新执行上述的步骤时,依然可能报错,如果你报错的信息也是下图所示的这样:

论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第18张图片

  • 上网查了一下,原来是一个包的版本冲突,我默认安装的 overrides==7.3.1 版本太高了,
    论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第19张图片
  • 只需要 pip install overrides==3.1.0 即可解决
  • 解决这个问题的 参考网址
  • 重新执行 bash scripts/amr2txt/experiment.sh scripts/amr2txt/configs/acl2020.sh,一切正常!
  • 自动下载 GPT-2 的模型并进行训练,初始步骤算是完成了。
  • 如果这个过程出现中断,请检查网络,或者使用 VPN,或者使用手机热点。我当时使用 VPN 和 wifi 都不太行,所以挂了手机热点下载成功的,大小 1.5G 左右。
    论文代码复现之:GPT-too: A Language-Model-First Approach for AMR-to-Text-Generation(ARM-to-text)_第20张图片

总结

  • 总体来说,作者在 github 上给出的步骤太过简略,没有阐明 DATA 中数据的如何通过 stog 包预处理成可用的状态
  • 关于上述问题,我专门写了一篇 文章 来教大家如何使用 stog 来生成这篇文章中要求的 DATA 结构
  • 代码错误的存在也增加了调试的难度。代码的主要错误存在于:
    • scripts/amr2txt/preprocess.py 文件

你可能感兴趣的:(机器学习与深度学习,深度学习,python,pytorch)