问题标签 [gpt-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
huggingface-transformers - 使用数据集、标记器和火炬数据集和数据加载器进行动态标记化
我有一个关于“即时”标记化的问题。这个问题是通过阅读此处的“如何使用 Transformers 和 Tokenizers 从头开始训练新的语言模型”引发的。最后有这句话:“如果您的数据集非常大,您可以选择动态加载和标记示例,而不是作为预处理步骤”。datasets
我尝试提出一个将和结合起来的解决方案tokenizers
,但没有找到一个好的模式。
我想解决方案需要将数据集包装到 Pytorch 数据集中。
如何利用标记器的矢量化功能通过“即时”标记化来实现这一点?
python - Transformer Decoder Only 使用什么内存?
我已经阅读了很多关于转换器和自我关注的内容,并且看到 BERT 和 GPT-2 都是仅使用编码器转换器 (BERT) 和解码器转换器 (GPT-2) 的较新版本。我一直在尝试为自己构建一个仅用于下一个序列预测的解码器模型,但我被一件事弄糊涂了。我正在使用 PyTorch 并查看了Seq2Seq 教程,然后查看了由Transformer Decoder Layers组成的Transformer Decoder Block. 我的困惑来自这些也需要传递的记忆。在文档中,他们说内存是编码器块的最后一层,这对于 Seq2Seq 模型是有意义的,但我只想制作一个解码器模型。所以我的问题是,如果你没有编码器,你会通过像 GPT-2 这样的仅限解码器的模型来获取内存吗?
python - Huggingface Transformer - GPT2 从保存的检查点恢复训练
恢复GPT2
微调,从run_clm.py
GPT2 huggingface是否 有一个参数可以从保存的检查点恢复训练,而不是从头开始训练?假设 python 笔记本在训练时崩溃,检查点将被保存,但是当我再次训练模型时,它仍然从头开始训练。
来源:这里
微调代码:
从上面的代码来看,run_clm.py
是huggingface提供的一个脚本,用于微调gpt2以使用自定义数据集进行训练
tensorflow - 无法从微调的 GPT-2 模型转换为 Tensorflow Lite 模型
我已经使用我自己的文本对 distilgpt2 模型进行了run_language_modeling.py
微调,并且在训练和run_generation.py
脚本产生预期结果后它的工作正常。
现在我想将其转换为 Tensorflow Lite 模型并使用以下方法进行
但我不认为我在转换后这样做是正确的,当我写
我明白了
但我仍然使用以下方式进行 TFLite 转换:
但是不起作用,并且在使用生成的tflite
模型时出现错误:
tensorflow/lite/kernels/kernel_util.cc:249 d1 == d2 || d1 == 1 || d2 == 1 不正确。
我确信这与我的模型没有正确转换并获取None
输入/输出有关。
有谁知道如何解决这个问题?
谢谢
python - RuntimeError:索引 3 处的输入张量具有无效的形状 [2, 2, 16, 128, 64] 但预期为 [2, 4, 16, 128, 64]
使用SageMaker - ml.p3.8xlarge实例中的Huggingface库对预训练的GPT2 中型模型进行微调时出现运行时错误。
finetuning_gpt2_script.py
包含以下内容,
图书馆:
预训练模型:
训练和测试数据构建:
train_path
&test_path
是大小为 145 万和 20 万行数据的非结构化文本数据文件
训练论据:
training_args
是为训练模型而构建的训练参数。
教练:
训练:
在这里,使用ml.p3.8xlarge实例仅在 4 个 GPUS 中进行了 1 个 epoch 的训练。
训练是通过火炬分布完成的,如下所示,
在 epoch 结束时进行训练时,观察到以下错误,
RuntimeError: Input tensor at index 3 has invalid shape [2, 2, 16, 128, 64] but expected [2, 4, 16, 128, 64]
- 是
RuntimeError
因为train_dataset
和test_dataset
构造使用的方式TextData
吗? - 我做错了
torch-distribution
吗?
pytorch - 为什么使用 GPT2Tokenizer 将阿拉伯字符转换为符号?
我正在尝试将GPT2用于阿拉伯语文本分类任务,如下所示:
但是,当我使用标记器时,它会将阿拉伯字符转换为像这样的符号
'ĠÙĥتÙĬر'
python - 增量训练 || 暂停和恢复训练,GPT2 语言建模
我目前正在尝试学习 python——同时学习使用 GPT-2 语言建模的机器学习——我遇到了一些问题,我克服了大部分问题,最后得到了一些不错的运行。
但是......正如你们大多数人可能知道的那样,训练你的模型需要大量的 CPU/GPU 能力和时间——我可以节省时间,但问题是我不能让它在我的家用电脑上不间断地运行(是的,我知道我可以租用 GPU @ google)——因为我希望在训练我的模型时能够做任何其他事情。
所以我有以下问题:
- 我可以以某种方式停止并重新开始我的模型训练吗?我读了一些关于检查点的东西,但是关于这个主题的信息已经过时了——所以我无法弄清楚。
- 我可以逐步喂养我的模型 fx。我的数据集的 10%,让它完成 - 然后下周再喂它 10% 等等?如果是这样怎么办?
- 额外的问题......以较低数据集的许多时期为目标会更好吗?还是更大的数据集和更多的时代?什么是好的时期?
套餐:
- 蟒蛇,3.7.9
- TensorFlow-GPU 2.3.0
- 张量流估计器 2.3.0
- 变形金刚 4.2.2
- 标记器 0.9.4
- 库达工具包 10.1
代码 - 分词器
代码——模型培训师
deep-learning - 在深度学习模型训练中修改学习率
下面是配置从HuggingFace 转换器库中使用的TrainingArguments以微调 GPT2语言模型的代码。
epoch数为100,learning_rate为0.00004,early_stopping的耐心值为3。
该模型运行了5/100个 epoch,并注意到 loss_value 的差异可以忽略不计。最新的检查点保存为checkpoint-latest
.
现在我可以修改learning_rate
可能是0.01
从0.00004
最新保存的检查点恢复训练checkpoint-latest
吗?这样做会有效率吗?
还是要以新learning_rate
值进行训练,我应该从头开始训练?
python - Huggingface 变压器启动
我正在尝试复制此演示的结果,其作者仅使用以下文本对GPT-3 进行了初始化:
我只能通过 Huggingface Transformer 访问 GPT-2。如何在 Huggingface 上启动 GPT-2 以复制上述示例?问题是,有了这个,人们就无法分别使用输入和相应的输出进行初始化(正如上面 GPT-3 演示的作者所做的那样)。
同样,本教程描述了如何使用 Huggingface,但没有示例清楚地显示如何使用输入与输出示例来启动它。
有谁知道如何做到这一点?
期望的输出:使用 GPT-2 返回类似的东西,输入“potato”,输出“peel, slice, cook, mash, bake”(如 GPT-3 演示:https ://www.buildgpt3.com/post /41/ )。显然,输出动词的确切列表不会相同,因为 GPT-2 和 GPT-3 不是相同的模型。