科技行业最广为人知的秘密,就是版本号(version numbers)大多是用来营销的。
Windows的版本号,从3.0跃升至95,暗示它经过了重要的重新设计,后来又跳过了9,以吸引X世代。React的版本号,直接从0.14升级到15,希望借此提升这个迅猛发展的项目的认可度。而Kubernetes和Go的版本号则迟迟没有升级到2,展示了开发人员对不破坏任何东西(译注,为了保证向后兼容,开发者通常会避免大改代码)无力承诺。
那么,我们应该如何命名基础模型(foundation models)的版本号?这对研究人员来说有些陌生。他们会为了证明某个观点,随意训练 400 个没有版本号的大型语言模型(译注,指论文Training Compute-Optimal Large Language Models,通过在 50亿到5000 亿tokens上训练从7000万到160亿参数规模的400 多个语言模型,研究如何在给定计算资源条件下,用多少tokens训练最优大小的大模型)。
但随着AI工程师在模型之上构建产品和业务,它的版本号命名,变得越来越重要。
到目前为止,在生成式AI的短暂历史中,我们已经有了一些值得注意的案例研究。虽然GPT1→2→3的进展,每次都是一个明确的进步;Midjourney 4→5预示着Balenciaga Pope(译注,Balenciaga Pope是人工智能生成的图片,描绘了教皇弗朗西斯穿着 Balenciaga蓬松夹克的形象,很多人无法区分它的真实性,引发了广泛讨论)。但其他进展如Stable Diffusion 1→2则更具争议。
如今,GPT是以0.5个版本单位进化的。你可能还记得,GPT-3.5是与ChatGPT一起发布的,还包括text-davinci-003 和 code-davinci-002(译注,它们与gpt-3.5-turbo一样,都属于GPT-3.5系列模型)。这种版本号命名方式,有两点值得注意:
第一,它提醒了人们,GPT-3.5模型明显优于GPT-3,因为增加了代码,进行了指令调优,还有结合了人类反馈和强化学习算法的RLHF/PPO技术;
第二,这种新的聊天范式,是通用人工智能的前进方向。
今天的Code Interpreter(代码解释器)模型,同样符合这两点分析框架:
第一,相对GPT4,它是一次重大更新;
第二,这种新范式是通用人工智能的前进方向。
这就将引出这样一个结论:Code Interpreter应该被视为事实上的GPT 4.5。如果未来它有了API,我打赌,它也会追溯获得版本号命名。
Code Interpreter执行摘要
Code Interpreter是“一个实验性的ChatGPT模型”,它可以将Python写入Jupyter Notebook(译注,一种交互式计算环境,常用于数据清洗、转换、可视化,以及机器学习等领域)并在沙盒中执行。这个沙盒有如下特点:
与其他用户和互联网隔离
支持最多100MB上传/下载(包括 .csv, .xls, .png, .jpeg, .mov, .mp3, .epub, .pdf, .zip 文件的整个 git 仓库)
预装了超过 330 个库,如 pandas(数据分析)、matplotlib、seaborn、folium(图表和地图)、pytesseract(OCR)、Pillow(图像处理)、Pymovie(ffmpeg)、Scikit-Learn ,以及PyTorch 和 Tensorflow(机器学习)
3月23日,它作为 ChatGPT 插件更新的一部分发布。当时,Greg Brockman(译注,OpenAI联合创始人,专注于训练OpenAI的旗舰AI系统)向大家演示了它引人注目的能力。4月至6月,Alpha测试人员先后获得了访问权限。7 月的6日至8日,它作为可选的beta功能,面向约200万所有的ChatGPT Plus用户推出。
由于这些功能可以灵活地在代码中组合,因此很难列出它所有的功能。通过示例学习(例如p5.js游戏创作、绘制表情包、创建交互式仪表盘、数据预处理、编写复杂的AST操纵代码、海量人脸检测等,请参阅Discord上的#code-interpreter-output频道),或者浏览它的预装的库列表,都是很有用的:
Ethan Mollick 提供的示例。他不懂 Python,但非常了解如何从Code Interpreter中获取自己想要的东西。他还将自己的经验总结为长系统提示,是Code Interpreter 不错的默认设置。
需要注意的是,Code Interpreter实际上引入了两个新东西,而不是一个——沙盒和模型:
7月之前的大多数的 alpha 测试,都强调了Python沙盒及其内部可以做什么,只是顺便提到了自主编码能力;
但在正式发布(General Availability,GA)后,强调的重点则是Code Interpreter及模型质量,据说它似乎比今天的GPT-4要好,尤其是在编写代码,自主地执行多个步骤,以及自主地决定何时停止执行某个任务,并要求用户在一组选项中做出后续选择等方面。
必须亲眼看到,才能相信模型具备了自主性。下面这张图里,它正在编码和调试,没有任何人为输入:
模型进步了。这就是为什么在3月份的演示之后,开源项目试图克隆Code Interpreter的尝试,大部分都失败了。就像之前的ChatGPT一样,Code Interpreter的进步,在于将模型与模态捆绑在一起(译注,指人工智能模型与聊天模态捆绑,人机互动,更好地控制模型的行为)。
局限性,但不考虑硬件配置等限制:
环境经常重置代码执行状态,丢失已上传的文件,它从故障中恢复的能力有限;
它的OCR 能力远远不及 GPT-4Vision;
它会拒绝做它实际上能做到的事情,你必须坚持告诉它,它可以的;
它不能在代码中调用 GPT 3/4,因为它无法访问网络,也无法执行诸如数据增强之类的任务,它会试图通过编写代码来解决问题。
但整体而言,它的表现令人印象深刻:
“Code Interpreter Beta非常强大。它是你的个人数据分析师:可以读取上传的文件、执行代码、生成图表、统计分析,等等。我预计社区需要一段时间才能完全描绘出它的潜力。——Karpathy
“如果这都不是一个改变世界、改变GDP的产品,我不确定还会是什么。每个人都可以雇用一个脚本小子,每月只要20 美元。”——roon
“我开始倒腾Code Interpreter,它完成了我未来两年路线图上的所有事情” - Simon Willison
推论:下一个大前沿
前段时间,最热门的争论之一是,如果GPT-4真的“只是8 x 220B专家”(译注,指此前网上流传的GPT-4是一个由 8 个 2200亿参数的稀疏的专家模型组成的集成模型),那么OpenAI是否“缺乏创意”。
撇开 Routed Language Models(译注,一种语言模型,使用路由算法选择不同参数来处理每个输入示例,通常由多个较小的模型组合在一起,以提高整体性能)和 Switch Transformers(译注,一种深度学习模型,使用MoE技术选择不同参数来处理每个输入示例,允许开发者创建具有大量参数的稀疏模型)在像盘古(Pangu)这样的万亿参数级模型上的进展不谈,Code Interpreter表明,只要不将进步的定义局限于纯粹的大型语言模型推理,它就仍有进步空间,并且OpenAI已经掌握了它。
2017年,Noam Brown创建了Libratus,这个人工智能在 120,000 手无限制德州扑克中,击败了四名顶尖职业选手。其中一个主要见解是什么?
“神经网络通常会在100毫秒或更短的时间内给出响应……我们发现,如果你做一点搜索,就相当于把你的预先计算策略放大1000倍,只需要一点点搜索。这完全颠覆了我们一直在做的所有研究。”
事后看来,一切都很明显(最好的那一种!):
在现实生活中,当人类面对比较难的问题时,会比面对比较容易的问题思考得更久。但 GPT3 回答“球是圆的吗?”和“P = NP吗?”所需时间大约相同。如果我们让它花一年时间呢?
我们已经看到“让我们一步一步思考”(Let’s Think Step By Step)技术,通过允许它在上下文中,外化其思维过程,但也花费更多的推理时间来大大提高 LLM 性能。Beam 和 Tree of Thought类型搜索可以更有效地利用推理时间。
人工智能的的每一次巨大飞跃,都来自于解锁某种类型的扩展。Transformers解锁了并行预训练计算。Masked Language Modeling让我们可以在大量未标记的数据上自由发挥。Scaling Laws(缩放定律)给了我们一张模型大小的地图。很明显,推理时间计算(inference time compute)或者“实时搜索(real time search)”是下一个前沿领域,让我们可以“直接把时间扔进去”。
在2019年,Noam用人工智能Pluribus解决了6人扑克问题(译注,与两人对弈的围棋等不同,它是一种不完美信息游戏,涉及到6名玩家,更多的变量,以及对方手中的隐藏的牌面信息,当时,Pluribus以“五个 AI + 一个人类玩家”的形式和“一个 AI + 五个人类玩家”的形式击败了职业玩家)。2022年,Noam再次用Cicero解决了Diplomacy 问题(译注,一种名为“外交”的七人游戏,它要求玩家理解其他人的动机和观点,制定复杂的计划并调整策略,并使用语言说服其他人形成联盟,当时,Cicero击败了人类玩家)。
上个月,他还在思考这个问题:
2周后,他加入了OpenAI。
代码生成、沙盒 & 代理云
我一直在强调大模型能力在编写代码上的特殊地位。它是人工智能工程师崛起的一个重要推动力。这不是一个“哦,那很可爱,那是 Copilot,对开发人员有好处,但其他方面没什么用”的故事。即使对于不会写代码的人来说,会编码的大模型也是通用的,因为它是代码顶层的完美抽象。
据我所知,最早的“Code Core” 实验来自Riley Goodside,去年的“你是GPT-3,你不会做数学”就是这样。
这给了Replit 的 Amjad Masad以及Lexica 的 SharifShameem以灵感。
这表明修补大模型的缺陷(做数学、与外部环境交互、可解释性、速度/成本)的最佳方法,是利用其编写代码的能力来做它范围之外的事情。
英伟达的 Voyager项目创造了一张路线图,将这一点推向了逻辑结论:
这可能是2023年AI代理中最重要的图表。
但是,从Voyager出发,继续向外扩展,就存在一个明显的问题,即现实世界比《我的世界》(Minecraft)更随机,更缺乏记录,反馈循环更长。
当前,从Minion AI 、Multion到AutoGPT的代理实现,都在实时浏览器或桌面上运行,这可能会造成潜在的幻觉和灾难性的错误,创造出相当于总是必须把手放在方向盘上的自动驾驶汽车。
如果您是“Code Core”,您知道这将走向何方。自从Ada Lovelace(译注,19世纪的数学家,被部分人视为第一位程序员)开始为 Babbage Difference Engine(译注,巴贝奇差分机,一种机械计算机,被视为现代计算机的鼻祖,能执行简单的数学运算)编码以来,就一直在现实世界的分支上进行测试。你可以通过像 Seek AI的Sarah Nagy那样,使用语义层来改进代码生成。但最终判断代码是否会运行,并实现你所期望的事情的唯一方法,就是通过创建沙盒来测试它,就像Guardrails的Shreya Rajpal和Codium AI的Itamar Friedman所做的那样。
代码生成/沙盒化(codegen/sandboxing)的大部分内容,都可以并且应该在本地完成,但随着本地主机(Localhost)的终结日趋临近,越来越多的代理构建者和用户意识到,需要云基础设施来构建和运行这些大模型推理过程中的代码段。人们可以合理地预测,代理云(Agent Clouds)将崛起,以满足这种需求。
这实际上是一种新型的无服务器基础设施(serverlessinfrastructure )的需求。它不仅是临时的且程序化配置的,而且将具有特殊的可用性,以向非人类操作者提供必要的反馈。毫不奇怪,新兴的代理云子行业有大量候选者:
Replit的Amjad已经开始大声思考
E2B21的Vasek拥有开源 Firecracker microVM
Codesandbox的Ives也有一个
Fly的Kurt在5月推出了Fly Machines
你会注意到,他们都使用 Firecracker,这是 Amazon 在 2018 年开源的 QEMU 替代 microVM 技术(对于一家通常不以 OSS 领导力著称的公司来说,这是不错的胜利)。然而,与之形成鲜明对比的方法,可能来自 Deno(在JavaScript 领域)和 Modal(在 Python领域),它们的自我配置运行时(self-provisioning runtimes),在代理开发人员和基础设施提供商之间,提供了一个更轻量的合约(译注,指使用自我配置运行时,可以简化代理开发人员与基础设施提供商之间的合作关系,实现快速高效部署人工智能代理),代价是更低的熟悉度(译注,指开发人员不需要深入了解运行环境的细节,某些情况下影响他们独立解决问题的能力)。
当然,OpenAI 不得不建立自己的代理云,以便在一个周末内,为200万客户托管和扩展 Code Interpreter。他们多年来一直在工作中使用它,而其他人才刚刚意识到它的重要性。
通向GPT-5之路:代码增强推理
综上所述,我们可以将Code Interpreter与之前的方法进行对比:
你可以结合这些主要和次要版本升级的进步,考虑Code Interpreter “留下来”的可能性,或我将其视为“GPT -4.5”是否合理。
在我们的播客对话(译注,该文作者组织了一场长达2个多小时的播客,期间有多名开发人员与OpenAI员工参与对话,讨论了测试细节与功能需求,链接见文末)中,我们还会注意到,声称基线(baseline)GPT-4的质量已经恶化(但Logan坚称服务模型没有改变)的人,同样声称Code Interpreter 的输出——即使不包括写代码——的质量与最初未被“削弱”前的GPT-4 一样好。
假设这是真实的(如果没有显式的 Code Interpreter API来运行lm-eval-harness,则很难证伪),那么很可能为 CodeInterpreter 的编写代码功能所做的额外微调,也提高了整体输出质量(这是我们从研究和使用Replit,以及GPT-3.5自身起源于code-davinci-002中得到的结果),使 Code Interpreter 的基础模型,在没有沙盒的情况下,就有效地成为了“GPT-4.5”。
其他
OpenAI的领导力。6月,Sundar Pichai宣布了 Google Bard 的“隐式代码执行”,它执行了简单的无依赖 Python 功能,如数字加法和字符串反转。有趣的是,在一个月后,当我重新运行 Google 宣传的相同提示时,它完全失败了!与此同时,OpenAI正在发布全新的大模型编码范式。OpenAI 遥遥领先。
OpenAI作为云分发。由于我非常熟悉“第二层云”(Cloud Distros ),我不禁注意到OpenAI现在呈现出第二层云的形状。它什么时候开始收取计算时间、存储容量的费用,引入 IAM 策略并填补云服务的其他组?它什么时候会放弃“Open”这个名字,成为 AI Cloud?
本文来自AI工程师的社区Latent Space,由Alessioh和swyx运营着播客。
本期播客讨论了Code Interpreter的优势功能与优秀示例,介绍了它的局限性与边缘案例,以及安全性、人机交互、扩展潜力、上下文窗口等等特性,长达2个多小时。
嘉宾评价,我们迎来了能“长期持久地改进自己的系统”。它就像能编写代码的实习生或研究助理,解放了热爱代码但又不想陷入重复编码的资深程序员的创造力,释放了熟悉业务但不懂编程或建模分析的高级管理人员的洞察力。
https://www.latent.space/p/code-interpreter#details