PaddlePaddle / PaddleNLP

👑 Easy-to-use and powerful NLP and LLM library with 🤗 Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications, including 🗂Text Classification, 🔍 Neural Search, ❓ Question Answering, ℹ️ Information Extraction, 📄 Document Intelligence, 💌 Sentiment Analysis etc.
https://paddlenlp.readthedocs.io
Apache License 2.0
12.18k stars 2.95k forks source link

关于textsql的几个问题 #741

Closed thunder95 closed 1 year ago

thunder95 commented 3 years ago
  1. 预处理数据的时候出现大量warning, 不知道有没有影响: WARNING 2021-07-13 17:51:38,523 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=拥有数量最多的棒球运动员的大学的全名和id是什么?

  2. 预训练模型有大量的网络层权重不匹配 skip loading for encoder.base......bias, weight not in the provide dict

  3. dusql只是预测推理, 几个小时过去,仍旧只是预测了3000多个iter,请问这种情况正常吗?

wawltor commented 3 years ago

想问一下 能提供一下具体的repo地址吗? 我们只提供了RAT-SQL IG-SQL 这两个模型

thunder95 commented 3 years ago

想问一下 能提供一下具体的repo地址吗? 我们只提供了RAT-SQL IG-SQL 这两个模型

@wawltor 你好 我使用的是RAT-SQL, 尝试千言数据集比赛的, 在aistudio上运行, 需要地址吗?

wawltor commented 3 years ago

想问一下 能提供一下具体的repo地址吗? 我们只提供了RAT-SQL IG-SQL 这两个模型

@wawltor 你好 我使用的是RAT-SQL, 尝试千言数据集比赛的, 在aistudio上运行, 需要地址吗?

能不能提供一下aistudio的地址了?

thunder95 commented 3 years ago

想问一下 能提供一下具体的repo地址吗? 我们只提供了RAT-SQL IG-SQL 这两个模型

@wawltor 你好 我使用的是RAT-SQL, 尝试千言数据集比赛的, 在aistudio上运行, 需要地址吗?

能不能提供一下aistudio的地址了?

@wawltor https://aistudio.baidu.com/studio/project/partial/verify/2179149/acf5e5c13b814fa9a25a986d82b1191e 请看下能否打开, 里面所用的步骤都是按照readme来的,不知道是哪里没弄对

liu100286 commented 3 years ago

dusql 预测 3300+ iter 结束 .....

wawltor commented 3 years ago
1. 预处理数据的时候出现大量warning, 不知道有没有影响:
   `WARNING 2021-07-13 17:51:38,523 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=拥有数量最多的棒球运动员的大学的全名和id是什么?`

2. 预训练模型有大量的网络层权重不匹配
   `skip loading for encoder.base......bias, weight not in the provide dict`

3. dusql只是预测推理, 几个小时过去,仍旧只是预测了3000多个iter,请问这种情况正常吗?
  1. 第一个部分这块我没有看到类似的错误,晚点我确认一下
  2. 第二个问题是没有关系的,因此在finetune一些任务里面,有自己一些参数,例如一些fc,这些参数没有在预训练模型中出现过,因此不会加载这个参数,但是对结果没有影响
  3. 预测的速度 我这边来排查一下 看看能不能优化一下预测速度这块
thunder95 commented 3 years ago
1. 预处理数据的时候出现大量warning, 不知道有没有影响:
   `WARNING 2021-07-13 17:51:38,523 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=拥有数量最多的棒球运动员的大学的全名和id是什么?`

2. 预训练模型有大量的网络层权重不匹配
   `skip loading for encoder.base......bias, weight not in the provide dict`

3. dusql只是预测推理, 几个小时过去,仍旧只是预测了3000多个iter,请问这种情况正常吗?
1. 第一个部分这块我没有看到类似的错误,晚点我确认一下

