> 自媒体 > (AI)人工智能 > 你有没深入想过,什么造成了GPT-4的输出很随机?
你有没深入想过,什么造成了GPT-4的输出很随机?
来源:机器之心Pro
2023-08-10 08:07:07
747
管理

机器之心报道

编辑:小舟

Google Deepmind 可能早就意识到了这个问题。

今年,大型语言模型(LLM)成为 AI 领域最受关注的焦点,OpenAI 的 ChatGPT 和 GPT-4 更是爆火出圈。GPT-4 在自然语言理解与生成、逻辑推理、代码生成等方面性能出色,令人惊艳。

然而,人们逐渐发现 GPT-4 的生成结果具有较大的不确定性。对于用户输入的问题,GPT-4 给出的回答往往是随机的。

我们知道,大模型中有一个 temperature 参数,用于控制生成结果的多样性和随机性。temperature 设置为 0 意味着贪婪采样(greedy sampling),模型的生成结果应该是确定的,而 GPT-4 即使在 temperature=0.0 时,生成的结果依然是随机的。

在一场圆桌开发者会议上,有人曾直接向 OpenAI 的技术人员询问过这个问题,得到的回答是这样的:「老实说,我们也很困惑。我们认为系统中可能存在一些错误,或者优化的浮点计算中存在一些不确定性......」

值得注意的是,早在 2021 年就有网友针对 OpenAI Codex 提出过这个疑问。这意味着这种随机性可能有更深层次的原因。

图源:https://community.openai.com/t/a-question-on-determinism/8185

现在,一位名为 Sherman Chann 的开发者在个人博客中详细分析了这个问题,并表示:「GPT-4 生成结果的不确定性是由稀疏 MoE 引起的」。

论文地址:https://arxiv.org/pdf/2308.00951.pdf

在 Soft MoE 论文的 2.2 节中,有这样一段描述:

在容量限制下,所有稀疏 MoE 都以固定大小的组来路由 token,并强制(或鼓励)组内平衡。当组内包含来自不同序列或输入的 token 时,这些 token 通常会相互竞争专家缓冲区中的可用位置。因此,模型在序列级别不再具有确定性,而仅在批次级别(batch-level)具有确定性,因为某些输入序列可能会影响其他输入的最终预测。

此前,有人称 GPT-4 是一个混合专家模型(MoE)。Sherman Chann 基于此做出了一个假设:

GPT-4 API 用执行批推理(batch inference)的后端来托管。尽管一些随机性可能是因为其他因素,但 API 中的绝大多数不确定性是由于其稀疏 MoE 架构未能强制执行每个序列的确定性。

也就是说,Sherman Chann 假设:「稀疏 MoE 模型中的批推理是 GPT-4 API 中大多数不确定性的根本原因」。为了验证这个假设,Sherman Chann 用 GPT-4 编写了一个代码脚本:

import osimport jsonimport tqdmimport openaifrom time import sleepfrom pathlib import Pathchat_models = ["gpt-4", "gpt-3.5-turbo"]message_history = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Write a unique, surprising, extremely randomized story with highly unpredictable changes of events."}]completion_models = ["text-davinci-003", "text-davinci-001", "davinci-instruct-beta", "davinci"]prompt = "[System: You are a helpful assistant]nnUser: Write a unique, surprising, extremely randomized story with highly unpredictable changes of events.nnAI:"results = []import timeclass TimeIt: def __init__(self, name): self.name = name def __enter__(self): self.start = time.time() def __exit__(self, *args): print(f"{self.name} took {time.time() - self.start} seconds")C = 30 # number of completions to make per modelN = 128 # max_tokens# Testing chat modelsfor model in chat_models: sequences = set() errors = 0 # although I track errors, at no point were any errors ever emitted with TimeIt(model): for _ in range(C): try: completion = openai.ChatCompletion.create( model=model, messages=message_history, max_tokens=N, temperature=0, logit_bias={"100257": -100.0}, # this doesn't really do anything, because chat models don't do much ) sequences.add(completion.choices[0].message['content']) sleep(1) # cheaply avoid rate limiting except Exception as e: print('something went wrong for', model, e) errors = 1 print(f"nModel {model} created {len(sequences)} ({errors=}) unique sequences:") print(json.dumps(list(sequences))) results.append((len(sequences), model))# Testing completion modelsfor model in completion_models: sequences = set() errors = 0 with TimeIt(model): for _ in range(C): try: completion = openai.Completion.create( model=model, prompt=prompt, max_tokens=N, temperature=0, logit_bias = {"50256": -100.0}, # prevent EOS ) sequences.add(completion.choices[0].text) sleep(1) except Exception as e: print('something went wrong for', model, e) errors = 1 print(f"nModel {model} created {len(sequences)} ({errors=}) unique sequences:") print(json.dumps(list(sequences))) results.append((len(sequences), model))# Printing table of resultsprint("nTable of Results:")print("Num_SequencestModel_Name")for num_sequences, model_name in results: print(f"{num_sequences}t{model_name}")

当 N=30,max_tokens=128 时,结果如下表所示:

在 Sherman Chann 注意到 logit_bias 问题之前,还得到了如下结果(max_tokens=256):

一位支持 Sherman Chann 的假设的开发者说道:「GPT-3.5-Turbo 可能就是 OpenAI 为 GPT-4 构建的小型测试模型」。

对此,你怎么看?

参考链接:

https://news.ycombinator.com/item?id=37006224

0
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 凡本网注明 “来源:XXX(非本站)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。 如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。 QQ:617470285 邮箱:617470285@qq.com
相关文章
月供一千多开走丰田SUV?威兰达AIR版这次把“家用”玩明白了..
#威兰达AIR权益价13.78万#月供一千多开走丰田SUV?威兰达AIR版这次把“家..
全新丰田威兰达AIR上市,定价13.78万起,现在入手划算吗?..
#威兰达AIR权益价13.78万#2月24日,广汽丰田全新威兰达AIR版上市,有2.0L..
价格再下探,权益价13.78万元起,全新丰田威兰达AIR版上市..
不过,与Pro版车型相比,AIR版车型少了高通8155座舱芯片、副驾座椅电动调..
2026款丰田雅力士发布:升级10.5英寸大屏,保留燃油手动挡..
【网通社快报】丰田近日在日本发布2026款雅力士及雅力士Cross,新车将于3..
26款丰田亚洲龙亮相,车道保持+自动刹车+4.9L油耗,B级车天花板..
2019年亚洲龙刚进入中国市场时,许多消费者对这辆车的定位感到困惑,它的..
丰田陆放到底值不值得买?跑了5000公里,车主只说了大实话..
大家好,我是宇哥。最近很多粉丝问我:预算30万左右,想买一台靠谱的7座..
搭载新一代插混技术,丰田RAV4 PHEV海外发布,售价26.7万..
2026年2月19日,丰田在日本市场正式发布了全新第六代RAV4的PHEV版本,并..
丰田普拉多最高优惠5万,实力依然扛打!现在是不是下手好时机?..
前两天,咱们去逛二手车市场,依然见到不少丰田普拉多、丰田兰德酷路泽的..
丰田为何没有变成另一个诺基亚?
五年前小鹏汽车创始人何小鹏嘲笑丰田章男对待EV(电动汽车)的态度,并在..
关于作者
烽火(普通会员)
文章
1854
关注
0
粉丝
0
点击领取今天的签到奖励!
签到排行

成员 网址收录40418 企业收录2986 印章生成263660 电子证书1157 电子名片68 自媒体103982

0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索