如何更改gpt2代码以使用Tensorflow 2.0?

2024-09-26 18:09:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用gpt-2生成文本。即使在运行Tensorflow 2.0code upgrade script之后,也会出现兼容性错误

我遵循的步骤是:

  1. 克隆repo

  2. 从现在开始,按照DEVELOPERS.md中的说明进行操作

  3. 在/src中的文件上运行upgrade script

  4. 终端运行中:sudo docker build --tag gpt-2 -f Dockerfile.gpu .

  5. 构建完成后,运行:sudo docker run --runtime=nvidia -it gpt-2 bash

  6. 输入python3 src/generate_unconditional_samples.py | tee /tmp/samples

  7. 获取此回溯:

    Traceback (most recent call last):
    File "src/generate_unconditional_samples.py", line 9, in <module>  
    import model, sample, encoder
    File "/gpt-2/src/model.py", line 4, in <module>
    from tensorboard.plugins.hparams.api import HParam
    ImportError: No module named 'tensorboard.plugins.hparams'
    root@f8bdde043f91:/gpt-2# python3 src/generate_unconditional_samples.py | tee 
    /tmp/samples
    Traceback (most recent call last):
    File "src/generate_unconditional_samples.py", line 9, in <module>
    import model, sample, encoder
    File "/gpt-2/src/model.py", line 4, in <module>
    from tensorboard.plugins.hparams.api import HParam
    ImportError: No module named 'tensorboard.plugins.hparams'```
    
    

HParams似乎已被弃用,Tensorflow 2.0中的新版本名为HParam。但是,参数是不同的。在model.py中,参数实例化如下:

def default_hparams():
return HParams(
    n_vocab=0,
    n_ctx=1024,
    n_embd=768,
    n_head=12,
    n_layer=12,
)

似乎没有任何1:1的翻译成Tensorflow 2.0。有人知道如何使gpt-2与Tensorflow 2.0一起工作吗

我的GPU是NVIDIA 20xx

多谢各位


Tags: inpyimportsrcmodeltensorflowlinegenerate
3条回答

自动升级代码很少是现成的。对于该回购协议,您应该使用Tensorflow=1.15最大值

如果你真的想要Tensorflow=2,你可以看看这个repo:https://github.com/akanyaani/gpt-2-tensorflow2.0

注意:您将无法获得预先训练的模型(对于普通用户来说,这可能是gpt2中最有趣的部分)。意味着无法访问其1554M或778M型号

我不知道有什么方法可以自动将预先训练好的模型从1.15升级到2.3或诸如此类

如果您想查看我的1.x fork,可以在这里进行编译: https://github.com/timschott/gpt-2

我也遇到了同样的问题,但通过在文件夹中创建一个单独的hparams.py文件并用此处的内容填充它,问题得到了解决:https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/utils/hparam.py

然后,在model.py中,可以添加以下代码并替换此代码:

import tensorflow as tf
from tensorflow.contrib.training import HParams

为此:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from hparams import HParams

然后,您必须在“tf”和模块之间添加“compat.v1”(如果这就是它的名称)。。。例如,如果是“tf.Session”,则将其更改为“tf.compat.v1.Session”,或者如果是“tf.placeholder”,则将其更改为“tf.compat.v1.placeholder”,等等

我在尝试降级到tensorflow gpu 1.13并且gpt-2仍然不能工作之后做了这件事。在3.6版Python中运行环境的情况也是如此

另外,这是我的第一个答案,不确定格式是否正确,但我也会边走边学

相关问题 更多 >

    热门问题