您的位置:首页 > 科技 > 能源 > HuggingFace Embedding 转为 Ollama Embedding

HuggingFace Embedding 转为 Ollama Embedding

2024/11/20 2:17:16 来源:https://blog.csdn.net/hawk2014bj/article/details/142265387  浏览:    关键词:HuggingFace Embedding 转为 Ollama Embedding

Ollama 是基于 LlamaCpp 开发的 CPU 上的推理引擎,通过 LlamaCpp 提供的脚本可以将大语言模型装换为 gguf 的二进制跟是文件,从而通过 Ollama 就行推理。Ollama 支持HuggingFace 大多开源模型,例如 Llama、Qwen、Gemma 和 Phi3 等等。

GGUF 是一个二进制格式,目标是将所有模型相关文件组装成为单个文件易于传输和管理。HuggingFace 通常使用的是 Pytorch 的 bin 格式或者是 Safetensors 格式,对于大语言模型转换比较简单,做好相应的 ChatTemplate 配置既可。

本文主要是讲述如果转换 Embedding Model,Embedding 也是基于 Transformer 框架的,但是 Embedding 分词器通常和 LLM 不太一样,在转换是我们需要进行调整。本文转换的是腾讯的 Embedding 模型,Conan-embedding-v1 目前这个模型在 MTEB 上综合排名第一。

在这里插入图片描述
首先,看一下模型的分词配置,使用的 BertTokenizer,需要模型并指定 WordPiece 分词器。

在这里插入图片描述
如果直接使用 LlamaCpp 的转换程序进行,转换会报如下错误。

NotImplementedError: BPE pre-tokenizer was not recognized

需要在 convert_hf_to_gguf_update.py 中配置模型

在这里插入图片描述

 {"name": "conan-embedding-v1",  "tokt": TOKENIZER_TYPE.WPM, "repo": "https://huggingface.co/TencentBAC/Conan-embedding-v1", },

下载模型,并在模型的目录下运行转换命令

python ../llama.cpp/convert_hf_to_gguf.py --outtype q8_0 .

模型配置文件

FROM ./Conan_Embedding_V1-324M-Q8_0.gguf

编译模型,模型编译完成之后,使用 Ollama 客户端调用模型

ollama build -f conan

总结

Ollama 使用时要特别注意分词器和 ChatTemplate, 否则对于语言模型输出结果会产生异常,对于 Embedding 模型会出现转换错误。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com