自定义模型导入日志概率功能解析

本文介绍了某中心Bedrock自定义模型导入功能新增的日志概率支持,详细讲解如何通过API获取模型预测的置信度数据,并展示其在检测幻觉、优化RAG系统、评估微调效果等场景的实际应用价值。

解锁模型洞察:自定义模型导入的日志概率支持

您可以使用某中心Bedrock自定义模型导入功能,将其他地方微调的自定义模型(如Llama、Mistral和Qwen)无缝集成到某中心Bedrock中。该体验完全无服务器,最大限度减少基础设施管理,同时为导入的模型提供与原生某中心Bedrock模型相同的统一API访问。您的自定义模型受益于自动扩展、企业级安全以及与某中心Bedrock功能(如防护栏和知识库)的原生集成。

理解模型对其预测的置信度对于构建可靠的AI应用至关重要,特别是在处理可能遇到领域特定查询的专业自定义模型时。

随着自定义模型导入功能新增日志概率支持,您现在可以访问模型在标记级别对其预测的置信度信息。这一增强功能提供了对模型行为的更大可见性,并实现了模型评估、置信度评分和高级过滤技术的新能力。

理解日志概率

在语言模型中,日志概率表示模型分配给序列中标记的概率的对数。这些值表明模型对其生成或处理的每个标记的置信程度。日志概率表示为负数,值越接近零表示置信度越高。例如,-0.1的日志概率对应约90%的置信度,而-3.0的值对应约5%的置信度。通过检查这些值,可以识别模型何时高度确定 versus 何时做出不太自信的预测。日志概率提供了模型考虑每个生成标记可能性的定量度量,为其输出的置信度提供了宝贵洞察。通过分析它们,您可以:

  • 评估整个回复的置信度:评估模型在其输出的不同部分的置信程度,帮助识别确定与不确定的地方。
  • 评分和比较输出:通过添加或平均日志概率来比较整体序列似然性,以排名或过滤多个模型输出。
  • 检测潜在幻觉:识别标记级置信度的突然下降,这可以标记可能需要验证或审查的片段。
  • 通过早期修剪降低RAG成本:基于检索的上下文运行简短、低成本的草稿生成,计算这些草稿的日志概率,并早期丢弃低分候选,避免不必要的全长生成或昂贵的重新排名,同时仅保留管道中最有希望的上下文。
  • 构建置信感知应用:基于确定性水平调整系统行为——例如,触发澄清提示、提供备用回复或标记人工审查。

总体而言,日志概率是解释和调试模型回复的强大工具,具有可衡量的确定性——对于理解模型为何以某种方式回复与回复本身同样重要的应用尤其有价值。

先决条件

要使用某中心Bedrock自定义模型导入的日志概率支持,您需要:

  • 具有某中心Bedrock访问权限的有效账户
  • 在2025年7月31日(日志概率支持发布后)使用自定义模型导入功能在某中心Bedrock中创建的自定义模型
  • 通过某中心Bedrock运行时调用模型的适当身份和访问管理(IAM)权限

在某中心Bedrock中引入日志概率支持

通过此版本,某中心Bedrock现在允许使用自定义模型导入功能导入的模型在推理响应中返回标记级日志概率。

当通过某中心Bedrock调用模型API调用模型时,您可以通过在JSON请求体中设置"return_logprobs": true来访问标记日志概率。启用此标志后,模型的响应将包括提供提示标记和生成标记的日志概率的附加字段,以便客户可以分析模型对其预测的置信度。这些日志概率让您定量评估您的自定义模型在处理输入和生成回复时的置信程度。细粒度度量允许更好地评估回复质量、故障排除意外输出以及优化提示或模型配置。

让我们通过一个启用日志概率调用某中心Bedrock上自定义模型的示例,并检查输出格式。假设您已经将自定义模型(例如,微调的Llama 3.2 1B模型)导入到某中心Bedrock并拥有其模型资源名称(ARN)。您可以使用某中心Bedrock运行时SDK(此示例中为Python的Boto3)调用此模型,如下例所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import boto3, json

