Floneum memudahkan untuk mengembangkan aplikasi yang menggunakan model AI pra-terlatih lokal. Ada dua proyek utama di monorepo ini:
Kalosm adalah antarmuka sederhana untuk model pra-terlatih dalam karat yang mendukung floneum. Mudah berinteraksi dengan model pra-terlatih, bahasa, audio, dan gambar.
Kalosm mendukung berbagai model. Berikut adalah daftar model yang saat ini didukung:
| Model | Pengandaian | Ukuran | Keterangan | Terkuantisasi | Cuda + logam dipercepat | Contoh |
|---|---|---|---|---|---|---|
| Llama | Teks | 1B-70B | Model Bahasa Tujuan Umum | ✅ | ✅ | Llama 3 obrolan |
| Mistral | Teks | 7-13b | Model Bahasa Tujuan Umum | ✅ | ✅ | Obrolan Mistral |
| Phi | Teks | 2B-4B | Model Bahasa Fokus Penalaran Kecil | ✅ | ✅ | obrolan phi 3 |
| Berbisik | Audio | 20MB-1GB | Model transkripsi audio | ✅ | ✅ | Transkripsi berbisik hidup |
| Rwuerstchen | Gambar | 5GB | Model pembuatan gambar | ✅ | RWUERSTCHEN Image Generation | |
| Trocr | Gambar | 3GB | Model pengenalan karakter optik | ✅ | Pengenalan teks | |
| Segmen apapun | Gambar | 50MB-400MB | Model Segmentasi Gambar | Segmentasi gambar | ||
| Bert | Teks | 100MB-1GB | Model embedding teks | ✅ | Pencarian semantik |
Kalosm juga mendukung berbagai utilitas di sekitar model pra-terlatih. Ini termasuk:
Kalosm menggunakan perpustakaan pembelajaran mesin lilin untuk menjalankan model dalam karat murni. Ini mendukung model kuantisasi dan dipercepat dengan kinerja setara dengan llama.cpp :
Mistral 7B
| Akselerator | Kalosm | llama.cpp |
|---|---|---|
| Logam (M2) | 39 t/s | 27 t/s |
Kalosm mendukung generasi terstruktur dengan parser sewenang -wenang. Ini menggunakan mesin parser khusus dan sampler dan akselerasi sadar struktur untuk membuat generasi struktur lebih cepat daripada pembuatan teks yang tidak terkendali. Anda dapat mengambil jenis karat apa pun dan menambahkan #[derive(Parse, Schema)] untuk membuatnya dapat digunakan dengan generasi terstruktur:
use kalosm :: language :: * ;
/// A fictional character
# [ derive ( Parse , Schema , Clone , Debug ) ]
struct Character {
/// The name of the character
# [ parse ( pattern = "[A-Z][a-z]{2,10} [A-Z][a-z]{2,10}" ) ]
name : String ,
/// The age of the character
# [ parse ( range = 1 ..= 100 ) ]
age : u8 ,
/// A description of the character
# [ parse ( pattern = "[A-Za-z ]{40,200}" ) ]
description : String ,
}
# [ tokio :: main ]
async fn main ( ) {
// First create a model. Chat models tend to work best with structured generation
let model = Llama :: phi_3 ( ) . await . unwrap ( ) ;
// Then create a task with the parser as constraints
let task = Task :: builder_for :: < [ Character ; 10 ] > ( "You generate realistic JSON placeholders for characters" )
. build ( ) ;
// Finally, run the task
let mut stream = task . run ( "Create a list of random characters" , & model ) ;
stream . to_std_out ( ) . await . unwrap ( ) ;
let character = stream . await . unwrap ( ) ;
println ! ( "{character:?}" ) ;
}Selain Regex, Anda dapat menyediakan tata bahasa Anda sendiri untuk menghasilkan data terstruktur. Ini memungkinkan Anda membatasi respons terhadap struktur apa pun yang Anda inginkan termasuk struktur data yang kompleks seperti JSON, HTML, dan XML.
QuickStart ini akan membuat Anda bangun dan berjalan dengan chatbot sederhana. Mari kita mulai!
Panduan yang lebih lengkap untuk Kalosm tersedia di situs web Kalosm, dan contoh tersedia di folder Contoh.
cargo new kalosm-hello-world
cd ./kalosm-hello-world # You can use `--features language,metal`, `--features language,cuda`, or `--features language,mkl` if your machine supports an accelerator
cargo add kalosm --features language
cargo add tokio --features fullmain.rs Anda use kalosm :: language :: * ;
# [ tokio :: main ]
async fn main ( ) -> Result < ( ) , Box < dyn std :: error :: Error > > {
let model = Llama :: phi_3 ( ) . await ? ;
let mut chat = Chat :: builder ( model )
. with_system_prompt ( "You are a pirate called Blackbeard" )
. build ( ) ;
loop {
chat . add_message ( prompt_input ( " n > " ) ? )
. to_std_out ( )
. await ? ;
}
}cargo run --releaseJika Anda tertarik pada proyek tersebut, Anda dapat bergabung dengan perselisihan untuk membahas proyek dan mendapatkan bantuan.