簡體   English   中英

如何在使用 ONNX 推理 session 時通過傳遞“標簽”來獲得語言建模損失?

[英]How to get the language modeling loss by passing 'labels' while using ONNX inference session?

使用 GPT2 時,我們可以簡單地傳遞 'labels' 參數來獲得損失,如下所示:

import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel

tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2', return_dict=True)

inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs, labels=inputs["input_ids"])
loss = outputs.loss

但是,無法找出如何在 ONNX 推理 session 中獲得相同的損失。我使用下面的代碼,它只返回“last_hidden_state”:

import onnxruntime as ort

from transformers import GPT2TokenizerFast
#tokenizer = GPT2TokenizerFast.from_pretrained("gpt2")

ort_session = ort.InferenceSession("onnx/gpt2/model.onnx")

inputs = tokenizer("Using BERT in ONNX!", return_tensors="np")
outputs = ort_session.run(["last_hidden_state"], dict(inputs))

“onnx/gpt2/model.onnx”是如何生成的?

看起來 PyTorch 運行使用transformers.GPT2LMHeadModel ,而 ORT 運行使用transformers.GPT2Model ,這是一個“裸 GPT2 Model 轉換器輸出原始隱藏狀態,頂部沒有任何特定的頭部”並且不返回損失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM