一、温度是什么?为何它如此关键?
在与大语言模型交互时,温度(Temperature) 是我们最常遇到、也最容易感到困惑的核心采样参数之一。它并非物理温度,而是一个用于控制模型输出随机性与确定性的数学系数。你可以把它想象成模型“创造力”的开关:温度值越低,模型越倾向于选择概率最高的词汇,输出越保守、可预测;温度值越高,模型越有可能选择概率稍低的词汇,输出越发散、富有创造性甚至“离谱”。
理解温度的关键在于它作用于模型最后一层的softmax函数。该函数将模型对下一个词的原始预测分数(logits)转换为一个概率分布。温度参数t会先被用来除以这些logits,即logits / t,然后再进行softmax计算。当t < 1时,概率分布会变得更加“尖锐”(高概率词概率更高,低概率词概率更低);当t > 1时,分布会变得“平坦”(各词概率差距缩小)。这就是温度控制随机性的数学本质。
二、从0到1,再到2:不同温度值下的输出差异
让我们通过一个具体的、在MiMo API中调用的实例,来感受温度如何影响生成。假设我们给定一个简单的提示(prompt):“用一句话描述人工智能的未来,风格要富有诗意。”
import openai # 假设MiMo API兼容OpenAI的客户端格式
client = openai.OpenAI(api_key="your_mimo_api_key", base_url="mimo_api_endpoint")
prompt = "用一句话描述人工智能的未来,风格要富有诗意。"
# 低温度:确定性高,风格保守
response_low_temp = client.chat.completions.create(
model="mimo-model",
messages=[{"role": "user", "content": prompt}],
temperature=0.2,
max_tokens=100
)
print("低温度 (0.2):", response_low_temp.choices[0].message.content)
# 中等温度:平衡创造与连贯
response_mid_temp = client.chat.completions.create(
model="mimo-model",
messages=[{"role": "user", "content": prompt}],
temperature=0.7,
max_tokens=100
)
print("中温度 (0.7):", response_mid_temp.choices[0].message.content)
# 高温度:高创造性,可能非常出人意料
response_high_temp = client.chat.completions.create(
model="mimo-model",
messages=[{"role": "user", "content": prompt}],
temperature=1.5,
max_tokens=100
)
print("高温度 (1.5):", response_high_temp.choices[0].message.content)
一个典型的运行结果可能如下:
- 低温度 (0.2):“人工智能的未来,是智能与人性交融,共同编织更高效、更和谐的世界图景。”(结构工整,用词常规)
- 中温度 (0.7):“人工智能的未来,或许是一场静默的革命,它将像星尘般渗透进生活的缝隙,重新定义‘可能’的边界。”(出现了一些新颖的比喻)
- 高温度 (1.5):“人工智能的未来,是成为时间的园丁,在遗忘的沃土上,培育出从未被想象过的、会呼吸的钢铁花朵。”(极具个性和跳跃性,甚至有些晦涩)
三、不止是温度:top_p与top_k的协同艺术
温度并非孤军奋战,它通常与其他采样参数协同工作,共同塑造输出。其中最重要的两个是: