返回模型
说明文档
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