llm
用 Rust 构建的纯本地 LLM 推理库,支持 GGML/GGUF 多模型架构,零外部依赖的隐私优
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 Rust 构建的纯本地 LLM 推理库,支持 GGML/GGUF 多模型架构,零外部依赖的隐私优
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过,如果 AI 模型的运行不依赖 Python 的运行时开销,而是一个经过编译优化的原生二进制,会是怎样的体验?Rustformers 团队用 llm 库给出了一个令人印象深刻的答案——这是一个用 Rust 构建的大语言模型推理引擎,基于高效的 GGML 张量库,在 CPU 上实现了极低延迟的推理能力。
2023 年 3 月,Rustformers 组织在 GitHub 上创建了这个项目,目标是"将 Rust 的稳健性和易用性带入大语言模型世界"。项目取名 llm,简洁到极致,却野心勃勃——它不仅仅是一个模型,而是一整个由 Rust 库组成的推理生态系统,为开发者提供从底层张量计算到高层 API 的完整抽象。
图1:rustformers 组织 logo
Rust 语言在这个项目中被选择并非偶然。Rust 拥有接近 C/C++ 的执行效率、强大的内存安全保证,以及极其优秀的并发处理能力。这些特性对于需要精细控制内存布局和计算流水线的 LLM 推理场景来说,简直是天然的优势。
llm 项目采用了 Rust 生态常见的 workspace 模式,由多个独立 crate 组成,每个 crate 各司其职:
底层:ggml + ggml-sys
最底层是 ggml crate,这是对 ggerganov/ggml C 库的半idiomatic(半惯用)Rust 绑定。ggml-sys 提供了原始 FFI 绑定,而 ggml 则在其基础上封装了更符合 Rust 风格的接口。ggml 本身是一个纯 C 的张量库,负责实际的矩阵运算,是整个推理管线的性能核心。
中层:llm-base
llm-base 提供了模型实现的公共结构抽象,定义了模型加载、推理会话、token 生成等核心接口。它不面向终端用户,而是为各模型实现 crate 提供共享基座。
中层:各模型实现 crate
项目支持 9 种主流模型架构,每个架构都是一个独立 crate:
llm-bert:BERT 系列(BERT, RoBERTa 等)llm-bloom:BigScience 的 BLOOM(1760 亿参数超大模型)llm-falcon:TII 的 Falcon 系列llm-gpt2:OpenAI GPT-2llm-gptj:EleutherAI GPT-J(60 亿参数)llm-gptneox:GPT-NeoX(包含 StableLM、RedPajama、Dolly 2.0 等)llm-llama:Meta LLaMA 系列(包含 Alpaca、Vicuna、Koala、GPT4All、Wizard 等生态模型)llm-mpt:MosaicML MPT 系列上层:llm 主 crate
llm 主 crate 整合了 llm-base 和所有模型实现,为 Rust 开发者提供统一的推理 API。使用方式极为简洁,只需几行代码即可完成模型加载和推理。
应用层:llm-cli
对于不需要深度集成的用户,项目提供了开箱即用的命令行工具 llm-cli。支持交互式 REPL 模式、聊天模式、模型序列化、量化工具和 perplexity(困惑度)计算。
默认纯 CPU 推理——llm 在不启用任何加速后端时,依赖纯 CPU 完成推理。GGML 库对 CPU 指令(AVX2/AVX512)有出色的优化。对于 7B~13B 规模的模型,在现代多核 CPU 上可以达到每秒 10-20 tokens 的生成速度。
可选硬件加速:llm 支持三种 GPU 加速后端:
| 平台 | CUDA (cuBLAS) | OpenCL (CLBlast) | Metal (macOS) |
|---|---|---|---|
| Linux | 支持 | 支持 | 不支持 |
| macOS | 不支持 | 不支持 | 支持 |
| Windows | 支持 | 支持 | 不支持 |
启用加速需要在编译时通过 --features 指定后端,例如 cargo install --features cublas llm-cli。启用 CUDA 后,推理速度可提升数倍。
GGML 与 GGUF 模型格式:项目经历了 GGMLv3 到 GGUF 格式的迁移。GGUF(GPT Generational Unified Format)由 llama.cpp 主导推出,是一个更易用、更具扩展性的模型打包格式。项目 develop 分支已支持 GGUF,main 分支仍在支持 GGMLv3。
llm 不提供模型下载功能,要求用户自行获取 GGML/GGUF 模型文件。官方推荐来源是 Hugging Face——其上有数百个预量化好的 GGML/GGUF 模型。量化是 llm 的核心能力之一,支持多种量化精度(Q4_0、Q4_1、Q5_0、Q5_1、Q6_K 等)。例如,一个 7B 原始模型约 13GB,Q4_0 量化后仅需约 3.5GB,同时仍能保持不错的生成质量。
推荐安装方式(从源码编译):使用 cargo install --git https://github.com/rustformers/llm llm-cli 命令即可完成安装。依赖项为 Rust 1.65+、Cargo 和 Git。如果需要 GPU 加速,还需安装 CUDA Toolkit 或 CLBlast。
官方明确提示:crates.io 上的稳定版本已严重滞后,不包含最新模型支持,强烈建议从源码安装 main 分支。
Rust 项目集成:在 Cargo.toml 中添加 Git 依赖即可将 llm 集成进自己的 Rust 项目。项目也提供了 Python 和 Node.js 社区绑定,降低了非 Rust 生态用户的上手难度。
关键信息:该项目已于 2024 年 6 月被 archive(归档),仓库设为只读状态。README 明确标注 [Unmaintained, see README]。
archive 的主要原因是:GGML 项目本身的持续演进(ggerganov 更多精力投入 llama.cpp 原生实现);ggml-sys FFI 绑定维护成本过高;以及 llama.cpp Rust 绑定和 Candle 等替代方案的涌现。
尽管已 archive,6150 颗星和 377 个 fork 证明了项目的历史价值。它是 Rust 生态中最早的大模型推理基础设施之一。
rustformers/llm 代表了一种独特的 AI 基础设施思路——用系统级语言从底层重写推理管线,而非在 Python 生态上做 wrapper。这种选择在 2023 年有充分的理由:Python 的 GIL 和动态类型特性在大规模矩阵运算场景下确实存在瓶颈。
然而,随着 llama.cpp 的持续进化和 Candle 的成熟,这条纯 Rust 路径的维护成本变得越来越高。项目最终走向 archive,也是开源生态自我优化的一种体现——资源应该流向维护状态更活跃的分支。
对于 Rust 爱好者和需要在 Rust 项目中深度集成 LLM 的开发者来说,llm 的代码库仍然是一份宝贵的参考资产。它的 workspace 设计、模型抽象层、量化逻辑和加速后端集成,都值得借鉴。
项目信息
| 属性 | 值 |
|---|---|
| 仓库 | rustformers/llm |
| 主要语言 | Rust |
| Stars | 6,150 |
| Forks | 377 |
| License | Apache-2.0 / MIT |
| 状态 | 已归档(Unmaintained) |
| 主题 | ai, ggml, llm, ml, rust |
| 支持模型 | BLOOM, GPT-2, GPT-J, GPT-NeoX, LLaMA, MPT, BERT, Falcon |
| 推理后端 | CPU (默认), CUDA, OpenCL, Metal |
| 模型格式 | GGMLv3, GGUF |