谷歌怎么做公司网站,ps做网站要求,公司的网站设计制作,网站制作制作【Python学习笔记】Optuna Transformer 实践
背景前摇#xff08;省流可不看#xff09;#xff1a; 之前以泰坦尼克号数据集为案例#xff0c;学习了Optuna的基本操作#xff0c;为了进一步巩固知识和便于包装简历#xff0c;决定找个唬人一点的项目练练手。 ————…【Python学习笔记】Optuna Transformer 实践
背景前摇省流可不看 之前以泰坦尼克号数据集为案例学习了Optuna的基本操作为了进一步巩固知识和便于包装简历决定找个唬人一点的项目练练手。 ———————————————————————————————————————————— B站大学学习视频【手把手带你实战HuggingFace Transformers-番外技能篇】基于Optuna的transformers模型自动调参 https://www.bilibili.com/list/watchlater?oid875968820bvidBV1NN4y1S7i8spm_id_from333.1007.top_right_bar_window_view_later.content.click 传送门 ———————————————————————————————————————————— 正文 划重点权重参数是模型通过梯度下降等自己一点点学到的超参数是需要人为设置的。 按我的理解打个粗略的比方权重参数表示模型“学什么”超参数表示模型“怎么学”。比如说一个学生要上学如果父母有车有时间送那就坐家里的车去学校如果父母没车或者没时间他就走路或者骑自行车、坐公交等去学校。他怎么去学校很大程度上他父母会决定当然要是他父母没说话他自己也会有个默认选择这就是超参数。 至于上学路上他花多久时间走快点走慢点要不要顺路买个早点或者等等同班同学还是一大早直奔学校沉迷学习这就是他自己决定看啥更重要了即权重参数。该例子很不贴切严谨仅代表个人理解请勿较真 “一个最优目标的定义”之前泰坦尼克号那个案例最优目标就是希望均方根差(root mean square error缩写RMSE)最小。 ———————————————————————————————— 原作者的示例代码库下载地址https://github.com/zyds/transformers-code 添加链接描述 看起来好NB好系统好全面的教程在下技术小白先膜拜一波感谢大佬的无私分享 找到这个名为hyp_tune_optuna.ipynb的代码 ———————————————————————————————— 我一开始以为这个代码需要一个特别麻烦的库PyTorch后面发现并不用……直接装需要的俩库就完事了……还是把教程放在这里吧。 第一次安装的话很费劲大家想试试的千万做好耗时间的心理准备 https://cloud.tencent.com/developer/article/2154882 腾讯云yyds ———————————————————————————————————————————— pip install 一下 transformer 和 dataset 库。 检查一下原视频UP的Github发现适配的Transformer是4.36.2的先把这个搞定 这我习惯不好应该在开始跑项目装环境之前就先看看示例用的什么版本免得后来费事卸载重装大家不要学我。 ———————————————————————————————————————————— 如果安装完这俩库一运行还报一个huggingface相关的错别担心按照提示输入命令‘pip install transformers -U’执行即可搞定。 前面几个Step主要在装库载入数据集创建模型等正常运行即可。 到Step4这里开始莫名其妙地扯拐 RuntimeError: Failed to import transformers.models.bert.configuration_bert because of the following error (look up to see its traceback): Failed to import transformers.onnx.config because of the following error (look up to see its traceback): DLL load failed while importing _imaging: 找不到指定的模块。 不要怕遇到这种差东西的报错一般都是环境问题复制报错让Kimi看看 基本上看来是环境没配对造成的了十有八九这个锅还是Python背。————————————————————————————————————————————
后再运行发现他的报错变简单了DLL load failed while importing _imaging: 找不到指定的模块。 再针对这个报错搜索发现是Pillow版本太低导致的 发现输出还有bug再搜 Map: 0%| | 0/6988 [00:00?, ? examples/s] Unexpected exception formatting exception. Falling back to standard exception Traceback (most recent call last): File “c:\Users\admin\anaconda3\envs\optuna-example\lib\site-packages\PIL\Image.py”, line 108, in raise ImportError(msg) ImportError: The _imaging extension was built for another version of Pillow or PIL: Core version: 10.4.0 Pillow version: 9.3.0
发现需要10.4.0版本的Pillow那就卸载重新再装这个版本中间搜到有人的教程说要多Uninstall几次。 如果还是没效果的话把命令行和VSCode都关了重新打开运行试试我就是VSCode这块反复装都报错这块死活都过不去一气之下全关了换成Jupyter Notebook重新开始运行结果一下子就好了并且以后换成VSCode打开也没问题了。 后面遇到evaluate等库没有的话也不要怕阅读报错提示网上搜索跟着教程pip install就是。人工智能这块就是装环境比较复杂新手适应起来有一段时间玩熟了就是小菜一碟了。 ———————————————————————————————————————————— 把环境问题解决以后就可以顺利跑代码了先展示一下运行效果 可以看出这个运行时间真的需要很久一上午过去了最后一个代码块都还在读条中。这也是为什么我建议在把环境装上以后先把代码跑起来然后再跟着视频学细节。github的代码是UP老师已经改好的所以不用担心好不容易跑完了结果发现代码要改的情况 ———————————————————————————————————————————— 要进行自动调参模型每一次调整都要重新进行初始化这个时候就不能给一个现成已经初始化好的模型了需要把初始化模型包装成一个方法提供给Trainer。 自动调参数据量比较大的时候不想要输出特别多的日志就把logging_steps调得大一些。 老师在这一段详细带了看后端代码这一段要认真听。 顺便提一句虽然看了不少教程但我还是觉得计算机和人工智能的相关知识就和天上的星星一样多无论怎么学都感觉还有好多不会的东西…… 这里介绍了四种调参的后端我们这里用到的是第一种也是默认的Optuna。 跟着UP老师的指导一步步往里找最后发现今天这种使用方式和之前的泰坦尼克号案例详见主页上一篇文章应用Optuna的方式有一些相似之处最后都是回到安装库和字典传超参数。但是具体怎么调用的方式又有一些区别先前那种更像是简明扼要直接定义一个对象就使用这里用的感觉比较隐晦不知道是不是算作一种封装或者集成可能这就是大型项目和小白练手的区别吧。 后面老师微改了一下代码直接把字典放进这个函数指定超参数感觉这就和泰坦尼克号案例里面直接调用的方式有点像了。 泰坦尼克号案例使用Optuna的例子https://www.kaggle.com/code/yunsuxiaozi/learn-to-use-the-optuna/notebook 原网页传送门 ———————————————————————————————————————————— 一些代码细节 一前一后的这两个数字代表的是可调参数的范围 batch_size大多设置为2的倍数按指数增长去调而不是1加1这样改。 使用这种方式的时候不仅仅可以调Batch_Size还可以调整优化器比如用AdamSVD等比如老师在后续视频中示范的这样 ———————————————————————————————————————————— 我的电脑最后跑出来的结果完成了8个Trial但其实到第3个Trial的时候已经达到极限了。 对比一下UP老师的结果 ———————————————————————————————————————————— 老师展示的训练案例中间发现效果不理想直接剪枝停掉这次实验。这也是超参数的策略之一决定什么时候停止实验。
———————————————————————————————————————————— 最后UP老师的总结