#SearchGPT

OpenAI大杀器SearchGPT横空出世,单挑谷歌千亿美元搜索帝国

OpenAI真来撼动谷歌的搜索帝国了?深夜悄悄上线的AI搜索引擎产品——SearchGPT,在同一问题的演示上,直接原地吊打谷歌和Perplexity。谷歌的AI Overview没做到的「重塑搜索引擎」,会让OpenAI达成吗?

OpenAI,忽然深夜放大招了——

今天半夜,OpenAI宣布推出名为Search GPT的AI搜索引擎,正式狙击搜索霸主谷歌。

据《金融时报》称,OpenAI已准备好攻进谷歌1750亿美元的搜索业务市场。

奥特曼在X上官宣此消息,大胆直言:「当今的搜索功能还有改进空间」!

没等来GPT-4o的语音功能,但ChatGPT的更新先来了。

尝试过SearchGPT的奥特曼,对于自己的全新搜索非常满意,表示跟老式搜索相比,自己更喜欢这种方式。

甚至「我适应得如此之快,这让我感到震惊!」

更暴击的是,SearchGPT的优质功能还将集成到ChatGPT中。

好消息是,根据奥特曼的说法,alpha测试将于下周开始开放给付费用户。

网友直言,SearchGPT对Perplexity、谷歌、必应都是迎头重击,让游戏开始吧!

SearchGPT对Perplexity、谷歌、必应是一个重大打击,直接与它们的搜索服务竞争。凭借其实时获取信息和与主要新闻机构的合作伙伴关系,SearchGPT准备颠覆搜索引擎市场

颠覆搜索,看来是真的

从官方放出的预览demo来看,似乎不仅仅是集成了实时网络信息,应该也包括类似于「多步推理」的功能。

问:我周末何时能在半月湾看到裸腮类动物?

对于包含如此具体时空细节的提问,谷歌是完全束手无策,给出的模糊答案看了就头疼。

上下滑动查看

SearchGPT则不跟你玩虚的,简单明快打直球,给出准确的时间点——

并且解释道,这类动物经常出现在潮间带和岸边岩石上,你应该在退潮时段去。

预测潮汐网站的参考链接,也贴心地附了出来。

更多的细节问题,也可以随口问它,比如那里天气如何?

这周末半月湾的天气预测,就会一一给出。

同样的问题,Perplexity倒是给出了一系列相关小tips,但对于核心问题,它并没有给出有力的答案,只是含糊地推荐「退潮期」。

这一轮对决,谷歌和Perplexity是妥妥输了。

实时响应,多轮对话,取代搜索引擎

SearchGPT和谷歌搜索的体验,为何差距如此之大?

OpenAI发言人Kayla Wood表示,目前SearchGPT的服务由GPT-4系列模型驱动, 采用类似ChatGPT的对话式界面和工作方式。

按照传统的搜索方式,用户在网络上检索时,往往需要多次搜索不同关键词,费时费力。

而SearchGPT颠覆了传统的搜索模式,只需像真人对话一样,表达自己的搜索诉求,即可获得实时响应,而且支持多轮对话。

以实时信息为基础,借助AI的理解推理和总结能力,找到想要的内容so easy。

跟传统搜索相比,SearchGPT的优化主要体现在两个方面:

其一,搜索结果更快速准确,充分发挥LLM的文本能力。

显然,对比基于关键词搜索的传统搜索引擎,AI搜索在理解问题和汇总信息方面有着显著的优势。

比如在搜索框内输入「八月份在北卡罗莱纳周Boone地区的音乐节」。

SearchGPT瞬间把几个相关的音乐节排列得清清楚楚,点击左侧边栏的链接按钮,还可以看到信息的来源,一键跳转买票。

而且,SearchGPT会为你提供指向相关来源的清晰链接。

2024巴黎奥运会什么时候举行?法国准备得怎么样了?它会援引路透社的报道

根据《连线》杂志的推测,SearchGPT很可能使用了检索增强生成(RAG)方法来减少回答中的幻觉,提高可信度并生成内容来源。

其二,不但能搜索结果,还能就一个细节和延申话题继续对话。

你一定有这样的体验,在搜索过程中会产生一些相关的新问题时,只能另起窗口接着搜,浏览器中开出十多个页面变成了工作日常。

传统搜索引擎就属于单次性搜索产品,检索完一个问题就结束。

而AI搜索附带有生成和对话的能力,每次查询都共享同一个上下文,让用户可以丝滑地继续话题。

最近用过ChatGPT的人,对这种体验一定不陌生。

比如它出了一些西红柿品种后,我们可以继续问:哪些是现在可以种的?

它会详细列出,在七月的明尼苏达州最适合种植的西红柿。

再比如,经过上一轮的搜索,你对Jones House比较感兴趣,就可以直接继续提问,「Jones House适合全家一起去看吗?」

SearchGPT也秒回,「是的,Jones House免费且向公众开放,适合所有年龄段,一家人可以带一块毯子在草坪上享受音乐盛宴。」

繁琐的音乐节做功课、看细节和买票等等全在SearchGPT一站式搞定,快速便捷又省心。

这种贴心高效的搜索体验,让人感慨OpenAI果然是最懂用户心的公司,把产品做到了极致。

谷歌危了?

而谷歌、Perplexity等搜索巨头们,接下来恐怕不好过了。

奥特曼所言的「搜索功能有改进的空间」,嘲讽意味拉满,内涵的对象自不必多说。

当然,OpenAI也同样瞄准了在AI搜索领域打天下的Perplexity AI。

OpenAI的目标是,最终将AI搜索功能重新整合到旗舰聊天机器人中。

此举是OpenAI挑战谷歌,做出的最新努力。

不言而喻,OpenAI在打造强大的AI聊天机器人的早期竞赛中一直处于领先地位。而在过去20年,谷歌一直在在线搜索领域占据主导地位。

截止6月,谷歌在全球搜索引擎市场中占到了91.05%的份额。微软必应只有3.7%的份额,而Pplexity的份额太低,无法衡量。

