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,)
⚙️ 重构
- 移除基于 ResNet 的 CLIP 模型(#662)
由于 基于 ResNet 的 CLIP 模型使用率较低,所以在 Finetuner 0.7.1 中我们移除了该模型。 - 添加 EfficientNet B7 模型 (#662)
对于图像到图像搜索任务,Finetuner 0.7.1 现已支持 EfficientNet B7 作为视觉骨干模型。 增加 cloud.jina.ai 的 CSV 文件上传大小
对于 Web UI 用户,Finetuner 0.7.1 中将上传文件的大小从 1MB 增加到 32MB。对于 Python 客户端用户,你们一直可以上传更大的数据集,不受此次更改的影响。🐞 Bug 修复
- 解决 MLFlow 回调中的依赖问题
最新版本的 SQLAlchemy 导致 MLFlow 在某些情况下回调出错,Finetuner 0.7.1 修复了这个问题。 - 防止错误 num_items_per_class 参数引起的错误
在某些情况下,你可能会以与其余配置不兼容的方式设置 num_items_per_class 参数,从而导致 Finetuner 运行失败,因为一些损失函数并不需要使用该参数。现在,num_items_per_class 参数只有在实际使用时才会进行验证,不需要该参数的损失函数会直接忽略它。 解决 Jupyter Notebooks 中登录功能的问题 (#672)
有时在 Jupyter notebook 中调用 finetuner.login()时虽然显示登陆成功,但 Finetuner 可能并没有正确运行。在之前的版本中,用户必须调用 finetuner.login(force=True) 才能确保正确登录,现在可以直接使用 finetuner.login() ,无需 force 就可以正常使用。📗 文档改进
- 添加损失函数和池化的文档页面 (#664)
我们在文档中添加了一个新页面,其中更详细地解释了几个损失函数和池化选项。
新增了一个文档页面,详细说明损失函数和池化选项。 - 添加有关 Finetuner 文章的部分 (#669)
我们在 README 中增加了一个文章列表,这些文章介绍了关于 Finetuner 的见解,并提供了在实践中使用 Finetuner 的实战经验。 - 为示例 CSV 文件添加文件夹 (#663)
你可以在 github.com/jina-ai/finetuner 里的示例训练数据集,用我们已经准备好的数据进行训练。 校对整个文档以修复拼写错误和损坏的链接(#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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。