bert-base-uncased-sst2-unstructured80-int8-ov 项目介绍
项目背景
bert-base-uncased-sst2-unstructured80-int8-ov
是一个基于BERT模型进行文本分类的项目,最初由Google推出。这一项目的基础模型是google-bert/bert-base-uncased,经过量化、剪枝和蒸馏等优化处理,用于在GLUE SST2数据集上进行微调。
项目特点
在项目中,模型实现了结构化稀疏的剪枝、量化到INT8和蒸馏技术的综合应用。通过这些优化措施,该模型在验证集上达到了以下性能:
- PyTorch框架下的准确率:0.9128
- OpenVINO IR格式的准确率:0.9128
- Transformer块线性层的稀疏率:0.80
该模型已被转换为OpenVINO™ IR(中间表示)格式,并通过NNCF对权重进行INT8压缩。
兼容性
提供的OpenVINO™ IR模型支持以下版本:
- OpenVINO版本2024.3.0及以上
- Optimum Intel 1.19.0及以上
优化参数
优化过程中使用了以下nncf_config.json
文件:
[
{
"algorithm": "quantization",
"preset": "mixed",
"overflow_fix": "disable",
"initializer": {
"range": {
"num_init_samples": 300,
"type": "mean_min_max"
},
"batchnorm_adaptation": {
"num_bn_adaptation_samples": 0
}
},
"scope_overrides": {
"activations": {
"{re}.*matmul_0": {
"mode": "symmetric"
}
}
},
"ignored_scopes": [
"{re}.*Embeddings.*",
"{re}.*__add___[0-1]",
"{re}.*layer_norm_0",
"{re}.*matmul_1",
"{re}.*__truediv__*"
]
},
{
"algorithm": "magnitude_sparsity",
"ignored_scopes": [
"{re}.*NNCFEmbedding.*",
"{re}.*LayerNorm.*",
"{re}.*pooler.*",
"{re}.*classifier.*"
],
"sparsity_init": 0.0,
"params": {
"power": 3,
"schedule": "polynomial",
"sparsity_freeze_epoch": 10,
"sparsity_target": 0.8,
"sparsity_target_epoch": 9,
"steps_per_epoch": 2105,
"update_per_optimizer_step": true
}
}
]
更多关于优化的信息,可以参考OpenVINO模型优化指南。
运行模型训练
- 安装所需软件包:
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
pip install optimum[openvino,nncf]
pip install datasets sentencepiece scipy scikit-learn protobuf evaluate
pip install wandb # 可选项
- 运行模型训练:
NNCFCFG=/path/to/nncf_config.json
python run_glue.py \
--lr_scheduler_type cosine_with_restarts \
--cosine_lr_scheduler_cycles 11 6 \
--record_best_model_after_epoch 9 \
--load_best_model_at_end True \
--metric_for_best_model accuracy \
--model_name_or_path textattack/bert-base-uncased-SST-2 \
--teacher_model_or_path yoshitomo-matsubara/bert-large-uncased-sst2 \
--distillation_temperature 2 \
--task_name sst2 \
--nncf_compression_config $NNCFCFG \
--distillation_weight 0.95 \
--output_dir /tmp/bert-base-uncased-sst2-int8-unstructured80 \
--overwrite_output_dir \
--run_name bert-base-uncased-sst2-int8-unstructured80 \
--do_train \
--do_eval \
--max_seq_length 128 \
--per_device_train_batch_size 32 \
--per_device_eval_batch_size 32 \
--learning_rate 5e-05 \
--optim adamw_torch \
--num_train_epochs 17 \
--logging_steps 1 \
--evaluation_strategy steps \
--eval_steps 250 \
--save_strategy steps \
--save_steps 250 \
--save_total_limit 1 \
--fp16 \
--seed 1
更多细节请参考训练配置和脚本。
使用示例
可以在OpenVINO notebooks中找到使用示例,例如:使用OpenVINO™和第四代英特尔®至强®可扩展处理器加速稀疏Transformer模型推理。
局限性
更多有关模型的局限性,请参考原始模型卡片。
法律信息
原始模型根据apache-2.0许可证分发,详细信息请查阅google-bert/bert-base-uncased模型卡片。
声明
Intel致力于尊重人权,并避免对人权产生不利影响,详见Intel的全球人权原则。Intel的产品和软件仅用于不对人权产生不利影响的应用。