关于开源项目介绍:Finetuner-071版本发布支持在之前模型基础上继续微调新增SphereFace损失函数

30次阅读

共计 2473 个字符,预计需要花费 7 分钟才能阅读完成。

Finetuner[1] 是一个基于云端的神经搜寻后果调优平台。Finetuner 简化了工作流程,解决了云端的复杂性和基础设施要求,使得神经网络的微调变得更容易,更疾速,更高效。有了 Finetuner,你能够很容易地进步预训练模型的性能,并且无需大量标签或低廉的硬件即可投入生产。

🌟 GitHub: https://github.com/finetuner 🧑‍🤝‍🧑 寰球社区: https://slack.jina.ai 📖 官网文档:https://finetuner.jina.ai/

本次公布涵盖了 Finetuner 版本 0.7.0,包含依赖 finetuner-api 0.4.10 和 finetuner-core 0.12.3。
此版本蕴含 2 个新性能、3 个重构、3 个谬误修复和 4 个文档改良。
新性能

🆕 反对 SphereFace 损失函数 (#664)

SphereFace 损失函数最后是为计算机视觉畛域的人脸识别工作设计的,Finetuner 反对它的两种变体 ArcFaceLoss 和 CosFaceLoss。SphereFace 损失函数通过将每个样本与每个类别 embedding 的中心点估计值进行比拟,晋升网络的角度特色的判断能力,而不是传统的通过最小化正样本对之间的间隔,并最大化负样本对之间的间隔来计算。
应用 Finetuner 时,你能够间接在 fit 函数的 loss 属性中指定损失函数的名称来应用,比方应用 ArcFaceLoss:

run = finetuner.fit(
          ...,    
          loss='ArcFaceLoss',
          ...)

为了跟踪并改良对跨批次的类中心点的预计,SphereFace 损失在训练期间须要减少一个额定的 optimizer。默认状况下,减少的 optimizer 与模型自身应用的 optimizer 雷同,但你能够应用 loss_optimizer 参数指定不同的 optimizer。
run = finetuner.fit(…,    loss=’ArcFaceLoss’,+   loss_optimizer=’Adam’,+   loss_optimizer_options={‘weight_decay’: 0.01})

🆕 反对在之前的训练后果上持续训练(#668)

model_artifact 要应用此性能,您须要通过函数的参数设置要持续训练的模型的工件 ID fit:
如果用户想要在之前运行的模型的根底上进行微调,或者你想要在新退出的数据上持续训练,试试 Finetuner,你只须要通过 fit 函数的 model_artifact 参数设置模型的 artifact id 即可:

train_data = 'path/to/another/data.csv'
new_run = finetuner.fit(    
         model='efficientnet_b0',    
         train_data=train_data,    
         model_artifact=previous_run.artifact_id,)

⚙️ 重构

  1. 移除基于 ResNet 的 CLIP 模型(#662)
    因为 基于 ResNet 的 CLIP 模型使用率较低,所以在 Finetuner 0.7.1 中咱们移除了该模型。
  2. 增加 EfficientNet B7 模型 (#662)
    对于图像到图像搜寻工作,Finetuner 0.7.1 现已反对 EfficientNet B7 作为视觉骨干模型。
  3. 减少 cloud.jina.ai 的 CSV 文件上传大小
    对于 Web UI 用户,Finetuner 0.7.1 中将上传文件的大小从 1MB 减少到 32MB。对于 Python 客户端用户,你们始终能够上传更大的数据集,不受此次更改的影响。

    🐞 Bug 修复

  4. 解决 MLFlow 回调中的依赖问题
    最新版本的 SQLAlchemy 导致 MLFlow 在某些状况下回调出错,Finetuner 0.7.1 修复了这个问题。
  5. 避免谬误 num_items_per_class 参数引起的谬误
    在某些状况下,你可能会以与其余配置不兼容的形式设置 num_items_per_class 参数,从而导致 Finetuner 运行失败,因为一些损失函数并不需要应用该参数。当初,num_items_per_class 参数只有在理论应用时才会进行验证,不须要该参数的损失函数会间接疏忽它。
  6. 解决 Jupyter Notebooks 中登录性能的问题 (#672)
    有时在 Jupyter notebook 中调用 finetuner.login()时尽管显示登陆胜利,但 Finetuner 可能并没有正确运行。在之前的版本中,用户必须调用 finetuner.login(force=True) 能力确保正确登录,当初能够间接应用 finetuner.login(),无需 force 就能够失常应用。

    📗 文档改良

  7. 增加损失函数和池化的文档页面 (#664)
    咱们在文档中增加了一个新页面,其中更具体地解释了几个损失函数和池化选项。
    新增了一个文档页面,具体阐明损失函数和池化选项。
  8. 增加无关 Finetuner 文章的局部 (#669)
    咱们在 README 中减少了一个文章列表,这些文章介绍了对于 Finetuner 的见解,并提供了在实践中应用 Finetuner 的实战经验。
  9. 为示例 CSV 文件增加文件夹 (#663)
    你能够在 github.com/jina-ai/finetuner 里的示例训练数据集,用咱们曾经筹备好的数据进行训练。
  10. 校对整个文档以修复拼写错误和损坏的链接(#661,#666)
    修改 Finetuner 文档中损坏的链接和拼写错误。

    🤟 贡献者

    咱们要感激此版本的所有贡献者!

    Wang Bo (@bwanglzu)
    Louis Milliken (@LMMilliken)
    Michael Günther (@guenthermi)
    CatStark (@CatStark)
    George Mastrapas (@gmastrapas)
    Scott Martens (@scott-martens)

参考资料

[1] Finetuner: https://rebrand.ly/jina-ai-fi…

正文完
 0