ai00-core

Crates.ioai00-core
lib.rsai00-core
version0.5.8
sourcesrc
created_at2024-05-21 17:53:25.401904
updated_at2024-09-13 08:43:11.556389
descriptionAn implementation of the RWKV language model in pure WebGPU.
homepagehttps://github.com/cgisky1980/ai00_rwkv_server
repositoryhttps://github.com/cgisky1980/ai00_rwkv_server
max_upload_size
id1247057
size89,638
研究社交 (cryscan)

documentation

README

Ai00-Core

This is the core library of the Ai00 server. It provides the following functionalities:

  • Model/LoRA/initial state loading with auto version detecting;
  • Samplers;
  • BNF integration;
  • State caching;
  • Session management.

The purpose of this crate is to expose a state-less native inference API.

Guide

The first thing is to start the runtime, an async task that serves all background stuff (e.g., model runtime, caches, session queue):

use ai00_core::model_route;

let (sender, receiver) = flume::unbounded::<ThreadRequest>();
tokio::spawn(model_route(receiver));

Then users can communicate with the runtime by sending ThreadRequests, which are commands that request the runtime to do all kinds of stuff. Check its definition:

pub enum ThreadRequest {
    /// Acquire a list of current available adapters.
    Adapter(Sender<AdapterList>),
    /// Get the current runtime info.
    Info(Sender<RuntimeInfo>),
    /// Request the runtime to complement a prompt.
    Generate {
        request: Box<GenerateRequest>,
        tokenizer: Arc<Tokenizer>,
        sender: Sender<Token>,
    },
    /// Reload the runtime with custom config.
    Reload {
        request: Box<ReloadRequest>,
        sender: Option<Sender<bool>>,
    },
    /// Unload the runtime.
    Unload,
    /// Additionally load an initial state.
    StateLoad {
        request: reload::State,
        sender: Option<Sender<bool>>,
    },
    /// Unload an initial state given its id.
    StateUnload(StateId),
    /// Save the current model with config.
    Save {
        request: SaveRequest,
        sender: Sender<bool>,
    },
}
Commit count: 688

cargo fmt