ONNX 模型库
返回模型

说明文档

BGE-M3 通过 HF Optimum 转换为 ONNX 权重,以兼容例如 ONNX Runtime 等推理引擎。

此 ONNX 模型可同时输出稠密、稀疏 和 ColBERT 三种嵌入表示。输出为按上述表示顺序排列的 numpy 数组列表。

注意:稠密和 ColBERT 嵌入已按照原始 FlagEmbedding 库的默认行为进行归一化,如果您需要未归一化的输出,可以修改 bgem3_model.py 中的代码,并使用 export_onnx.py 脚本重新运行 ONNX 导出。

此 ONNX 模型还应用了 "O2" 级别的图优化,您可以在此处了解更多关于优化级别的信息。如果您想要具有不同优化级别或无优化的 ONNX 模型,可以使用适当的优化参数重新运行 ONNX 导出脚本 export_onnx.py

配合 ONNX Runtime 使用 (Python)

如果您尚未安装,可以通过 pip 安装 ONNX Runtime Python 库:

pip install onnxruntime==1.17.0

对于分词,您可以使用 HF Transformers,通过 pip 安装:

pip install transformers==4.37.2

使用 Git LFS 克隆此仓库以获取 ONNX 模型文件。

然后您可以按如下方式使用模型计算嵌入:

import onnxruntime as ort
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("BAAI/bge-m3")
ort_session = ort.InferenceSession("model.onnx")

inputs = tokenizer("BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.", padding="longest", return_tensors="np")
inputs_onnx = {k: ort.OrtValue.ortvalue_from_numpy(v) for k, v in inputs.items()}

outputs = ort_session.run(None, inputs_onnx)


## 导出 ONNX 权重

您可以使用提供的自定义 BGE-M3 PyTorch 模型 `bgem3_model.py` 文件以及利用 HF Optimum 的 `export_onnx.py` ONNX 权重导出脚本来导出 ONNX 权重。
如有需要,您可以修改 `bgem3_model.py` 模型配置,例如移除嵌入归一化或不输出所有三种嵌入表示。如果您修改了输出表示的数量,还需要修改 `export_onnx.py` 中的 ONNX 输出配置 `BGEM3OnnxConfig`。

首先,按如下方式安装所需的 Python 依赖:
```bash
pip install -r requirements.txt

然后您可以按如下方式导出 ONNX 权重:

python export_onnx.py --output . --opset 17 --device cpu --optimize O2

您可以在此处了解更多关于可选优化级别的信息

skshreyas714/bge-m3-onnx

作者 skshreyas714

feature-extraction transformers
↓ 0 ♥ 0

创建时间: 2024-06-21 08:43:26+00:00

更新时间: 2024-06-21 09:57:58+00:00

在 Hugging Face 上查看

文件 (8)

.gitattributes
README.md
bgem3_model.py
config.json
export_onnx.py
model.onnx ONNX
model.onnx.data
ort_config.json