llm
– 适合所有人的大型语言模型,在 Rust 中

llm
是一个用于处理大型语言模型的 Rust 库生态系统 – 它建立在快速、高效的 GGML 库之上,用于 机器学习。

图片由 @darthdeus 提供,使用 Stable Diffusion



当前状态
目前有四个可用版本(crate 和 CLI):llm
- 上的发布版本。此版本已过时几个月,并且不包括对最新型号的支持。
0.1.1
crates.io
- 此存储库的分支。该版本可以可靠地推断出GGMLv3模型,但不支持GGUF,并且使用旧版本的GGML。
main
- 此存储库的分支;这是一个支持使用 GGUF 进行推理的版本,但不支持 Llama 以外的任何模型,需要使用 Hugging Face 分词器,并且不支持量化。它还使用旧版本的 GGML。
gguf
main
- 此存储库的分支。这是一个从头开始的重新移植,用于与最新版本的GGML同步,并支持所有型号和GGUF。它目前正在进行中,尚未准备好使用。
develop
llama.cpp
计划是完成工作(参见 PR),然后将其合并并发布 to 的新版本,以便提供对最新型号和 GGUF 的最新支持。目前尚不清楚何时会发生这种情况。develop
main
llm
crates.io
概述
开发人员的主要入口是 llm
crate,它包装了 llm-base
和 支持的模型板条箱。有关已发布版本的文档,请访问 Docs.rs。
对于最终用户,有一个 CLI 应用程序 llm-cli
,它提供了一个方便的界面 与支持的模型交互。文本生成可以作为 基于提示的一次性,或通过 REPL 或聊天模式进行交互式。CLI 也可以是 用于序列化(打印)解码模型、量化 GGML 文件或计算模型的困惑度。它 可以从最新的 GitHub 版本下载,也可以通过以下方式下载 从 安装它。crates.io
llm
由 GGGML
张量提供支持 库,旨在将 Rust 的健壮性和易用性带给世界 大型语言模型。目前,推理只在CPU上,但我们希望 以支持未来通过备用后端进行 GPU 推理。
目前支持以下型号:
有关如何下载支持的模型的详细信息,请参阅获取模型。
在 Rust 项目中使用llm
这个项目依赖于 Rust v1.65.0 或更高版本和现代 C 工具链。
板条箱导出和模型板条箱(例如,)。llm
llm-base
bloom
gpt2
llama
通过在 中将项目列为依赖项来添加到项目中。要使用 您在此存储库的分支中看到的版本,请添加它 来自 GitHub(但请记住,这是预发布软件):llm
Cargo.toml
llm
main
[dependencies] llm = { git = "https://github.com/rustformers/llm" , branch = "main" }
要使用已发布的版本,请添加它 从 crates.io 指定所需的 版本:
[dependencies] llm = "0.1"
默认情况下,生成支持从 Hugging Face 的模型中心远程提取分词器。 要禁用此功能,请禁用 crate 的默认功能,并打开该功能以在没有分词器的情况下获取:llm
models
llm
[dependencies] llm = { version = "0.1", default-features = false, features = ["models"] }
NOTE: To improve debug performance, exclude the transitive dependency from being built in debug mode:ggml-sys
[profile.dev.package.ggml-sys] opt-level = 3
Leverage Accelerators with llm
The library is engineered to take advantage of hardware accelerators such as and for optimized performance.llm
cuda
metal
To enable to harness these accelerators, some preliminary configuration steps are necessary, which vary based on your operating system. For comprehensive guidance, please refer to Acceleration Support in our documentation.llm
Using from Other Languagesllm
Bindings for this library are available in the following languages:
使用 CLIllm
最简单的入门方法是下载预构建的 可执行的已发布版本,但版本当前已过期,我们建议 您可以从源代码安装。llm-cli
llm
从源代码安装
要将具有最新功能的分支安装到 Cargo 目录(该目录可能已添加到您的 中),请运行:main
llm
bin
rustup
PATH
cargo install --git https://github.com/rustformers/llm llm-cli
然后,可以通过 运行 CLI 应用程序。另请参阅功能和加速支持以根据需要打开功能。 请注意,除非使用相关功能进行构建,否则 GPU 支持(CUDA、OpenCL、Metal)将不起作用。llm
安装方式cargo
请注意,当前发布的版本已过时,不包括 支持最新型号。我们目前建议您从源代码安装。
要将最新发布的版本安装到 Cargo 目录(该版本可能已添加到您的 中),请运行:llm
bin
rustup
PATH
cargo install llm-cli
然后,可以通过 运行 CLI 应用程序。另请参阅功能以根据需要打开功能。llm
特征
默认情况下,生成支持从 Hugging Face 的模型中心远程提取分词器。 这会增加对系统本机 SSL 堆栈的依赖关系,该堆栈可能并非在所有系统上都可用。llm
若要禁用此功能,请禁用生成的默认功能:
cargo build --release --no-default-features
要启用硬件加速,请参阅构建加速支持部分,该部分也适用于 CLI。
获取模型
GGML模型很容易获得。它们主要位于 Hugging Face (见 从拥抱的脸),但可以从其他地方获得。
模型作为单个文件分发,不需要任何其他文件来 下载。但是,它们以不同的精度水平进行量化, 因此,您需要选择适合您的量化级别 应用。
此外,我们支持 Hugging Face 分词器以提高 标记化。这些是可以使用的单独文件() 使用 或 标志的 CLI 或使用 crate 的 使用适当的枚举变体。tokenizer.json
-v
-r
llm
TokenizerSource
有关已测试的模型列表,请参阅已知良好的模型。
此项目不支持某些较旧的 GGML 格式,但目标是 与上游GGML项目保持功能奇偶校验。对于与以下方面有关的问题 加载模型,或请求支持支持的 GGML 模型类型,请打开问题。
从拥抱的脸
Hugging Face 🤗 是开源机器学习领域的领导者,拥有数百个 GGML模型。搜索 GGML 模型 拥抱脸 🤗 .
r/LocalLLaMA
这个Reddit社区维护着一个与GGML相关的wiki 模型,包括用于获取GGML模型的链接列表(主要来自 拥抱脸🤗)。
用法
一旦可执行文件已构建或位于目录中,请尝试 运行它。下面是一个使用开源 RedPajama 语言模型的示例:llm
$PATH
llm infer -a gptneox -m RedPajama-INCITE-Base-3B-v1-q4_0.bin -p "Rust is a cool programming language because" -r togethercomputer/RedPajama-INCITE-Base-3B-v1
在上面的示例中,前两个参数指定模型体系结构和 命令。required 参数指定 模型和 required 参数指定评估提示。这 可选参数用于从远程加载模型的分词器 Hugging Face 🤗 存储库,相比之下,通常会改善结果 从模型文件本身加载分词器;还有一个可选参数,可用于指定本地分词器文件的路径。 有关 CLI 的详细信息,请使用该参数。-m
-p
-r
-v
llm
--help
cargo run --release --example inference gptneox RedPajama-INCITE-Base-3B-v1-q4_0.bin -r $OPTIONAL_VOCAB_REPO -p $OPTIONAL_PROMPT
Q&A(问答环节)
CLI 是否支持聊天模式?llm
是的,但某些微调模型(例如羊驼、骆马、皮格马利翁)更适合聊天用例,而不是 所谓的“基本模型”。下面是在 REPL 中使用 CLI 的示例 (读取-评估-打印循环)模式与 Alpaca 模型 – 请注意,提供的提示格式是针对模型量身定制的 正在使用的:llm
llm repl -a llama -m ggml-alpaca-7b-q4.bin -f utils/prompts/alpaca.txt
还有一个 Vicuna 聊天示例, 演示如何创建自定义聊天机器人:
cargo run --release --example vicuna-chat llama ggml-vicuna-7b-q4.bin
会话可以保留以供以后使用吗?llm
会话可以加载 () 或保存 () 到文件中。 要自动加载和保存同一会话,请使用 。这 也可用于缓存提示以减少加载时间。--load-session
--save-session
--persist-session
如何使用模型进行量化?llm
llm
可以从量化的 GGML 模型生成 – 或 – 量化模型q4_0
q4_1
f16
cargo run --release quantize -a $MODEL_ARCHITECTURE $MODEL_IN $MODEL_OUT {q4_0,q4_1}
你们是否提供对 Docker 和 NixOS 的支持?
Dockerfile 位于目录中;NixOS 片状清单和锁定文件位于项目根目录中。llm
utils
与社区取得联系的最佳方式是什么?llm
欢迎 GitHub 问题和讨论, 或者来 Discord 上聊天!
你们接受捐款吗?
绝对!请参阅贡献指南。
哪些应用程序和库使用?llm
应用
- llmcord:用于生成的 Discord 机器人 消息使用 .
llm
- local.ai:用于托管 在本地计算机上使用 .
llm
- secondbrain:桌面应用程序,用于使用 .
llm
- floneum:用于本地 AI 工作流的图形编辑器。
- poly:一个多功能的 LLM,为后端提供任务、流式完成、内存检索等服务。
图书馆
- llm-chain:构建大型链 用于文本摘要和完成更复杂任务的语言模型
Warning: Trying to access array offset on value of type bool in /www/wwwroot/ainvp.com/wp-content/themes/onenav/inc/clipimage.php on line 34
Warning: Trying to access array offset on value of type bool in /www/wwwroot/ainvp.com/wp-content/themes/onenav/inc/clipimage.php on line 34