如何使用GPT-Neo来生成基于AI的博客内容

1,408 阅读6分钟

如何使用GPT-Neo来生成基于AI的博客内容

在本教程中,我们将带你了解如何使用被称为GPT-Neo的GPT-3克隆构建一个AI驱动的博客内容生成器。

前提条件

要跟上本教程,你需要熟悉。

  • 自然语言处理。
  • 机器学习建模。
  • Python编程语言。
  • 谷歌Colab或Jupyter笔记本。

简介

GPT-3是一个以深度学习为动力的语言模型,它的训练参数是175 。在消费级GPU机器上用这样的参数来训练一个模型,需要大量的计算时间。

由于其大量的训练参数,它在各种各样的NLP任务中表现良好。

该模型是大多数NLP过程的理想选择,包括文本生成、情感分析和问题-答案模型。

然而,该模型没有开源,它只能通过封闭的测试版提供。这意味着,在使用它之前,人们必须申请许可。

幸运的是,人们可以利用一个被称为GPT-Neo的GPT克隆。至少,它是开源的,任何人都可以使用它。因此,我们将在本教程中利用这个模型。

目标GPT-3 Neo模型是在1.25亿个参数上训练出来的。虽然它不完全是OpenAI建立的具有1750亿个参数的GPT-3模型,但它仍然同样复杂。

如果你有一台非常强大的机器,你可以使用13亿,和27亿参数的模型来训练你的模型,以获得更好的结果。

如何利用GPT-Neo来生成基于AI的博客内容

安装和导入依赖项

我们需要的第一个依赖是PyTorch。要安装它,你需要前往PyTorch的网站,点击install 按钮。

选择Pytorch build 、你的OSpackagelanguage ,以及与你的机器相呼应的compute platform

在我们的例子中,我们要选择Stable (1.10) PyTorch构建、Linux OSPip 包、Python 语言和CUDA 11.3 计算平台。这种组合会产生如下所示的安装命令。

!pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

请确保在pip install 命令之前包含一个! 。否则,你会得到一个错误。

我们需要做的下一件事是安装Transformers ,这是一个强大的自然语言处理库。

关于transformers ,最美妙的事情是,你会得到一堆嵌入到库中的NLP管道。

其中一些管道包括FeatureExtractionPipeline,SummarizationPipeline,TextClassificationPipeline,TranslationPipeline, 和TextGenerationPipeline ,允许人们相对容易地使用复杂的NLP模型。

对于我们的任务,我们将使用TextGenerationPipeline

让我们继续把它安装到我们的笔记本上。

!pip install transformers

现在我们已经安装了它们,我们需要把它们导入到应用程序中。

from transformers import pipeline

这个命令导入了transformers 库里面的所有可用管道。

设置生成器

这一步涉及设置生成器,使我们能够产生博客内容。

generator = pipeline('text-generation', model ='EleutherAI/gpt-neo-2.7B')

上面的代码允许我们从transformers ,下载我们的GPT-Neo模型,有27亿个参数。

具体来说,重点是text-generation pipeline。我们将这个模型存储在一个称为generator 的变量内。这个过程需要一些时间来下载,因为它是一个相当大的模型,大约10GB。

还有13亿和1.25亿的参数模型,你可以利用。

对于13亿参数的模型,使用下面的代码。

generator = pipeline('text-generation', model='EleutherAI/gpt-neo-1.3B')

对于1.25亿个参数模型,请使用。

generator = pipeline('text-generation', model ='EleutherAI/gpt-neo-125M')

生成文本

post = "This is my first blog post, I'm really excited!"

我们需要将上述post 传递给我们的生成器以产生帖子。我们通过编写下面的命令来实现这一目的。

result = generator(post, max_length=50, do_sample=True, temperature=0.9)

运行上述代码后,我们将有我们生成的文本存储在result 变量内。

我们在generator 方法里面传入了一些参数。它们包括。

  • post 是我们先前创建的字符串。它包含了我们希望模型生成的文本。
  • max_length 定义了你的输出要有多长。在我们的例子中,它是50个字。
  • do_sample 被设置为 ,以允许在我们的模型中进行采样。true
  • temperature 被设置为0.9。这是用来模拟下一组概率的值。

你可以玩玩这些参数,如果你愿意的话,可以对它们进行调整。

如果我们看一下结果,我们会看到它已经生成了以下文字。

[{'generated_text': "This is my first blog post, I'm really excited! I have been writing a lot lately, and I'm not getting around to it yet. Here's some of what I'm reading in my mind so I can get back to it.\n"}]

如果你想生成更多的文本,你需要增加maximum length

与Gradio应用程序的整合

使用Gradio是演示你的机器学习模型的最快方式,它有一个友好的网络界面,这样任何人都可以使用它。

作为一个开发者,上面的部分已经工作得很完美了。然而,从用户的角度来看,情况并非如此。他们可能在导航方面有一些问题。

大多数应用程序的用户都不是开发者,他们不会想用命令行来处理他们的结果。Gradio创建了用户友好的界面,使之易于与模型互动。

我们首先使用以下命令将Gradio安装到我们的笔记本中。

!pip install gradio

接下来,我们需要把它作为gr ,导入我们的笔记本。

import gradio as gr

下一步涉及到封装我们希望我们的Gradio应用程序运行的函数。

def generate(post):
    results = generator(post, max_length=50, do_sample=True, temperature=0.9)
    print (results)

在上面的代码中,我们使用def 创建了一个新的函数,并将其命名为generate 。在该函数中,我们传入了我们的帖子。然后我们使用generator 方法来生成新的帖子。

让我们继续把它与Gradio集成。我们首先创建一个placeholder ,用户可以在其中输入一个句子。我们将结果保存在blog_inputs 变量内。

blog_inputs = gr.inputs.Textbox(lines=3, placeholder="Enter sentence to generate new posts...")

现在我们需要把它放在一起。

interface = gr.Interface(fn=generate, 
                        inputs=blog_inputs,
                        outputs='text',
                        title='AI based blog content generator')

我们已经创建了一个名为interface 的变量。我们将其设置为等于gr ,也就是Gradio。

我们还使用了Gradio的Interface() 类。这个类需要三个参数。

  • 一个要运行的ML函数。这将是generate 函数。
  • 输入的格式。这将是我们创建的blog_inputs
  • 输出格式。我们需要我们的输出是一个文本。
  • 一个标题。你可以给它起任何名字。

为了启动Gradio应用程序,我们使用launch() 方法,如下图所示。

interface.launch()

它将生成一个公共URL,你可以用它来访问网络浏览器上的应用程序。

结果。

Blog post generated

收尾工作

变形器允许你快速执行NLP任务,如提问和回答、特征提取、总结和生成。

本教程已经向你展示了如何使用转化器库来生成文本。你可以用它来生成博文、一首歌,甚至是写一些代码。