2. 第二个问题是没有关系的,因此在finetune一些任务里面,有自己一些参数,例如一些fc,这些参数没有在预训练模型中出现过,因此不会加载这个参数,但是对结果没有影响

3. 预测的速度 我这边来排查一下  看看能不能优化一下预测速度这块

第一个问题只出现在cspider数据集, 出错的代码位置在:

def check(self, data, db):
        if len(db.columns) > self.config.max_column_num or len(
                db.tables) > self.config.max_table_num:
            print("====>", len(db.columns), self.config.max_column_num, len(db.tables), self.config.max_table_num)
            return False
        return True

输出如下:

WARNING 2021-07-14 14:30:45,914 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=找到所有有2到4个公园的城市。
====> 353 100 26 18
WARNING 2021-07-14 14:30:45,914 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=哪一个公园在2008年餐馆的最多?
====> 353 100 26 18

是需要在config里面加大着两个配置参数吗? max_table_num, max_column_num

第二个问题: 也就是说下载的模型不能直接拿来做预测推理,需要基于此预训练模型进行finetune, 也是需要在config里面修init_model_params吗?

wawltor commented 3 years ago
1. 预处理数据的时候出现大量warning, 不知道有没有影响:
   `WARNING 2021-07-13 17:51:38,523 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=拥有数量最多的棒球运动员的大学的全名和id是什么?`

2. 预训练模型有大量的网络层权重不匹配
   `skip loading for encoder.base......bias, weight not in the provide dict`

3. dusql只是预测推理, 几个小时过去,仍旧只是预测了3000多个iter,请问这种情况正常吗?
1. 第一个部分这块我没有看到类似的错误,晚点我确认一下

2. 第二个问题是没有关系的,因此在finetune一些任务里面,有自己一些参数,例如一些fc,这些参数没有在预训练模型中出现过,因此不会加载这个参数,但是对结果没有影响

3. 预测的速度 我这边来排查一下  看看能不能优化一下预测速度这块

第一个问题只出现在cspider数据集, 出错的代码位置在:

def check(self, data, db):
        if len(db.columns) > self.config.max_column_num or len(
                db.tables) > self.config.max_table_num:
            print("====>", len(db.columns), self.config.max_column_num, len(db.tables), self.config.max_table_num)
            return False
        return True

输出如下:

WARNING 2021-07-14 14:30:45,914 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=找到所有有2到4个公园的城市。
====> 353 100 26 18
WARNING 2021-07-14 14:30:45,914 dusql_dataset_v2.py:314 * check failed: db_id=baseball_1, question=哪一个公园在2008年餐馆的最多?
====> 353 100 26 18

是需要在config里面加大着两个配置参数吗? max_table_num, max_column_num

第二个问题: 也就是说下载的模型不能直接拿来做预测推理,需要基于此预训练模型进行finetune, 也是需要在config里面修init_model_params吗?

  1. 可以加大这个config中配置试试,不过不要做的太大,不然模型中有些gather的操作,会导致越界的行为
  2. 在实际的模型中,预训练模型的参数只是一部分,在下游的模型中还有自己的参数,这些参数需要自己去训练,预训练模型不会x训练下游fc之类的参数,所以这个warn不要管它就行
thunder95 commented 3 years ago

@wawltor 训练cspider总是不成功, 请教下什么原因? 运行的命令是 bash ./train.sh 10 output/cspider_baseline --config conf/text2sql_cspider.jsonnet --data-root data/CSpider/preproc

报错信息如下:

8LY$4KUD)WMN{~}~2T%JH`D

在conf里设置预训练模型后: init_model_params: 'data/trained_model/cspider.pdparams', 又报了另外的错:

Traceback (most recent call last):
  File "./script/text2sql_main.py", line 249, in <module>
    train(config)
  File "./script/text2sql_main.py", line 99, in train
    model = ModelClass(config.model, g_label_encoder)
  File "./script/text2sql_main.py", line 211, in <lambda>
    ModelClass = lambda x1, x2: text2sql.models.EncDecModel(x1, x2, 'v2')
  File "/home/aistudio/PaddleNLP/examples/text_to_sql/RAT-SQL/text2sql/models/enc_dec.py", line 41, in __init__
    self.encoder = encoder_v2.Text2SQLEncoderV2(config)
  File "/home/aistudio/PaddleNLP/examples/text_to_sql/RAT-SQL/text2sql/models/encoder_v2.py", line 95, in __init__
    self.base_encoder = PretrainModel(**args['cfg'])
KeyError: 'cfg'
wawltor commented 3 years ago

修复上述 cspider的bug https://github.com/PaddlePaddle/PaddleNLP/pull/828

thunder95 commented 3 years ago

@wawltor 我简单制作了一份单表的训练数据,希望基于nl2sql模型进行finetune, preproc这一步已顺利完成, 但是始终在训练时报错,希望大佬帮忙指点一下。 使用的是Research代码。

 if data.dtype == np.object:
Traceback (most recent call last):
  File "./script/text2sql_main.py", line 283, in <module>
    train(config)
  File "./script/text2sql_main.py", line 133, in train
    launch.trainer.train(config, model, optimizer, config.train.epochs, train_reader, dev_reader)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/launch/trainer.py", line 162, in train
    loss = epoch_train(config, model, optimizer, epoch, train_data, config.general.is_debug)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/launch/trainer.py", line 81, in epoch_train
    loss = model(inputs, labels)
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 898, in __call__
    outputs = self.forward(*inputs, **kwargs)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/enc_dec.py", line 75, in forward
    return self._train(inputs, labels)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/enc_dec.py", line 86, in _train
    enc_results = self.encoder(inputs)
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 898, in __call__
    outputs = self.forward(*inputs, **kwargs)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/encoder_v2.py", line 178, in forward
    c_boundary, t_boundary, orig_input.relations, v_e_input)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/relational_encoder.py", line 112, in forward_unbatched
    enc_new, _, _ = self.encoder(enc, relations_t)
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 898, in __call__
    outputs = self.forward(*inputs, **kwargs)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/relational_transformer.py", line 405, in forward
    inputs, cache = b(inputs, relations, attn_bias=attn_bias, past_cache=p)
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 898, in __call__
    outputs = self.forward(*inputs, **kwargs)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/relational_transformer.py", line 361, in forward
    past_cache=past_cache)  #self attn
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 898, in __call__
    outputs = self.forward(*inputs, **kwargs)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/relational_transformer.py", line 227, in forward
    scores = relative_attention_logits(q, k, relation_k)
  File "/home/aistudio/Research/NLP/Text2SQL-BASELINE/text2sql/models/relational_transformer.py", line 109, in relative_attention_logits
    qr_matmul = paddle.matmul(q_t, r_t).transpose([0, 2, 1, 3])
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/linalg.py", line 135, in matmul
    return op(x, y, 'trans_x', transpose_x, 'trans_y', transpose_y)
ValueError: (InvalidArgument) Input(X) and Input(Y) has error dim.X_broadcast's shape[1] must be equal to Y_broadcast's shape[1],or X_broadcast's shape[1] <= 1, or Y_broadcast's shape[1] <= 1,But received X_broadcast's shape[1] = [24]received Y_broadcast's shape[1] = [35]
  [Hint: Expected x_bd_dims[i] == y_bd_dims[i] || x_bd_dims[i] <= 1 || y_bd_dims[i] <= 1 == true, but received x_bd_dims[i] == y_bd_dims[i] || x_bd_dims[i] <= 1 || y_bd_dims[i] <= 1:0 != true:1.] (at /paddle/paddle/fluid/operators/matmul_v2_op.h:81)
  [operator < matmul_v2 > error]
github-actions[bot] commented 1 year ago

This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。

github-actions[bot] commented 1 year ago

This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。