不甘落后的谷歌也在过去两年里,尝试将AI植入搜索引擎当中,并在去年带来了1750亿美元的收入,占总销售额一半以上。

与此同时,AI超进化为包括Perplexity在内的竞争对手,开辟了新道路。

这家成立仅两年的初创,专注于一件事「回答引擎」,现估值飙升至10亿美元。

不过,谷歌「一家独大」格局、AI初创单点布局,正在面临被OpenAI颠覆的危险,

OpenAI的帖子和博客发出后,谷歌母公司Alphabet的股价也变成了绿油油的一片。

事实上,谷歌在5月召开的I/O大会上就已经抢先OpenAI,发布了自己的AI搜索功能。

当天,CEO劈柴本人站台,自信满满地表示,要用Gemini的AI能力重塑搜索!

后来发生的事情我们都知道了——上线的AI Overview效果过于惨烈,「吃石头」、「披萨涂胶水」等各种翻车案例频发,被全网找乐子。

或许像SearchGPT这样先发布内测,再逐步开放,可以更好地把控产品的质量和口碑。

但也有网友担心,OpenAI又会再次放所有人的鸽子,SearchGPT的上线依旧遥遥无期。

Mistral和Meta: 发模型!

OpenAI:发博客!

与出版商和创作者合作

OpenAI表示,SeachGPT不仅仅是搜索,而且致力于打造更佳的用户与出版商和创作者互动体验。

一直以来,搜索引擎一直是出版商和创作者接触用户的主要方式。

现在,利用AI的对话界面,可以帮助用户更快找到理想的高质量内容,并提供多种互动机会。

搜索结果中会包含清晰的内容来源和链接,用户也可以在侧边栏中快速访问更多带有源链接的结果。

News Corp首席执行官Robert Thomson表示,奥特曼和其他OpenAI领导人都认为,任何人工智能驱动的搜索都必须依赖于「由可信来源提供的最高质量、最可靠的信息」。

OpenAI还在博客中特意声明,搜索结果与GenAI模型的训练是分开的。即使不向OpenAI提供训练数据,相关内容也会出现在SearchGPT中。

最近一段时间,OpenAI与多家顶级出版商建立了合作,包括《大西洋月刊》、美联社和Business Insider的母公司Axel Springer,似乎也包括下辖《华尔街日报》、《泰晤士报》、《太阳报》的媒体巨头News Corp。

OpenAI代表向这些出版商展示了搜索功能的原型,并表示,他们可以自行选择内容来源在SerchGPT中的呈现方式。

OpenAI这种谨慎的合作态度似乎是吸取了前段时间的教训,有意规避风险。

上个月,Perplexity在搜索结果中使用了《福布斯》的一篇报道,但没有准确注明来源,直到页面底部才提及。

结果,Perplexity的CEO直接收到了《福布斯》的信函,声称要对这种侵权行为采取法律行动。

由于最近普遍的流量下降趋势,以及AI对内容行业的冲击,出版商对AI重塑新闻的方式越来越感到不安。

他们普遍担心,OpenAI或谷歌的AI搜索工具将根据原始新闻内容提供完整的答案,让用户无需阅读原始文章,进而造成在线流量和广告收入的锐减。

许多出版商都认为,向科技巨头们出售其知识产权的访问权是有价值的,因为他们需要大量数据和内容来完善其人工智能系统并创建SearchGPT等新产品。

或许,从OpenAI与媒体的合作中,我们可以推知它如此急于开展搜索业务的原因。

根据The Information本周的报道,OpenAI正在陷入财务风暴,今年的亏损可能高达50亿美元。

恰好,搜索是一项极其吸金的业务。除了可以与媒体、出版商合作,还有机会通过广告盈利。

财报显示,谷歌搜索业务仅今年第一季度的收入就达到了460亿美元。

有如此丰厚的利润前景,或许奥特曼不会舍得让SearchGPT像Sora和《Her》那样一直鸽下去。

参考资料:

https://openai.com/index/searchgpt-prototype/

https://www.ft.com/content/16c56117-a4f4-45d6-8c7b-3ef80d17d254



#SGLang

贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM

用来运行 Llama 3 405B 优势明显。

最近,Meta 开源了最新的 405B 模型(Llama 3.1 405B),把开源模型的性能拉到了新高度。由于模型参数量很大,很多开发者都关心一个问题:怎么提高模型的推理速度?

时隔才两天,LMSYS Org 团队就出手了,推出了全新的 SGLang Runtime v0.2。这是一个用于 LLM 和 VLM 的通用服务引擎。在运行 Llama 3.1 405B 时,它的吞吐量和延迟表现都优于 vLLM 和 TensorRT-LLM。

在某些情况下(运行 Llama 系列模型),它的吞吐量甚至能达到 TensorRT-LLM 的 2.1 倍,vLLm 的 3.8 倍。

LMSYS Org 团队是一个由加州大学伯克利分校、加州大学圣地亚哥分校以及卡内基梅隆大学的学生与教职员工共同组建的公开性质的研究团体。他们开发的大模型评测平台 ——Chatbot Arena 已经成为检验大模型能力的重要平台,也被认为是一种相对公平的评测方式。

SGLang 是该团队开发的一个用于大型语言模型和视觉语言模型的快速服务框架,于今年 1 月份正式推出,在 GitHub 上已经收获了超过 3k 的 star 量。

这次的更新效果惊艳,知名 AI 研究者、Lepton AI 联合创始人兼 CEO 贾扬清评价说「我一直被我的博士母校加州大学伯克利分校惊艳,因为它不断交付最先进的人工智能和系统协同设计成果。去年我们看到了 SGLang 的使用,现在它变得更好了。迫不及待地想在产品中部署并尝试新的 SGLang!」

