CLIP-as-service 是一种用于编码图像和文本的低延迟、高可扩展性服务。它可以作为微服务轻松集成到神经搜索解决方案中。
CLIP-as-service 0.8.0 现已正式发布!
本次更新包含 3 个新增功能、1 个性能改进、1 个文档改进。
新功能
新增支持大型 ONNX 模型文件 (#828)
单个 ONNX 模型文件有2GB大小的限制,更大的 ONNX 模型将被拆分成许多的文件碎片保存。此版本支持导入包含大型 ONNX 模型碎片的文件夹压缩成的 zip 格式文件。我们现在可以提供所有 CLIP 模型在 ONNX 运行时的服务。
新增支持在 laion-2b 上训练的 ViT-B-32、ViT-L-14、ViT-H-14 和 ViT-g-14 的模型 (#825)
用户现在可以使用在 Laion-2B 数据集上训练的 OpenCLIP 提供的四个新 CLIP 模型:
ViT-B-32::laion2b-s34b-b79k
ViT-L-14::laion2b-s32b-b82k
ViT-H-14::laion2b-s32b-b79k
ViT-g-14::laion2b-s12b-b42k
ViT-H-14 模型在 ImageNet 上实现了 78.0% 的零样本 top-1 准确率,在 MS COCO 上的 [email protected] 上实现了 73.4% 的零样本图像检索。这是目前表现最好的开源 CLIP 模型。要使用新模型,只需在 Flow YAML 中指定模型名称,例如 ViT-H-14::laion2b-s32b-b79k
请参阅模型支持[1],以查看受支持模型的完整列表。
clip_client 将结果保存在原输入对象,并按 uuid 保持输出顺序 (#815)
在此版本中,clip_client 将获取的 embedding 结果直接存储在输入的 DocumentArray 中,而不是返回一个新的 DocumentArray。与此同时,现在调用 Client.encode返回的 DocumentArray 内条目的顺序与输入的 DocumentArray 的顺序相同。
注意:如果您之前的代码依赖于Client.encode 返回一个新 DocumentArray 实例,此处改变可能会影响您的下游任务。您可以运行以下代码来验证原输入的DocumentArray 是否包含 embeddings 并且保留了原始顺序。
文档改进
零样本分类和检索任务的 CLIP 基准测试 (#832)
我们现在为零样本分类和检索任务的 CLIP 模型提供基准信息。此信息应有助于用户为其特定用例选择最佳 CLIP 模型。有关更多详细信息,请阅读 CLIP-as-service 用户指南中的基准页面[2]。
性能提升
停止回传图像内容以降低延迟 (#824)
调用Client.encode不再返回带有 embedding 的输入图像。因为 embedding 现在已插入到原始 DocumentArray 实例中,无需多此一举。因此,优化后现在的系统更快、响应更快。性能提升取决于图像大小和网络带宽。
引用链接
[1] 模型支持: https://clip-as-service.jina....
[2] Benchmark: https://clip-as-service.jina....