是否可以使用 TensorFlowJS 从 OpenAI GPT-2 生成文本?
如果不是,限制是什么,例如模型格式或...?
我有一个关于“即时”标记化的问题。这个问题是通过阅读“如何使用 Transformers 和 Tokenizers 从头开始训练新的语言模型”引发的。最后有这样一句话:“如果您的数据集非常大,您可以选择动态加载和标记示例,而不是作为预处理步骤”。我尝试提出一个将datasets
和结合起来的解决方案tokenizers
,但没有找到一个好的模式。
我想解决方案需要将数据集包装到 Pytorch 数据集中。
作为文档中的具体示例
import torch
class SquadDataset(torch.utils.data.Dataset):
def __init__(self, encodings):
# instead of doing this beforehand, I'd like to do tokenization on the fly
self.encodings = encodings
def __getitem__(self, idx):
return {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
def __len__(self):
return len(self.encodings.input_ids)
train_dataset = SquadDataset(train_encodings)
Run Code Online (Sandbox Code Playgroud)
如何利用标记器的矢量化功能通过“即时”标记化来实现这一点?
我正在尝试微调 gpt2 以完成生成性问答任务。
基本上我的数据格式类似于:
背景:马特今天撞坏了他的车。问:马特这一天过得怎么样?答案:不好
我正在查看 Huggingface 文档,以了解如何在自定义数据集上微调 GPT2,并且我确实在以下地址找到了有关微调的说明: https ://github.com/huggingface/transformers/tree/main/examples/pytorch /语言建模
问题是他们没有提供任何关于如何准备数据以便模型可以从中学习的指导。他们提供了可用的不同数据集,但没有一个格式适合我的任务。
如果有更多经验的人可以帮助我,我将非常感激。
祝你今天过得愉快!
我一直在尝试在 wikitext-2 数据集上微调 GPT2(只是为了帮助自己学习该过程),但我遇到了一条我以前从未见过的警告消息:
\n“未设置注意掩码和填充令牌 ID。因此,您可能会观察到意外行为。请传递您的输入attention_mask
以获得可靠的结果。\n设置pad_token_id
为eos_token_id
:50256 以进行开放式生成。”
这看起来很奇怪,因为我在实例化 tokenizer 时在代码中明确指定了 EOS 令牌:
\ntokenizer = GPT2Tokenizer.from_pretrained(\'gpt2\', bos_token=\'<|startoftext|>\', eos_token=\'<|endoftext|>\', pad_token=\'<|pad|>\')\n
Run Code Online (Sandbox Code Playgroud)\n训练在没有崩溃的情况下完成,我的损失在每个时期都有所改善,但是当我推断模型时,它输出绝对的乱码 - 有时只生成一个单词而没有其他任何东西。我认为我收到的警告消息与模型表现不佳之间存在联系。
\n我从这里获得了训练、有效、测试数据(我使用了 .raw 文件) - https://blog.salesforceairesearch.com/the-wikitext-long-term-dependency-language-modeling-dataset/
\n我在数据集的原始 txt 文件中手动添加了 <|startoftext|> 和 <|endoftext|> 。生成的训练数据类似于这两个示例(取自文本文件的中间):
\n...\n<|startoftext|>\n= Perfect Dark ( 2010 video game ) = \n \n Perfect Dark is a remastered release of the first @-@ person shooter video game by the same name . Developed by 4J Studios …
Run Code Online (Sandbox Code Playgroud) 我有以下代码
import transformers
from transformers import pipeline
# Load the language model pipeline
model = pipeline("text-generation", model="gpt2")
# Input sentence for generating next word predictions
input_sentence = "I enjoy walking in the"
Run Code Online (Sandbox Code Playgroud)
我只想在给定输入句子的情况下生成下一个单词,但我想查看所有可能的下一个单词及其概率的列表。任何其他LLM都可以使用,我以gpt2为例。
在代码中,我想仅为下一个单词选择前 500 个单词或前 1000 个单词建议以及每个建议单词的概率,我该怎么做?
此问题适用于熟悉 GPT 或GPT2 OpenAI 模型的人。特别是与编码任务(字节对编码)。这是我的问题:
我想知道如何创建自己的 vocab.bpe 文件。
我有一个西班牙语语料库文本,我想用它来适应我自己的 bpe 编码器。我已经成功地使用python-bpe库创建了encoder.json,但我不知道如何获取 vocab.bpe 文件。我已经查看了gpt-2/src/encoder.py 中的代码,但是我没有找到任何提示。任何帮助或想法?
非常感谢你。
我正在尝试使用aitextgen
google Colab 中的 python 包,以便我可以微调 GPT。
首先,当我安装这个包的最后一个版本时,在导入它时遇到了这个错误。
Unable to import name '_TPU_AVAILABLE' from 'pytorch_lightning.utilities'
Run Code Online (Sandbox Code Playgroud)
尽管在这个问题中给出的解决方案的帮助下,我可以通过降级我的包来传递这个错误,如下所示:
!pip3 install -q aitextgen==0.5.2
!pip3 install -q torchtext==0.10.0
!pip3 install -q torchmetrics==0.6.0
!pip3 install -q pytorch-lightning==1.4.0rc0
Run Code Online (Sandbox Code Playgroud)
但现在我在导入aitextgen
包时遇到这个错误,colab 会崩溃!
/usr/local/lib/python3.8/dist-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python extension: libtorch_cuda_cu.so: cannot open shared object file: No such file or directory
warn(f"Failed to load image Python extension: {e}")
Run Code Online (Sandbox Code Playgroud)
请记住,错误是在导入包时出现的,并且我的代码中没有错误。更清楚地说,当我像aitextgen
这样导入时出现此错误:
import aitextgen
Run Code Online (Sandbox Code Playgroud)
我该如何处理这个错误?
python import google-colaboratory huggingface-transformers gpt-2
并非总是如此,但在运行我的代码时偶尔会出现此错误。
起初,我怀疑这是一个连接问题,而是与兑现问题有关,正如旧的Git Issue中所讨论的那样。
清除缓存对运行时没有帮助:
$ rm ~/.cache/huggingface/transformers/ *
Run Code Online (Sandbox Code Playgroud)
回溯参考:
Error loading stopwords: <urlopen error [Errno -2] Name or service not known
.cached_path
和get_from_cache
.缓存(清除之前):
$ cd ~/.cache/huggingface/transformers/
(sdg) me@PF2DCSXD:~/.cache/huggingface/transformers$ ls
16a2f78023c8dc511294f0c97b5e10fde3ef9889ad6d11ffaa2a00714e73926e.cf2d0ecb83b6df91b3dbb53f1d1e4c311578bfd3aa0e04934215a49bf9898df0
16a2f78023c8dc511294f0c97b5e10fde3ef9889ad6d11ffaa2a00714e73926e.cf2d0ecb83b6df91b3dbb53f1d1e4c311578bfd3aa0e04934215a49bf9898df0.json
16a2f78023c8dc511294f0c97b5e10fde3ef9889ad6d11ffaa2a00714e73926e.cf2d0ecb83b6df91b3dbb53f1d1e4c311578bfd3aa0e04934215a49bf9898df0.lock
4029f7287fbd5fa400024f6bbfcfeae9c5f7906ea97afcaaa6348ab7c6a9f351.723d8eaff3b27ece543e768287eefb59290362b8ca3b1c18a759ad391dca295a.h5
4029f7287fbd5fa400024f6bbfcfeae9c5f7906ea97afcaaa6348ab7c6a9f351.723d8eaff3b27ece543e768287eefb59290362b8ca3b1c18a759ad391dca295a.h5.json
4029f7287fbd5fa400024f6bbfcfeae9c5f7906ea97afcaaa6348ab7c6a9f351.723d8eaff3b27ece543e768287eefb59290362b8ca3b1c18a759ad391dca295a.h5.lock
684fe667923972fb57f6b4dcb61a3c92763ad89882f3da5da9866baf14f2d60f.c7ed1f96aac49e745788faa77ba0a26a392643a50bb388b9c04ff469e555241f
684fe667923972fb57f6b4dcb61a3c92763ad89882f3da5da9866baf14f2d60f.c7ed1f96aac49e745788faa77ba0a26a392643a50bb388b9c04ff469e555241f.json
684fe667923972fb57f6b4dcb61a3c92763ad89882f3da5da9866baf14f2d60f.c7ed1f96aac49e745788faa77ba0a26a392643a50bb388b9c04ff469e555241f.lock
c0c761a63004025aeadd530c4c27b860ec4ecbe8a00531233de21d865a402598.5d12962c5ee615a4c803841266e9c3be9a691a924f72d395d3a6c6c81157788b
c0c761a63004025aeadd530c4c27b860ec4ecbe8a00531233de21d865a402598.5d12962c5ee615a4c803841266e9c3be9a691a924f72d395d3a6c6c81157788b.json
c0c761a63004025aeadd530c4c27b860ec4ecbe8a00531233de21d865a402598.5d12962c5ee615a4c803841266e9c3be9a691a924f72d395d3a6c6c81157788b.lock
fc674cd6907b4c9e933cb42d67662436b89fa9540a1f40d7c919d0109289ad01.7d2e0efa5ca20cef4fb199382111e9d3ad96fd77b849e1d4bed13a66e1336f51
fc674cd6907b4c9e933cb42d67662436b89fa9540a1f40d7c919d0109289ad01.7d2e0efa5ca20cef4fb199382111e9d3ad96fd77b849e1d4bed13a66e1336f51.json
fc674cd6907b4c9e933cb42d67662436b89fa9540a1f40d7c919d0109289ad01.7d2e0efa5ca20cef4fb199382111e9d3ad96fd77b849e1d4bed13a66e1336f51.lock
Run Code Online (Sandbox Code Playgroud)
代码:
from transformers import pipeline, set_seed
generator = pipeline('text-generation', model='gpt2') # Error
set_seed(42)
Run Code Online (Sandbox Code Playgroud)
追溯:
2022-03-03 10:18:06.803989: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; …
Run Code Online (Sandbox Code Playgroud) python-3.x tensorflow valueerror huggingface-transformers gpt-2
我正在尝试使用 aitextgen 在数据集上微调 774M gpt 2。不幸的是,无论我做什么,训练都会失败,因为只有 80 MB 的 vram 可用。如何在不重新启动运行时的情况下清除 vram,并可能防止 vram 已满?
gpt-2 ×10
nlp ×3
python ×3
fine-tuning ×2
tensorflow ×2
encoding ×1
import ×1
openai-api ×1
python-3.x ×1
pytorch ×1
text ×1
tokenize ×1
valueerror ×1
vram ×1