add LFM2.5-VL-1.6B|LFM2-VL-1.6B
This commit is contained in:
+78
-58
@@ -33,70 +33,74 @@ use crate::models::{
|
||||
fun_asr_nano::generate::FunAsrNanoGenerateModel,
|
||||
glm_asr_nano::generate::GlmAsrNanoGenerateModel, glm_ocr::generate::GlmOcrGenerateModel,
|
||||
hunyuan_ocr::generate::HunyuanOCRGenerateModel, lfm2::generate::Lfm2GenerateModel,
|
||||
minicpm4::generate::MiniCPMGenerateModel, paddleocr_vl::generate::PaddleOCRVLGenerateModel,
|
||||
qwen2_5vl::generate::Qwen2_5VLGenerateModel, qwen3::generate::Qwen3GenerateModel,
|
||||
qwen3_5::generate::Qwen3_5GenerateModel, qwen3_asr::generate::Qwen3AsrGenerateModel,
|
||||
qwen3vl::generate::Qwen3VLGenerateModel, rmbg2_0::generate::RMBG2_0Model,
|
||||
voxcpm::generate::VoxCPMGenerate,
|
||||
lfm2vl::generate::Lfm2VLGenerateModel, minicpm4::generate::MiniCPMGenerateModel,
|
||||
paddleocr_vl::generate::PaddleOCRVLGenerateModel, qwen2_5vl::generate::Qwen2_5VLGenerateModel,
|
||||
qwen3::generate::Qwen3GenerateModel, qwen3_5::generate::Qwen3_5GenerateModel,
|
||||
qwen3_asr::generate::Qwen3AsrGenerateModel, qwen3vl::generate::Qwen3VLGenerateModel,
|
||||
rmbg2_0::generate::RMBG2_0Model, voxcpm::generate::VoxCPMGenerate,
|
||||
};
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)]
|
||||
pub enum WhichModel {
|
||||
#[value(name = "lfm2-1.2b", hide = true)]
|
||||
#[value(name = "lfm2-1.2b")]
|
||||
LFM2_1_2B,
|
||||
#[value(name = "lfm2.5-1.2b-instruct", hide = true)]
|
||||
#[value(name = "lfm2.5-1.2b-instruct")]
|
||||
LFM2_5_1_2BInstruct,
|
||||
#[value(name = "minicpm4-0.5b", hide = true)]
|
||||
#[value(name = "lfm2.5-vl-1.6b")]
|
||||
LFM2_5VL1_6B,
|
||||
#[value(name = "lfm2-vl-1.6b")]
|
||||
LFM2VL1_6B,
|
||||
#[value(name = "minicpm4-0.5b")]
|
||||
MiniCPM4_0_5B,
|
||||
#[value(name = "qwen2.5vl-3b", hide = true)]
|
||||
Qwen2_5vl3B,
|
||||
#[value(name = "qwen2.5vl-7b", hide = true)]
|
||||
Qwen2_5vl7B,
|
||||
#[value(name = "qwen3-0.6b", hide = true)]
|
||||
#[value(name = "qwen2.5vl-3b")]
|
||||
Qwen2_5VL3B,
|
||||
#[value(name = "qwen2.5vl-7b")]
|
||||
Qwen2_5VL7B,
|
||||
#[value(name = "qwen3-0.6b")]
|
||||
Qwen3_0_6B,
|
||||
#[value(name = "qwen3.5-0.8b", hide = true)]
|
||||
#[value(name = "qwen3.5-0.8b")]
|
||||
Qwen3_5_0_8B,
|
||||
#[value(name = "qwen3.5-2b", hide = true)]
|
||||
#[value(name = "qwen3.5-2b")]
|
||||
Qwen3_5_2B,
|
||||
#[value(name = "qwen3.5-4b", hide = true)]
|
||||
#[value(name = "qwen3.5-4b")]
|
||||
Qwen3_5_4B,
|
||||
#[value(name = "qwen3.5-9b", hide = true)]
|
||||
#[value(name = "qwen3.5-9b")]
|
||||
Qwen3_5_9B,
|
||||
#[value(name = "qwen3.5-gguf", hide = true)]
|
||||
#[value(name = "qwen3.5-gguf")]
|
||||
Qwen3_5Gguf,
|
||||
#[value(name = "qwen3asr-0.6b", hide = true)]
|
||||
#[value(name = "qwen3asr-0.6b")]
|
||||
Qwen3ASR0_6B,
|
||||
#[value(name = "qwen3asr-1.7b", hide = true)]
|
||||
#[value(name = "qwen3asr-1.7b")]
|
||||
Qwen3ASR1_7B,
|
||||
#[value(name = "qwen3vl-2b", hide = true)]
|
||||
Qwen3vl2B,
|
||||
#[value(name = "qwen3vl-4b", hide = true)]
|
||||
Qwen3vl4B,
|
||||
#[value(name = "qwen3vl-8b", hide = true)]
|
||||
Qwen3vl8B,
|
||||
#[value(name = "qwen3vl-32b", hide = true)]
|
||||
Qwen3vl32B,
|
||||
#[value(name = "deepseek-ocr", hide = true)]
|
||||
#[value(name = "qwen3vl-2b")]
|
||||
Qwen3VL2B,
|
||||
#[value(name = "qwen3vl-4b")]
|
||||
Qwen3VL4B,
|
||||
#[value(name = "qwen3vl-8b")]
|
||||
Qwen3VL8B,
|
||||
#[value(name = "qwen3vl-32b")]
|
||||
Qwen3VL32B,
|
||||
#[value(name = "deepseek-ocr")]
|
||||
DeepSeekOCR,
|
||||
#[value(name = "deepseek-ocr2", hide = true)]
|
||||
#[value(name = "deepseek-ocr2")]
|
||||
DeepSeekOCR2,
|
||||
#[value(name = "hunyuan-ocr", hide = true)]
|
||||
#[value(name = "hunyuan-ocr")]
|
||||
HunyuanOCR,
|
||||
#[value(name = "paddleocr-vl", hide = true)]
|
||||
#[value(name = "paddleocr-vl")]
|
||||
PaddleOCRVL,
|
||||
#[value(name = "paddleocr-vl1.5", hide = true)]
|
||||
#[value(name = "paddleocr-vl1.5")]
|
||||
PaddleOCRVL1_5,
|
||||
#[value(name = "rmbg2.0")]
|
||||
RMBG2_0,
|
||||
#[value(name = "voxcpm", hide = true)]
|
||||
#[value(name = "voxcpm")]
|
||||
VoxCPM,
|
||||
#[value(name = "voxcpm1.5", hide = true)]
|
||||
#[value(name = "voxcpm1.5")]
|
||||
VoxCPM1_5,
|
||||
#[value(name = "glm-asr-nano-2512", hide = true)]
|
||||
#[value(name = "glm-asr-nano-2512")]
|
||||
GlmASRNano2512,
|
||||
#[value(name = "fun-asr-nano-2512", hide = true)]
|
||||
#[value(name = "fun-asr-nano-2512")]
|
||||
FunASRNano2512,
|
||||
#[value(name = "glm-ocr", hide = true)]
|
||||
#[value(name = "glm-ocr")]
|
||||
GlmOCR,
|
||||
}
|
||||
|
||||
@@ -106,9 +110,11 @@ impl WhichModel {
|
||||
match self {
|
||||
WhichModel::LFM2_1_2B => "LiquidAI/LFM2-1.2B",
|
||||
WhichModel::LFM2_5_1_2BInstruct => "LiquidAI/LFM2.5-1.2B-Instruct",
|
||||
WhichModel::LFM2_5VL1_6B => "LiquidAI/LFM2.5-VL-1.6B",
|
||||
WhichModel::LFM2VL1_6B => "LiquidAI/LFM2-VL-1.6B",
|
||||
WhichModel::MiniCPM4_0_5B => "OpenBMB/MiniCPM4-0.5B",
|
||||
WhichModel::Qwen2_5vl3B => "Qwen/Qwen2.5-VL-3B-Instruct",
|
||||
WhichModel::Qwen2_5vl7B => "Qwen/Qwen2.5-VL-7B-Instruct",
|
||||
WhichModel::Qwen2_5VL3B => "Qwen/Qwen2.5-VL-3B-Instruct",
|
||||
WhichModel::Qwen2_5VL7B => "Qwen/Qwen2.5-VL-7B-Instruct",
|
||||
WhichModel::Qwen3_0_6B => "Qwen/Qwen3-0.6B",
|
||||
WhichModel::Qwen3_5_0_8B => "Qwen/Qwen3.5-0.8B",
|
||||
WhichModel::Qwen3_5_2B => "Qwen/Qwen3.5-2B",
|
||||
@@ -117,10 +123,10 @@ impl WhichModel {
|
||||
WhichModel::Qwen3_5Gguf => "GGUF",
|
||||
WhichModel::Qwen3ASR0_6B => "Qwen/Qwen3-ASR-0.6B",
|
||||
WhichModel::Qwen3ASR1_7B => "Qwen/Qwen3-ASR-1.7B",
|
||||
WhichModel::Qwen3vl2B => "Qwen/Qwen3-VL-2B-Instruct",
|
||||
WhichModel::Qwen3vl4B => "Qwen/Qwen3-VL-4B-Instruct",
|
||||
WhichModel::Qwen3vl8B => "Qwen/Qwen3-VL-8B-Instruct",
|
||||
WhichModel::Qwen3vl32B => "Qwen/Qwen3-VL-32B-Instruct",
|
||||
WhichModel::Qwen3VL2B => "Qwen/Qwen3-VL-2B-Instruct",
|
||||
WhichModel::Qwen3VL4B => "Qwen/Qwen3-VL-4B-Instruct",
|
||||
WhichModel::Qwen3VL8B => "Qwen/Qwen3-VL-8B-Instruct",
|
||||
WhichModel::Qwen3VL32B => "Qwen/Qwen3-VL-32B-Instruct",
|
||||
WhichModel::DeepSeekOCR => "deepseek-ai/DeepSeek-OCR",
|
||||
WhichModel::DeepSeekOCR2 => "deepseek-ai/DeepSeek-OCR-2",
|
||||
WhichModel::HunyuanOCR => "Tencent-Hunyuan/HunyuanOCR",
|
||||
@@ -143,17 +149,19 @@ impl WhichModel {
|
||||
| WhichModel::Qwen3_0_6B
|
||||
| WhichModel::LFM2_1_2B
|
||||
| WhichModel::LFM2_5_1_2BInstruct => "llm",
|
||||
WhichModel::Qwen2_5vl3B
|
||||
| WhichModel::Qwen2_5vl7B
|
||||
| WhichModel::Qwen3vl2B
|
||||
| WhichModel::Qwen3vl4B
|
||||
| WhichModel::Qwen3vl8B
|
||||
| WhichModel::Qwen3vl32B
|
||||
WhichModel::Qwen2_5VL3B
|
||||
| WhichModel::Qwen2_5VL7B
|
||||
| WhichModel::Qwen3VL2B
|
||||
| WhichModel::Qwen3VL4B
|
||||
| WhichModel::Qwen3VL8B
|
||||
| WhichModel::Qwen3VL32B
|
||||
| WhichModel::Qwen3_5_0_8B
|
||||
| WhichModel::Qwen3_5_2B
|
||||
| WhichModel::Qwen3_5_4B
|
||||
| WhichModel::Qwen3_5_9B
|
||||
| WhichModel::Qwen3_5Gguf => "vlm",
|
||||
| WhichModel::Qwen3_5Gguf
|
||||
| WhichModel::LFM2_5VL1_6B
|
||||
| WhichModel::LFM2VL1_6B => "vlm",
|
||||
// OCR models
|
||||
WhichModel::DeepSeekOCR
|
||||
| WhichModel::DeepSeekOCR2
|
||||
@@ -167,7 +175,8 @@ impl WhichModel {
|
||||
| WhichModel::GlmASRNano2512
|
||||
| WhichModel::FunASRNano2512 => "asr",
|
||||
// Image models
|
||||
WhichModel::RMBG2_0 | WhichModel::VoxCPM | WhichModel::VoxCPM1_5 => "image",
|
||||
WhichModel::RMBG2_0 => "image",
|
||||
WhichModel::VoxCPM | WhichModel::VoxCPM1_5 => "tts",
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -190,6 +199,7 @@ pub trait GenerateModel {
|
||||
pub enum ModelInstance<'a> {
|
||||
MiniCPM4(MiniCPMGenerateModel<'a>),
|
||||
Lfm2(Lfm2GenerateModel<'a>),
|
||||
Lfm2VL(Lfm2VLGenerateModel<'a>),
|
||||
Qwen2_5VL(Qwen2_5VLGenerateModel<'a>),
|
||||
Qwen3(Qwen3GenerateModel<'a>),
|
||||
Qwen3_5(Qwen3_5GenerateModel<'a>),
|
||||
@@ -210,6 +220,7 @@ impl<'a> GenerateModel for ModelInstance<'a> {
|
||||
match self {
|
||||
ModelInstance::MiniCPM4(model) => model.generate(mes),
|
||||
ModelInstance::Lfm2(model) => model.generate(mes),
|
||||
ModelInstance::Lfm2VL(model) => model.generate(mes),
|
||||
ModelInstance::Qwen2_5VL(model) => model.generate(mes),
|
||||
ModelInstance::Qwen3(model) => model.generate(mes),
|
||||
ModelInstance::Qwen3_5(model) => model.generate(mes),
|
||||
@@ -240,6 +251,7 @@ impl<'a> GenerateModel for ModelInstance<'a> {
|
||||
match self {
|
||||
ModelInstance::MiniCPM4(model) => model.generate_stream(mes),
|
||||
ModelInstance::Lfm2(model) => model.generate_stream(mes),
|
||||
ModelInstance::Lfm2VL(model) => model.generate_stream(mes),
|
||||
ModelInstance::Qwen2_5VL(model) => model.generate_stream(mes),
|
||||
ModelInstance::Qwen3(model) => model.generate_stream(mes),
|
||||
ModelInstance::Qwen3_5(model) => model.generate_stream(mes),
|
||||
@@ -276,11 +288,19 @@ pub fn load_model<'a>(
|
||||
let model = Lfm2GenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Lfm2(model)
|
||||
}
|
||||
WhichModel::Qwen2_5vl3B => {
|
||||
WhichModel::LFM2_5VL1_6B => {
|
||||
let model = Lfm2VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Lfm2VL(model)
|
||||
}
|
||||
WhichModel::LFM2VL1_6B => {
|
||||
let model = Lfm2VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Lfm2VL(model)
|
||||
}
|
||||
WhichModel::Qwen2_5VL3B => {
|
||||
let model = Qwen2_5VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Qwen2_5VL(model)
|
||||
}
|
||||
WhichModel::Qwen2_5vl7B => {
|
||||
WhichModel::Qwen2_5VL7B => {
|
||||
let model = Qwen2_5VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Qwen2_5VL(model)
|
||||
}
|
||||
@@ -320,19 +340,19 @@ pub fn load_model<'a>(
|
||||
let model = Qwen3AsrGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Qwen3ASR(model)
|
||||
}
|
||||
WhichModel::Qwen3vl2B => {
|
||||
WhichModel::Qwen3VL2B => {
|
||||
let model = Qwen3VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Qwen3VL(Box::new(model))
|
||||
}
|
||||
WhichModel::Qwen3vl4B => {
|
||||
WhichModel::Qwen3VL4B => {
|
||||
let model = Qwen3VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Qwen3VL(Box::new(model))
|
||||
}
|
||||
WhichModel::Qwen3vl8B => {
|
||||
WhichModel::Qwen3VL8B => {
|
||||
let model = Qwen3VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Qwen3VL(Box::new(model))
|
||||
}
|
||||
WhichModel::Qwen3vl32B => {
|
||||
WhichModel::Qwen3VL32B => {
|
||||
let model = Qwen3VLGenerateModel::init(path, None, None)?;
|
||||
ModelInstance::Qwen3VL(Box::new(model))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user