首页 >> 电商 >> 用到 MindStudio 在CoNll2003数据集上进行 bert_large_NER 模型推理

用到 MindStudio 在CoNll2003数据集上进行 bert_large_NER 模型推理

2023-04-29 电商

─ bert_bin //降解的解答用数据资料存留逆时针 └── conll2003 //CoNll-2003数据资料集 └── bert_metric.py //弹道检验原作者 └── bert_onnx_inference.py //用到onnx假设解答原作者 └── bin_create.py //降解om假设解答用数据资料原作者 └── npy_dataset_generate.py //降解onnx假设解答用数据资料原作者五、可执行解答5.1 数据资料程序中

获取原始数据资料集CoNLL-2003:数据资料集下载链接:

数据资料集录入为:

├──conll2003 └── valid.txt //的测试集 └── train.txt //的测试集 └── test.txt //检验集

该数据资料三集从路透社的新闻文章之前割去的音节,并为这些单辞汇标记人名、地名和该组织旧名。以检验三集例,数据资料集的主要基本如下:

辞汇 辞汇性 辞汇块 实质

U.N. NNP I-NP I-ORG

official NN I-NP O

Ekeus NNP I-NP I-PER

heads VBZ I-VP O

for IN I-PP O

Baghdad NNP I-NP I-LOC

. . O O

在NER侦查之前,只体谅1、4奇科,其之前,第一奇科代表单辞汇,最终一奇科代表实质相关联的都可。实质都可NAME_ENTITY记录下来为一般而言九类:

B-PER/I-PER声称单辞汇相关联于个人实质的结尾处。

B-ORG/I-ORG声称单辞汇相关联于该组织实质的结尾处/在表面上。

B-LOC/I-LOC声称相关联于位置实质结尾处的单辞汇。

B-MISC/I-MISC声称单辞汇相关联于其他实质的结尾处。

0声称单辞汇非四大类实质。

数据资料程序中:将原始数据资料集转成为假设读写的二进制数据资料。

数据资料程序中原作者开发设计:

假设有三个读写,input_ids,attention_mask,token_type_ids;input_ids声称将读写的单辞汇经过bert_large_NER假设降解embedding,在这个操作过程之前,分设sequence间隔为512,padding为Ture,借助于将input_ids借助于为间隔为512的向量。同时,在每一条音节相关联的512个单辞汇之前,哪些是音节的实际间隔就将其相关联的attention_mask分设为1,padding的部分就将相关联的attention_mask分设为0。在一些侦查之前,存在假设的一条读写超过一段话的情况,此时能用token_type_ids来区分不同的音节,但在NER侦查之前,CoNLL-2003这个语料特里每个语料只有一段话,因此token_type_ids于是就是0。

数据资料程序中的代码借助于如下:(bin_create.py、npy_dataset_generate.py)

首先,定义INPUT_KEYS和NAME_ENTITY两个表奇科成,分别记录下来读写和实质旧名:

分设降解数据资料的明文结构,并创建者三个读写token相关联的桌面:

启动时bert_large_NER假设之前定义的tokenizer:

用到tokenizer之前的convert_tokens_to_ids原理,将英语单辞汇根据相关联的举例来说转化成embedding。手动将每个音节的间隔装入到512,并根据音节间隔注记attention_mask的值。此外,可执行每个单辞汇时,记录下来其相关联的实质都可,并将其记录下来在annofile之前,便于在此之后弹道的近似值。

对于om假设而言,尽快的读写是.binJPEG的,并将每条数据资料相关联的三条读写分别提领三个桌面。对于onnx假设而言,尽快的读写是.npyJPEG的,并将每条数据资料相关联的三条读写提领三个.npy明文。因此,在原作者开发设计之前明文存留时要忽略JPEG尽快。

可执行bin_create.py原作者降解om假设只能的解答数据资料:

在远距运营bin_create.py

运营成乎意料后降解:input_ids.npy、attention_mask.npy、token_type_ids.npy三个npy明文,存留在./bert_bin/bert_npy_2022xxxx-xxxxxx/桌面下,.anno明文记录下来token相关联的label,存留在./bert_bin桌面下。

可执行npy_dataset_generate.py原作者降解onnx假设只能的解答数据资料:

运营成乎意料后降解:input_ids、attention_mask、token_type_ids三个桌面,存留在./bert_bin/bert_bin_2022xxxx-xxxxxx/桌面下,桌面之前存的数据资料JPEG为.bin,作为om假设的读写。.anno明文记录下来token相关联的label,存留在./bert_bin/桌面下。

5.2 假设转成5.2.1 能用transformers[onnx]应用软件由path转化成onnxpip install transformers[onnx]

用到transformers.onnx顺利完成假设转成:

python -m transformers.onnx ---model=bert-large-NER ---feature=token-classification onnx/■参数简要:

--- model:hugging face上下载的GNU假设

--- feature:用以嵌入假设的相似性特性

--- onnx/:存留嵌入的onnx假设的逆时针

