コンテンツにスキップ

BERT SQuADによる質問応答

BERT SQuADによる質問応答チュートリアル

Section titled “BERT SQuADによる質問応答チュートリアル”

このチュートリアルでは、ONNX Runtimeを使用して、事前学習済みのBERT SQuADモデルで質問応答を実行する方法を示します。

BERT SQuAD ONNXモデルのダウンロード

Section titled “BERT SQuAD ONNXモデルのダウンロード”

Hugging FaceモデルハブからBERT SQuAD ONNXモデルをダウンロードできます。

Terminal window
wget https://huggingface.co/distilbert-base-cased-distilled-squad/resolve/main/onnx/model.onnx

次のPythonスクリプトは、ONNX Runtimeを使用して質問応答を実行する方法を示しています。

import onnxruntime
from transformers import BertTokenizer
import numpy as np
# ONNXモデルをロード
session = onnxruntime.InferenceSession("model.onnx")
# トークナイザをロード
tokenizer = BertTokenizer.from_pretrained("distilbert-base-cased-distilled-squad")
# 質問とコンテキストを定義
question = "ONNX Runtimeとは何ですか?"
context = "ONNX Runtimeは、ONNXモデルを運用環境にデプロイするための高性能な推論エンジンです。"
# 入力をトークン化
inputs = tokenizer(question, context, return_tensors="np")
# 入力名を取得
input_names = [input.name for input in session.get_inputs()]
# 推論を実行
result = session.run(None, dict(inputs))
# 出力を処理
start_scores, end_scores = result
start_index = np.argmax(start_scores)
end_index = np.argmax(end_scores)
answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs["input_ids"][0][start_index:end_index+1]))
# 回答を出力
print(answer)

このスクリプトは、質問とコンテキストをトークン化し、ONNX Runtimeを使用して推論を実行し、回答を出力します。