1

我正在尝试复制此回购的结果:

https://github.com/huggingface/transfer-learning-conv-ai

为此,我正在关注不基于 docker 的基本示例:

git clone https://github.com/huggingface/transfer-learning-conv-ai
cd transfer-learning-conv-ai
pip install -r requirements.txt
python -m spacy download en

然后我尝试:

python3 interact.py --model models/

我得到了这个错误:

  np_resource = np.dtype([("resource", np.ubyte, 1)])
usage: interact.py [-h] [--dataset_path DATASET_PATH]
                   [--dataset_cache DATASET_CACHE] [--model {openai-gpt,gpt2}]
                   [--model_checkpoint MODEL_CHECKPOINT]
                   [--max_history MAX_HISTORY] [--device DEVICE] [--no_sample]
                   [--max_length MAX_LENGTH] [--min_length MIN_LENGTH]
                   [--seed SEED] [--temperature TEMPERATURE] [--top_k TOP_K]
                   [--top_p TOP_P]
interact.py: error: argument --model: invalid choice: 'models/' (choose from 'openai-gpt', 'gpt2')

我注意到的第一件事是没有任何“模型”目录,因此我创建了一个并再次尝试,得到了同样的错误。

我尝试的第二件事是按照它指定的 repo 下载模型:

We make a pretrained and fine-tuned model available on our S3 here

从那个链接我试过:

wget https://s3.amazonaws.com/models.huggingface.co/transfer-learning-chatbot/finetuned_chatbot_gpt.tar.gz

并解压缩主目录和模型目录中的文件,然后重试。

第三次,我尝试并得到了同样的错误。

这是我工作目录的当前结构:

Dockerfile   config.json                   interact.py              pytorch_model.bin       train.py
LICENCE      convai_evaluation.py          merges.txt               requirements.txt        utils.py
README.md    example_entry.py              model_training_args.bin  special_tokens.txt      vocab.json
__pycache__  finetuned_chatbot_gpt.tar.gz  models                   test_special_tokens.py

编辑

尝试过 kimbo 的建议:

python3 interact.py --model gpt2

我现在收到此错误:

 File "interact.py", line 154, in <module>
    run()
  File "interact.py", line 114, in run
    raise ValueError("Interacting with GPT2 requires passing a finetuned model_checkpoint")
ValueError: Interacting with GPT2 requires passing a finetuned model_checkpoint

还尝试运行:

python3 interact.py

为此,我没有收到任何错误,此时似乎卡住了:

INFO:/home/lramirez/transfer-learning-conv-ai/utils.py:Download dataset from https://s3.amazonaws.com/datasets.huggingface.co/personachat/personachat_self_original.json
INFO:/home/lramirez/transfer-learning-conv-ai/utils.py:Tokenize and encode the dataset

我在那里待了大约 30 分钟

4

2 回答 2

1

新更新

标记数据集需要很长时间,因为它标记了整个数据集,这是一个 200 MB 的 JSON 文件。

为了让它更快,只需加载部分数据集。

打开 utils.py 并更改tokenize函数:

def tokenize(obj):
    if isinstance(obj, str):
        return tokenizer.convert_tokens_to_ids(tokenizer.tokenize(obj))
    if isinstance(obj, dict):
        return dict((n, tokenize(o)) for n, o in obj.items())
    limit = 100  # <- this is the number of items in the dataset to load
    return list(tokenize(o) for o in obj[:limit])  # <- change it here

这只会加载数据集中的前 100 个项目。


旧答案

当我不确定如何使用 python 脚本(或者你从命令行运行的任何东西,真的)时,我通常会尝试一些事情来弄清楚。

  • python script.py -hpython script.py --help。这通常会打印出脚本期望的参数以及如何运行它的解释。
  • 如果它是您安装的可执行命令,我总是尝试man <executable>. 在这种情况下可能不起作用,因为您只是从 GitHub 克隆了 repo 并且没有安装任何东西。
  • 如果我仍然不明白如何使用该脚本,因为上述方法不起作用,我会上网查找一些文档(Github README、wiki、readthedocs 等)
  • 如果文档记录不佳,我只看源代码。有时我会直接跳到这一部分,因为对于较小的东西,它通常更快。

在这种情况下,我阅读了 Github 上的 README 并没有告诉我太多,所以我查看了 interact.py。如果您从第 139 行(https://github.com/huggingface/transfer-learning-conv-ai/blob/master/interact.py#L139)开始看,它们似乎处于 while 循环中,等着您输入一些东西给模型。

/结束更新

这部分:

(choose from 'openai-gpt', 'gpt2')

应该告诉你所有你需要知道的。

尝试运行

python3 interact.py --model gpt2

或者

python3 interact.py --model openai-gpt
于 2020-03-01T00:39:54.680 回答
0

这个错误是因为 HuggingFace 在 ConvAI 数据集上没有 GPT2 的微调模型,他们只为 GPT 做了

if args.model == 'gpt2':
            raise ValueError("Interacting with GPT2 requires passing a finetuned model_checkpoint")

这部分代码可以在interact.py文件中找到,所以如果想在gpt2上也有,需要自己微调。我现在只是在努力解决这个问题。

于 2020-06-16T22:22:57.787 回答