OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Kalosm — 用 Rust 构建本地 AI 应用的全栈框架

Kalosm — 用 Rust 构建本地 AI 应用的全栈框架

 
  ocean ·  2026-03-29 11:00:23 · 6 次点击  · 0 条评论  

Floneum

Floneum 是一个 Rust crate 生态系统,旨在简化使用本地或远程 AI 模型的应用程序开发。本仓库包含三个主要项目:

  • Kalosm: 一个用于 Rust 中预训练模型的简单接口。
  • Floneum 编辑器 (预览版): 一个用于本地 AI 工作流的图形化编辑器。更多信息请参阅用户文档插件文档
  • Fusor: 一个用于量化 ML 推理的运行时。Fusor 使用 WGPU 在任意加速器(原生或浏览器中)上运行模型。

Kalosm

Kalosm 是支撑 Floneum 的、用于 Rust 预训练模型的简单接口。它简化了与预训练的语言、音频和图像模型的交互。

模型支持

Kalosm 支持多种模型。以下是当前支持的模型列表:

模型 模态 大小 描述 量化支持 CUDA + Metal 加速 示例
Llama 文本 1b-70b 通用语言模型 llama 3 聊天
Mistral 文本 7-13b 通用语言模型 mistral 聊天
Phi 文本 2b-4b 小型推理专注型语言模型 phi 3 聊天
Whisper 音频 20MB-1GB 音频转录模型 实时 Whisper 转录
RWuerstchen 图像 5gb 图像生成模型 rwuerstchen 图像生成
TrOcr 图像 3gb 光学字符识别模型 文本识别
Segment Anything 图像 50MB-400MB 图像分割模型 图像分割
Bert 文本 100MB-1GB 文本嵌入模型 语义搜索

实用工具

Kalosm 还支持围绕预训练模型的各种实用工具,包括:

性能

Kalosm 使用 candle 机器学习库在纯 Rust 中运行模型。它支持量化和加速模型,性能与 llama.cpp 相当:

Mistral 7b
| 加速器 | Kalosm | llama.cpp |
| ------ | --------- | --------- |
| Metal (M2) | 39 t/s | 27 t/s |

结构化生成

Kalosm 支持使用任意解析器进行结构化生成。它使用自定义的解析器引擎、采样器和结构感知加速技术,使得结构化生成甚至比非受控文本生成更快。你可以为任何 Rust 类型添加 #[derive(Parse, Schema)] 以使其可用于结构化生成:

use kalosm::language::*;

/// 一个虚构角色
#[derive(Parse, Schema, Clone, Debug)]
struct Character {
    /// 角色姓名
    #[parse(pattern = "[A-Z][a-z]{2,10} [A-Z][a-z]{2,10}")]
    name: String,
    /// 角色年龄
    #[parse(range = 1..=100)]
    age: u8,
    /// 角色描述
    #[parse(pattern = "[A-Za-z ]{40,200}")]
    description: String,
}

#[tokio::main]
async fn main() {
    // 首先创建一个模型。聊天模型通常最适合结构化生成
    let model = Llama::phi_3().await.unwrap();
    // 然后创建一个带有解析器约束的任务
    let task = model.task("You generate realistic JSON placeholders for characters")
        .typed();
    // 最后,运行任务
    let mut stream = task(&"Create a list of random characters", &model);
    stream.to_std_out().await.unwrap();
    let characters: [Character; 10] = stream.await.unwrap();
    println!("{characters:?}");
}

https://github.com/user-attachments/assets/8900f57d-55c8-4d4a-a67b-73beab1e5155

除了正则表达式,你还可以提供自己的语法来生成结构化数据。这允许你将响应约束为你想要的任何结构,包括复杂的数据结构,如 JSON、HTML 和 XML。

Kalosm 快速开始!

本快速入门将引导你运行一个简单的聊天机器人。让我们开始吧!

关于 Kalosm 的更完整指南可在 Kalosm 网站上找到,示例可在 examples 文件夹中找到。

  1. 安装 rust
  2. 创建一个新项目:
cargo new kalosm-hello-world
cd ./kalosm-hello-world
  1. 添加 Kalosm 作为依赖项
# 如果你的机器支持加速器,可以使用 `--features language,metal`、`--features language,cuda` 或 `--features language,mkl`
cargo add kalosm --features language
cargo add tokio --features full
  1. 将以下代码添加到你的 main.rs 文件中

```rust, no_run
use kalosm::language::*;

[tokio::main]

async fn main() -> Result<(), Box> {
let model = Llama::phi_3().await?;
let mut chat = model.chat()
.with_system_prompt("You are a pirate called Blackbeard");

loop {
chat(&prompt_input("\n> ")?)
.to_std_out()
.await?;
}
}


5.  运行你的应用程序:

```sh
cargo run --release

聊天机器人演示

Fusor

⚠️ Fusor 仍处于早期开发阶段,尚未准备好用于生产环境。在 0.5 版本中,Fusor 将作为 Kalosm 和 Floneum 的后端,以支持 Web 和 AMD。

Fusor 是一个用于量化 ML 推理的 WGPU 运行时。Fusor 使用 gguf 文件格式加载量化模型。它利用 WebGpu 来面向多种不同的加速器,包括 Nvidia GPU、AMD GPU 和 Metal。大多数 ML 框架包含手工优化的内核,这些内核将一系列操作一起执行。Fusor 使用内核融合编译器将自定义操作链合并到一个优化的内核中,而无需降级到着色器代码。这将编译为单个内核:
rust, ignore fn exp_add_one(tensor: Tensor<2, f32>) -> Tensor<2, f32> { 1. + (-tensor).exp() }

社区

如果你对其中任何一个项目感兴趣,可以加入 Discord 讨论项目并获得帮助。

贡献

  • 在我们的问题跟踪器上报告问题。
  • 在 Discord 中帮助其他用户。
  • 如果你有兴趣贡献代码,欢迎在 Discord 上联系我们。
6 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 18 ms
Developed with Cursor