Views
No views yet
Qwen/Qwen3-Reranker-0.6B.input_ids, attention_mask, and position_ids as int64
inputs, and returns next-token logits. For reranking, compare the final-position
logits for the yes and no tokens.onnx/model.onnxonnx/model.onnx_dataverify_onnxruntime.pyqwen_onnx_release_tools.pyonnxruntime-gpu==1.26.0.1optimum-cli export onnx `
2 --model Qwen/Qwen3-Reranker-0.6B `
3 --library-name transformers `
4 --task text-generation `
5 --trust-remote-code `
6 --opset 18 `
7 --device cuda `
8 --dtype fp16 `
9 --no-post-process `
10 qwen3-reranker-0.6b-onnx-fp161python -m pip install "huggingface_hub[cli]" onnx onnxruntime-gpu transformers numpy
2hf download icosahedron10/qwen3-reranker-0.6b-onnx-fp16 --local-dir qwen3-reranker-0.6b-onnx-fp16
3cd qwen3-reranker-0.6b-onnx-fp16
4python verify_onnxruntime.pyonnxruntime instead of onnxruntime-gpu and
change the provider in your own loader to CPUExecutionProvider.1import numpy as np
2import onnxruntime as ort
3from transformers import AutoTokenizer
4
5model_dir = "qwen3-reranker-0.6b-onnx-fp16"
6tokenizer = AutoTokenizer.from_pretrained(
7 model_dir,
8 local_files_only=True,
9 fix_mistral_regex=True,
10)
11
12session = ort.InferenceSession(
13 f"{model_dir}/onnx/model.onnx",
14 providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
15)
16
17instruction = "Given a web search query, retrieve relevant passages that answer the query"
18query = "What is ONNX Runtime used for?"
19document = "ONNX Runtime is an inference engine for running ONNX models efficiently."
20
21messages = [
22 {"role": "system", "content": instruction},
23 {"role": "query", "content": query},
24 {"role": "document", "content": document},
25]
26prompt = tokenizer.apply_chat_template(messages, tokenize=False)
27encoded = tokenizer(prompt, return_tensors="np", add_special_tokens=False)
28
29input_ids = encoded["input_ids"].astype(np.int64)
30attention_mask = encoded["attention_mask"].astype(np.int64)
31position_ids = np.arange(input_ids.shape[1], dtype=np.int64)[None, :]
32
33logits = session.run(
34 None,
35 {
36 "input_ids": input_ids,
37 "attention_mask": attention_mask,
38 "position_ids": position_ids,
39 },
40)[0]
41
42yes_id = tokenizer.encode("yes", add_special_tokens=False)[-1]
43no_id = tokenizer.encode("no", add_special_tokens=False)[-1]
44scores = logits[0, -1, [no_id, yes_id]].astype(np.float64)
45scores -= scores.max()
46probabilities = np.exp(scores) / np.exp(scores).sum()
47
48print({"no": float(probabilities[0]), "yes": float(probabilities[1])})1ORT providers used: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2relevant: yes=0.999771
3irrelevant: yes=0.000018
4Reranker CUDA verification passed