你好!
首先,非常感谢你们在Issues板块中回答大家的问题所付出的努力和时间!
我一直在尝试微调Donut模型用于法语视觉问答任务,但遇到了很多问题。
我的初步思路是:
- 创建法语SynthDoG数据(这里没有问题)
- 使用SynthDoG_fr数据微调donut-base模型(以这个笔记本为基础 https://github.com/NielsRogge/Transformers-Tutorials/blob/master/Donut/CORD/Fine_tune_Donut_on_a_custom_dataset_(CORD)_with_PyTorch_Lightning.ipynb )
- 在法语文档上对donut-SynthDog_fr模型进行视觉问答任务的微调(以这个笔记本为基础 https://github.com/NielsRogge/Transformers-Tutorials/blob/master/Donut/DocVQA/Fine_tune_Donut_on_DocVQA.ipynb )
为了适应语言的变化,我修改了synthdog的config_fr.yaml文件,使其具有法语字体和法语语料库(240万)。我还将两个微调过程的分词器更改为法语分词器(并检查它是否有效 - 它确实有效!)。我还阅读了 #11 ,觉得也许应该将解码器更改为更能处理法语的语言,所以我也这样做了。
尽管进行了这些更改,但我在使用SynthDoG_fr进行预训练时(30个epoch后的最低val_edit_distance约为0.74)以及在法语文档上进行VQA微调时仍然获得了较差的指标(这并不令人意外,考虑到预训练的结果)。这些指标也很明显很差,通常预测的是无意义的文字。
我是不是漏掉了什么?如果有任何帮助,我将不胜感激!
8条答案
按热度按时间ars1skjm1#
你好,Laura。
对于使用SynthDog进行预训练的问题,预训练模型是否能够解析纯文本?还是它会输出无意义的文字?
如果是这样,你能在调用model.train()之前分享一个训练数据的示例吗?@lauraminkova
iqih9akk2#
你好,Laura。在使用SynthDog进行预训练时,预训练模型是否能够解析纯文本?还是它会输出乱码?如果是这样,你能在调用model.train()之前分享一个训练数据的示例吗?@lauraminkova
你好,非常感谢你的回复@rm-asif-amin!自从发布我最初的问题以来,该模型现在可以预测法语文本,而不仅仅是预测乱码。然而,在大约60个epoch之后,训练损失非常低,而验证指标并不那么好——最小编辑距离仍然在0.75左右。这是对微调SynthDoG的典型情况吗?
v1l68za43#
你好,Laura Minkova!
很高兴知道你快要解决这个问题了!我使用了不同的笔记本作为参考,所以在训练过程中没有使用编辑距离度量。你能分享一下你的原始对数损失(log-loss)吗?
就我的情况而言,对于100k步(批量大小8),在120k个例子上进行训练就足够了。训练损失非常接近零,验证损失(对数损失)大约为0.3。我继续进行了大约200k步,只是看看它是如何收敛的。与你分享我的训练和验证指标-
训练指标-
$x_1^c_1^d_1^x$
验证指标-
$x_1^c_1^d_1^x$
使用这种预训练,我成功地在孟加拉国文档上执行了下游信息提取任务。
如果你想尝试另一种方法,这是我的工作流程的概述-
$x_1^e_0^f_1^x$
kr98yfug4#
你好,@lauraminkova!很高兴知道你正在接近解决问题!我使用了不同的笔记本作为参考,所以在训练过程中没有使用编辑距离度量。你能分享一下你的原始对数损失吗?
就我的情况而言,对于100k步(批量大小为8)的120k个例子进行训练就足够了。训练损失非常接近于零,验证损失(对数损失)大约为0.3。我继续进行了大约200k步,只是看看它是如何收敛的。与你分享我的训练和验证指标-
训练指标-
验证指标-
使用这种预训练,我成功地在孟加拉国文档上执行了下游信息提取任务。
如果你想尝试另一种方法,这是我的工作流程的概述 - https://colab.research.google.com/drive/1V_vP4p3W874QTSN-EYHOg-t4XGYR8TlP?usp=sharing
嘿!我想在几种不同的语言上微调甜甜圈,并希望将你的笔记本作为起点!我已经通过Google Drive请求访问权限!提前感谢!
8dtrkrch5#
你好,@eschaffn ,
你现在应该可以访问它了。请注意,这个笔记本主要用于调试。它与我实际的预训练流程非常相似,只是有一些小的改动。
vc9ivgsu6#
你好@eschaffn,你现在应该可以访问它了。请注意,笔记本主要用于调试。它与我实际的预训练过程的工作流程非常相似,只是有一些小的改动。
谢谢!
这是对基础模型进行微调以执行简单的OCR吗?还是有可能进行布局分析,例如标记方程、标题、页眉、页脚、表格等?另外,你是使用SynthDoG创建数据的吗?
ergxz8rk7#
你好,@eschaffn ,你现在应该可以访问它了。请注意,笔记本主要用于调试。它与我实际的预训练过程的工作流程非常相似,只是有一些小的变化。
谢谢你!
这是对基础模型进行微调以执行简单的OCR吗?还是有可能进行布局分析,例如标记方程、标题、页眉、页脚、表格等?另外,你是使用SynthDoG创建数据的吗?
这是对基础模型进行重新训练/微调以适应新的语言(读取文本)。对于你提到的更高级别的任务,需要针对特定任务再次进行训练/微调。是的,使用了Synthdog,但这个笔记本没有显示Synthdog数据。
s3fp2yjn8#
你好@eschaffn,你现在应该可以访问它了。请注意,笔记本主要用于调试。它与我实际的预训练过程的工作流程非常相似,只是有一些小的变化。
谢谢!
这是对基础模型进行微调以执行简单的OCR吗?还是有可能进行布局分析,例如标记方程、标题、页眉、页脚、表格等?另外,你是使用SynthDoG创建数据的吗?
这是对基础模型进行重新训练/微调以适应新的语言(读取文本)。对于你提到的更高级别的任务,需要再次使用特定任务对其进行训练/微调。是的,使用了Synthdog,但这个笔记本没有显示Synthdog数据。
我明白了,谢谢你!我想问一下,SynthDoG是否能够为多语言布局提取生成数据?类似于FUNDSD或XFUND,我不太关心收据,所以CORD对我来说没有用处。但是我找不到像俄语这样的语言的带有注解表格、标题、页眉、页脚等的布局数据集。
在 FUNSD 上微调的俄罗斯甜甜圈模型能否泛化到俄语文档布局分析?