bge-reranker-v2-m3 fp16 for WebGPU(onnxruntime-web / transformers.js)

BAAI/bge-reranker-v2-m3 的 ONNX fp16 版,專為瀏覽器 WebGPU 整理:

  • 來源:onnx-community/bge-reranker-v2-m3-ONNX 的 onnx/model_fp16.onnx。
  • 修了一個 Cast:原圖位置 id 後面有 int64→FLOAT 與 FLOAT→FLOAT16 兩個 Cast,onnxruntime-web 執行期會融合成 int64→FLOAT16 並留在 WebGPU(JSEP)上,JSEP 的 Cast 不支援 int64 輸入,建 session 時丟 C++ 例外。這裡先在圖裡合成一個 Cast,分割階段就會被派到 CPU,其餘節點照常跑 WebGPU。
  • 權重改 external data 並切成兩片(model_fp16.onnx_data 596 MB、model_fp16.onnx_data_1 540 MB),瀏覽器一次抓不超過 1 GB 的檔案。
  • 分數與 fp32 最大差 0.03,排序一致。

用法(transformers.js 3.x)

import { AutoTokenizer, AutoModelForSequenceClassification } from '@huggingface/transformers';

const id = 'sayken2/bge-reranker-v2-m3-webgpu';
const tokenizer = await AutoTokenizer.from_pretrained(id);
const model = await AutoModelForSequenceClassification.from_pretrained(id, {
  device: 'webgpu',
  dtype: 'fp16',
  use_external_data_format: { 'model_fp16.onnx': 2 },
});
const inputs = tokenizer(['query'], { text_pair: ['passage'], padding: true, truncation: true });
const { logits } = await model(inputs);

需要顯示卡支援 shader-f16(Apple Silicon、NVIDIA Turing 以後、較新的 Intel/AMD)。沒有的話會報 The device (webgpu) does not support fp16,請改用 fp32 或 CPU 的 q8。

產製腳本

轉檔、修 Cast、切片的腳本在 https://github.com/meowalien/patrol 的 scripts/model/。

授權

Apache-2.0,同上游 BAAI/bge-reranker-v2-m3。

Downloads last month
36
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sayken2/bge-reranker-v2-m3-webgpu

Quantized
(69)
this model