如何使用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 、你的OS 、package 、language ,以及与你的机器相呼应的compute platform 。
在我们的例子中,我们要选择Stable (1.10) PyTorch构建、Linux OS 、Pip 包、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被设置为 ,以允许在我们的模型中进行采样。truetemperature被设置为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,你可以用它来访问网络浏览器上的应用程序。
结果。

收尾工作
变形器允许你快速执行NLP任务,如提问和回答、特征提取、总结和生成。
本教程已经向你展示了如何使用转化器库来生成文本。你可以用它来生成博文、一首歌,甚至是写一些代码。