1、概述

  大型语言模型(LLM)的输出行为可以通过多种配置参数进行精细控制。这些参数共同决定了模型生成文本的质量、风格和多样性。理解这些配置选项及其相互作用对于有效使用LLM至关重要。

2、输出长度 (Output length)

  一个重要的配置设置是响应中要生成的令牌数量。生成更多令牌需要 LLM 进行更多计算,导致更高的能耗、可能更慢的响应时间以及更高的成本。

  减少 LLM 的输出长度并不会使 LLM 在其创建的输出中变得风格或文本上更简洁,它只是导致 LLM 在达到限制时停止预测更多令牌。如果需求需要较短的输出长度,可能还需要相应地设计提示以适应。需要明确的是:通过配置限制令牌数量 (max_tokens) 是一种强制截断,它本身并不能促使模型生成简洁的内容。实现简洁通常需要在提示本身中给出具体指令(例如,“用一句话总结”) 。

  对于某些 LLM 提示技术(如 ReAct),输出长度限制尤为重要,因为在获得所需响应后,LLM 可能会继续发出无用的令牌 。

3、采样控制 (Sampling controls)

  LLM 并非正式地预测单个令牌。相反,LLM 预测下一个令牌可能是什么的概率,LLM 词汇表中的每个令牌都会获得一个概率。然后对这些令牌概率进行采样,以确定将生成的下一个令牌。温度(Temperature)、Top-K 和 Top-P 是最常见的配置设置,它们决定了如何处理预测的令牌概率以选择单个输出令牌 。

3.1 温度 (Temperature)

  温度控制令牌选择中的随机程度。较低的温度适用于期望更确定性响应的提示,而较高的温度可能导致更多样化或意想不到的结果。温度为 0(贪婪解码)是确定性的:始终选择概率最高的令牌(但请注意,如果两个令牌具有相同的最高预测概率,根据平局处理方式的不同,温度为 0 时可能不总是得到相同的输出)。

  接近最大值的温度倾向于产生更随机的输出。随着温度越来越高,所有令牌成为下一个预测令牌的可能性变得均等。温度参数提供了一个在可预测性/事实准确性(低温)与创造性/多样性(高温)之间的基本权衡。为不同任务选择合适的温度至关重要——事实问答需要低温,而故事生成可能受益于高温。

  Gemini 的温度控制可以类似于机器学习中使用的 softmax 函数来理解。低温度设置类似于低 softmax 温度 (T),强调具有高确定性的单个首选温度。较高的 Gemini 温度设置类似于高 softmax 温度,使得所选设置周围更宽范围的温度变得更可接受。这种增加的不确定性适应了那些不需要严格精确温度的场景,例如在尝试创意输出时。

Temperature 参数默认为 1.0,建议根据如下表格,按使用场景设置 temperature:

3.2 Top-K 和 Top-P (Top-K and top-P)

  Top-K 和 Top-P(也称为核采样)是 LLM 中使用的两种采样设置,用于将预测的下一个令牌限制为来自具有最高预测概率的令牌。与温度类似,这些采样设置控制生成文本的随机性和多样性 。

  • Top-K 采样从模型预测的分布中选择概率最高的 K 个令牌。Top-K 值越高,模型的输出越具创造性和多样性;Top-K 值越低,模型的输出越受限制和基于事实。Top-K 为 1 等同于贪婪解码。

  • Top-P 采样选择累积概率不超过某个值 (P) 的最高概率令牌。P 的值范围从 0(贪婪解码)到 1(LLM 词汇表中的所有令牌)。

  Top-K 和 Top-P 提供了补充温度控制的不同方式来塑造采样前的概率分布。Top-K 限制了选择的数量,而 Top-P 基于累积概率质量进行限制。Top-K 设置了考虑令牌数量的硬限制(例如,只看前 40 个)。Top-P 设置了基于概率总和的限制(例如,考虑令牌直到它们的概率加起来达到 0.95)。这些是不同的机制。理解这种差异允许比单独使用温度更精细地控制输出多样性。选择 Top-K 还是 Top-P 的最佳方法是同时(或一起)试验这两种方法,看看哪种能产生您所寻找的结果。

