以及为什么 WasmEdge 是 AGI 采用 Rust 的要害途径!
为什么不选 Python?
今日的 LLM 运用程序,包括推理运用程序和署理(Agent),大多用 Python 编写。但这行将发生变化。Python 关于新一波开发者来说简直太慢、太臃肿且矛盾颇多不够简便。实际上, Chris Lattner, LLVM、Clang和 Swift 的创造者展示出 Python 或许比编译型言语慢35000倍——这是他创造 Mojo 言语的原因,想要代替 Python 。

(根据 Chris Lattner 的说法,编译型言语能够比 Python 快35000倍。)
这迫使开发者将越来越多的运用逻辑转化为原生编译代码 C 、C++ 和 Rust 。例如,十分热门的项目 llama.cpp、whisper.cpp和 llama2.c 都是 C 和 C++ 写的,没有 Python 依靠。

(OpenAI 联合创始人兼总裁 Greg Brockman 也认为 Python 太慢了。https://twitter.com/gdb/status/1676726449934331904)
这反过来降低了 Python 开发者的体会。事实上,管理云上部署的 Python 装置已成为一个严重应战。

换句话说,Python 不仅十分慢,而且用来开发 LLM 运用程序的时候也十分难用。
Rust!
Python 的应战为高功能编译言语创造了机会。随着 Rust 在开发者社区对 C 和 C++ 攻城略地,Elon Musk 指出 Rust 或许是 AGI 年代的言语。

(好好消化一下这个事实吧!(双关:让水槽进来) https://twitter.com/elonmusk/status/1649603943033450496)
Rust 连续7年被 StackOverflow 评为最受开发者欢迎的编程言语,其市场份额持续稳步增长。
Rust + Wasm 一举两得
但是,将 Rust 直接编译成原生机器代码也有其他问题。
- 安全性。原生二进制文件或许会使整个体系崩溃。
- 可移植性。原生二进制文件特定于底层操作体系和硬件。
- 功能。 由于安全性和可移植性要求,通常需求在 Linux 容器中运转原生二进制文件。 此类容器为程序添加了巨大的发动和运转时开销,然后明显降低了速度。
Wasm 作为 Rust 运用的抢先安全运转时环境出现,想要处理这些问题。 有了云原生优化的 Wasm 运转时 WasmEdge,开发者现在能够在 LLM 运用程序栈的每一层运用高功能 Rust,作为 Python 的高功能代替计划。

- 署理层:网络密集型使命,用于接纳网络事件、衔接数据库和调用其他 Web 服务。Rust 和 WasmEdge 提供异步和非堵塞 I/O,以完成高密度和高功能的署理运用。 示例:flows.network。
- 推理层:CPU 密集型使命,用于将数据(如单词和语句)预处理为数字,并将数字后处理为语句或结构化的 JSON 数据。这些函数能够用 Rust 编写以完成最佳功能,并在 WasmEdge 中运转以完成安全性和可移植性。 示例:mediapipe-rs。
- 张量层:从 Wasm 将 GPU 密集型使命通过 WasmEdge 的 WASI-NN 插件传递给原生张量库(如llama.cpp、PyTorch 和 Tensorflow)。
结论
Rust 和 Wasm 能够成为 Python 的高功能、开发者友爱的代替选择。
- 二者与底层 GPU 张量库(也是用 C/C++/Rust 编写的)有更好地集成。
- 二者在完成运用程序特定的预处理和后处理数据功能方面更高效,这也是推理工作量的绝大部分。
- 二者在完成LLM 署理所需求的网络密集型和长期运转的使命方面更高效。
- 与 Python 镜像相比,它们的容器镜像大小要小得多(几 MB vs 数百 MB)。
- 由于软件供应链有限和攻击面露出较小,二者比 Python 容器更安全。
- 与 Python 程序相比,二者更容易装置和管理依靠项。
参考资料
“顶端仍有满足的空间:摩尔定律之后,什么将推进计算机功能?” MIT的Leiserson和Thompson等人,《科学》,2020年,第368卷,第6495期。 它示范了Python或许比优化的C程序慢62000多倍。 作者预测,从 Python 向编译言语迁移软件将引发新的计算机革命。
“用于 Serverless 函数即服务的轻量级设计” Long, Tai, Hsieh和Yuan,《IEEE软件》,2021年,第38卷,第1期,第75-80页。 它证明了 AOT 优化的 Wasm 运用程序在发动和运转时都能够大大超越 Linux 容器运用程序。
WasmEdge WASI-NN 插件允许 WasmEdge 中的 Rust 程序运转 Pytorch 和 Tensorflow 推理运用程序。
mediapipe-rs 库是一个 Rust 库,供开发者运用 Google 的 mediapipe 系列 AI 模型创建运用程序。它编译为 Wasm 并在 WasmEdge 中运转。
“在小小的 WasmEdge中运转小小的 llama2.c 模型” 作者 Yuan, Medium, 2023。它展示了如安在 WasmEdge 中运转 llama2 模型的一个完好推理运用程序。
flow.network 是一个基于 WasmEdge 构建的 serverless LLM agents (署理)平台。