运营中止后降解model.onnx存留在./onnx桌面下。

5.2.2 onnx转化成om

用到ATC命令将onnx假设转成为om假设:

atc ---framework=5 ---model=model.onnx ---output=bert_large_bs16_seq512 ---input_shape="input_ids:16,512;attention_mask:16,512;token_type_ids:16,512" ---soc_version=Ascend310P3■参数简要:

---model:为ONNX假设明文。

---framework:5代表ONNX假设。

---output:输成的OM假设。

---input_shape:读写数据资料的shape。读写数据资料有三条,以外为batch*512,其之前512为sequence序奇科间隔。

---soc_version:可执行器型号。

运营成乎意料后降解bert_large_bs16_seq512.om假设明文。

对om假设顺利完成数据分析,判读假设的读写输成。

5.3 可执行上网解答

转成om假设成乎意料后,用到MindStudio remote适配器可执行ais_infer解答。

叫停ssh session,插入conda周围环境,插入工作录入:

用到ais_infer应用软件顺利完成解答:

a. 下载解答应用软件ais_infer。

git clone

b. 校对、装上解答应用软件

cd /home/lcy/RotaE/tools/ais-bench_workload/tool/ais_infer/backend/pip3.7 wheel ./ #校对 要根据自己的python版lspip install aclruntime-0.0.1-cp37-cp37m-linux_x86_64.whl

弹道检验(以batchsize=16为例):

python ./tools/ais-bench_workload/tool/ais_infer/ais_infer.py ---model ./bert_large_bs16_seq512_1.om ---input "./bert_bin/bert_bin_20220928-061343/input_ids,.bert_bin/bert_bin_20220928-061343/attention_mask,./bert_bin/bert_bin_20220928-061343/token_type_ids" ---output ./bert-large-OUT/bs16 ---outfmt NPY■参数简要:

---model:为ONNX假设明文。

---batchsize:假设的batchsize尺寸。

---input:假设的读写,input_ids、attention_mask、token_type_ids三个桌面。

---output:输成选定在./bert-large-OUT/bs16下。

---outfmt:解答结果存留JPEG。

可执行中止输成存留在./bert-large-OUT/bs16下。

5.4 弹道的测试

解答成乎意料,只能对解答结果顺利完成成品,通过bert_metric.py顺利完成成品,的测试解答结果,顺利完成弹道检验。

弹道解答原作者开发设计:

首先获取到./bert-large-OUT/bs16录入下的解答结果明文:

根据预见错误的条数/总数量赢取预见错误的准确度acc:

在MindStudio运营bert_metric.py原作者顺利完成弹道的测试:

运营成乎意料后输成假设预见结果的弹道为90.73%,差不多于hugging face之前在检验集上的弹道结果91.2%:

六、性能指标调优

用到aoe应用软件顺利完成则会性能指标调优。

“No performance improvement”表明:则会性能指标调优未带来假设解答性能指标的提升。

Q&A

1.由于bert_large_NER假设转成赢取的onnx假设较大,且三个读写的形状以外为动态的[batch, sequence],因此在用到MindStudio顺利完成onnx假设的数据分析以及onnx假设向om假设转成时浮现报错:

故在假设转成时直接用到ATC应用软件顺利完成。

2.在数据资料程序中操作过程之前,transformer特包括的AutoTokenizer.tokenizer原理,降解的embedding存在两个问题:①对唯过的单辞汇则会顺利完成拆分,导致降解的input_keys与原音节相比常常但会更长,此时annofile之前记录下来的每个单辞汇相关联的实质都可就但会过载;②在音节的应在处和结尾处则会减低[CLS]、[SEP]作为应在八字和终止八字,在极为强调整句话语义的NLP侦查之前是至关最主要的,但在关注每个单辞汇相关联的实质都可的NER侦查之前是不最主要的。在检验操作过程之前,也推论成作者在顺利完成假设体能训练时,也是未减低应在、终止八字的。

因此,考虑能用AutoTokenizer.convert_tokens_to_ids原理,先手动的相关联举例来说将英语单辞汇字八字为embedding,对于举例来说之前不会的单辞汇但会将其字八字成100。之后再对根据音节间隔和sequence间隔(512)对字八字后的input_ids顺利完成padding,顺利完成input_ids,attention_mask,token_type_ids的降解和annofile记录下来单辞汇label的相关联 。

bert_large_NER的vocab.txt如下请注意:

由tokenizer原理降解的数据资料如下请注意,101声称[CLS],102声称[SEP]。

由convert_tokens_to_ids降解的数据资料如下请注意,对举例来说之前未浮现过的单辞汇但会将其字八字为100。

若大众在用到MindStudio操作过程之前或解答操作过程之前遇到问题,可在MindStudio昇腾论坛()顺利完成提问、讨论。

肠道调理吃什么好
英特盐酸达泊西汀片怎么吃效果好
哪种复合维生素比较好
鼻炎吃再林阿莫西林胶囊管用不
轻度肝硬化是什么表现
TAG:数据模型
友情链接