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

AIGC开源项目8个月前发布 admin
2 00

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

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

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

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

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

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

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

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

当前状态

目前有四个可用版本(crate 和 CLI):llm

  • 上的发布版本。此版本已过时几个月,并且不包括对最新型号的支持。0.1.1crates.io
  • 此存储库的分支。该版本可以可靠地推断出GGMLv3模型,但不支持GGUF,并且使用旧版本的GGML。main
  • 此存储库的分支;这是一个支持使用 GGUF 进行推理的版本,但不支持 Llama 以外的任何模型,需要使用 Hugging Face 分词器,并且不支持量化。它还使用旧版本的 GGML。ggufmain
  • 此存储库的分支。这是一个从头开始的重新移植,用于与最新版本的GGML同步,并支持所有型号和GGUF。它目前正在进行中,尚未准备好使用。developllama.cpp

计划是完成工作(参见 PR),然后将其合并并发布 to 的新版本,以便提供对最新型号和 GGUF 的最新支持。目前尚不清楚何时会发生这种情况。developmainllmcrates.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 工具链。

板条箱导出和模型板条箱(例如,)。llmllm-basebloomgpt2llama

通过在 中将项目列为依赖项来添加到项目中。要使用 您在此存储库的分支中看到的版本,请添加它 来自 GitHub(但请记住,这是预发布软件):llmCargo.tomlllmmain

[dependencies]
llm = { git = "https://github.com/rustformers/llm" , branch = "main" }

要使用已发布的版本,请添加它 从 crates.io 指定所需的 版本:

[dependencies]
llm = "0.1"

默认情况下,生成支持从 Hugging Face 的模型中心远程提取分词器。 要禁用此功能,请禁用 crate 的默认功能,并打开该功能以在没有分词器的情况下获取:llmmodelsllm

[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.llmcudametal

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-clillm

从源代码安装

要将具有最新功能的分支安装到 Cargo 目录(该目录可能已添加到您的 中),请运行:mainllmbinrustupPATH

cargo install --git https://github.com/rustformers/llm llm-cli

然后,可以通过 运行 CLI 应用程序。另请参阅功能加速支持以根据需要打开功能。 请注意,除非使用相关功能进行构建,否则 GPU 支持(CUDA、OpenCL、Metal)将不起作用。llm

安装方式cargo

请注意,当前发布的版本已过时,不包括 支持最新型号。我们目前建议您从源代码安装

要将最新发布的版本安装到 Cargo 目录(该版本可能已添加到您的 中),请运行:llmbinrustupPATH

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-rllmTokenizerSource

有关已测试的模型列表,请参阅已知良好的模型

此项目不支持某些较旧的 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-vllm--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_0q4_1f16

cargo run --release quantize -a $MODEL_ARCHITECTURE $MODEL_IN $MODEL_OUT {q4_0,q4_1}

你们是否提供对 Docker 和 NixOS 的支持?

Dockerfile 位于目录中;NixOS 片状清单和锁定文件位于项目根目录中。llmutils

与社区取得联系的最佳方式是什么?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

相关文章