今天摆了个大的,下了一白天的棋,上了个小段。我觉得可能是因为昨晚买了2月2回家的票之后,心思稍微有点飘。晚上九点开始做做样子。
接着跟NLP的教程,发现了evaluate模块的变迁,evaluate.list_evaluation_modules(include_community=False)这个传参已经没用了,因为社区架构已经改变了,官方模块(如 accuracy, f1 等)已经迁移到 Hub 上作为社区模块托管。
evaluate分三种,normalize 1输出准确率,0则输出对了几个,在normalize 1 里面,还可以额外设置sample weight ,表示对不同样本的关注程度,输出加权后的准确率。
把evaluate封装学习了一下之后,回到前面的model里面,用封装好的evaluate来代替原本手写的evaluate模块来在每个epoch训练之后在验证集上展示模型性能。
trainer是transformer的训练函数,封装了完整的训练评估,集成多种后端,Deepspeed,pytorch FSDP等。
把TrainingArguments可以调整的主要参数都试了一下,然后把train_arg传入Trainer训练了几次,查看输出的文件有什么不同,data_collator用于将所有数据填充到一批的最大值,compute_metrics和eval_strategy联动。
eval_strategy="epoch" 决定何时评估
- 每个 epoch 结束时触发评估
compute_metrics=eval_metric 决定如何评估
- 当评估被触发时,自动调用这个函数计算指标
总算是把hugging face组件的基础教程看完了。
差不多要开始做能写到简历上的项目了,之前拿着minimind 这个toy项目,只训练了一遍,过了一下流程,甚至没有魔改任何地方就去投字节,是我太年轻了,字节HR也是神了,这能让我过简历筛,估计是拿我刷KPI吧 (*^_^*) 乐
lc:148(我最讨厌这种mid难度但是代码巨长的了,依稀记得还有easy难度代码也贼长的)
12点下班。