如何返回SageMaker推理中的所有标签和分数



我正在使用sagemaker.huggingface中的HuggingFacePredictor来推断一些文本,我想得到所有的标签分数。

是否有任何方法可以从端点获得响应:

{
"labels": ["help", "Greeting", "Farewell"] ,
"score": [0.81, 0.1, 0.09],
}

(或类似(

代替:

{
"label": "help",
"score": 0.81,
}

以下是一些示例代码:

import boto3
from sagemaker.huggingface import HuggingFacePredictor
from sagemaker.session import Session
sagemaker_session = Session(boto_session=boto3.session.Session())
predictor = HuggingFacePredictor(
endpoint_name=project, sagemaker_session=sagemaker_session
)
prediciton = predictor.predict({"inputs": text})[0]

对于您当前的代码示例,还不太清楚您正在执行什么特定任务,但为了得到这个答案,我假设您正在进行文本分类。

不过,最重要的是,我们可以在Huggingface的Sagemaker参考文件中阅读以下内容(我用粗体突出显示(:

推理工具包接受inputs键中的输入,并且支持parameters键中的其他pipelines参数。您可以提供pipelines中任何支持的kwargs作为参数。

如果我们检查TextClassificationPipeline接受的参数,我们可以看到确实有一个返回所有样本:

return_all_scores(bool,可选,默认为False(--是否返回所有标签的分数。

不幸的是,我无法访问Sagemaker推理,但我可以运行一个示例来说明本地管道的输出:

from transformers import pipeline
# uses 2-way sentiment classification model per default
pipe = pipeline("text-classification") 
pipe("I am really angry right now >:(", return_all_scores=True)
# Output: [[{'label': 'NEGATIVE', 'score': 0.9989138841629028},
#           {'label': 'POSITIVE', 'score': 0.0010860705515369773}]]

根据Sagemaker期望的略有不同的输入格式,再加上本笔记本中给出的示例,我假设您自己的示例代码中的更正输入应该是这样的:

{
"inputs": text,
"parameters": {"return_all_scores": True}
}

最新更新