PaddlePaddle/PaddleNLP

[Question]: 牛爷爷们,救救孩子... uie-x-base 封闭域信息抽取问题

zhaoqf-cq opened this issue · 11 comments

请提出你的问题

背景: 由于训练有GPU环境, 推理只有CPU, 所以想迁移到 CPU 环境使用, 但是CPU使用 推理时间久, 占用内存贼高, 128GB 都能用完, 而且很慢...慢就算了 推理结果还是空, 所以想蒸馏了拿到CPU尝试使用

paddle版本

paddle-bfloat          0.1.7
paddle2onnx            1.0.6
paddlefsl              1.1.0
paddleocr              2.7.3
paddlepaddle-gpu       2.4.0rc0

cuda版本

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:32:27_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.2, V10.2.89

通过 https://github.com/linjieccc/PaddleNLP/blob/add-doc-ie/applications/information_extraction/document/README.md 文档信息抽取 训练后GPU下面表现良好

从 Issues 里面找到的 https://github.com/linjieccc/PaddleNLP/tree/add-doc-ie/applications/information_extraction/document/closed_domain 封闭域信息抽取, 根据文档操作

data_convert.py 这个修改了 schema

自认数据集偏少, 310 张 非标模板图片, 切分 0.8 0.1 0.1; 然后使用 通过UIE生成更多标注数据 (适合标注数据较少的情况) 生成了一个文件

data
--label_maps.json

接下来我以为ok了...就开始使用

python train.py \
    --train_path data/train_data.json \
    --dev_path data/dev_data.json \
    --label_maps_path data/label_maps.json \
    --num_epochs 50 \
    --model_name_or_path ernie-3.0-base-zh

文档给出的训练数据和验证集 哪儿来的啊... 我最开始微调训练用过的吗?
我用训练和验证都指定训练时候用到的 label_studio.json,提示我 TypeError: list indices must be integers or slices, not str
我用 训练时候的 train.txt 和 dev.txt 然后提示我 KeyError: 'entity_list'...

好难啊 QAQ

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的
image

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

这个就很尴尬了... 你咋跑的, 我就只有 label_maps.json 这一个文件...

我是直接运行的那个 .py 的 main方法... 然后提示错误了 我手动修改了 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件的 830行
self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 不然这里提示我没有 default这个... 不知道是不是这个影响的

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

而且我看到的 add-doc-ie 这个分支的 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件, 在线的和我拉下来的 TASK 就直接提示我错误了... 好像是差个} 反括号

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

我又在尝试了... 我在我报错的这里 TASKS 的 information_extraction 里面添加了

"default": {"model": "uie-base"},
    },

然后跑成功了...最后还是只有 label_maps.json 一个文件... 头秃

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

而且我看到的 add-doc-ie 这个分支的 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件, 在线的和我拉下来的 TASK 就直接提示我错误了... 好像是差个} 反括号

是的,那个文件有问题,我也修改了

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

这个就很尴尬了... 你咋跑的, 我就只有 label_maps.json 这一个文件...

我是直接运行的那个 .py 的 main方法... 然后提示错误了 我手动修改了 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 不然这里提示我没有 default这个... 不知道是不是这个影响的

我也报了这个错KeyError: 'default',好像是在执行train.py产生的
python train.py --train_path data/train_data.json --dev_path data/dev_data.json --label_maps_path data/label_maps.json --num_epochs 500
我没指定模型,它会默认使用ernie-layoutx-base-uncased,就没有报错

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

这个就很尴尬了... 你咋跑的, 我就只有 label_maps.json 这一个文件...
我是直接运行的那个 .py 的 main方法... 然后提示错误了 我手动修改了 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 不然这里提示我没有 default这个... 不知道是不是这个影响的

我也报了这个错KeyError: 'default',好像是在执行train.py产生的 python train.py --train_path data/train_data.json --dev_path data/dev_data.json --label_maps_path data/label_maps.json --num_epochs 500 我没指定模型,它会默认使用ernie-layoutx-base-uncased,就没有报错

你在逗我吗... 不指定模型 你做蒸馏干嘛... 预训练模型能满足你的需求???

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

这个就很尴尬了... 你咋跑的, 我就只有 label_maps.json 这一个文件...
我是直接运行的那个 .py 的 main方法... 然后提示错误了 我手动修改了 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 不然这里提示我没有 default这个... 不知道是不是这个影响的

我也报了这个错KeyError: 'default',好像是在执行train.py产生的 python train.py --train_path data/train_data.json --dev_path data/dev_data.json --label_maps_path data/label_maps.json --num_epochs 500 我没指定模型,它会默认使用ernie-layoutx-base-uncased,就没有报错

你在逗我吗... 不指定模型 你做蒸馏干嘛... 预训练模型能满足你的需求???

昨天先用预训练模型试了下,今天用训练好的模型进行蒸馏
image

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

这个就很尴尬了... 你咋跑的, 我就只有 label_maps.json 这一个文件...
我是直接运行的那个 .py 的 main方法... 然后提示错误了 我手动修改了 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 不然这里提示我没有 default这个... 不知道是不是这个影响的

我也报了这个错KeyError: 'default',好像是在执行train.py产生的 python train.py --train_path data/train_data.json --dev_path data/dev_data.json --label_maps_path data/label_maps.json --num_epochs 500 我没指定模型,它会默认使用ernie-layoutx-base-uncased,就没有报错

你在逗我吗... 不指定模型 你做蒸馏干嘛... 预训练模型能满足你的需求???

昨天先用预训练模型试了下,今天用训练好的模型进行蒸馏 image

那等你好消息...看看能成功么

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

这个就很尴尬了... 你咋跑的, 我就只有 label_maps.json 这一个文件...
我是直接运行的那个 .py 的 main方法... 然后提示错误了 我手动修改了 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 不然这里提示我没有 default这个... 不知道是不是这个影响的

我也报了这个错KeyError: 'default',好像是在执行train.py产生的 python train.py --train_path data/train_data.json --dev_path data/dev_data.json --label_maps_path data/label_maps.json --num_epochs 500 我没指定模型,它会默认使用ernie-layoutx-base-uncased,就没有报错

你在逗我吗... 不指定模型 你做蒸馏干嘛... 预训练模型能满足你的需求???

昨天先用预训练模型试了下,今天用训练好的模型进行蒸馏 image

那等你好消息...看看能成功么

哥哥们,有成功的吗?我也遇到一样问题了;taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 之后;报别的错误了:
E:\study\pythonproject\nlp\PaddleNLP-add-doc-ie\paddlenlp\taskflow\information_extraction.py", line 277, in _add_bbox
if box:
UnboundLocalError: local variable 'box' referenced before assignment

我跑通了,train_data.json和dev_data.json是用的python data_convert.py \ --label_studio_file ../data/label_studio.json \ --splits 0.8 0.2 0跑出来的 image

这个就很尴尬了... 你咋跑的, 我就只有 label_maps.json 这一个文件...
我是直接运行的那个 .py 的 main方法... 然后提示错误了 我手动修改了 C:\Users\13725\Desktop\paddle\PaddleNLP\paddlenlp\taskflow\taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 不然这里提示我没有 default这个... 不知道是不是这个影响的

我也报了这个错KeyError: 'default',好像是在执行train.py产生的 python train.py --train_path data/train_data.json --dev_path data/dev_data.json --label_maps_path data/label_maps.json --num_epochs 500 我没指定模型,它会默认使用ernie-layoutx-base-uncased,就没有报错

你在逗我吗... 不指定模型 你做蒸馏干嘛... 预训练模型能满足你的需求???

昨天先用预训练模型试了下,今天用训练好的模型进行蒸馏 image

那等你好消息...看看能成功么

哥哥们,有成功的吗?我也遇到一样问题了;taskflow.py 这个文件的 830行 self.model = TASKS[task]['default'][ind_tag] 修改为 self.model = TASKS[task]["models"]['default'][ind_tag] 之后;报别的错误了: E:\study\pythonproject\nlp\PaddleNLP-add-doc-ie\paddlenlp\taskflow\information_extraction.py", line 277, in _add_bbox if box: UnboundLocalError: local variable 'box' referenced before assignment

看看这个吧... 上次跑了一下 不行我就没玩儿了
再使用UIE-X封闭域信息抽取时遇到的问题 #8293