3.3 综合运用 (Putting it all together)

  在 Top-K、Top-P、温度和要生成的令牌数量之间进行选择,取决于具体的应用和期望的结果,并且这些设置相互影响 1。理解所选模型如何组合不同的采样设置也很重要。

  如果温度、Top-K 和 Top-P 都可用(如在 Vertex Studio 中),则同时满足 Top-K 和 Top-P 标准的令牌成为下一个预测令牌的候选者,然后应用温度从通过 Top-K 和 Top-P 标准的令牌中进行采样。如果只有 Top-K 或 Top-P 可用,行为相同,但只使用一个 Top-K 或 P 设置。

  如果温度不可用,则从满足 Top-K 和/或 Top-P 标准的令牌中随机选择一个,以产生单个下一个预测令牌。

  在某个采样配置值的极端设置下,该采样设置要么抵消其他配置设置,要么变得无关紧要:

  • 如果将温度设置为 0,Top-K 和 Top-P 将变得无关紧要——概率最高的令牌成为下一个预测的令牌。如果将温度设置得极高(高于 1——通常在 10 的量级),温度将变得无关紧要,通过 Top-K 和/或 Top-P 标准的任何令牌随后将被随机采样以选择下一个预测令牌。

  • 如果将 Top-K 设置为 1,温度和 Top-P 将变得无关紧要。只有一个令牌通过 Top-K 标准,该令牌就是下一个预测的令牌。如果将 Top-K 设置得极高,例如达到 LLM 词汇表的大小,任何具有非零概率成为下一个令牌的令牌都将满足 Top-K 标准,没有令牌被筛选掉。

  • 如果将 Top-P 设置为 0(或一个非常小的值),大多数 LLM 采样实现将只考虑概率最高的令牌来满足 Top-P 标准,使得温度和 Top-K 无关紧要。如果将 Top-P 设置为 1,任何具有非零概率成为下一个令牌的令牌都将满足 Top-P 标准,没有令牌被筛选掉。

  这些配置参数并非独立运作。它们的相互作用很复杂,某些设置可以主导或抵消其他设置。理解这些相互作用对于可预测的控制至关重要。例如,将温度设为 0 或 Top-K 设为 1 会使其他采样参数失效。有效的配置需要全局视角 1。

  作为一般的起点,温度为 0.2、Top-P 为 0.95、Top-K 为 30 将给出相对连贯的结果,可以具有创造性但不过度。如果想要特别有创意的结果,可以尝试从温度 0.9、Top-P 0.99 和 Top-K 40 开始。如果想要较少创意的结果,可以尝试从温度 0.1、Top-P 0.9 和 Top-K 20 开始。最后,如果任务总是只有一个正确答案(例如,回答数学问题),则从温度 0 开始 1。提供针对不同任务类型(连贯、创意、事实)的具体起始值,为实践提供了宝贵的指导。这承认了寻找最优设置需要实验,但可以通过启发式方法来指导,减少了初始搜索空间 1。

  注意: 自由度越高(温度、Top-K、Top-P 和输出令牌越高),LLM 可能生成相关性较低的文本。

4、总结

  大型语言模型(LLM)的输出可通过关键参数控制:max_tokens限制长度,Temperature调节随机性(低值稳定/高值创意),Top-K和 Top-P筛选候选词。实际应用中需平衡这些参数——事实任务用低温+严格筛选,创意任务用高温+宽松采样,并通过测试优化配置。

