يجعل Floneum من السهل تطوير التطبيقات التي تستخدم نماذج الذكاء الاصطناعى المحلية التي تم تدريبها مسبقًا. هناك مشروعان رئيسيان في هذا المونوروبو:
Kalosm هي واجهة بسيطة للنماذج التي تم تدريبها مسبقًا في الصدأ التي تدعم Floneum. يجعل من السهل التفاعل مع نماذج التدريب قبل التدريب واللغة والصوت والصور.
Kalosm يدعم مجموعة متنوعة من النماذج. فيما يلي قائمة بالنماذج المدعومة حاليًا:
| نموذج | طريقة | مقاس | وصف | كمية | تسارع CUDA + المعدن | مثال |
|---|---|---|---|---|---|---|
| لاما | نص | 1B-70B | نموذج لغة الغرض العام | ✅ | ✅ | لاما 3 دردشة |
| خطأ | نص | 7-13 ب | نموذج لغة الغرض العام | ✅ | ✅ | دردشة خاطئة |
| فاي | نص | 2B-4B | نموذج اللغة المنطق الطفيف يركز | ✅ | ✅ | PHI 3 دردشة |
| يهمس | صوتي | 20 ميجابايت -1جا بايت | نموذج النسخ الصوتي | ✅ | ✅ | حية نسخ الهمس |
| Rwuerstchen | صورة | 5 جيجابايت | نموذج توليد الصور | ✅ | Rwuerstchen صورة جيل | |
| تروقا | صورة | 3 جيجابايت | نموذج التعرف على الأحرف البصرية | ✅ | التعرف على النص | |
| شريحة أي شيء | صورة | 50 ميغابايت-400 ميجابايت | نموذج تجزئة الصور | تجزئة الصور | ||
| بيرت | نص | 100 ميغابايت -1جا بايت | نموذج تضمين النص | ✅ | البحث الدلالي |
يدعم Kalosm أيضًا مجموعة متنوعة من المرافق حول النماذج التي تم تدريبها مسبقًا. وتشمل هذه:
يستخدم Kalosm مكتبة تعليم الآلة Candle لتشغيل النماذج في الصدأ النقي. وهو يدعم النماذج الكمية والمتسارعة مع الأداء على قدم المساواة مع llama.cpp :
MISTRAL 7B
| مسرع | كالوس | llama.cpp |
|---|---|---|
| المعدن (M2) | 39 T/S. | 27 ر/ثانية |
يدعم Kalosm التوليد منظم مع محلات تعسفية. يستخدم محرك محلل مخصص وأخذ عينات وأخذ عينات من الإدراك في البنية لجعل توليد الهيكل أسرع من توليد النص غير المنضبط. يمكنك أن تأخذ أي نوع من الصدأ وإضافة #[derive(Parse, Schema)] لجعله قابل للاستخدام مع الجيل المنظم:
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:?}" ) ;
}بالإضافة إلى Regex ، يمكنك توفير قواعد اللغة الخاصة بك لإنشاء بيانات منظمة. يتيح لك ذلك تقييد الاستجابة على أي بنية تريدها بما في ذلك هياكل البيانات المعقدة مثل JSON و HTML و XML.
سوف تنقلك هذا Quickstart وتشغيله باستخدام chatbot بسيط. لنبدأ!
يتوفر دليل أكثر اكتمالا لـ KALOSM على موقع KALOSM ، وتتوفر أمثلة في مجلد الأمثلة.
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 الخاص بك 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 --releaseإذا كنت مهتمًا بأي من المشروعين ، فيمكنك الانضمام إلى Discord لمناقشة المشروع والحصول على المساعدة.