llama-rs - 使用 Rust 在 CPU 上运行 LLaMA 推理🦀🚀🦙

Created at: 2023-03-14 00:59:26
Language: Rust
License: MIT

LLaMA-rs

做LLaMA的事情,但现在在Rust 🦀🚀🦙

骑着螃蟹的美洲驼,人工智能生成

图像来自@darthdeus,使用稳定扩散

科菲

最新版本  MIT 不和

Gif 展示使用 llama-rs 的语言生成

LLaMA-rsllama.cpp项目的Rust端口。这允许使用全精度、f16 或 4 位量化版本的模型在性能良好的 CPU 上运行 Facebook 的 LLaMA 模型的推理。

就像它的C++对应物一样,它由ggml张量库提供支持,实现了与原始代码相同的性能。

开始

确保设置了 rust 工具链。

  1. 获取模型权重的副本1
  2. 克隆存储库
  3. 构建 (
    cargo build --release
    )
  4. 运行方式
    cargo run --release -- <ARGS>

要尝试的其他一些操作:

  • 用于查看可用选项的列表。
    --help
  • 可以预先计算提示文件,以使用 和 标志加快处理速度。
    --cache-prompt
    --restore-prompt

注意:为获得最佳结果,请确保在发布模式下生成并运行。调试版本将非常慢。

例如,你尝试以下提示:

cargo run --release -- -m /data/Llama/LLaMA/7B/ggml-model-q4_0.bin -p "Tell me how cool the Rust programming language is

问答

  • 问:你为什么这样做?

  • 一个:这不是我的选择。费里斯出现在我的梦中,让我以圣蟹的名义重写。

  • 问:现在说真的

  • 一个:加油!我不想卷入一场火焰战争。你知道它是怎么回事,有些东西记忆,有些东西很好,不要让我说出来每个人都已经知道了。

  • 问:我坚持。

  • 答:嘘!奥卡伊。在看到骆驼.cpp的巨大潜力后,我做的第一件事就是看看把它变成一个库来嵌入我的项目中有多难。我开始深入研究代码,并意识到繁重的工作是由(一个 C 库,易于绑定到 Rust)完成的,整个项目只有大约 ~2k 行C++代码(不太容易绑定)。在几次(失败的)尝试在工具中构建HTTP服务器之后,我意识到如果我只是将代码移植到Rust上,我会更有效率,在那里我更舒服。

    ggml

  • 问:这是真正的原因吗?

  • 一个:哈哈。当然不是。我只是喜欢收集想象中的互联网积分,以小星星的形式,每当我开始毫无意义的重写 X 事物时,人们似乎都会给我这些点,但在 Rust 中

已知问题/待办事项

欢迎投稿!以下是一些紧迫的问题:

  • [ ] 量化代码尚未移植。你仍然可以将量化模型与 llama.cpp一起使用。
  • [ ] 没有 crates.io 版本。这个名字是保留的,我计划尽快这样做。
    llama-rs
  • [ ] 对原始C++代码的任何改进。(见 https://github.com/setzer22/llama-rs/issues/15)
  • [x] 调试版本当前已损坏。
  • [x] 代码需要“库”化。作为展示二进制文件很好,但该工具的真正潜力是允许嵌入其他服务。
  • [x] 代码只在 Linux 上设置正确的 CFLAG。中的脚本需要修复,因此在其他操作系统上推理将非常慢
    build.rs
    ggml_raw
  1. 在撰写本文时获得权重的唯一合法来源是此存储库。词语的选择也可能暗示也可能不暗示其他类型的来源的存在。