我正在使用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}
}