bedrock_runtime = boto3.client('bedrock-runtime')  
model_arn = "arn:aws:bedrock:<<aws-region>>:<<account-id>>:imported-model/your-model-id"

# 定义启用日志概率的请求负载
request_payload = {
    "prompt": "The quick brown fox jumps",
    "max_gen_len": 50,
    "temperature": 0.5,
    "stop": [".", "\n"],
    "return_logprobs": True   # 请求日志概率
}

response = bedrock_runtime.invoke_model(
    modelId=model_arn,
    body=json.dumps(request_payload),
    contentType="application/json",
    accept="application/json"
)

# 解析JSON响应
result = json.loads(response["body"].read())
print(json.dumps(result, indent=2))

在前面的代码中,我们向自定义导入模型发送提示——“The quick brown fox jumps”。我们配置标准推理参数:最大生成长度为50个标记,中等温度为0.5以获得适度随机性,以及停止条件(句点或换行)。"return_logprobs":True参数告诉某中心Bedrock在响应中返回日志概率。

调用模型API返回一个JSON响应,包含三个主要组件:标准生成的文本输出、关于生成过程的元数据,以及现在提示标记和生成标记的日志概率。这些值揭示了模型对每个标记预测的内部置信度,因此您不仅可以了解生成了什么文本,还可以了解模型在过程的每个步骤中的确定程度。以下是来自"quick brown fox jumps"提示的示例响应,显示日志概率(显示为负数):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{
  'prompt_logprobs': [
    None,
    {'791': -3.6223082542419434, '14924': -1.184808373451233},
    {'4062': -9.256651878356934, '220': -3.6941518783569336},
    {'14198': -4.840845108032227, '323': -1.7158453464508057},
    {'39935': -0.049946799874305725},
    {'35308': -0.2087990790605545}
  ],
  'generation': ' over the lazy dog',
  'prompt_token_count': 6,
  'generation_token_count': 5,
  'stop_reason': 'stop',
  'logprobs': [
    {'927': -0.04093993827700615},
    {'279': -0.0728893131017685},
    {'16053': -0.02005653828382492},
    {'5679': -0.03769925609230995},
    {'627': -1.194122076034546}
  ]
}

原始API响应提供与日志概率配对的标记ID。为了使这些数据可解释,我们首先需要使用适当的标记器(此例中为Llama 3.2 1B标记器)解码标记ID,该标记器将每个ID映射回其实际文本标记。然后我们通过应用指数函数将日志概率转换为概率,将这些值转换为更直观的0到1之间的概率。我们已经使用自定义代码(此处未显示)实现了这些转换,以生成人类可读的格式,其中每个标记与其概率一起出现,使模型对其预测的置信度立即清晰。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{'prompt_logprobs': [None,
  {'791': "'The' (p=0.0267)", '14924': "'Question' (p=0.3058)"},
  {'4062': "' quick' (p=0.0001)", '220': "' ' (p=0.0249)"},
  {'14198': "' brown' (p=0.0079)", '323': "' and' (p=0.1798)"},
  {'39935': "' fox' (p=0.9513)"},
  {'35308': "' jumps' (p=0.8116)"}],
 'generation': ' over the lazy dog',
 'prompt_token_count': 6,
 'generation_token_count': 5,
 'stop_reason': 'stop',
 'logprobs': [{'927': "' over' (p=0.9599)"},
  {'279': "' the' (p=0.9297)"},
  {'16053': "' lazy' (p=0.9801)"},
  {'5679': "' dog' (p=0.9630)"},
  {'627': "'.\n' (p=0.3030)"}]}

