Floneum позволяет легко разработать приложения, которые используют локальные предварительно обученные модели искусственного интеллекта. В этом монорепо есть два основных проекта:
Kalosm-это простой интерфейс для предварительно обученных моделей в ржавчине, который поддерживает Floneum. Это позволяет легко взаимодействовать с предварительно обученными, языковыми, аудио и моделями изображений.
Kalosm поддерживает различные модели. Вот список моделей, которые в настоящее время поддерживаются:
| Модель | Модальность | Размер | Описание | Квантованный | Cuda + металл ускорился | Пример |
|---|---|---|---|---|---|---|
| Лама | Текст | 1B-70B | Языковая модель общего назначения | ✅ | ✅ | Лама 3 чат |
| Мистраль | Текст | 7-13b | Языковая модель общего назначения | ✅ | ✅ | Миштраль чат |
| Физ | Текст | 2b-4b | Модель языковой модели, ориентированная на небольшие рассуждения | ✅ | ✅ | PHI 3 чат |
| Шепот | Аудио | 20 МБ-1 ГБ | Аудио транскрипционная модель | ✅ | ✅ | Живая транскрипция шепота |
| Руерстчен | Изображение | 5 ГБ | Модель генерации изображений | ✅ | Rwuerstchen Generation | |
| ТРК | Изображение | 3 ГБ | Оптическая модель распознавания персонажей | ✅ | Распознавание текста | |
| Сегмент что угодно | Изображение | 50 МБ-400 МБ | Модель сегментации изображения | Сегментация изображения | ||
| Берт | Текст | 100 МБ-1 ГБ | Текстовая модель встраивания | ✅ | Семантический поиск |
Kalosm также поддерживает различные коммунальные услуги вокруг предварительно обученных моделей. К ним относятся:
Kalosm использует библиотеку Machine Machine Machine для запуска моделей в чистой ржавчине. Он поддерживает квантованные и ускоренные модели с производительностью наравне с llama.cpp :
Мишстраль 7b
| Ускоритель | Калоз | llama.cpp |
|---|---|---|
| Металл (M2) | 39 т/с | 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:?}" ) ;
}В дополнение к корпорации, вы можете предоставить свою собственную грамматику для генерации структурированных данных. Это позволяет ограничить ответ на любую структуру, которую вы хотите, включая сложные структуры данных, такие как JSON, HTML и XML.
Этот QuickStart заставит вас работать с простым чат -ботом. Начнем!
Более полное руководство для 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, чтобы обсудить проект и получить помощь.