当今,包括推理应用程序和智能体在内的大多数LLM应用程序是用Python编写的,但这种形势即将发生改变。对于新一波开发人员来说,Python太慢了,太臃肿了,而且自相矛盾,非常笨拙。其实,LLVM的Chris Lattner,即Clang和Swift的发明者已经证实了Python比编译语言慢35,000倍——这也是为什么他发明了Mojo语言作为Python的替代品。
根据Chris Lattner的说法,编译语言要比Python快35,000倍。
这迫使开发人员将越来越多的应用程序逻辑推送到本机编译的代码中,如C、C++和Rust。例如,当前流行的项目 llama.cpp,whisper.cpp和llama2.c都是用零Python相关性编写的。
Greg Brockman是OpenAI的联合创始人和总裁,他也认为 Python太慢了。https://twitter.com/gdb/status/1676726449934331904
这反过来又将降级了Python开发者的体验,事实上,如何为云部署管理Python安装业已成为了一个主要的挑战。
Chris Albon 是维基媒体机器学习的主任,即便是他也很难指出Python的先进性。https://twitter.com/santiviquez/status/1676677829751177219
换句话说,Python不仅非常慢,而且很难用于开发LLM应用程序。
Python面临的挑战为高性能编译语言创造了机会,随着C和C++在开发者社区中败给Rust,埃隆·马斯克(Elon Musk)指出,Rust将成为AGI的语言。
让它沉沦吧!https://twitter.com/elonmusk/status/1649603943033450496
Rust 已连续7年被StackOverflow 公司评为最受欢迎的编程语言,其市场份额正在稳步增长。
然而,直接将Rust编译为本机机器代码还会引发其他问题。
l 安全性,本机二进制文件可能会使整个系统崩溃。
l 可移植性,本机二进制文件依赖于底层操作系统和硬件。
l 性能,出于安全性和可移植性的要求,本地二进制文件通常需要在Linux容器中运行,容器增加了程序启动和运行时的开销,从而大幅度降低了速度。
Wasm已经成为Rust应用程序解决这些问题的首选,运行Wasm的云优化WasmEdge,开发人员可以在LLM应用程序栈的各层中使用高性能的Rust,作为Python的高性能替代品。
使用Rust + Wasm代替Python来提高性能、减少内存占用空间并提高安全性。
l 代理层:接收互联网事件、连接数据库和调用其他web服务的网络密集型任务。Rust和WasmEdge为高密度和高性能的代理应用程序提供异步和非阻塞的I/O。示例: flows.network。
l 推理层:cpu密集型任务,将数据(如单词和句子)预处理成数字,将后处理的数字处理成句子或结构化JSON数据。这些功能均可以用Rust编写以实现最佳性能,并在WasmEdge中运行以实现安全性和可移植性。示例:mediapipe-rs。
l 张量层:gpu密集型任务,从Wasm传递到原生张量库,利用WasmEdge的插件WASI-NN,将Wasm传递给原生张量库,如 llama.cpp,PyTorch和Tensorflow。
Rust和Wasm是Python友好而高性能的替代品。
l 它们更好地集成了底层GPU张量库,这些库也是用C/C++/Rust编写的。
l 在实现特定应用程序的预处理和后处理数据功能方面更加高效,它取代了推理工作负载的大部分工作。
l 在实现LLM代理所需的网络密集型和长时间运行任务方面更为高效。
l 它们的容器图像大小比Python图像要小得多(只占用几个MBs而Python 图像则占用数百个MBs)。
l 由于软件供应链有限,攻击面大大降低,因此它们比Python容器更安全。
它们比Python程序更容易安装和管理。
Rust + Wasm两个世界的最佳选择
结论