为仅解码器嵌入模型优化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格式的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进行单次嵌入时性能存在问题,不推荐用于批量嵌入。

➡️

继续阅读