当前位置: 首页 > news >正文

天津中冀建设集团有限公司网站个人网站 不备案

天津中冀建设集团有限公司网站,个人网站 不备案,行业网站开发方案,中国网络购物市场研究报告本文将会介绍如何使用HuggingFace的Optimum#xff0c;来对微调后的BERT模型进行量化#xff08;Quantization#xff09;。   在文章NLP#xff08;六十七#xff09;BERT模型训练后动态量化#xff08;PTDQ#xff09;中#xff0c;我们使用PyTorch自带的PTDQ…  本文将会介绍如何使用HuggingFace的Optimum来对微调后的BERT模型进行量化Quantization。   在文章NLP六十七BERT模型训练后动态量化PTDQ中我们使用PyTorch自带的PTDQPost Training Dynamic Quantization量化策略对微调后的BERT模型进行量化取得了模型推理性能的提升大约1.5倍。本文将尝试使用Optimum量化工具。 Optimum介绍 Optimum 是 Transformers 的扩展它提供了一组性能优化工具可以在目标硬件上以最高效率训练和运行模型。   Optimum针对不同的硬件提供了不同的优化方案如下表 硬件安装命令ONNX runtimepython -m pip install optimum[onnxruntime]Intel Neural Compressor (INC)python -m pip install optimum[neural-compressor]Intel OpenVINOpython -m pip install optimum[openvino,nncf]Graphcore IPUpython -m pip install optimum[graphcore]Habana Gaudi Processor (HPU)python -m pip install optimum[habana]GPUpython -m pip install optimum[onnxruntime-gpu] 本文将会介绍基于ONNX的模型量化技术。ONNX英语Open Neural Network Exchange是一种针对机器学习所设计的开放式的文件格式用于存储训练好的模型。它使得不同的人工智能框架如Pytorch、MXNet可以采用相同格式存储模型数据并交互。 模型量化 我们使用的微调后的BERT模型采用文章NLP六十六使用HuggingFace中的Trainer进行BERT模型微调中给出的文本分类模型。   首先我们先加载PyTorch中的设备CPU。 # load device import torchdevice torch.device(cpu)接着我们使用optimum.onnxruntime模块加载模型和tokenizer并将模型保存为onnx格式。 from optimum.onnxruntime import ORTModelForSequenceClassification from transformers import AutoTokenizer import torchmodel_id ./sougou_test_trainer_256/checkpoint-96 onnx_path ./sougou_test_trainer_256/onnx_256# load vanilla transformers and convert to onnx model ORTModelForSequenceClassification.from_pretrained(model_id, from_transformersTrue) tokenizer AutoTokenizer.from_pretrained(model_id)# save onnx checkpoint and tokenizer model.save_pretrained(onnx_path) tokenizer.save_pretrained(onnx_path)此时会多出onnx_256文件夹保存模型为model.onnx。 输出结果为 (./sougou_test_trainer_256/onnx_256\\tokenizer_config.json,./sougou_test_trainer_256/onnx_256\\special_tokens_map.json,./sougou_test_trainer_256/onnx_256\\vocab.txt,./sougou_test_trainer_256/onnx_256\\added_tokens.json,./sougou_test_trainer_256/onnx_256\\tokenizer.json)使用transfomers中的pipeline对模型进行快速推理。 from transformers import pipelinevanilla_clf pipeline(text-classification, modelmodel, tokenizertokenizer) vanilla_clf(这期节目继续关注中国篮球的话题。众所周知我们已经结束了男篮世界杯的所有赛程一胜四负的一个成绩甚至比上一届的世界杯成绩还要差。因为这一次我们连奥运会落选赛也都没有资格参加所以连续两次错过了巴黎奥运会的话对于中国篮协还有对于姚明来说确实成为了他任职的一个最大的败笔。对于球迷非常关注的一个话题乔尔杰维奇是否下课可能对于这个悬念来说也都是暂时有答案了。)输出结果如下 [{label: LABEL_0, score: 0.9963239431381226}]对ONNX模型进行优化。 from optimum.onnxruntime import ORTOptimizer from optimum.onnxruntime.configuration import OptimizationConfig# create ORTOptimizer and define optimization configuration optimizer ORTOptimizer.from_pretrained(model) optimization_config OptimizationConfig(optimization_level99) # enable all optimizations# apply the optimization configuration to the model optimizer.optimize(save_dironnx_path,optimization_configoptimization_config, )此时优化后的模型为model_optimized.onnx。 对优化后的模型进行推理。 from transformers import pipeline# load optimized model optimized_model ORTModelForSequenceClassification.from_pretrained(onnx_path, file_namemodel_optimized.onnx)# create optimized pipeline optimized_clf pipeline(text-classification, modeloptimized_model, tokenizertokenizer) optimized_clf(今年7月教育部等四部门联合印发了《关于在深化非学科类校外培训治理中加强艺考培训规范管理的通知》以下简称《通知》。《通知》针对近年来校外艺术培训的状况而发布并从源头就校外艺术培训机构的“培训主体、从业人员、招生行为、安全底线”等方面进行严格规范。校外艺术培训之所以火热主要在于高中阶段艺术教育发展迟滞于学生需求。分析教育部数据2021年艺术学科在校生占比为9.84%高于2020年的9.73%2020至2021年艺术学科在校生的年增长率为5.04%远高于4.28%的总在校生年增长率。增长的数据是近年来艺考招生连年火热的缩影在未来一段时间内艺考或将在全国范围内继续保持高热度。)输出结果为 [{label: LABEL_3, score: 0.9926980137825012}]对优化后的ONNX模型再进行量化代码为 from optimum.onnxruntime import ORTQuantizer from optimum.onnxruntime.configuration import AutoQuantizationConfig# create ORTQuantizer and define quantization configuration dynamic_quantizer ORTQuantizer.from_pretrained(optimized_model) dqconfig AutoQuantizationConfig.avx2(is_staticFalse, per_channelFalse)# apply the quantization configuration to the model model_quantized_path dynamic_quantizer.quantize(save_dironnx_path,quantization_configdqconfig, )此时量化后的模型为model_optimized_quantized.onnx。比较量化前后的模型大小代码为 import os# get model file size size os.path.getsize(os.path.join(onnx_path, model_optimized.onnx))/(1024*1024) quantized_model os.path.getsize(os.path.join(onnx_path, model_optimized_quantized.onnx))/(1024*1024)print(fModel file size: {size:.2f} MB) print(fQuantized Model file size: {quantized_model:.2f} MB)输出结果为 Model file size: 390.17 MB Quantized Model file size: 97.98 MB最后加载量化后的模型代码为 # load quantization model from optimum.onnxruntime import ORTModelForSequenceClassification from transformers import pipeline, AutoTokenizerquantized_model ORTModelForSequenceClassification.from_pretrained(onnx_path, file_namemodel_optimized_quantized.onnx).to(device) tokenizer AutoTokenizer.from_pretrained(onnx_path)推理实验 在进行模型推理实验前先加载测试数据集。 import pandas as pdtest_df pd.read_csv(./data/sougou/test.csv)使用量化前的模型进行推理记录推理时间代码如下 # original model evaluate import numpy as np import timecost_time_list [] s_time time.time() true_labels, pred_labels [], [] for i, row in test_df.iterrows():row_s_time time.time()true_labels.append(row[label])encoded_text tokenizer(row[text], max_length256, truncationTrue, paddingTrue, return_tensorspt)# print(encoded_text)logits model(**encoded_text)label_id np.argmax(logits[0].detach().numpy(), axis1)[0]pred_labels.append(label_id)cost_time_list.append((time.time() - row_s_time) * 1000)if i % 100:print(i, (time.time() - row_s_time) * 1000, label_id)print(avg time:, (time.time() - s_time) * 1000 / test_df.shape[0]) print(P50 time:, np.percentile(np.array(cost_time_list), 50)) print(P95 time:, np.percentile(np.array(cost_time_list), 95))输出结果为 0 710.2577686309814 0 100 477.72765159606934 1 200 616.3530349731445 2 300 509.63783264160156 3 400 531.57639503479 4avg time: 501.0757282526806 P50 time: 504.6522617340088 P95 time: 623.9353895187337 对输出结果进行指标评级代码为 from sklearn.metrics import classification_reportprint(classification_report(true_labels, pred_labels, digits4))重复上述代码将模型替换为量化前ONNX模型model.onnx优化后ONNX模型model_oprimized.onnx量化后ONNX模型model_optimized_quantized.onnx进行推理时间单位ms统计和推理指标评估结果见下表 模型平均推理时间P95推理时间weighted F1量化前ONNX模型501.1623.90.9717优化后ONNX模型484.6629.60.9717量化后ONNX模型361.5426.90.9738 对比文章NLP六十七BERT模型训练后动态量化PTDQ中的推理结果原始模型的平均推理时间为666.6msweighted F1值为0.9717我们有如下结论 ONNX模型不影响推理效果但在平均推理时间上提速约1.33倍优化ONNX模型不影响推理效果但在平均推理时间上提速约1.38倍量化后的ONNX模型影响推理效果一般会略有下降本次实验结果为提升但在平均推理时间上提速约1.84倍由于PyTorch的PTDQ模型训练后动态量化 总结 本文介绍了如何使用HuggingFace的Optimum来对微调后的BERT模型进行量化Quantization在optimum.onnxruntime模块中平均推理时间提速约1.8倍。   本文已开源至Github网址为https://github.com/percent4/dynamic_quantization_on_bert 。   本文已开通个人博客欢迎大家访问https://percent4.github.io/ 。 欢迎关注我的公众号NLP奇幻之旅原创技术文章第一时间推送。 欢迎关注我的知识星球“自然语言处理奇幻之旅”笔者正在努力构建自己的技术社区。 ### 参考文献 NLP六十六使用HuggingFace中的Trainer进行BERT模型微调https://blog.csdn.net/jclian91/article/details/132644042NLP六十七BERT模型训练后动态量化PTDQhttps://blog.csdn.net/jclian91/article/details/132644042Optimum: https://huggingface.co/docs/optimum/indexOptimizing Transformers with Hugging Face Optimum: https://www.philschmid.de/optimizing-transformers-with-optimum
http://www.tj-hxxt.cn/news/231525.html

