jd-aig/nlp_baai

mddr使用的词向量是腾讯的吗

Opened this issue · 14 comments

mddr使用的词向量是腾讯的吗

基线版本中需要使用预训练的词向量为句子构建稠密向量表达,基线版本实现相对简单,没有完全参数化配置,选用不同开源版本的词向量代码可能会略微有一点调整,如初始方式或向量维度。

可以根据自己开发习惯选择熟悉的预训练词向量,如 https://github.com/cliuxinxin/TX-WORD2VEC-SMALL等。

此次JDDC竞赛内容是关于电商服务的多轮对话,其中会涉及商品属性、售后服务等一些专业术语,所以强烈建议使用 BAAI-JDAI-WordEmbedding 词向量,https://github.com/jd-aig/nlp_baai/tree/master/pretrained_models_and_embeddings ,由大规模电商语料训练生成,应该会更适合JDDC大赛。

好的,多谢!还有个问题是基线模型mddr使用的是pytorch版本的bert,但是baai只提供了tensorflow版本的预训练模型,是否可以提供对应的pytorch版本?

我解释一下BERT的预训练模型的使用:

1)由于BERT官方版本模型是TF实现的,所以各种BERT的预训练模型都是在官方TF的代码上,结合各自的数据,训练出来的模型,所以BAAI-JDAI-BERT, Chinese预训练模型提供的也是TF的checkpoint。

2)开源项目https://github.com/huggingface/transformers 提供了transfomers模型的TF和PyTorch的实现,其中也包括BERT模型。Huggingface的PyTorch版本与官方TF模型完全一致的,包括模型变量的名称等等,所以两种框架保存下来的模型权重就非常容易重用。

3)具体怎么在PyTorch项目中使用BAAI-JDAI-BERT:

a) 访问https://github.com/jd-aig/nlp_baai/tree/master/pretrained_models_and_embeddings 下载 BAAI-JDAI-BERT

b) 解压缩BAAI-JDAI-BERT.tar, 并将bert_model.ckpt.data-00000-of-00001重命名bert_model.ckpt

c) 安装Huggingface的transformes包,并执行自带的命令行来转换checkpoint文件,例如 transformers-cli convert --model_type bert --tf_checkpoint ~/JDAI-BERT/bert_model.ckpt --config ~/JDAI-BERT/bert_config.json --pytorch_dump_output ~/JDAI-BERT-PyTorch/pytorch_model.bin

   config文件和vocab文件不用转换,PyTorch的config文件名默认是config.json。

这样就满足你需要了吧。👌

再次感谢您细致的回答。我尝试过进行模型文件的转换,但是发生了报错:
image
我查看过JDAI的模型与bert-uncased的模型,发现前者会多出一些AdamWeightDecayOptimizer的参数,应该是由于这个导致的。是否可以在转换的时候删除这些参数?

我刚才试的TF 2.2.0和transformers 2.10.0,在转换中会自动skip掉AdamWeight的一些参数,如下

INFO:transformers.modeling_bert:Skipping
bert/encoder/layer_9/attention/self/value/kernel/AdamWeightDecayOptimizer
INFO:transformers.modeling_bert:Skipping
bert/encoder/layer_9/attention/self/value/kernel/AdamWeightDecayOptimizer_1
INFO:transformers.modeling_bert:Initialize PyTorch weight ['bert', 'encoder', 'layer_9',
'intermediate', 'dense', 'bias']

转出来的PyTorch权重我也加载了一下,简单跑了下是正常的。所以你升级版本试试???

我把transformers更新了以后就可以了,多谢!

