PaddleNLP
PaddleNLP copied to clipboard
Add model compression API
PR types
Function optimization
PR changes
APIs
Description
Update compression API
Done:
- 根据paddleslim更新,更新了API接口(TODO:试验adaground是否优于round)
- 避免patch的冲突,避免import了paddleslim中的nlp_utils.py文件,并且把改文件内容搬至 PaddleNLP,增加ofa_utils.py文件
- compress API 移至 Library
- 增加了CompressionArguments,用户可以直接通过
--的形式传参,或者用Yaml文件传,不需要区分training和compression,直接把要传的参数传进去即可。 - 目前支持dynabert+ptq,dynabert,ptq,三种策略,默认第一个。
TODO:
- [ ] 通用性1:electra等还不支持,需要单测的测试(动转静不支持的模型没法使用压缩API(涉及动转静),不支持的列表:https://github.com/PaddlePaddle/PaddleNLP/issues/2793);
- [ ] 通用性2:是否对任何class和forward都可以支持
- [ ] 压缩API 文档修改
- [ ] 更新eval.py脚本和backend,以提供示例,帮助开发者快速搭建预测脚本
Usage: 如果使用conf.yaml,需要把
strategy: "dynabert+ptq"
algo_list: ["hist", "mse"]
batch_num_list: [1]
batch_size_list: [4, 8, 16]
width_mult_list: [0.75]
配进去,也可以使用命令行的形式:
# Supports 'dynabert+ptq', 'dynabert' and 'ptq' now.
python compress_seq_cls.py \
--dataset "clue cluewsc2020" \
--model_name_or_path best_models/CLUEWSC2020/ \
--output_dir ./ \
--strategy "dynabert+ptq" \
--algo_list "hist" "mse" \
--width_mult_list 0.75 \
--batch_size_list 4 8 16 \
--batch_num_list 1 \
--per_device_train_batch_size 32 \
--per_device_eval_batch_size 32 \