米乐M6OpenAI「假新闻」生成器GPT-2的最简Python实现首页编程笔记pythonOpenAI「假新闻」生成器GPT-2的最简Python实现
本文章向大家介绍OpenAI「假新闻」生成器GPT-2的最简Python实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
由 OpenAI 推出的文本生成模型 GPT-2 最近引发了人们的广泛关注,这种算法不仅在很多任务上超过了此前的最佳水平,还可以根据一小段话自动「脑补」出大段连贯的文本,并模拟不同的写作风格。它看起来可以用来自动生成「假新闻」。
然而这个GPT-2模型内含多达 15 亿个参数,过高的算力要求让大多数开发者望而却步。而且 OpenAI 还曾「出于对模型可能遭恶意应用的担忧,并不会立即发布所有预训练权重。」一时引发机器学习社区的吐槽。
近日,由 Buzzfeed 数据科学家 Max Woolf 开源的「GPT-2 精简版」出现在 GitHub 上。这是一个简单的 Python 软件包,它封装了 OpenAI GPT-2 文本生成模型(特别是它是具有 1.17 亿超参数的「较小」版本)的现有模型微调和生成脚本。此外,这个软件包让我们可以更容易地生成文本,生成一个文件以便于管理米乐M6,从而允许前缀强制文本以给定的短语开头。
为了微调,该项目强烈建议你使用 GPU,虽然你用 CPU 也可以生成(但速度会慢很多)。如果你在云端训练,强烈建议你使用 Colaboratory notebook 或带有 TensorFlow 深度学习图像的谷歌计算引擎 VM(因为 GPT-2 模型位于 GCP 上)米乐M6。
生成模型的检查点默认在/checkpoint/run1 中。如果你想从该文件夹中加载模型并从中生成文本:
注意:如果你想在另一个数据集上进行微调或加载另一个模型,先重启 Python 会线-simple 和文本生成程序的区别
GPT-2 用来生成文本的方法与 textgenrnn 等安装包(特别是纯粹使用 GPU 生成完整文本序列并随后对其进行解码的安装包)使用的方法略有不同,这些方法在没有破解底层模型代码的情况下无法轻易修复。
一般来说,GPT-2 更擅长在整个生成长度上维护上下文,从而能够有效地生成对话文本。文本在语法上通常也是正确的,并且有适当的大写和较少的打印错误。
GPT-2 针对每个请求最多只能生成 1024 个 token(约是 3-4 段英语文本)。
GPT-2 在到达特定的结束 token 时无法提前停止。(暂时解决方法:将 truncate 参数传递给 generate 函数,以便只收集文本,直至到达特定的结束 token。你可能想适当地缩小 length。)
较高温度(如 0.7-1.0)能够更好地生成更有趣的文本,而框架在温度 0.2-0.5 之间运转更好。
当对 GPT-2 进行微调时,它并不清楚较大文本中文档的开头或结尾。你需要使用定制的字符序列来显示文档的开头或结尾。之后在文本生成中,你可以指定针对开始 token 序列的 prefix 和针对结束 token 序列的 truncate。
通过设置一个可分成 nsamples 的 batch_size,你可以使用 GPT-2 生成并行文本,从而加快生成速度米乐M6。GPT-2 与 GPU 配合得很好(可以在 Colaboratory K80 上将 batch_size 设置为 20)!
GPT-2 强大的模型不仅吸引了众多机器学习从业者的关注,其「脑补」故事的能力也让人们不禁有了很多大胆的想法。为了让更多人能够接触最新技术,另一个开发者 eukaryote 最近还推出了一个新网站:This Story Does Not Exist