有没有朋友遇到过这种情况:在进行模型文件转换时报错,报错内容提示Segmentation fault。
具体错误信息:
【root@jupyter-team1440:~/notespace/mddr/transformers# transformers-cli convert --model_type bert --tf_checkpoint ~/notespace/mddr/transformers/prev_trained_model/bert-base-chinese/bert_model.ckpt --config ~/notespace/mddr/transformers/prev_trained_model/bert-base-chinese/config.json --pytorch_dump_output ~/notespace/mddr/transformers/prev_trained_model/bert-base-chinese/pytorch_model.bin
Building PyTorch model from configuration: BertConfig {
"attention_probs_dropout_prob": 0.1,
"directionality": "bidi",
"hidden_act": "gelu",
"hidden_dropout_prob": 0.1,
"hidden_size": 768,
"initializer_range": 0.02,
"intermediate_size": 3072,
"layer_norm_eps": 1e-12,
"max_position_embeddings": 512,
"model_type": "bert",
"num_attention_heads": 12,
"num_hidden_layers": 12,
"pad_token_id": 0,
"pooler_fc_size": 768,
"pooler_num_attention_heads": 12,
"pooler_num_fc_layers": 3,
"pooler_size_per_head": 128,
"pooler_type": "first_token_transform",
"type_vocab_size": 2,
"vocab_size": 21128
}

Segmentation fault (core dumped)】

有没有朋友遇到过这种情况:在进行模型文件转换时报错,报错内容提示Segmentation fault。
具体错误信息:
【root@jupyter-team1440:~/notespace/mddr/transformers# transformers-cli convert --model_type bert --tf_checkpoint ~/notespace/mddr/transformers/prev_trained_model/bert-base-chinese/bert_model.ckpt --config ~/notespace/mddr/transformers/prev_trained_model/bert-base-chinese/config.json --pytorch_dump_output ~/notespace/mddr/transformers/prev_trained_model/bert-base-chinese/pytorch_model.bin
Building PyTorch model from configuration: BertConfig {
"attention_probs_dropout_prob": 0.1,
"directionality": "bidi",
"hidden_act": "gelu",
"hidden_dropout_prob": 0.1,
"hidden_size": 768,
"initializer_range": 0.02,
"intermediate_size": 3072,
"layer_norm_eps": 1e-12,
"max_position_embeddings": 512,
"model_type": "bert",
"num_attention_heads": 12,
"num_hidden_layers": 12,
"pad_token_id": 0,
"pooler_fc_size": 768,
"pooler_num_attention_heads": 12,
"pooler_num_fc_layers": 3,
"pooler_size_per_head": 128,
"pooler_type": "first_token_transform",
"type_vocab_size": 2,
"vocab_size": 21128
}

Segmentation fault (core dumped)】

我也遇到一样的问题,你现在是否已经解决

我是在CPU环境上转的,GPU环境上报cuda的错误,但我的GPU环境本身没问题的,模型训练都可以跑的,原因未知,我直接用CPU环境规避了。未见过core dumped的问题。

我是在CPU环境上转的,GPU环境上报cuda的错误,但我的GPU环境本身没问题的,模型训练都可以跑的,原因未知,我直接用GPU环境规避了。未见过core dumped的问题。

我是在GPU服务器转以及load预训练模型都有问题。

我是在CPU环境上转的,GPU环境上报cuda的错误,但我的GPU环境本身没问题的,模型训练都可以跑的,原因未知,我直接用GPU环境规避了。未见过core dumped的问题。

我是在GPU服务器转以及load预训练模型都有问题。

换CPU环境试试吧

我是在CPU环境上转的,GPU环境上报cuda的错误,但我的GPU环境本身没问题的,模型训练都可以跑的,原因未知,我直接用GPU环境规避了。未见过core dumped的问题。

我是在GPU服务器转以及load预训练模型都有问题。

换CPU环境试试吧

我换本机CPU环境是没有问题的,我不知道transformer是load预选炼模型是如何申请资源的

我也出现了Segmentation fault (core dumped)的问题,将sentencepiece的版本降级到0.1.91问题解决,供参考。
方案来源:huggingface/transformers#5359

你好,BAAI-JDAI-BERT, Chinese模型可以分享一下吗,原链接不能下载了,谢谢