让我们分解一下这告诉我们关于模型内部处理的内容:

  • 生成:这是模型生成的实际文本(在我们的示例中,它是我们发送给模型的提示的延续)。这是您通常从任何模型调用中得到的相同字段。
  • 提示标记计数生成标记计数:这些分别表示输入提示和输出中的标记数量。在我们的示例中,提示被标记化为六个标记,模型在其完成中生成了五个标记。
  • 停止原因:生成停止的原因(“stop"表示模型自然停止在停止序列或文本结尾,“length"表示达到最大标记限制,等等)。在我们的案例中,它显示"stop”,表示模型自行停止或由于我们提供的停止条件。
  • 提示日志概率:此数组提供提示中每个标记的日志概率。当模型处理您的输入时,它基于到目前为止看到的内容连续预测接下来应该出现什么。这些值度量您的提示中哪些标记是模型预期的或令人惊讶的。
    • 第一个条目是None,因为第一个标记没有先前的上下文。没有先验信息,模型无法预测任何东西。
    • 每个后续条目包含映射到其日志概率的标记ID。我们已经将这些ID转换为可读文本,并将日志概率转换为百分比以便于理解。
    • 您可以观察模型在处理熟悉序列时增加的置信度。例如,在看到The quick brown之后,模型以95.1%的置信度预测了fox。在看到直到fox的完整上下文后,它以81.1%的置信度预测了jumps。
    • 许多位置显示多个标记及其概率,揭示了模型考虑的替代方案。例如,在第二个位置,模型评估了The(2.7%)和Question(30.6%),这意味着模型认为该位置两个标记都可行。这种增加的可见性帮助您理解模型在何处权衡替代方案,并可以揭示当它更不确定或难以从多个选项中选择时。
    • 某些标记出现显著低的概率——quick仅收到0.01%——表明模型发现这些单词在其上下文中出乎意料。
    • 整体模式讲述了一个清晰的故事:单个单词最初收到低概率,但随着完整的quick brown fox jumps短语出现,模型的置信度显著增加,显示它认识到这是一个熟悉的表达。
    • 当您的提示中的多个标记持续收到低概率时,您的措辞可能对模型来说不寻常。这种不确定性会影响完成的质量。使用这些洞察,您可以重新制定提示以更好地与模型在其训练数据中遇到的模式对齐。
  • 日志概率:此数组包含模型生成输出中每个标记的日志概率。格式类似:将标记ID映射到其相应日志概率的字典。
    • 在解码这些值之后,我们可以看到标记over、the、lazy和dog都具有高概率。这表明模型认识到它正在完成众所周知的短语the quick brown fox jumps over the lazy dog——一个模型似乎非常熟悉的常见全字母句。
    • 相比之下,最后的句点(换行)标记具有低得多的概率(30.3%),揭示了模型关于如何结束句子的不确定性。这是有道理的,因为模型有多个有效选项:用句点结束句子、继续附加内容或选择另一个标点符号。

日志概率的实际用例

自定义模型导入功能的标记级日志概率为您模型的决策过程提供了宝贵洞察。这些度量通过揭示每个生成标记的置信水平,改变了您与自定义模型的交互方式。以下是利用这些洞察的有影响方式:

排名多个完成

您可以使用日志概率定量排名同一提示的多个生成输出。当您的应用需要在不同的可能完成之间选择时——无论是用于摘要、翻译还是创意写作——您可以通过平均或添加所有标记的日志概率来计算每个完成的整体似然性。

示例: 提示:翻译短语"Battre le fer pendant qu’il est chaud”

完成A:“Strike while the iron is hot”(平均日志概率:-0.39) 完成B:“Beat the iron while it is hot."(平均日志概率:-0.46)

在此示例中,完成A获得更高的日志概率得分(更接近零),表明模型发现这个习语翻译比更字面的完成B更自然。这种数值方法使您的应用能够自动选择最可能的输出或呈现按模型置信水平排名的多个候选。

这种排名能力超越翻译,扩展到许多存在多个有效输出的场景——包括内容生成、代码完成和创意写作——提供基于模型置信度的客观质量度量,而不是仅仅依赖主观的人类判断。

检测幻觉和低置信度答案

当处理模糊提示、复杂查询或超出其专业知识的话题时,模型可能会产生幻觉——听起来合理但事实不正确的陈述。日志概率通过揭示模型的内部不确定性,提供了一种检测这些实例的实用方法,帮助您识别可能不准确的信息,即使输出表面看起来自信。

