【问题标题】:Huggingface Transformer PrimingHuggingface 变压器启动
【发布时间】:2021-05-07 06:04:13
【问题描述】:

我正在尝试复制this demo 的结果,其作者将 GPT-3 与just 结合为以下文本:

gpt.add_example(Example('apple', 'slice, eat, mash, cook, bake, juice'))
gpt.add_example(Example('book', 'read, open, close, write on'))
gpt.add_example(Example('spoon', 'lift, grasp, scoop, slice'))
gpt.add_example(Example('apple', 'pound, grasp, lift'))

我只能通过 Huggingface Transformer 访问 GPT-2。如何在 Huggingface 上启动 GPT-2 以复制上述示例?问题是,对于this,人们无法分别使用输入和相应的输出进行初始化(正如上面 GPT-3 演示的作者所做的那样)。

同样,this tutorial 描述了使用 Huggingface,但没有示例清楚地显示如何使用输入与输出示例来启动它。

有人知道怎么做吗?


期望的输出: 使用 GPT-2 返回类似的内容,输入“potato”,输出“peel, slice, cook, mash, bake”(如 GPT-3 演示:https://www.buildgpt3.com/post/41/)。显然输出动词的确切列表不会相同,因为 GPT-2 和 GPT-3 不是相同的模型。

【问题讨论】:

    标签: python huggingface-transformers gpt-2 gpt-3


    【解决方案1】:

    GPT 模型唯一能做的就是预测应该跟随什么词。从技术上讲,没有输入和输出,它是一个仅解码器的模型,所以它只有输出。启动模型意味着您将模型的输出强制为您想要的内容,然后让模型继续生成更多文本。

    演示中发生的情况是:

    1. 您向 GPT-3 提供了它应该做什么的自然语言示例。像这样:
    What can I do with an apple? slice eat, mash, cook, bake, juice
    What can I do with a book? read, open, close, write on
    What can I do with a spoon? lift, grasp, scoop, slice
    
    1. 当出现查询时(例如,knife),您可以创建与示例类似的句子:
    What can I do with a knife?
    
    1. 让模型继续生成,直到它开始一个以 What 开头的新行,或者直到它以一种奇怪的方式中断,这总是在随机模型中发生。 (希望该模型得到了您在启动示例中所指的模式。)

    这是来自HuggingFace's demo 的一个示例,说明 GPT-2 发生了什么。粗体字由模型生成。

    【讨论】:

    • 可以使用输入和输出来启动 GPT-3(参见,例如 github.com/shreyashankar/gpt3-sandbox)。所以 GPT-2 也应该是可能的。怎么做是我的问题
    • 我的回答是如何完成启动。启动不会改变模型参数。在为模型提供初始示例后,您只需从隐藏状态开始生成。如果你想让它更高效,你可以在启动示例之后缓存模型的状态,但仅此而已。
    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 2021-05-05
    • 2021-08-03
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2021-12-31
    • 2021-01-14
    相关资源
    最近更新 更多