?相关文章:
基础知识介绍:
【一】ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀、的博客-CSDN博客_ernie模型
百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]_汀、的博客-CSDN博客_paddlenlp 安装
?项目实战:
PaddleHub--飞桨预训练模型应用工具{风格迁移模型、词法分析情感分析、Fine-tune API微调}【一】_汀、的博客-CSDN博客
PaddleHub--{超参优化AutoDL Finetuner}【二】_汀、的博客-CSDN博客
PaddleHub实战篇{词法分析模型LAC、情感分类ERNIE Tiny}训练、部署【三】_汀、的博客-CSDN博客
PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】_汀、的博客-CSDN博客
?PaddleHub还提供了超参优化(Hyperparameter Tuning)功能, 自动搜索最优模型超参得到更好的模型效果:
https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/autofinetune.md
目前深度学习模型参数可分为两类:模型参数 (Model Parameters)?与?超参数 (Hyper Parameters),前者是模型通过大量的样本数据进行训练学习得到的参数数据;后者则需要通过人工经验或者不断尝试找到最佳设置(如学习率、dropout_rate、batch_size等),以提高模型训练的效果。如果想得到一个效果好的深度学习神经网络模型,超参的设置非常关键。因为模型参数空间大,目前超参调整都是通过手动,依赖人工经验或者不断尝试,且不同模型、样本数据和场景下不尽相同,所以需要大量尝试,时间成本和资源成本非常浪费。PaddleHub AutoDL Finetuner可以实现自动调整超参数。
PaddleHub AutoDL Finetuner提供两种超参优化算法:
调整参数的基本思路为,调整参数使得产生更优解的概率逐渐增大。
PaddleHub AutoDL Finetuner为了评估搜索的超参对于任务的效果,提供两种超参评估策略:
使用PaddleHub AutoDL Finetuner需要准备两个指定格式的文件:待优化的超参数信息yaml文件hparam.yaml和需要Fine-tune的python脚本train.py。
hparam给出待搜索的超参名字、类型(int或者float)、搜索范围等信息,通过这些信息构建了一个超参空间,PaddleHub将在这个空间内进行超参数的搜索,将搜索到的超参传入train.py获得评估效果,根据评估效果自动调整超参搜索方向,直到满足搜索次数。
NOTE:
param_list:
- name : hparam1
init_value : 0.001
type : float
lower_than : 0.05
greater_than : 0.00005
...
train.py用于接受PaddleHub搜索到的超参进行一次优化过程,将优化后的效果返回。
NOTE:
report_final_result
接口反馈,如
hub.report_final_result(eval_avg_score["acc"])
(-∞, 1]
,取值越高,表示效果越好。
PaddleHub AutoDL Finetuner超参优化--NLP情感分类任务。:
PaddleHub/demo/autofinetune_text_classification at release/v1.5 · PaddlePaddle/PaddleHub · GitHub
PaddleHub AutoDL Finetuner超参优化--CV图像分类任务。
确认安装PaddleHub版本在1.3.0以上, 同时PaddleHub AutoDL Finetuner功能要求至少有一张GPU显卡可用。
通过以下命令方式:
$ OUTPUT=result/
$ hub autofinetune train.py --param_file=hparam.yaml --gpu=0,1 --popsize=5 --round=10
--output_dir=${OUTPUT} --evaluator=fulltrail --tuning_strategy=pshe2
其中,选项
--param_file
: 必填,待优化的超参数信息yaml文件,即上述hparam.yaml;
--gpu
: 必填,设置运行程序的可用GPU卡号,中间以逗号隔开,不能有空格;
--popsize
: 可选,设置程序运行每轮产生的超参组合数,默认为5;
--round
: 可选,设置程序运行的轮数,默认为10;
--output_dir
: 可选,设置程序运行输出结果存放目录,不指定该选项参数时,在当前运行路径下生成存放程序运行输出信息的文件夹;
--evaluator
: 可选,设置自动优化超参的评价效果方式,可选fulltrail和populationbased, 默认为populationbased;
--tuning_strategy
: 可选,设置自动优化超参算法,可选hazero和pshe2,默认为pshe2;
NOTE:
进行自动超参搜索时,PaddleHub会生成以下目录
./output_dir/
├── log_file.txt
├── best_model
├── visualization
├── round0
├── round1
├── ...
└── roundn
├── log-0.info
├── log-1.info
├── ...
├── log-m.info
├── model-0
├── model-1
├── ...
└── model-m
其中output_dir为启动autofinetune命令时指定的根目录,目录下:
AutoDL Finetuner API在优化超参过程中会自动对关键训练指标进行打点,启动程序后执行下面命令。
$ tensorboard --logdir ${OUTPUT}/visualization --host ${HOST_IP} --port ${PORT_NUM}
其中为输出目录,OUTPUT为AutoDLFinetuner输出目录,{HOST_IP}为本机IP地址,${PORT_NUM}为可用端口号,如本机IP地址为192.168.0.1,端口号8040, 用浏览器打开192.168.0.1:8040,即可看到搜索过程中各超参以及指标的变化情况。
PaddleHub AutoDL Finetuner 支持将train.py中的args其余不需要搜索的参数通过autofinetune remainder方式传入。这个不需要搜索的选项参数名称应该和通过hub autofinetune的传入选项参数名称保持一致。如PaddleHub AutoDL Finetuner超参优化--NLP情感分类任务示例中的max_seq_len选项,可以参照以下方式传入。
$ OUTPUT=result/
$ hub autofinetune train.py --param_file=hparam.yaml --gpu=0,1 --popsize=5 --round=10
--output_dir=${OUTPUT} --evaluator=fulltrail --tuning_strategy=pshe2 max_seq_len 128
WARNING:Program which was ran with hyperparameters as ... was crashed!
首先根据终端上的输出信息,确定这个输出信息是在第几个round(如round 3),之后查看${OUTPUT}/round3/下的日志文件信息log.info, 查看具体出错原因。