通过分析标记级日志概率,您可以识别模型可能不确定的回复部分,即使文本表面看起来自信。这种能力在检索增强生成(RAG)系统中尤其有价值,其中回复应基于检索的上下文。当模型有相关信息可用时,它通常以更高的置信度生成答案。相反,跨多个标记的低置信度表明模型可能在生成没有足够支持信息的内容。

示例

提示:

1
2
"Explain how the Portfolio Synergy Quotient (PSQ) is applied in multi-asset investment
 strategies?"

模型输出:

1
2
"The PSQ is a measure of the diversification benefits of combining different asset 
 classes in a portfolio."

在此示例中,我们故意询问一个虚构的度量——投资组合协同商数(PSQ)——以演示日志概率如何揭示模型回复中的不确定性。尽管为这个不存在的金融概念产生了专业听起来定义,但标记级置信度得分讲述了一个揭示性的故事。下面显示的置信度得分是通过对模型返回的日志概率应用指数函数得出的。

  • PSQ显示中等置信度(63.8%),表明模型识别了首字母缩略词格式,但对这个特定术语不是高度确定。
  • 常见金融术语如classes(98.2%)和portfolio(92.8%)表现出高置信度,很可能因为这些是金融上下文中广泛使用的标准概念。
  • 关键连接概念显示显著低置信度:measure(14.0%)和diversification(31.8%),揭示了模型在尝试解释PSQ含义或作用时的不确定性。
  • 功能词如is(45.9%)和of(56.6%)徘徊在中等置信水平,表明对解释整体结构的不确定性。

通过识别这些低置信度片段,您可以在应用中实施有针对性的保障措施——例如标记内容进行验证、检索附加上下文、生成澄清问题或对敏感信息应用置信度阈值。这种方法有助于创建更可靠的AI系统,可以区分高置信度知识和不确定的回复。

监控提示质量

当为您的应用设计提示时,日志概率揭示了模型理解您的指令的程度。如果前几个生成的标记显示异常低的概率,通常表明模型难以解释您在询问什么。

通过跟踪初始标记的平均日志概率——通常是前5-10个生成的标记——您可以定量测量提示清晰度。结构良好、上下文清晰的提示通常产生更高的概率,因为模型立即知道该做什么。模糊或未充分指定的提示通常产生较低的初始标记似然性,因为模型犹豫或搜索方向。

示例: 客户服务回复的提示比较:

基本提示:

1
2
"Write a response to this customer complaint: I ordered a laptop 2 weeks ago and it 
 still hasn't arrived."

前五个标记的平均日志概率:-1.215(较低置信度)

优化提示:

1
2
3
4
5
"You are a senior customer service manager with expertise in conflict resolution and 
 customer retention. You work for a reputable electronics retailer that values 
 customer satisfaction above all else. Your task is to respond to the following 
 customer complaint with professionalism and empathy. 
 Customer Complaint: I ordered a laptop 2 weeks ago and it still hasn't arrived."

前五个标记的平均日志概率:-0.333(较高置信度)

优化提示生成更高的日志概率,证明精确的指令和清晰的上下文减少了模型的不确定性。这种方法不是对提示质量做出绝对判断,而是让您测量版本之间的相对改进。您可以直接观察特定元素——角色定义、上下文细节和明确期望——如何增加模型置信度。通过系统地在不同提示迭代中测量这些置信度得分,您构建了一个提示工程的定量框架,揭示了您的指令在何时以及如何对模型变得不清晰,从而实现持续的数据驱动优化。

通过早期修剪降低RAG成本

在传统的RAG实现中,系统检索5-20个文档并使用这些检索的上下文生成完整回复。这种方法推高了推理成本,因为每个检索的上下文都会消耗标记,无论实际有用性如何。

