Web3 社区非常开放、具有实验性,并且通常支持那些试图推动计算机科学研究的项目,然而,我们做得不好的一件事是思路或沟通的清晰度,本文旨在帮助解释在智能合约上部署 AI 模型的必要条件。
简单来说:读完这篇文章后,你应该对截至 2024 年 10 月什么是可能的以及还剩下什么需要解决有一个简单的直觉。
AI 是否已上链?如果没有,缺少什么?
较小的模型也可以实现链上 AI,但目前内存、计算能力和共识机制的限制阻碍了 LLM 等大型 AI 模型在区块链上的有效部署,就像人们所预料的那样,如果它们部署在传统的云服务器上。
然而,目前正在进行许多创新来帮助弥补这一差距。
这其中的主要启示是什么?
人工智能的计算成本很高,去中心化计算的计算成本也很高,因此,将两种昂贵的事物结合在一起……这会让事情变得棘手。
WebAssembly 的联合创始人 Andreas Rossberg 对此进行了完美的阐述:
但在我看来,区块链上的人工智能之所以“困难”,真正的原因是这两种技术本身在资源方面已经非常昂贵(区块链是因为复制和共识,人工智能是因为 LLM 之类的东西本质上是大量蛮力方法),设计运行人工智能的硬件完全是为了降低成本,但当与区块链结合时,硬件成本反而上升了 - 它们不只是增加,而是成倍增加,因此,就资源使用而言,这是一个最糟糕的情况,滥用多于使用。
来源:
forum.dfinity.org/t/what-makes-ai-on-blockchain-hard-request-for-feedback-on-post/32686/3
有用的背景信息
为了理解这篇文章,有几个概念值得快速解释一下。
1. 训练与推理
当人们提到人工智能时,他们通常指的是“训练”模型或“推理”(使用模型,例如向 ChatGPT 提问),训练比推理要困难几个数量级,而且需要的资源也更多,因此,我在这里重点关注推理,因为它是解决更复杂的训练挑战之前的第一个重大障碍。
2. CPU 与 GPU
简单来说,GPU 是针对 AI 模型优化的计算机,它们处理模型的速度比传统通用计算机(CPU)快 1000 倍,这很重要,因为 Web2 领域的大多数 AI 瓶颈都可以通过“使用 GPU ”来解决,大多数区块链都在 CPU 上运行,因此它们(目前)没有可用的解决方案,这篇文章解释了原因。
3. 智能合约的内存
智能合约的内存包括存储和堆内存,这两种内存类型对于运行 AI 模型都很重要,如今两者都是限制因素。
4. 我对人工智能的狭义定义
我承认我对 AI 的定义很狭隘:我专注于在智能合约中部署模型,我指的不是更广泛的 AI 生态系统,例如,我没有写关于标记器或矢量化数据库的文章,而这些是 RAG 和更广泛的 AI 生态系统的关键(事实上,许多人已经找到了在智能合约中托管矢量化数据库的方法),所以,是的,我的目标很狭隘:在智能合约上托管 AI 模型。
AI 上链的必要因素
介绍
人工智能承载于智能合约需要三个必要因素:
内存 - 模型需要大量的计算机内存,而区块链的内存比集中式云内存要少。
计算 - 模型需要大量的计算(例如思考/速度/处理),区块链比中心化的云端模型要少。
硬件 - 大多数中心化提供商通过投入更多硬件来提高 AI 性能,区块链比中心化提供商更难做到这一点,事实上,许多协议在设计上并不通过投入硬件来扩展。
1. 内存
人工智能模型需要什么
不同 AI 模型的 AI 推理内存需求可能存在很大差异,例如,小型机器学习(ML)模型可能只需要几兆字节(MB),而大型语言模型(LLM)则可能需要几千兆字节(GB)的内存。
当今世界
我想给读者一个有用的概述,但我故意不提供比较不同区块链的表格或图表,根据我的经验,这可能导致两件事:
最好的情况是,一些诚实的错误,例如“嘿,Diego,你算错了!我们的智能合约平台每秒执行 600 条指令,而不是 550 条。”
最糟糕的情况是,它会引发区块链部落主义,从而让其余部分被忽视。
因此,我将撰写有关 AI 需求、以太坊(通用语言)和 ICP(我非常熟悉的区块链)的文章,我鼓励读者针对其他链提出自己的分析!
以太坊智能合约
以太坊智能合约的堆栈内存以 KB 为单位,这意味着以太坊无法承载我所知道的大多数 AI 模型,可能有一些 AI 模型以 KB 为单位,但简单来说:以太坊智能合约无法承载大多数人所说的 AI 模型。
ICP 智能合约
ICP 智能合约具有 400 GB 的稳定内存(例如存储)和 4 GB 的堆内存,这意味着 ICP 智能合约可以承载许多但不是全部的 AI 模型,更具体地说,ICP 智能合约可以运行的模型:
① ICP 智能合约可以运行类似本演示 1 中的 AI 模型,用于图像分类 1 的 ML 模型仅需要大约 10 MB 的内存,因此完全在 ICP 的内存资源范围内。
② ICP 智能合约可以承载 LLM 模型,见社区示例:
Llama 3 8b 正在链上运行!
互联网计算机上的 Llama.cpp
ICP 智能合约目前无法运行的模型:ICP 智能合约还不能运行 70B 参数这样的更大版本的 Llama。
目前,ICP 智能合约提供 4 GB 的堆内存,并且很快将会拥有更多的内存,因此这已经非常接近正常服务了。
经验法则 #1
每当有人说 “X 是链上人工智能”时,你应该问:“X 上的智能合约可以拥有多少内存?”
如果答案是……
以 Kb 为单位,则无法承载任何真正的 AI 模型;
以 MB 为单位,可以承载小型模型(并且有很多小型模型),但不能承载 LLM;
以 GB 计算,它可以容纳一些较小的 LLM;
以数十 GB 为单位,主机可以承载更多,但不是主要的 LLM;
以数百 GB 为单位,它可以承载几乎所有的 LLM。
就 ICP 而言,大多数 AI 模型都可以托管在链上(对模型进行一些重构),问题在于用户愿意等待多长时间才能得到答案,这引出了下一个问题:计算。
2. 计算
人工智能模型需要什么
AI 推理所需的计算能力以每秒浮点运算次数(FLOPS)来衡量,AI 模型的复杂性和大小可能有很大差异,从而影响所需的计算能力,然而,在区块链协议的背景下,使用更通用的每秒运算次数更有意义,因此我们将使用这个术语,因为在实践中它往往在同一数量级内。
较小的模型可能只需要每秒几十亿次运算,而大型语言模型(LLM)和其他高级 AI 模型可能需要更多运算,例如,量化(基本上针对大小进行了优化)的 Llama3 7B 模型,它可能需要数百亿次运算才能进行推理(回答用户的提示)。
从用户的角度来看
从用户的角度来看,计算是 LLM 响应所需的时间是几秒、几小时、几天、几周或几个月之间的差异,具体取决于智能合约拥有的计算资源量。
当今世界
以太坊智能合约
以太坊智能合约主要依赖于 EVM,而 EVM 并未针对高性能计算任务进行优化,更准确的说法是,ETH 智能合约的计算量明显低于大多数 AI 模型所需的千兆次浮点运算(gigaFLOPS)。
DFINITY 估计,根据区块 gas 限制,每秒的最大指令数约为每秒 500 万条指令,因此,以太坊无法提供运行复杂 AI 模型(尤其是大型语言模型 LLM)所需的计算能力。
ICP 智能合约
ICP 智能合约拥有更好的计算资源,它们每秒可以执行 20 亿次运算,值得注意的是(与仅处理整数运算的以太坊不同)ICP 智能合约还可以处理浮点运算以及整数运算。
ICP 智能合约可以运行的模型:ICP 可以运行每秒需要高达数十亿次运算的 AI 模型,并在用户预期的时间内(几秒或更短)执行推理,这包括许多较小的模型,例如本演示中的图像分类模型,它每秒只需要几十亿次运算即可高效运行。
模型 ICP 智能合约还不能像用户期望的那样快速运行:一个量化的 Llama3 7B 模型,需要几百亿次的推理(回答用户的提示),ICP 智能合约可以支持 20 亿次/秒的运算,理论上一个 ICP 智能合约执行一个推理请求,也就是回答一个提示,需要几十秒到几分钟的时间。
即将推出:DFINITY 研发部门正在探索提高 ICP 智能合约计算能力的方法,潜在的改进包括集成专用硬件或优化执行环境以处理更高的每秒操作要求。
经验法则 #2
每当有人说 “X 是链上人工智能”时,你应该问:“X 区块链上的智能合约可以提供多少计算能力?”
如果答案是……
以几百万秒或更短的时间内进行的操作来衡量,人工智能推理将花费很长时间,以至于用户会认为它根本不起作用。
以秒级的数亿次运算来衡量,非常小的模型可以在几分钟内执行推理。
以十亿来衡量,较小的 LLM 可以在几分钟内执行推理,或者比用户预期的要慢得多。
以数百亿来衡量,LLM 推理可能是现代用户对 LLM 的期望。
以每秒数万亿次运算来衡量,它可以承载几乎所有的 AI 模型,包括最先进的 LLM,并提供出色的用户体验。
3. 硬件问题(提示:这是确定性)
在 Web2 世界中,增加模型的计算资源通常意味着使用 GPU,因为 GPU 的速度更快,这就是 GPU 在全球范围内需求旺盛的原因。
为什么区块链不能只使用 GPU?
技术原因:由于 GPU 天生就被设计为多线程,因此不能保证所有操作都是确定性的,而区块链需要确定性计算才能达成共识,在实践中,有办法让 GPU 确定性地行动,但需要仔细考虑和配置,但我先解释一下确定性的重要性。
更简单的解释:区块链的运作方式是让多台计算机执行相同的计算,然后使用共识协议就结果达成一致,区块链有一个安全阈值,通常在 25% 到 49% 之间,这决定了它们在达成共识的同时可以容忍多少个有故障或不诚实的节点,然而,使用 GPU 时,即使所有节点都使用相同的模型,即使是诚实的节点也可能为 LLM 返回不同的答案,这会给共识协议带来问题。
示例:想象一下,一个区块链上有三台计算机,每台计算机都运行一个 LLM 智能合约,一位用户问:“什么是 LLM?”
计算机 1:“LLM,即大型语言模型,是一种旨在理解和生成人类语言的先进人工智能模型,通常具有大量参数,并经过大量文本数据训练。”
计算机 2:“LLM,即大型语言模型,是一种强大的人工智能系统,经过大量文本的训练,可以执行理解、生成和翻译人类语言等任务。”
计算机 3:“LLM,即大型语言模型,是一种通过对大型数据集进行大量训练,擅长处理和生成人类语言的人工智能模型。”
尽管三台计算机都是诚实的,并且使用相同的模型,但它们返回的答案却不同,这种不确定性可能因多种原因而产生,是有问题的,共识协议无法确定哪个答案是正确的,这与更简单、确定性的计算形成了鲜明对比,例如 “1 + 1”,其中所有计算机都会同意 “2”。
鉴于上述情况,我应该补充一些细节,即使模型温度设置为 0,不确定性也会出现,棘手的是,不确定性来自 GPU,而不是模型本身,真正棘手的是,如果温度为 0,GPU 在大多数情况下会返回相同的答案,这会给人一种虚假的安全感,但这种确定性并不能得到保证,如果不能保证,那么就会导致区块链无法达成一致的情况。
举个虚构但具体的数字:如果 GPU 在 99.99% 的时间内都是确定性的,这意味着 10,000 个提示中 1 个可能会返回不同的答案,想象一下,如果 10,000 个区块中 1 个区块链无法达成一致……大多数区块链将无法达成共识,这对共识来说是危险的。
要点
区块链依赖于复制计算并对结果达成一致;
GPU 引入了非确定性,使得区块链难以达成共识;
因此,当前的区块链无法像 Web2 系统那样利用 GPU。
可能的解决方案
这是一个新的挑战,但人们正在探索几种潜在的解决方案(在撰写本文时尚未完全解决):
利用 GPU 实现确定性:开发使 GPU 计算具有确定性的方法,这是可能的,尽管有点棘手,而且尚未被广泛采用。
修改共识协议:调整共识机制以处理非确定性,这需要进行一些严肃的协议工作。
接受非确定性并使用零知识证明:在单台机器上运行 LLM,无需复制,这种方法比使用 CPU 或 GPU 慢很多个数量级,这在理论上是可行的,但很难做到,而且仍然是一个悬而未决的问题。
整个人工智能和区块链生态系统(包括 DFINITY)正在积极探索和研究这三种方法以确定最佳解决方案。
经验法则 #3
如果有人声称“我的区块链在 GPU 上运行”,那么以下说法之一是正确的:
他们确定性地运行 GPU 或应用近似的共识机制;
他们的区块链缺乏强大的共识协议(并且不安全);
他们没有说实话。
结论
链上人工智能尚未完全实现,虽然在集成人工智能推理方面取得了一些有希望的进展,但需要解决内存、计算能力和共识机制方面的巨大差距,这些挑战并非不可克服,但需要集中研究、开发和创新,通过理解和解决这些障碍,将人工智能的力量与区块链的安全性和去中心化相结合的梦想可以成为现实。
希望这对大家有帮助!
你关心的 IC 内容
技术进展 | 项目信息 | 全球活动
收藏关注 IC 币安频道
掌握最新资讯