亚马逊AWS官方博客
Amazon SageMaker Clarify 简化基础模型的评估与选择(预览版功能)
很高兴与大家分享,Amazon SageMaker Clarify 现已支持基础模型(FM)评估功能(预览版)。作为数据科学家或机器学习(ML)工程师,您现在可以使用 SageMaker Clarify,依据准确性、稳健性、创造力、事实性知识、偏差和有害性等指标,在几分钟内对 FM 做出评估、比较和选择。此项新功能进一步提升了 SageMaker Clarify 目前对机器学习数据和模型中偏差的检测能力,以及对模型预测结果的解释能力。
无论是 SageMaker JumpStart 中提供的大型语言模型(LLM),还是在 AWS 外训练和托管的模型,使用该项新功能,您可以随时随地展开对 LLM 的自动化评估和人机协同评估。这消除了寻找合适的模型评估工具,并将其集成到开发环境的繁重工作。当您试着在生成式人工智能(AI)用例中采用学术基准时,它还能简化此项工作的复杂性。
使用 SageMaker Clarify 评估 FM
SageMaker Clarify 提供了一个集中的平台,您现在可以根据预定义标准,在模型选择期间和整个模型自定义工作流程中对任何 LLM 做出评估和比较。除了自动化评估,您还可以使用人机协同功能建立人工评审,让自己的员工或由 SageMaker Ground Truth 管理的员工针对有用性、创作意向和风格等较主观的标准做出评估。
要开始进行模型评估,您可以使用精选的提示语数据集,它们专为常见的 LLM 任务量身定制,涵盖开放式文本生成、文本摘要、问答(Q&A)和分类等任务。您还可以使用针对特定用例的自定义提示语数据集和指标,进一步扩展模型评估范围。人机协同评估适用于任何任务和评估指标。每次评估作业结束后,您都会收到一份评估报告,它将以自然语言总结结果,并附上可视化信息和示例。您可以下载所有指标和报告,也可以将模型评估集成到 SageMaker MLOps 工作流程中。
在 SageMaker Studio 中,您可以在左侧菜单的作业下找到模型评估。您也可以直接从 SageMaker JumpStart 中任何 LLM 的模型详细信息页面中选择评估。
选择评估模型,建立评估作业。UI 向导将指导您选择自动或人工评估、模型、相关任务、指标、提示语数据集和评审团队。
模型评估作业完成后,您可以在评估报告中查看结果。
除 UI 之外,您还可以使用 Jupyter 笔记本示例作为起点,它们将逐步指导您在 SageMaker 中以编程方式执行模型评估。
使用 FMEval 开源库随时随地评估模型
您可以使用 FMEval 开源库随时随地评估模型(包括在 AWS 外训练和托管的模型)。以下示例演示了如何使用该库,通过扩展 ModelRunner 类评估自定义模型。
在这个演示中,我选择了 Hugging Face 模型中心的 GPT-2,并自定义了 HFModelConfig
以及 HuggingFaceCausalLLMModelRunner
类,该类适用于 Hugging Face 模型中心的因果解码器模型(如 GPT-2)。您也可以在 FMEval GitHub 存储库中找到该示例。
!pip install fmeval
# ModelRunners 调用 FM
from amazon_fmeval.model_runners.model_runner import ModelRunner
# 针对自定义模型的额外导入
import warnings
from dataclasses import dataclass
from typing import Tuple, Optional
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
@dataclass
class HFModelConfig:
model_name: str
max_new_tokens: int
normalize_probabilities: bool = False
seed: int = 0
remove_prompt_from_generated_text: bool = True
class HuggingFaceCausalLLMModelRunner(ModelRunner):
def __init__(self, model_config: HFModelConfig):
self.config = model_config
self.model = AutoModelForCausalLM.from_pretrained(self.config.model_name)
self.tokenizer = AutoTokenizer.from_pretrained(self.config.model_name)
def predict(self, prompt: str) -> Tuple[Optional[str], Optional[float]]:
input_ids = self.tokenizer(prompt, return_tensors="pt").to(self.model.device)
generations = self.model.generate(
**input_ids,
max_new_tokens=self.config.max_new_tokens,
pad_token_id=self.tokenizer.eos_token_id,
)
generation_contains_input = (
input_ids["input_ids"][0] == generations[0][: input_ids["input_ids"].shape[1]]
).all()
if self.config.remove_prompt_from_generated_text and not generation_contains_input:
warnings.warn(
"Your model does not return the prompt as part of its generations. "
"`remove_prompt_from_generated_text` does nothing."
)
if self.config.remove_prompt_from_generated_text and generation_contains_input:
output = self.tokenizer.batch_decode(generations[:, input_ids["input_ids"].shape[1] :])[0]
else:
output = self.tokenizer.batch_decode(generations, skip_special_tokens=True)[0]
with torch.inference_mode():
input_ids = self.tokenizer(self.tokenizer.bos_token + prompt, return_tensors="pt")["input_ids"]
model_output = self.model(input_ids, labels=input_ids)
probability = -model_output[0].item()
return output, probability
接下来,使用模型信息创建 HFModelConfig
和 HuggingFaceCausalLLMModelRunner
的实例。
然后,选择并配置评估算法。
我们先用一个示例进行测试。评估得分以百分比的形式表示事实性正确回答的比例。
尽管这个回答不算完美,但它确实包含“UK(英国)”。
接下来,您可以使用内置数据集评估 FM,或界定自定义数据集。如果要使用自定义评估数据集,请创建 DataConfig
的实例:
评估结果将返回整个数据集的综合评估分数,以及针对每个模型输入的详细结果,这些结果存储在本地输出路径中。
申请试用预览版
Amazon SageMaker Clarify 的 FM 评估功能公开预览版现已在以下 AWS 区域推出:美国东部(俄亥俄州)、美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)、亚太地区(新加坡)、亚太地区(东京)、欧洲地区(法兰克福)和欧洲地区(爱尔兰)。FMEval 开源库 已在 GitHub 上线。要了解更多信息,请访问 Amazon SageMaker Clarify。
开始使用
登录 AWS 管理控制台,立即开始使用 SageMaker Clarify 评估您的 FM!
— Antje