merge pr/go-restream/20
This commit is contained in:
+39
-1
@@ -1,7 +1,7 @@
|
||||
use std::{net::IpAddr, str::FromStr, time::Duration};
|
||||
|
||||
use aha::{models::WhichModel, utils::get_default_save_dir};
|
||||
use clap::{Args, Parser, Subcommand};
|
||||
use clap::{Args, Parser, Subcommand, ValueEnum};
|
||||
use modelscope::ModelScope;
|
||||
use rocket::{
|
||||
Config,
|
||||
@@ -55,6 +55,8 @@ enum Commands {
|
||||
Download(DownloadArgs),
|
||||
/// Run model inference directly
|
||||
Run(RunArgs),
|
||||
/// List all supported models
|
||||
List,
|
||||
}
|
||||
|
||||
/// Common/shared arguments for server operations
|
||||
@@ -194,6 +196,41 @@ fn get_model_id(model: WhichModel) -> &'static str {
|
||||
}
|
||||
}
|
||||
|
||||
/// List all supported models
|
||||
fn run_list() -> anyhow::Result<()> {
|
||||
let models = [
|
||||
WhichModel::MiniCPM4_0_5B,
|
||||
WhichModel::Qwen2_5vl3B,
|
||||
WhichModel::Qwen2_5vl7B,
|
||||
WhichModel::Qwen3_0_6B,
|
||||
WhichModel::Qwen3vl2B,
|
||||
WhichModel::Qwen3vl4B,
|
||||
WhichModel::Qwen3vl8B,
|
||||
WhichModel::Qwen3vl32B,
|
||||
WhichModel::DeepSeekOCR,
|
||||
WhichModel::HunyuanOCR,
|
||||
WhichModel::PaddleOCRVL,
|
||||
WhichModel::RMBG2_0,
|
||||
WhichModel::VoxCPM,
|
||||
WhichModel::VoxCPM1_5,
|
||||
WhichModel::GlmASRNano2512,
|
||||
WhichModel::FunASRNano2512,
|
||||
];
|
||||
|
||||
println!("Available models:");
|
||||
println!();
|
||||
println!("{:<30} {}", "Model Name", "ModelScope ID");
|
||||
println!("{}", "-".repeat(80));
|
||||
for model in models {
|
||||
let possible_value = model.to_possible_value().unwrap();
|
||||
let name = possible_value.get_name();
|
||||
let id = get_model_id(model);
|
||||
println!("{:<30} {}", name, id);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Run the 'cli' subcommand: download model (if needed) and start service
|
||||
async fn run_cli(args: CliArgs) -> anyhow::Result<()> {
|
||||
let CliArgs { common, weight_path, save_dir, download_retries } = args;
|
||||
@@ -329,6 +366,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
Some(Commands::Serv(args)) => run_serv(args).await,
|
||||
Some(Commands::Download(args)) => run_download(args).await,
|
||||
Some(Commands::Run(args)) => run_run(args),
|
||||
Some(Commands::List) => run_list(),
|
||||
None => {
|
||||
// Backward compatibility: when no subcommand is provided, use 'cli' behavior
|
||||
let model = cli.model.expect("Model is required (use -m or --model)");
|
||||
|
||||
+16
-16
@@ -29,37 +29,37 @@ use crate::models::{
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)]
|
||||
pub enum WhichModel {
|
||||
#[value(name = "minicpm4-0.5b")]
|
||||
#[value(name = "minicpm4-0.5b", hide = true)]
|
||||
MiniCPM4_0_5B,
|
||||
#[value(name = "qwen2.5vl-3b")]
|
||||
#[value(name = "qwen2.5vl-3b", hide = true)]
|
||||
Qwen2_5vl3B,
|
||||
#[value(name = "qwen2.5vl-7b")]
|
||||
#[value(name = "qwen2.5vl-7b", hide = true)]
|
||||
Qwen2_5vl7B,
|
||||
#[value(name = "qwen3-0.6b")]
|
||||
#[value(name = "qwen3-0.6b", hide = true)]
|
||||
Qwen3_0_6B,
|
||||
#[value(name = "qwen3vl-2b")]
|
||||
#[value(name = "qwen3vl-2b", hide = true)]
|
||||
Qwen3vl2B,
|
||||
#[value(name = "qwen3vl-4b")]
|
||||
#[value(name = "qwen3vl-4b", hide = true)]
|
||||
Qwen3vl4B,
|
||||
#[value(name = "qwen3vl-8b")]
|
||||
#[value(name = "qwen3vl-8b", hide = true)]
|
||||
Qwen3vl8B,
|
||||
#[value(name = "qwen3vl-32b")]
|
||||
#[value(name = "qwen3vl-32b", hide = true)]
|
||||
Qwen3vl32B,
|
||||
#[value(name = "deepseek-ocr")]
|
||||
#[value(name = "deepseek-ocr", hide = true)]
|
||||
DeepSeekOCR,
|
||||
#[value(name = "hunyuan-ocr")]
|
||||
#[value(name = "hunyuan-ocr", hide = true)]
|
||||
HunyuanOCR,
|
||||
#[value(name = "paddleocr-vl")]
|
||||
#[value(name = "paddleocr-vl", hide = true)]
|
||||
PaddleOCRVL,
|
||||
#[value(name = "RMBG2.0")]
|
||||
#[value(name = "RMBG2.0", hide = true)]
|
||||
RMBG2_0,
|
||||
#[value(name = "voxcpm")]
|
||||
#[value(name = "voxcpm", hide = true)]
|
||||
VoxCPM,
|
||||
#[value(name = "voxcpm1.5")]
|
||||
#[value(name = "voxcpm1.5", hide = true)]
|
||||
VoxCPM1_5,
|
||||
#[value(name = "glm-asr-nano-2512")]
|
||||
#[value(name = "glm-asr-nano-2512", hide = true)]
|
||||
GlmASRNano2512,
|
||||
#[value(name = "fun-asr-nano-2512")]
|
||||
#[value(name = "fun-asr-nano-2512", hide = true)]
|
||||
FunASRNano2512,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user