• 兴智杯 多模态检索赛道比赛总结


    兴智杯 多模态检索赛道比赛总结

    比赛分享,欢迎指教指点

    这次比赛历时约两个月,时间:9.16-10.19,

    基本过程是:

    • 一个最基本的是跑baseline,数据预处理一次加载爆内存,求助比赛群,得知gihthub里面有被closed的issue,加了一个研究生三年级学生,并得知另一个模型仓库Chinese-clip。
    • 通过分块预训练处理,解决内存问题,baseline分数达到37
    • 找到Chinese-clip模型预训练权重,放在baseline上跑zeroshot,得到效果提升,分数达到57
    • 尝试finetune,分数直接降到10以下,表现为微调没有效果,卡掉,读源代码没有发现问题,很长时间读源码并读不懂,模型文件太大,给原作者发邮件,原作者很长时间没有回复。
    • 比赛群里认识的研三哥,他实践了可以使用Chinese-clip官方模型微调,只是得到很小的分数下降:我认识到,可能是baseline代码的原因,我开始跑配Chinese-clip官方代码,并微调参数,调了很多的学习率,warmup,weight_decay,batchsize参数,最终在10.1日得到最好的分数64.39
    • 原作者yang过了很久回复我邮件不过当时我以为那个预训练模型是不能下载(???没有详细去看网站是干什么的,糊弄过去?)这一天是10.18正在进行答辩收到邮件,答辩完晚上就开始尝试,当晚就到12点多正常睡觉了,实在不想通宵,邮件里面给了他们modelscope的预训练模型的仓库给我说large模型可用,发现他们有large224和large336模型,不过文件是hf类型,原来我是用.pt文件直接运行代码,这里是.bin文件,不知道怎么跑,于是立即给作者发了邮件,得到回复其实 bin文件和pt文件是一样的,这和我上网搜索到的信息一致,但为什么我自己本地下载下来传到服务器上和原来一样跑不行呢-?因为这个是4G以上大文件,使用git lfs下载出了问题,根本没下载下来,文件不完整,报错信息模糊,以为是bin文件不能跑。后来直接使用modelscope服务器下载,速度很快,然后就能运行了。在19号白天,我尝试使用modelscope提供的embedding编码来弄,不过格式不太对,报错这里element突然冒出来个str类型不知道是什么,明明传入的都是数字型的tensor
      在这里插入图片描述

    在这个时候我有三个选择(报错解决):

    • 继续整pytorch.bin,来进行zero-shot
    • 尝试继续微调一下pytorch.bin(不过时间当时只剩6h,微调应该时间不够了)
    • 继续调那个modelscope接口问题,估计就是修改输入的格式,做一些输出输出的格式修改,吐槽,modelscope似乎是模仿的huggingface,但那些接口并没有明确的文档使用方法,使用起来一头雾水

    最后我选择了第一个方案,排查出了是bin文件下载不完整的原因,使用自带的东西在服务加载,保存在了.cache/modelscope文件下就有,不用额外git下载。

    终于在结束前1小时,zeroshot出large336模型结果,直接可以得到62的分数,large模型看起来有很大的潜力,之后我尝试finetune,但时间已经来不及了,希望后面还有机会继续弄一下吧~

    最后的调参经历是极限1h,原来有个坑就是不知道这个分布式训练是怎么搞的,现场学的所幸搞出来了,但还是一知半解,打算接下来把比赛的技术问题整理记录出来,避免以后继续采坑,问题主要包括:

    • git报错代码与回退:来保留原来的代码,然后尝试新想法,当新想法不work时回退到原来的版本,目前是用的复制文件修改的方法
    • 能不能直接在服务器上直接使用git
    • hf使用
    • pytorch环境版本迅速配置:直接用官网给定配置下载就行,我在下午配环境没有遇到网络问题,反倒是使用清华源下载然后本地安装,出现了缺少动态链接库的问题
    • 学习率训练策略的代码积累
    • A100备用服务器配置
    • pycharm临时文件保存位置与我的电脑的适配
    • pycharm debug方法:这里就咨询了大佬才知道要进入代码去看里面的原因,不过卡了很长时间还是没有想法

    顺便说,调参,base模型分数从57->64提升了7个点,一般情况能提56个点,所以这个模型大概能到6770之间。

    但排行榜上的77的大佬是怎么做出来的呀

    总结

    • 40多天的比赛,最终收获应该在于读代码,跑代码;不过很明显,提升最快的是有懂这个的人,比如本次邮件联系的yang老师,虽然邮件交流缓慢,但他提供的信息却是点睛部分,以及研三哥也给了我一些启发,第一要义就是 不要造轮子,找巨人最好
    • 我之后去看了一些其他比赛,目前感觉这个赛题选的不是太好
      • 一开始信息满满,满包劲,觉得用尽方法,一定能登上榜,事实证明,在这个方面没有积累,很难。
      • 另一方面,去看了一个师兄的比赛,觉得这个赛题选的不好,问题定义的太明确,就是刷分任务,开放性问题,可以加一些新想法那种是比较好的,另一方面也是说科研就是提出新想法,后面也方面出论文写总结
      • 做问题,一开始就分析最难的问题是什么,然后对着最难的问题思考对策这才是做问题的要点,分析难点,参考shuang师兄比赛分享。

    码字:1.5h

    挖坑:本次比赛相关的技术总结

  • 相关阅读:
    D-Wave公开演示大规模相干量子退火
    块级元素设置背景颜色后,背景颜色直接占据一整行的处理
    CentOS系统环境搭建(二十)——CentOS7安装chat GPT进阶
    【python进阶】装饰器
    17、JAVA入门——多态、抽象方法和抽象类
    FastBert学习笔记
    RabbitMQ-02(docker安装、RabbitMQ的角色分类、AMQP、消息确认机制ACK)
    基于BP神经网络的多因素房屋价格预测matlab仿真
    #ubuntu# #常用工具#
    关于安卓唯一标识的汇总及最佳做法
  • 原文地址:https://blog.csdn.net/qq_48034566/article/details/127421531