日志概率通过早期修剪实现更具成本效益的替代方案。而不是立即完整处理检索的文档:

  1. 基于每个检索的上下文生成草稿回复
  2. 计算这些短草稿的平均日志概率
  3. 按平均日志概率得分对上下文进行排名
  4. 丢弃低于置信度阈值的低分上下文
  5. 仅使用最高置信度的上下文生成完整回复

这种方法有效,因为包含相关信息的上下文在草稿生成阶段产生更高的日志概率。当模型遇到有帮助的上下文时,它以更大的置信度生成文本,反映在更接近零的日志概率中。相反,不相关或切线的上下文产生更不确定的输出,具有较低的日志概率。

通过在完整生成之前过滤上下文,您可以减少标记消耗,同时保持甚至提高答案质量。这将过程从蛮力方法转变为有针对性的管道,将完整生成仅导向模型在源材料中表现出真正置信度的上下文。

微调评估

当您为特定领域微调模型时,日志概率提供了一种定量评估训练效果的方法。通过分析回复中的置信模式,您可以确定您的模型是否开发了适当的校准——对正确的领域特定答案显示高置信度,并在其他地方保持适当的不确定性。

一个良好校准的微调模型应该在其专业领域内为准确信息分配更高的概率,同时在其训练领域外操作时保持较低的置信度。校准问题以两种主要形式出现。过度自信发生在模型为不正确的回复分配高概率时,表明它没有正确学习其知识的边界。信心不足表现为尽管生成准确答案但持续低概率,表明训练可能没有充分强化正确的模式。

通过系统地在各种场景中测试您的模型并分析日志概率,您可以识别需要额外训练的领域或检测当前方法中的潜在偏差。这为迭代改进创建了一个数据驱动的反馈循环,确保您的模型在其预期范围内可靠地执行,同时在其专业知识周围保持适当的边界。

开始使用

以下是开始使用某中心Bedrock自定义模型导入功能的日志概率的方法:

  1. 在API调用中启用日志概率:在调用自定义导入模型时,将"return_logprobs": true添加到您的请求负载中。此参数适用于调用模型和带响应流的调用模型API。从熟悉的提示开始,观察您的模型以高置信度预测哪些标记 versus 哪些它发现令人惊讶。
  2. 分析自定义模型中的置信模式:检查您的微调或领域适应模型对不同输入的反应。日志概率揭示了您的模型是否针对您的特定领域进行了适当校准——在应该确定的地方显示高置信度。
  3. 开发置信感知应用:实现实际用例,如幻觉检测、回复排名和内容验证,使您的应用更加健壮。例如,您可以将回复的低置信度部分标记为人工审查,或从多个生成中选择最高置信度的回复。

结论

某中心Bedrock自定义模型导入的日志概率支持提供了对模型决策的增强可见性。此功能将先前不透明的模型行为转变为开发人员可以分析和使用的可量化置信度量。

在整个文章中,我们演示了如何在API调用中启用日志概率、解释返回的数据,并将这些洞察用于实际应用。从检测潜在幻觉和排名多个完成到优化RAG系统和评估微调质量,日志概率在不同用例中提供了切实的好处。

对于使用自定义基础模型(如Llama、Mistral或Qwen)的客户,这些洞察解决了一个基本挑战:理解不仅模型生成什么,而且对其输出有多自信。当在需要高可靠性的领域(如金融、医疗保健或企业应用)部署AI时,这种区别变得关键,其中不正确的输出可能产生重大后果。

通过揭示跨不同类型查询的置信模式,日志概率帮助您评估模型定制如何影响校准,突出您的模型在哪些方面表现出色以及哪些方面可能需要改进。无论您是评估微调效果、调试意外回复,还是构建适应不同置信水平的系统,此功能代表了在为某中心Bedrock上的生成式AI开发带来更大透明度和控制方面的重要进步。

我们期待看到您如何使用日志概率通过自定义导入模型构建更智能和可信赖的应用。此能力展示了某中心Bedrock的承诺,为开发人员提供工具,使其能够自信地创新,同时提供完全托管服务的可扩展性、安全性和简单性。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计