为仅解码器嵌入模型优化GGUF

为仅解码器嵌入模型优化GGUF

💡 原文英文,约3500词,阅读约需13分钟。
📝

内容提要

两周前,我们发布了jina-embeddings-v4的GGUF格式,以提高推理速度。现代嵌入模型与LLM几乎相同,主要区别在于输出类型。文章讨论了将现代嵌入模型适配GGUF格式的经验,包括去除视觉变换器和多向量投影器,最终得到三个任务特定的GGUF模型。

🎯

关键要点

  • 两周前发布了jina-embeddings-v4的GGUF格式,以提高推理速度。

  • 现代嵌入模型与LLM几乎相同,主要区别在于输出类型。

  • 文章分享了将现代嵌入模型适配GGUF格式的经验,包括去除视觉变换器和多向量投影器。

  • jina-embeddings-v4基于Qwen2.5-VL-3B-instruct,包含三个LoRA适配器,分别针对检索、文本匹配和代码检索任务。

  • 在实验中发现,llama.cpp的视觉变换器存在bug,因此决定暂时不支持视觉塔。

  • 多向量输出不被直接支持,但可以通过导出MLP后处理来实现。

  • 最终得到了三个任务特定的GGUF模型,每个模型参数为3.09B。

  • 使用calibration_data_v5_rc.txt对模型进行校准,并使用llama-quantize进行量化。

  • GGUF模型需要手动添加Query:或Passage:前缀以确保输入一致性。

  • llama-server可以作为OpenAI API兼容的HTTP服务器来托管嵌入模型。

  • 在使用llama-embedding进行单次嵌入时,性能存在问题,不推荐用于批量嵌入。

  • GGUF模型的使用存在一些限制,如无法处理图像输入和输出多向量嵌入。

  • 通过优化,llama-embedding的批处理和内存控制得到了改善。

  • 在基准测试中,量化版本的速度和VRAM使用情况得到了评估。

  • 最佳的量化版本是IQ3_M,低于2位的量化效果不如v3。

  • 在L4 GPU上,IQ3_S和IQ3_M可以实现4000个tokens/秒的速度,适合预算有限的用户。

🔎

延伸解读

GGUF模型的适用场景

GGUF模型特别适合于多模态多语言检索任务,尤其是在处理文本检索、文本匹配和代码检索等特定任务时表现出色。用户在选择模型时应考虑任务的具体需求,确保选择合适的LoRA适配器以优化性能。

使用GGUF模型的注意事项

在使用GGUF模型时,用户必须手动添加Query:或Passage:前缀以确保输入的一致性。此外,当前版本不支持图像输入和多向量嵌入,这可能限制某些应用场景的使用。

量化模型的性能评估

在基准测试中,IQ3_M量化版本表现最佳,速度和内存使用情况均优于其他版本。用户在选择量化模型时,应关注其在特定任务上的表现,以避免低于预期的效果。

延伸问答

GGUF格式的jina-embeddings-v4有什么优势?

GGUF格式的jina-embeddings-v4提高了推理速度,适合在预算有限的GPU上运行。

如何使用llama-server托管GGUF模型?

可以通过命令行运行llama-server,并指定模型和参数来托管GGUF模型。

GGUF模型在输入时需要注意什么?

使用GGUF模型时,必须在输入文本前手动添加'Query:'或'Passage:'前缀以确保一致性。

jina-embeddings-v4的任务特定模型有哪些?

jina-embeddings-v4包含三个任务特定模型:文本检索、代码检索和文本匹配。

GGUF模型的量化版本有哪些?

GGUF模型的量化版本包括IQ1_S、IQ1_M、IQ2_XXS等,最佳性能的量化版本是IQ3_M。

使用llama-embedding进行单次嵌入时有什么问题?

使用llama-embedding进行单次嵌入时性能存在问题,不推荐用于批量嵌入。

🏷️

标签

➡️

继续阅读