为什么 LMSYS Org 要开发并迭代 SGLang 呢?他们在博客中提到,「我们已经运行 Chatbot Arena 平台一年多,为数百万用户提供服务。我们深知高效服务对人工智能产品和研究的重要性。通过运营经验和深入研究,我们不断增强底层服务系统,从高级多模型服务框架 FastChat 到高效服务引擎 SGLang Runtime (SRT)。」

「这篇文章的重点是 SGLang Runtime,它是一个用于 LLM 和 VLM 的通用服务引擎。虽然 TensorRT-LLM、vLLM、MLC-LLM 和 Hugging Face TGI 等现有选项各有优点,但我们发现它们有时难以使用、难以定制或性能不佳。这促使我们开发了 SGLang v0.2,旨在创建一个不仅用户友好、易于修改,而且性能一流的服务引擎。」

与 TensorRT-LLM 和 vLLM 相比,SGLang Runtime 在处理从 Llama-8B 到 Llama-405B 的模型时,以及在 A100 和 H100 GPU 上使用 FP8 和 FP16 时,在在线和离线场景下都能持续提供卓越或有竞争力的性能。SGLang 的性能始终优于 vLLM,在 Llama-70B 上的吞吐量最高是前者的 3.8 倍。它还经常与 TensorRT-LLM 不相上下,甚至超过 TensorRT-LLM,在 Llama-405B 上的吞吐量最高是前者的 2.1 倍。更重要的是,SGLang 是完全开源的,由纯 Python 编写,核心调度器只用了不到 4K 行代码就实现了。

SGLang 是一个开源项目,采用 Apache 2.0 许可授权。它已被 LMSYS Chatbot Arena 用于支持部分模型、Databricks、几家初创公司和研究机构,产生了数万亿 token,实现了更快的迭代。

以下是几个框架的对比实验设置和结果。

基准设置

研究者对离线和在线用例进行基准测试:

离线:他们一次发送 2K 到 3K 个请求,测量输出吞吐量(token / 秒),即输出 token 数除以总持续时间。他们测试的合成数据集来自 ShareGPT 数据集。例如,I-512-O-1024 表示平均输入 512 个 token、平均输出 1024 个 token 的数据集。五个测试数据集分别为:

  • 数据集 1:I-243-O-770;
  • 数据集 2:I-295-O-770;
  • 数据集 3:I-243-O-386;
  • 数据集 4:I-295-O-386;
  • 数据集 5:I-221-O-201。

在线:他们以每秒 1 到 16 个请求 (RPS) 的速率发送请求,测量端到端延迟的中位数。他们使用合成数据集 I-292-O-579。

他们使用 vLLM 0.5.2(带默认参数)和 TensorRT-LLM(带推荐参数和调整后的批大小)。所有引擎都关闭了前缀缓存。目的是在没有任何附加功能(如推测解码或缓存)的情况下,对基本性能进行基准测试。他们使用与 OpenAI 兼容的 API 对 SGLang 和 vLLM 进行基准测试,并使用 Triton 接口对 TensorRT-LLM 进行基准测试。

Llama-8B 在一个 A100 上运行(bf16)

研究者从小型模型 Llama-8B 开始测试。下图显示了每个引擎在五个不同数据集的离线设置下所能达到的最大输出吞吐量。TensorRT-LLM 和 SGLang 都能达到每秒约 4000 个 token 的吞吐量,而 vLLM 则稍逊一筹。

51c大模型~合集13_AI

下面的在线基准图显示了与离线情况类似的趋势。TensorRT-LLM 和 SGLang 的性能相当,可以保持 RPS > 10,而 vLLM 的延迟在请求率较高时显著增加。

51c大模型~合集13_AI_02

Llama-70B 在 8 个 A100 上运行(bf16)

至于在 8 个 GPU 上进行张量并行的较大型 Llama-70B 模型,趋势与 8B 相似。在下面的离线基准测试中,TensorRT-LLM 和 SGLang 都能达到很高的吞吐量。


51c大模型~合集13_AI_03

在下图的在线结果中,TensorRT-LLM 凭借高效的内核实现和运行时间,显示出较低的延迟。

51c大模型~合集13_AI_04

Llama-70B 在 8 个 H100 上运行(fp8)

现在来测试 FP8 性能。vLLM 和 SGLang 都使用了 CUTLASS 的 FP8 内核。在离线设置中,SGLang 的批处理调度器非常高效,可以随着批处理规模的增大而继续扩展吞吐量,在这种情况下实现了最高吞吐量。其他系统则由于 OOM、缺少大量手动调整或存在其他开销而无法扩展吞吐量或批大小。在线情况下也是如此,SGLang 和 TensorRT 的中位延迟相似。


51c大模型~合集13_AI_05


51c大模型~合集13_AI_06

Llama-405B 在 8 个 H100 上运行(fp8)

最后,研究者在最大的 405B 模型上对各种方法的性能进行了基准测试。由于模型较大,大部分时间都花在了 GPU 内核上。不同框架之间的差距缩小了。TensorRT-LLM 性能不佳的原因可能是 405B 模型刚刚问世,而图中使用的版本尚未集成一些最新优化。在在线和离线情况下,SGLang 的性能都是最好的。

51c大模型~合集13_AI_07

51c大模型~合集13_AI_08

SGLang 概览

SGLang 是大型语言模型和视觉语言模型的服务框架。它基于并增强了多个开源 LLM 服务引擎(包括 LightLLM、vLLM 和 Guidance)的许多优秀设计。它利用了来自 FlashInfer 的高性能注意力 CUDA 内核,并集成了受 gpt-fast 启发的 torch.compile。

此外,研究者还引入了一些创新技术,如用于自动 KV 缓存重用的 RadixAttention 和用于快速约束解码的压缩状态机。SGLang 以其完全用 Python 实现的高效批处理调度器而闻名。为了进行公平比较,本博客测试了这些服务引擎在关闭特定场景或工作负载优化(如前缀缓存和推测解码)后的基本性能。SGLang 的提速是通过适当的工程设计实现的。SGLang 基于 Python 的高效批处理调度器具有良好的扩展性,通常可与使用 C++ 构建的闭源实现相媲美,甚至更胜一筹。