相关文章:

  • 毕业设计做网站 如何做全网媒体整合推广平台
  • 专注网站建设微信开发网站制作老了
  • 营销型网页设计外包seo服务收费标准
  • 网站f式布局深圳市住房建设局网站首页
  • asp艺术学校网站源码江干区住房和城市建设局网站
  • 网站做等级测评做商城类网站备案时需提供什么证件
  • 怎么在网站后台加框框建设银行社保卡网站在哪
  • 网站地图怎么提交开网店需要什么准备
  • 葫芦岛市建设局网站做乡镇网站
  • 企业网站优化做什么公司企业文化墙设计方案
  • wordpress数字交易模板站长工具seo综合查询网
  • 信托公司网站建设视频营销的策略与方法
  • 网站服务器与虚拟主机电子商务网站开发岗位
  • 网站建设的规划方案外汇直播室都是网站做的
  • 服务器做网站用什么环境好0元购怎么在网站做
  • 大岭山网站怎么自己制作微信小程序
  • 大理网上商城网站建设网站建设与管理设计
  • php 怎么做 网站nodejs的网站开发
  • 网站备案平台大方网站制作
  • 网站开发常见问题wordpress分类目录在
  • 做个电商网站浮山网站建设
  • 制定网站推广方案类似携程网的网站
  • 建设银行网站用户权限广州软件开发培训机构有哪些
  • html5 网站开发实战小学生手工
  • 企业商务网站的技术网站o2o
  • 动漫网站开发优势网址域名
  • 经典的企业网站wordpress esc attr
  • 男女做污的事情网站视频1688官网app下载
  • 新手小白如何互联网创业河源市seo网站设计
  • 做论坛网站多少钱送菜网站制作