LLM 输出配置 (LLM output configuration)的更多相关文章

  1. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  2. PHP输出缓冲控制- Output Control 函数应用详解

    说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满 ...

  3. Spring学习(13)--- 基于Java类的配置Bean 之 @Configuration & @Bean注解

    基于Java配置选项,可以编写大多数的Spring不用配置XML,但有几个基于Java的注释的帮助下解释.从Spring3.0开始支持使用java代码来代替XML来配置Spring,基于Java配置S ...

  4. STM32 HAL库学习系列第4篇 定时器TIM----- 开始定时器与PWM输出配置

    基本流程: 1.配置定时器 2.开启定时器 3.动态改变pwm输出,改变值  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); 函数总结: __HAL_TIM ...

  5. jmeter压力测试值之配置JDBC Connection Configuration(一)

    一.下载mysql jar包 下载mysql jar包 http://dev.mysql.com/downloads/connector/j/ 网盘下载地址:mysql-connector-java- ...

  6. PHP输出缓冲控制 - Output Control 函 应用详解

    简介 说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffe ...

  7. Spring Boot2(006):关于配置类(Configuration Classes)和配置(Configuration)

    一.配置类(Configuration Classes) Spring Boot 支持基于 xml 的配置,但更偏向于使用基于 Java 的配置,通常建议使用定义有 main 方法的主 @Config ...

  8. 微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core

    写在前面 在日常开发中,我这边比较熟悉的配置中心有,携程Apollo,阿里Nacos(配置中心,服务治理一体) 之前文章: Asp.Net Core与携程阿波罗(Apollo)的第一次亲密接触 总体来 ...

  9. 微软Azure配置中心 App Configuration (二):Feature Flag 功能开关特性

    写在前面 Web服务开发过程中我们经常有这样的需求: 某些功能我必须我修改了配置才启用,比如新用户注册送券等: 某个功能需到特定的时间才启用,过后就失效,比如春节活动等: 某些功能,我想先对10%的用 ...

  10. 微软Azure配置中心 App Configuration (三):配置的动态更新

    写在前面 我在前文: <微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core>已经介绍了Asp.net Core怎么轻易的接入azure ...

随机推荐

  1. (Python)用栈实现计算器的原理及实现

    前言 我们日常使用的计算器是怎么实现计算的呢?能自己判断运算符的优先级去计算,能处理括号的匹配,这些都是怎么实现的呢? 一个大家熟知的答案是用栈,好的,那么为什么要用栈?为什么栈能实现呢? 目录 前言 ...

  2. 数字先锋 | 打造专属AI大脑,天翼云助力重庆理工大学开启智慧校园新篇!

    从在线课程的蓬勃兴起,到远程教育的逐渐普及,再到智能教学工具的广泛应用--人工智能.大数据.云计算等前沿技术迅速发展的当下,科技正以前所未有的深度和广度重塑教育领域,促使教育各个层面发生深刻变革.师生 ...

  3. 把postgreSQL的表导入SQLite

    万能的互联网,一查一大堆废话,几乎搞不定.现将查到的资料结合实践概况如下,对不对也不清楚,反正可以跑了. 1.把PostgreSQL的表SQL语句复制出来 CREATE TABLE "mai ...

  4. 搞笑的ini文件读取ReadSectionValues

    用fdconnection自动生成连接文本,将其写入ini文件,用于程序的读写.ini文件见后面. Lfini.ReadSection('LocalConnection',lstrings); Sho ...

  5. DevOps常用工具网址

    Linux基础和命令: shell语法查询: http://www.linux6.comhttps://www.tutorialspoint.com/linux_admin/index.htm 正则表 ...

  6. Python读取CSV文件并存储到MySQL

    在项目中对后台进行测试时,经常会遇到要在数据库新增数据,那么如何快速新增数据来提高工作效率呢? 现整理如下: 代码内容(csv_to_mysql.py): # coding=utf-8import p ...

  7. Nerf和3DGS神经重建技术在自动驾驶模拟中的应用

    验证自动驾驶软件需要数百万公里的测试.这不仅意味着系统开发周期长,而且系统的复杂度也会不断增加,同时,大规模的实车测试也会耗费巨量的资源并且可能会面临未知的安全问题.aiSim这样的虚拟仿真工具可以减 ...

  8. 康谋技术 | 揭秘汽车功能的核心——深度解读ADTF中的过滤器图

    在汽车领域,ADTF(Automotive Data and Time-Triggered Framework)是一个强大的工具,用于开发切实可行的汽车功能和复杂的应用程序,实现数据的转换.记录和可视 ...

  9. JVM 有那几种情况会产生 OOM(内存溢出)?

    JVM 有哪些情况会产生 OOM(内存溢出)? JVM 的内存溢出(OutOfMemoryError, OOM)是指程序在运行过程中,JVM 无法从操作系统申请到足够的内存,导致程序抛出内存溢出异常. ...

  10. 工良出品 | 长文讲解 MCP 和案例实战

    作者:痴者工良 博客地址:https://www.whuanle.cn/ 示例项目地址:https://github.com/whuanle/mcpdemo 近期 MCP 协议越来越爆火,很多开发者都 ...