表 1 比较了 SGLang、TensorRT-LLM 和 vLLM 的各个方面。在性能方面,SGLang 和 TensorRT-LLM 都非常出色。在可用性和可定制性方面,SGLang 的轻量级和模块化内核使其易于定制,而 TensorRT-LLM 复杂的 C++ 技术栈和设置说明使其更难使用和修改。SGLang 的源代码完全开源,而 TensorRT-LLM 仅部分开源。相比之下,vLLM 的 CPU 调度开销较高。

51c大模型~合集13_AI_09

研究者还表示,未来他们还将开发长上下文和 MoE 优化等新功能。


使用方法

你可以按照以下步骤轻松服务 Llama 模型:  

1、使用 pip、源代码或 Docker 安装 SGLang:https://github.com/sgl-project/sglang/tree/main?tab=readme-ov-file#install

2、启动服务器:

# Llama 8B
python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3.1-8B-Instruct




# Llama 405B
python -m sglang.launch_server --model-path meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tp 8

3、使用 OpenAI 兼容的 API 发送请求:

curl http://localhost:30000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "default",
    "prompt": "Say this is a test",
    "max_tokens": 7,
    "temperature": 0
  }'

4、运行基准:  

python3 -m sglang.bench_serving --backend sglang --num-prompts 1000

附录:详细的基准设置

重现基准的说明位于 sglang/benchmark/blog_v0_2。

对于所有基准测试,研究者都设置了 ignore_eos 或 min_length/end_id 以确保每个引擎输出相同数量的 token。他们曾尝试使用 vLLM 0.5.3.post1,但它在高负载情况下经常崩溃,与部分基准测试中的 vLLM 0.5.2 相比,vLLM 0.5.3.post1 性能似乎差不多甚至更差。因此,他们报告的是 vLLM 0.5.2 的结果。虽然他们知道不同的服务器配置会对服务性能产生重大影响,但他们主要使用每个引擎的默认参数来模拟普通用户的情况。

对于 8B 和 70B 模型,他们使用 meta-llama/Meta-Llama-3-8B-Instruct 和 meta-llama/Meta-Llama-3-70B-Instruct bf16 检查点,以及 neuralmagic/Meta-Llama-3-70B-Instruct-FP8 fp8 检查点。对于 405B 模型,他们在所有基准测试中都使用了虚拟权重。由于 TensorRT-LLM 最新图像 r24.06 不支持官方 meta-llama/Meta-Llama-3.1-405B-FP8 检查点中的 fbgemm_fp8 量化,他们在所有框架中都使用了每层 fp8 量化,并对除 lm_head 以外的所有层进行了量化。他们相信这样可以对所有引擎进行公平的比较。A100 和 H100 GPU 为 80GB SXM 版本。

参考链接:https://lmsys.org/blog/2024-07-25-sglang-llama3/


#KAN or MLP:

反转了?在一场新较量中,号称替代MLP的KAN只赢一局

KAN 在符号表示中领先,但 MLP 仍是多面手。

多层感知器 (Multi-Layer Perceptrons,MLP) ,也被称为全连接前馈神经网络,是当今深度学习模型的基本组成部分。MLP 的重要性无论怎样强调都不为过,因为它是机器学习中用于逼近非线性函数的默认方法。

然而,MLP 也存在某些局限性,例如难以解释学习到的表示,以及难以灵活地扩展网络规模。

KAN(Kolmogorov–Arnold Networks)的出现,为传统 MLP 提供了一种创新的替代方案。该方法在准确性和可解释性方面优于 MLP,而且,它能以非常少的参数量胜过以更大参数量运行的 MLP。

那么,问题来了,KAN 、MLP 到底该选哪一种?有人支持 MLP,因为 KAN 只是一个普通的 MLP,根本替代不了,但也有人则认为 KAN 更胜一筹,而当前对两者的比较也是局限在不同参数或 FLOP 下进行的,实验结果并不公平。

为了探究 KAN 的潜力,有必要在公平的设置下全面比较 KAN 和 MLP 了。

为此,来自新加坡国立大学的研究者在控制了 KAN 和 MLP 的参数或 FLOP 的情况下,在不同领域的任务中对它们进行训练和评估,包括符号公式表示、机器学习、计算机视觉、NLP 和音频处理。在这些公平的设置下,他们发现 KAN 仅在符号公式表示任务中优于 MLP,而 MLP 通常在其他任务中优于 KAN。

  • 论文地址:https://arxiv.org/pdf/2407.16674
  • 项目链接:https://github.com/yu-rp/KANbeFair
  • 论文标题:KAN or MLP: A Fairer Comparison

作者进一步发现,KAN 在符号公式表示方面的优势源于其使用的 B - 样条激活函数。最初,MLP 的整体性能落后于 KAN,但在用 B - 样条代替 MLP 的激活函数后,其性能达到甚至超过了 KAN。但是,B - 样条无法进一步提高 MLP 在其他任务(如计算机视觉)上的性能。

作者还发现,KAN 在连续学习任务中的表现实际上并不比 MLP 好。最初的 KAN 论文使用一系列一维函数比较了 KAN 和 MLP 在连续学习任务中的表现,其中每个后续函数都是前一个函数沿数轴的平移。而本文比较了 KAN 和 MLP 在更标准的类递增持续学习设置中的表现。在固定的训练迭代条件下,他们发现 KAN 的遗忘问题比 MLP 更严重。

51c大模型~合集13_AI_10

KAN、MLP 简单介绍

KAN 有两个分支,第一个分支是 B 样条分支,另一个分支是 shortcut 分支,即非线性激活与线性变换连接在一起。在官方实现中,shortcut 分支是一个 SiLU 函数,后面跟着一个线性变换。令 x 表示一个样本的特征向量。那么,KAN 样条分支的前向方程可以写成:

51c大模型~合集13_AI_11

在原始 KAN 架构中,样条函数被选择为 B 样条函数。每个 B 样条函数的参数与其他网络参数一起学习。

相应的,单层 MLP 的前向方程可以表示为:

51c大模型~合集13_AI_12

该公式与 KAN 中的 B 样条分支公式具有相同的形式,只是在非线性函数中有所不同。因此,抛开原论文对 KAN 结构的解读,KAN 也可以看作是一种全连接层。

因而,KAN 和普通 MLP 的区别主要有两点:

  1. 激活函数不同。通常 MLP 中的激活函数包括 ReLU、GELU 等,没有可学习的参数,对所有输入元素都是统一的,而在 KAN 中,激活函数是样条函数,有可学习的参数,并且对于每个输入元素都是不一样的。
  2. 线性和非线性运算的顺序。一般来说,研究者会把 MLP 概念化为先进行线性变换,再进行非线性变换,而 KAN 其实是先进行非线性变换,再进行线性变换。但在某种程度上,将 MLP 中的全连接层描述为先非线性,后线性也是可行的。

通过比较 KAN 和 MLP,该研究认为两者之间的差异主要是激活函数。因而,他们假设激活函数的差异使得 KAN 和 MLP 适用于不同的任务,从而导致两个模型在功能上存在差异。为了验证这一假设,研究者比较了 KAN 和 MLP 在不同任务上的表现,并描述了每个模型适合的任务。为了确保公平比较,该研究首先推导出了计算 KAN 和 MLP 参数数量和 FLOP 的公式。实验过程控制相同数量的参数或 FLOP 来比较 KAN 和 MLP 的性能。

KAN 和 MLP 的参数数量及FLOP 

控制参数数量

KAN 中可学习的参数包括 B 样条控制点、shortcut 权重、B 样条权重和偏置项。总的可学习参数数量为:

51c大模型~合集13_AI_13

其中, d_in 和 d_out 表示神经网络层的输入和输出维度,K 表示样条的阶数,它与官方 nn.Module KANLayer 的参数 k 相对应,它是样条函数中多项式基础的阶数。G 表示样条间隔数,它对应于官方 nn.Module KANLayer 的 num 参数。它是填充前 B 样条曲线的间隔数。在填充之前,它等于控制点的数量 - 1。在填充后,应该有 (K +G) 个有效控制点。

相应的,一个 MLP 层的可学习参数是:

51c大模型~合集13_AI_14

KAN 和 MLP 的 FLOP

在作者的评估中,任何算术操作的 FLOP 被考虑为 1,而布尔操作的 FLOP 被考虑为 0。De Boor-Cox 算法中的 0 阶操作可以转换为一系列布尔操作,这些操作不需要进行浮点运算。因此,从理论上讲,其 FLOP 为 0。这与官方 KAN 实现不同,在官方实现中,它将布尔数据转换回浮点数据来进行操作。

在作者的评估中,FLOP 是针对一个样本计算的。官方 KAN 代码中使用 De Boor-Cox 迭代公式实现的 B 样条 FLOP 为:

51c大模型~合集13_AI_15

连同 shortcut 路径的 FLOP 以及合并两个分支的 FLOP,一个 KAN 层的总 FLOP 是:

 

51c大模型~合集13_AI_16

相应的,一个 MLP 层的 FLOP 为:

51c大模型~合集13_AI_17

具有相同输入维度和输出维度的 KAN 层与 MLP 层之间的 FLOP 差异可以表示为:

51c大模型~合集13_AI_18

如果 MLP 也首先进行非线性操作,那么首项将为零。

 实验

作者的目标是,在参数数量或 FLOP 相等的前提下,对比 KAN 和 MLP 的性能差异。该实验涵盖多个领域,包括机器学习、计算机视觉、自然语言处理、音频处理以及符号公式表示。所有实验都采用了 Adam 优化器,这些实验全部在一块 RTX3090 GPU 上进行。

性能比较

机器学习。作者在 8 个机器学习数据集上进行了实验,使用了具有一到两个隐藏层的 KAN 和 MLP,根据各个数据集的特点,他们调整了神经网络的输入和输出维度。

对于 MLP,隐藏层宽度设置为 32、64、128、256、512 或 1024,并采用 GELU 或 ReLU 作为激活函数,同时在 MLP 中使用了归一化层。对于 KAN,隐藏层宽度则为 2、4、8 或 16,B 样条网格数为 3、5、10 或 20,B 样条的度数(degree)为 2、3 或 5。

由于原始 KAN 架构不包括归一化层,为了平衡 MLP 中归一化层可能带来的优势,作者扩大了 KAN 样条函数的取值范围。所有实验都进行了 20 轮训练,实验记录了训练过程中在测试集上取得的最佳准确率,如图 2 和图 3 所示。

在机器学习数据集上,MLP 通常保持优势。在他们对八个数据集的实验中,MLP 在其中的六个上表现优于 KAN。然而,他们也观察到在一个数据集上,MLP 和 KAN 的性能几乎相当,而在另一个数据集上,KAN 表现则优于 MLP。

总体而言,MLP 在机器学习数据集上仍然具有普遍优势。

51c大模型~合集13_AI_19

51c大模型~合集13_AI_20

计算机视觉。作者对 8 个计算机视觉数据集进行了实验。他们使用了具有一到两个隐藏层的 KAN 和 MLP,根据数据集的不同,调整了神经网络的输入和输出维度。

在计算机视觉数据集中,KAN 的样条函数引入的处理偏差并没有起到效果,其性能始终不如具有相同参数数量或 FLOP 的 MLP。

51c大模型~合集13_AI_21

51c大模型~合集13_AI_22

音频和自然语言处理。作者在 2 个音频分类和 2 个文本分类数据集上进行了实验。他们使用了一到两个隐藏层的 KAN 和 MLP,并根据数据集的特性,调整了神经网络的输入和输出维度。

在两个音频数据集上,MLP 的表现优于 KAN。

在文本分类任务中,MLP 在 AG 新闻数据集上保持了优势。然而,在 CoLA 数据集上,MLP 和 KAN 之间的性能没有显著差异。当控制参数数量相同时,KAN 在 CoLA 数据集上似乎有优势。然而,由于 KAN 的样条函数需要较高的 FLOP,这一优势在控制 FLOP 的实验中并未持续显现。当控制 FLOP 时,MLP 似乎更胜一筹。因此,在 CoLA 数据集上,并没有一个明确的答案来说明哪种模型更好。

总体而言,MLP 在音频和文本任务中仍然是更好的选择。

51c大模型~合集13_AI_23

51c大模型~合集13_AI_24

符号公式表示。作者在 8 个符号公式表示任务中比较了 KAN 和 MLP 的差异。他们使用了一到四个隐藏层的 KAN 和 MLP,根据数据集调整了神经网络的输入和输出维度。

在控制参数数量的情况下,KAN 在 8 个数据集中的 7 个上表现优于 MLP。在控制 FLOP 时,由于样条函数引入了额外的计算复杂性,KAN 的性能大致与 MLP 相当,在两个数据集上优于 MLP,在另一个数据集上表现不如 MLP。

总体而言,在符号公式表示任务中,KAN 的表现优于 MLP。

51c大模型~合集13_AI_25

51c大模型~合集13_AI_26



#为什么AI数不清Strawberry里有几个 r?

Karpathy:我用表情包给你解释一下


让模型知道自己擅长什么、不擅长什么是一个很重要的问题。


还记得这些天大模型被揪出来的低级错误吗?

不知道 9.11 和 9.9 哪个大,数不清 Strawberry 单词里面有多少个 r…… 每每被发现一个弱点,大模型都只能接受人们的无情嘲笑。

51c大模型~合集13_AI_27

嘲笑之后,大家也冷静了下来,开始思考:低级错误背后的本质是什么?

大家普遍认为,是 Token 化(Tokenization)的锅。

在国内,Tokenization 经常被翻译成「分词」。这个翻译有一定的误导性,因为 Tokenization 里的 token 指的未必是词,也可以是标点符号、数字或者某个单词的一部分。比如,在 OpenAI 提供的一个工具中,我们可以看到,Strawberry 这个单词就被分为了 Str-aw-berry 三个 token。在这种情况下,你让 AI 大模型数单词里有几个 r,属实是为难它。

51c大模型~合集13_AI_28

除了草莓 (Strawberry) 之外,还有一个很好的例子就是「Schoolbooks」这个词,AI 模型会把它分为 school 和 books 两个 token。

51c大模型~合集13_AI_29

51c大模型~合集13_AI_30

这个问题也吸引了刚刚投身 AI + 教育行业的 Karpathy 的注意。为了让大家直观地看到大模型眼里的文字世界,他特地写了一个小程序,用表情符号(emoji)来表示 token。

51c大模型~合集13_AI_31

按照小程序被设计的表示方法,「How many letters 'r' in the word'strawberry'?」在 LLM 看来是这样的:

51c大模型~合集13_AI_32

一段文本在 LLM 看来会是这样:

51c大模型~合集13_AI_33

但这种解释也引起了另一种疑问:如果你让大模型把 Strawberry 这个词的每个字母都列出来,然后删掉 r 以外的字母,大模型就能数对了,那大模型为什么自己不这么做呢?它好像不太会利用自己的能力。

51c大模型~合集13_AI_34

51c大模型~合集13_AI_35

对此,Karpathy 给出的回复是「因为没有人教它这么做」。

51c大模型~合集13_AI_36

其实,如果你在 Prompt 里加上「think step by step」等思维链相关「咒语」,大模型是可以分步骤解决问题的,而且很有可能数对「r」的数量。那它之前不假思索就给出答案,是不是因为过度自信?   

51c大模型~合集13_AI_37

对此,有人猜测说,大模型公司给 LLM 的设定可能就是让它在一个问题上花费尽可能少的时间,因此,除非你明确要求,不然它不会主动去深入思考。

51c大模型~合集13_AI_38

对于这种说法,我们也测试了一下。结果发现,如果明确要求深入思考,模型确实立马就会数了:   

51c大模型~合集13_AI_39

这就类似于它有两套系统:快速、依靠直觉的系统 1 和较慢、较具计划性且更仰赖逻辑的系统 2,平时默认使用系统 1。

51c大模型~合集13_AI_40

当然,这些只是猜测。

综合最近的新闻来看,我们会发现一个有意思的现象:一方面,大模型都能在人类奥数中拿银牌了;而另一方面,它们又在数数、比大小方面集体翻车。类似的例子还有不会玩几岁小孩都会玩的井字棋,不会判断两个圆是否重叠等。

51c大模型~合集13_AI_41

51c大模型~合集13_AI_42

Karpathy 给这种现象取了个名字 ——Jagged Intelligence(Jagged 的意思是参差不齐的)。这种参差不齐的智能表现和人类是不一样的,人类的知识体系和解决问题的能力在成长过程中是高度相关的,并且是同步线性发展的,而不是在某些领域突然大幅度提升,而在其他领域却停滞不前。

Karpathy 认为,这一问题的核心在于目前的大模型缺乏「认知自我知识(cognitive self-knowledge)」( 模型自身对其知识和能力的自我认知 )。如果模型具备这种能力,它可能会在面对「数字母」这样的问题时回答说,「我不太擅长数字母,让我使用代码解释器来解决这个问题」。

51c大模型~合集13_AI_43

这一问题的解决方案可能包括但不限于扩大规模,可能需要在整个技术栈的各个方面都做一些工作,比如在后训练阶段采用更复杂的方法。

对此,Karpathy 推荐阅读 Llama 3 论文的 4.3.6 章节。在此章节中,Meta 的研究者提出了一些方法来让模型「只回答它知道的问题」。

51c大模型~合集13_AI_44

该章节写到:



我们遵循的原则是,后训练应使模型「知道它知道什么」,而不是增加知识。我们的主要方法是生成数据,使模型生成与预训练数据中的事实数据子集保持一致。为此,我们开发了一种知识探测技术,利用 Llama 3 的 in-context 能力。数据生成过程包括以下步骤:





1、从预训练数据中提取数据片段。

2、通过提示 Llama 3 生成一个关于这些片段(上下文)的事实问题。

3、采样 Llama 3 关于该问题的回答。

4、以原始上下文为参照,以 Llama 3 为裁判,评估生成的回答的正确性。 

5、以 Llama 3 为裁判,评估生成回答的信息量。

6、对于 Llama 3 模型在多个生成过程中提供的信息虽多但内容不正确的回答,使用 Llama 3 生成拒绝回答的内容。 




我们使用知识探测生成的数据来鼓励模型只回答它知道的问题,而拒绝回答它不确定的问题。此外,预训练数据并不总是与事实一致或正确。因此,我们还收集了一组有限的标注事实性数据,这些数据涉及与事实相矛盾或不正确的陈述。


最后,Karpathy 表示,这种参差不齐的智能问题值得注意,尤其是在生产环境中。我们应该致力于让模型只完成他们擅长的任务,不擅长的任务由人类及时接手。

当然,Meta 的做法只是一种参考。如果你有更好的解决方案,欢迎在评论区留言。

参考链接:https://www.reddit.com/r/ChatGPT/comments/1e6do2a/why_the_strawberry_problem_is_hard_for_llms/

https://x.com/karpathy/status/1816531576228053133



#牛津剑桥的9次投毒导致模型崩溃

牛津剑桥「投毒」AI失败9次登Nature封面,引爆学术圈激辩!AI训AI能否打破崩溃魔咒?

牛津剑桥的9次投毒导致模型崩溃的论文,已经遭到了诸多吐槽:这也能上Nature?学术圈则对此进行了进一步讨论,大家的观点殊途同归:合成数据被很多人视为灵丹妙药,但天下没有免费的午餐。

AI时代,数据就是新的石油。全球人类数据逐渐枯竭的时代,合成数据是我们的未来吗?

最近Nature封面一篇论文引起的风波,让我们明白:重要的并不是「合成数据」,而是「正确使用合成数据」。

本周四,牛津、剑桥、帝国理工、多伦多大学等机构的一篇论文登上了Nature封面。

他们提出了AI的「近亲繁殖」问题,即如果在训练中不加区别地只用AI产生的内容,就会发生模型崩溃。不过,让人没想到的是,论文一经刊出便引发了AI社区的大量讨论。

一些人认为,问题的核心不在「合成数据」上,而是在「数据质量」上。

即使全部用的是人工数据,如果质量太差,那结果一样也是「垃圾进垃圾出」。

51c大模型~合集13_AI_45

甚至,有人觉得研究者故意采用了与实际操作不匹配的方法,实际上是在「哗众取宠」。

对此,马毅教授表示,如今我们已经走进了缺少科学思想和方法的时代——

许多研究,不过都是重新发现一些科学常识。

如何避免模型崩溃?

那么问题来了,在使用AI合成数据时,如何才能避免发生模型崩溃呢?

混合数据才是未来

对于这篇Nature封面的文章,Scale AI的CEO Alexandr Wang深表赞同。

他表示,利用纯合成数据来训练模型,是不会带来信息增益的。

通常,当评估指标因「自蒸馏」(self-distillation)而上升时,大概率是因为一些更隐蔽的权衡:

  • 合成数据可以在短期内提升评估结果,但之后你会为模型崩溃付出代价
  • 你在训练或微调模型过程中积累了隐形的债务,而这些债务将很难偿还

具体而言,在连续几代的合成训练中,错误主要来自三个方面:

  • 统计近似误差(statistical approximation error)
  • 功能表达误差(functional expressivity error)
  • 功能近似误差(functional approximation error)

也就是,每次你用上一个模型生成的数据来训练新模型时,都会丢失一些信息和精度,导致模型变得越来越空洞,最终无法正常工作。

虽然这些实验是在小规模模型(100M参数)上进行的,但观察到的基本效应也会随着时间的推移在更大规模的模型上出现。

例如,今天的大多数模型无法生成像Slate Star Codex风格的博客文章,这也是由于模型崩溃的原因。随着我们连续训练模型,它们逐渐失去了在广泛分布上进行预测的能力。

在Wang看来,混合数据(Hybrid Data)才是未来的发展方向,它能够避免所有与模型崩溃相关的棘手问题。

也就是说,在合成数据的过程中,必须通过某种新的信息来源来生成:

(1)使用真实世界数据作为种子

(2)人类专家参与

(3)形式逻辑引擎

相比之下,那些不慎使用了无信息增益的合成数据来训练模型的开发者,终将会发现他们的模型随着时间的推移变得越来越奇怪和愚蠢。

强化学习is all you need

来自Meta、纽约大学和北京大学的研究人员,提出了一种通过人类或较弱模型的「排序-修剪反馈」方法,可以恢复甚至超越模型原来的性能。

对于这项研究,LeCun也进行了转发,表示支持。

众所周知,不管是对于人类还是机器来说,区分一个示例的好坏,要远比从头生成一个高质量的样本容易得多。

基于此,作者提出了一种全新的方法——通过合成数据反馈来防止模型崩溃。

论文地址:https://arxiv.org/abs/2406.07515

为了研究这个问题,作者首先在理论环境中提供了分析结果。

在这里,作者提出了高维极限下的高斯混合模型和线性模型作为分类器,并让一个验证者(例如人类或oracle)来选择或修剪生成的数据。

结果显示,当合成数据点的数量趋于无限时,基于选定数据训练的模型可以达到与原始数据训练相媲美的最佳结果。

在合成数据上的模拟显示,与使用原始标注相比,oracle监督始终能产生接近最佳的结果。

此外,由于通过人类监督来分辨高质量数据比直接人类标注更简单且成本更低,这为人类参与监督的有效性提供了有力的证据。

