图片

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...


JinaAI
21 声望12 粉丝

Jina AI 的愿景是铺设通往多模态 AI 的未来之路,我们是您通往多模态人工智能的最佳通道!