一个具有线性生成器和线性剪枝器的高斯混合模型:其中的剪枝器通过选择强化合成数据来提高性能

接下来,作者进行了两个大规模的实验:

1. 在算术任务(矩阵特征值预测)上训练Transformer,并使用与真实值的距离来修剪大量合成数据

2. 使用大语言模型(Llama 2)和有限的合成数据进行新闻摘要

结果显示,在这两种情况下,仅依赖生成数据会导致性能下降,即使数据量增加,也会出现模型崩溃。

并且,仅根据困惑度从生成池中选择最佳解决方案并不会提升性能,即模型本身缺乏基于困惑度选择最佳预测的能力。

相反,在oracle监督下,可以获得一个基于反馈增强的合成数据集,其性能随着数据量的增加而超过了原始数据集。

通过人类和模型的强化,可以提升性能并防止模型崩溃;而在没有强化的情况下则会出现性能下降

因此,在用合成数据训练新模型时,不仅要关注生成器的质量,还需要一个高质量的验证者来选择数据。

一句话总结就是:reinforcement is all you need!

真实数据+合成数据

对于读者们对于这篇Nature封面论文的吐槽,斯坦福大学的博士生Rylan Schaeffer表示理解。

他指出,模型崩溃通常出现在研究人员故意采用与实际操作不匹配的方法时。

数据积累可以崩溃,也可以不崩溃,这完全取决于具体的操作细节。

你们故意把它弄崩溃,它当然就会崩溃了。😂

在这篇斯坦福、马里兰和MIT等机构合著的论文中,Schaeffer研究了积累数据对模型崩溃有何影响。

经过实验后他们确认,用每一代的合成数据替换原始的真实数据,确实会导致模型崩溃。

但是,如果将连续几代的合成数据与原始的真实数据一起积累,可以避免模型崩溃。

论文地址:https://arxiv.org/abs/2404.01413

在实践中,后代LLM会随着时间推移,在不断增加的数据中进行训练,比如Llama 1需要1.4万亿个token,Llama 2需要2万亿个token,Llama 3需要15万亿个token。

从某种意义上说,这种数据积累设定是极其悲观的——

在这个假设的未来中,合成数据被不受控制地倾倒在互联网上,用于训练模型的下一次迭代。

如图右侧所示,积累数据可以避免模型崩溃

研究者使用了因果Transformer、扩散模型和自变分编码器三种不同的实验设置,分别在真实文本、分子构象和图像数据集上进行了训练。

他们发现,替换数据会导致所有模型和所有数据集的模型崩溃,而积累数据可以避免模型崩溃。

基于Tranformer的因果语言建模

首先,他们在文本数据上训练了因果Transformer。

具体来说,就是在TinyS-tories上预训练了单个epoch的9M参数GPT-2和 12M、42M和125M参数的Llama 2语言模型。

前者是一个470M token的,GPT-3.5/4生成的幼儿园阅读水平的短篇故事数据集。

对于每次模型拟合迭代n≥2,研究者会从上一次迭代的语言型中采样一个与TinvStories大小相同的新数据集,然后用新生成的数据集替换或连接以前的数据集。

在每次模型拟合迭代中,他们会来自上一次迭代的替换或串联数据集来预训练一个新的初始化模型。

结果显示,对于所有架构、参数计数和采样温度,随着模型拟合迭代次数的增加,替换数据会导致测试交叉熵的增加(图2左)。

同时他们还发现,对于所有架构、参数计数和采样温度,随着模型拟合迭代次数的增加,积累的数据会导致测试交叉熵等于或更低(图2右)。

图3是重复替换数据(顶部)和积累数据(底部)时各个模型拟合迭代的学习曲线。

结果显示,数据积累避免了语言建模中的模型崩溃。

125M的Llama2和9M的GPT-2,在替换数据(R)时都表现出了质量下降,但在积累数据(A)时,却保持了高质量的文本生成。

分子构象数据的扩散模型

接下来,他们在分子构象数据上训练扩散模型序列。

具体来说,研究者在GEOMDrugs数据集上训练了GeoDiff,这是一种用于分子构象生成的几何扩散模型。

他们将GEOM-Drugs数据集的训练部分下采样到40,000个分子构象,将其用作初始训练集,并为每个预测执行50个扩散步骤。

结果经过8次模型拟合迭代,研究者发现:替换数据时测试损失增加,这与我们的语言模型实验相匹配,并且累积数据时测试损失保持相对恒定(图4)。

与语言模型不同,他们发现,当替换数据时,在合成数据训练的第一次模型拟合迭代中,性能会显著恶化,并且在后续迭代中不会进一步大幅下降。

图像数据的自变分编码器

实验最后,研究者在CelebA上训练了自变分编码器(VAE)序列,该数据集包含了20万张人脸图像,分为训练集和测试集。

这种选择,在具有许多样本、彩色图像和分辨率的现实数据集,和在累积数据上训练模型多次迭代的计算可行性之间,达到了平衡。

结果他们发现,在每次迭代中替换数据再次表现出模型崩溃——

测试误差会随着每次额外的迭代而迅速上升,并且每次迭代产生的质量较低且生成的面孔多样性较少,直到所有模型生成都代表单一模式。

相比之下,在每次迭代中,积累数据会显著减缓模型崩溃——

随着每次额外的迭代,测试误差的增加速度显著减慢。

虽然与图6的中图和右图相比,世代的多样性确实下降了,它仍然代表数据集中变化的主要轴,例如性别,但模型似乎不再沿着数据流形的更短轴生成其他细节,例如眼镜和配件。

还有一个有趣的现象是,与语言建模不同,积累数据的测试误差确实会随着迭代次数的增加而增加(尽管比替换数据慢得多)。

为什么会存在这种差异?这个研究方向就留给未来了。

参考资料:

https://x.com/alexandr_wang/status/1816491442069782925 https://x.com/RylanSchaeffer/status/1816535790534701304

https://arxiv.org/abs/2404.01413

https://arxiv.org/abs/2406.07515