From c582c4cd0a60f9e014a7588d0b1c71cf5c495ba1 Mon Sep 17 00:00:00 2001 From: XiaoYang Date: Fri, 6 Feb 2026 16:13:50 +0800 Subject: [PATCH] docs: update and optimize README and project documentation system - Update README.md with improved formatting, logo, badges, and comprehensive documentation - Add README.en.md with English translation of the documentation - Include detailed quick start guide, CLI reference, and supported models table - Add changelog information highlighting recent features - Add script directory and adjust script file locations --- .gitignore | 19 +- CHANGELOG.md | 112 ---- README.en.md | 228 +++++++ README.md | 449 +++++-------- assets/img/logo.png | Bin 0 -> 378203 bytes docs/api.md | 461 ++++++++++++++ docs/api.zh-CN.md | 461 ++++++++++++++ docs/changelog.md | 90 +++ docs/changelog.zh-CN.md | 90 +++ docs/cli.md | 300 +++++++++ docs/{CLI_USAGE.md => cli.zh-CN.md} | 16 +- docs/concepts.md | 411 ++++++++++++ docs/concepts.zh-CN.md | 411 ++++++++++++ docs/development.md | 601 ++++++++++++++++++ docs/development.zh-CN.md | 601 ++++++++++++++++++ docs/getting-started.md | 376 +++++++++++ docs/getting-started.zh-CN.md | 376 +++++++++++ docs/installation.md | 420 ++++++++++++ docs/installation.zh-CN.md | 419 ++++++++++++ docs/supported-models.md | 92 +++ docs/supported-models.zh-CN.md | 92 +++ .../download_and_run.sh | 0 22 files changed, 5613 insertions(+), 412 deletions(-) delete mode 100644 CHANGELOG.md create mode 100644 README.en.md create mode 100644 assets/img/logo.png create mode 100644 docs/api.md create mode 100644 docs/api.zh-CN.md create mode 100644 docs/changelog.md create mode 100644 docs/changelog.zh-CN.md create mode 100644 docs/cli.md rename docs/{CLI_USAGE.md => cli.zh-CN.md} (96%) create mode 100644 docs/concepts.md create mode 100644 docs/concepts.zh-CN.md create mode 100644 docs/development.md create mode 100644 docs/development.zh-CN.md create mode 100644 docs/getting-started.md create mode 100644 docs/getting-started.zh-CN.md create mode 100644 docs/installation.md create mode 100644 docs/installation.zh-CN.md create mode 100644 docs/supported-models.md create mode 100644 docs/supported-models.zh-CN.md rename download_and_run.sh => scripts/download_and_run.sh (100%) diff --git a/.gitignore b/.gitignore index 2a0038a..c628483 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,19 @@ +.gitignore + /target -.idea \ No newline at end of file +.idea +/models + +/ope* +AG* +CLA* + +.claude +README.md.bak +test.mp3 +docs/MODEL_DEVELOPMENT_GUIDE.md +.DS_Store +.gitignore + +bak +.gitignore diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index b859a3e..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,112 +0,0 @@ -# Changelog - -## [Unreleased] - 2025-02-04 - -### Added -- Support for Qwen3-ASR model - -## [Unreleased] - -### Added - -- **CLI `run` Subcommand**: Direct model inference from CLI without HTTP service overhead: - - `aha run` - Run model inference directly - - `-m, --model ` - Specify which model to use - - `-in, --input ` - Input text or file path (model-specific interpretation) - - `-out, --output ` - Output file path (optional, auto-generated if not specified) - - `--weight-path ` - Local model weight path (required) - - -### Changed - -- **CLI Structure**: Refactored CLI to use clap's Subcommand feature while maintaining backward compatibility -- **Backward Compatibility**: Commands without subcommand now default to `cli` subcommand: - - `aha -m qwen3vl-2b` is equivalent to `aha cli -m qwen3vl-2b` - - All existing parameter options and defaults remain unchanged - -### Technical Details - -**Subcommand Parameters:** - -`aha cli`: -- `-a, --address
` - Server address (default: 127.0.0.1) -- `-p, --port ` - Server port (default: 10100) -- `-m, --model ` - Model to use (required) -- `--weight-path ` - Local model weight path (optional) -- `--save-dir ` - Directory to save downloaded model (optional) -- `--download-retries ` - Download retry attempts (default: 3) - -`aha serv`: -- `-a, --address
` - Server address (default: 127.0.0.1) -- `-p, --port ` - Server port (default: 10100) -- `-m, --model ` - Model to use (required) -- `--weight-path ` - Local model weight path (required) - -`aha download`: -- `-m, --model ` - Model to download (required) -- `-s, --save-dir ` - Directory to save downloaded model (optional) -- `--download-retries ` - Download retry attempts (default: 3) - -**Code Changes:** -- Modified `src/main.rs` only -- Extracted common functions: `get_model_id()`, `start_http_server()` -- Reused existing `download_model()` and `init()` functions -- No changes to other modules or dependencies - -## [0.1.8] - 2025-01-20 - -### Added - -- Support for Fun-ASR-Nano-2512 model -- Support for Qwen3-0.6B model - -## [0.1.7] - 2024-XX-XX - -### Added - -- Support for GLM-ASR-Nano-2512 model - -## [0.1.6] - 2024-XX-XX - -### Added - -- Support for RMBG-2.0 model (background removal) - -## [0.1.5] - 2024-XX-XX - -### Added - -- Support for VoxCPM1.5 model - -## [0.1.4] - 2024-XX-XX - -### Added - -- Support for PaddleOCR-VL model - -## [0.1.3] - 2024-XX-XX - -### Added - -- Support for Hunyuan-OCR model - -## [0.1.2] - 2024-XX-XX - -### Added - -- Support for DeepSeek-OCR model - -## [0.1.1] - 2024-XX-XX - -### Added - -- Support for Qwen3VL model family (2B, 4B, 8B, 32B) - -## [0.1.0] - 2024-XX-XX - -### Added - -- Initial release -- Support for Qwen2.5VL models (3B, 7B) -- Support for MiniCPM4-0.5B model -- Support for VoxCPM-0.5B model diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..641ffba --- /dev/null +++ b/README.en.md @@ -0,0 +1,228 @@ +

+ aha logo +

+ +

+ + + GitHub License + + + GitHub Stars + + + GitHub Issues + +

+ +

+ 简体中文 | English +

+ +# aha + +**Lightweight AI Inference Engine — All-in-one Solution for Text, Vision, Speech, and OCR** + +aha is a high-performance, cross-platform AI inference engine built with Rust and the Candle framework. It brings state-of-the-art AI models to your local machine—no API keys, no cloud dependencies, just pure, fast AI running directly on your hardware. + +## Changelog + +### v0.2.0 (2026-02-05) +- Added Qwen3-ASR speech recognition model + +### v0.1.9 (2026-01-31) +- Added CLI `list` subcommand to show supported models +- Added CLI subcommand structure support (`cli`, `serv`, `download`, `run`) +- Fixed Qwen3VL thinking startswith bug +- Fixed `aha run` multiple inputs bug + +### v0.1.8 (2026-01-17) +- Added Qwen3 text model support +- Added Fun-ASR-Nano-2512 speech recognition model +- Fixed ModelScope Fun-ASR-Nano model load error +- Updated audio resampling with rubato + +### v0.1.7 (2026-01-07) +- Added GLM-ASR-Nano-2512 speech recognition model +- Merged Metal (GPU) support for Apple Silicon +- Added dynamic home directory and model download script + +**[View full changelog](docs/changelog.md)** → + +## Quick Start + +### Installation + +```bash +git clone https://github.com/jhqxxx/aha.git +cd aha +cargo build --release +``` + +**Optional Features:** + +```bash +# CUDA (NVIDIA GPU acceleration) +cargo build --release --features cuda + +# Metal (Apple GPU acceleration for macOS) +cargo build --release --features metal + +# Flash Attention (faster inference) +cargo build --release --features flash-attn + +# FFmpeg (multimedia processing) +cargo build --release --features ffmpeg + +# Combine multiple features +cargo build --release --features "cuda,flash-attn" +``` + +### CLI Quick Reference + +```bash + +# List all supported models +aha list + +# Download model only +aha download -m qwen3asr-0.6b + +# Download model and start service +aha -m qwen3asr-0.6b + +# Run inference directly (without starting service) +aha run -m qwen3asr-0.6b -i "audio.wav" + +# Start service only (model already downloaded) +aha serv -m qwen3asr-0.6b -p 10100 + +``` + +### Chat + +```bash +aha serv -m qwen3-0.6b -p 10100 +``` + +Then use the unified (OpenAI-compatible) API: + +```bash +curl http://localhost:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [{"role": "user", "content": "Hello!"}] + } +' +``` + +### Supported Models + +| Category | Models | +|----------|--------| +| **Text** | Qwen3, MiniCPM4 | +| **Vision** | Qwen2.5-VL, Qwen3-VL | +| **OCR** | DeepSeek-OCR, Hunyuan-OCR, PaddleOCR-VL | +| **ASR** | GLM-ASR-Nano, Fun-ASR-Nano, Qwen3-ASR | +| **Audio** | VoxCPM, VoxCPM1.5 | +| **Image** | RMBG-2.0 (background removal) | + +## Documentation + +| Document | Description | +|----------|-------------| +| [Getting Started](docs/getting-started.md) | First steps with aha | +| [Installation](docs/installation.md) | Detailed installation guide | +| [CLI Reference](docs/cli.md) | Command-line interface | +| [API Documentation](docs/api.md) | Library & REST API | +| [Supported Models](docs/supported-models.md) | Available AI models | +| [Concepts](docs/concepts.md) | Architecture & design | +| [Development](docs/development.md) | Contributing guide | +| [Changelog](docs/changelog.md) | Version history | + +## Why aha? +- **🚀 High-Performance Inference** - Powered by Candle framework for efficient tensor computation and model inference +- **🔧 Unified Interface** — One tool for text, vision, speech, and OCR +- **📦 Local-First** — All processing runs locally, no data leaves your machine +- **🎯 Cross-Platform** — Works on Linux, macOS, and Windows +- **⚡ GPU Accelerated** — Optional CUDA support for faster inference +- **🛡️ Memory Safe** — Built with Rust for reliability +- **🧠 Attention Optimization** - Optional Flash Attention support for optimized long sequence processing + +## Development + +### Using aha as a Library +> cargo add aha + +```bash +# VoxCPM example +use aha::models::voxcpm::generate::VoxCPMGenerate; +use aha::utils::audio_utils::save_wav; +use anyhow::Result; + +fn main() -> Result<()> { + let model_path = "xxx/openbmb/VoxCPM-0.5B/"; + + let mut voxcpm_generate = VoxCPMGenerate::init(model_path, None, None)?; + + let generate = voxcpm_generate.generate( + "The sun is shining bright, flowers smile at me, birds say early early early".to_string(), + None, + None, + 2, + 100, + 10, + 2.0, + false, + 6.0, + )?; + + let _ = save_wav(&generate, "voxcpm.wav")?; + Ok(()) +} +``` + +### Extending New Models + +- Create new model file in src/models/ +- Export in src/models/mod.rs +- Add support for CLI model inference in src/exec/ +- Add tests and examples in tests/ + +## Features + +- High-performance inference via Candle framework +- Multi-modal model support (vision, language, speech) +- Clean, easy-to-use API design +- Minimal dependencies, compact binaries +- Flash Attention support for long sequences +- FFmpeg support for multimedia processing + +## License + +Apache-2.0 — See [LICENSE](LICENSE) for details. + +## Acknowledgments + +- [Candle](https://github.com/huggingface/candle) - Excellent Rust ML framework +- All model authors and contributors + +--- + +

+ Built with ❤️ by the aha team +

+ +

+ We're continuously expanding our model support. Contributions are welcome! +

+ +

+ If this project helps you, please consider giving us a ⭐ Star! +

diff --git a/README.md b/README.md index 6a08900..9193e6a 100644 --- a/README.md +++ b/README.md @@ -1,241 +1,167 @@ -# aha -一个基于 Candle 框架的 Rust 模型推理库,提供高效、易用的多模态模型推理能力。 +

+ aha logo +

-## 特性 -* 🚀 高性能推理 - 基于 Candle 框架,提供高效的张量计算和模型推理 -* 🎯 多模型支持 - 集成视觉、语言和语音多模态模型 -* 🔧 易于使用 - 简洁的 API 设计,快速上手 -* 🛡️ 内存安全 - 得益于 Rust 的所有权系统,确保内存安全 -* 📦 轻量级 - 最小化依赖,编译产物小巧 -* ⚡ GPU 加速 - 可选 CUDA 支持 -* 🧠 注意力优化 - 可选 Flash Attention 支持,优化长序列处理 +

+ + + GitHub License + + + GitHub Stars + + + GitHub Issues + +

-## 支持的模型 -### 当前已实现 -* [Qwen2.5VL](https://huggingface.co/collections/Qwen/qwen25-vl) - 阿里通义千问 2.5 多模态大语言模型 - - 模型:[Qwen2.5-VL-3B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct) 开源协议:[Qwen RESEARCH LICENSE AGREEMENT](https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct/blob/main/LICENSE) - - 模型:[Qwen/Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) -* [MiniCPM4](https://huggingface.co/collections/openbmb/minicpm4) - 面壁智能 MiniCPM 系列语言模型 - - 模型: - - huggingface: [MiniCPM4-0.5B](https://huggingface.co/openbmb/MiniCPM4-0.5B) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - AtomGit: [MiniCPM4-0.5B](https://ai.atomgit.com/OpenBMB/MiniCPM4-0.5B) -* [VoxCPM](https://huggingface.co/collections/openbmb/voxcpm) - 面壁智能语音生成模型 - - 模型: - - huggingface: [VoxCPM-0.5B](https://huggingface.co/openbmb/VoxCPM-0.5B) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - AtomGit: [VoxCPM-0.5B](https://ai.atomgit.com/OpenBMB/VoxCPM-0.5B) -* [Qwen3VL](https://huggingface.co/collections/Qwen/qwen3-vl) - 阿里通义千问 3 多模态大语言模型 - - 模型:[Qwen3-VL-2B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-2B-Instruct) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - 模型:[Qwen3-VL-4B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-4B-Instruct) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - 模型:[Qwen3-VL-8B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-8B-Instruct) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - 模型:[Qwen3-VL-32B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-32B-Instruct) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) -* DeepSeek-OCR - 深度求索光学文字识别模型 - - 模型:[DeepSeek-OCR](https://huggingface.co/deepseek-ai/DeepSeek-OCR) 开源协议:[MIT](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/mit.md) -* Hunyuan-OCR - 腾讯混元光学文字识别模型 - - 模型: - - huggingface: [HunyuanOCR](https://huggingface.co/tencent/HunyuanOCR) 开源协议:[TENCENT HUNYUAN COMMUNITY LICENSE AGREEMENT](https://huggingface.co/tencent/HunyuanOCR/blob/main/LICENSE) - - AtomGit: [HunyuanOCR](https://ai.atomgit.com/tencent_hunyuan/HunyuanOCR) -* [PaddleOCR-VL](https://huggingface.co/collections/PaddlePaddle/paddleocr-vl) - 百度飞桨光学文字识别模型 - - 模型: - - huggingface: [PaddleOCR-VL](https://huggingface.co/PaddlePaddle/PaddleOCR-VL) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - AtomGit: [PaddleOCR-VL](https://ai.atomgit.com/paddlepaddle/PaddleOCR-VL) -* [VoxCPM1.5](https://huggingface.co/collections/openbmb/voxcpm) - 面壁智能语音生成模型1.5版本 - - 模型: - - huggingface: [VoxCPM1.5](https://huggingface.co/openbmb/VoxCPM1.5) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - AtomGit: [VoxCPM1.5](https://ai.atomgit.com/OpenBMB/VoxCPM1.5) -* [RMBG2.0](https://huggingface.co/collections/briaai/rmbg) - RMBGv2.0由BRIA AI开发,供非商业用途使用。 - - 模型:[RMBG2.0](https://huggingface.co/briaai/RMBG-2.0) 开源协议:[Attribution-NonCommercial 4.0 International](https://creativecommons.org/licenses/by-nc/4.0/deed.en) -* GLM-ASR-Nano-2512 - 智谱AI语音识别模型 - - 模型: - - huggingface: [GLM-ASR-Nano-2512](https://huggingface.co/zai-org/GLM-ASR-Nano-2512) 开源协议:[MIT](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/mit.md) - - AtomGit: [GLM-ASR-Nano-2512](https://ai.atomgit.com/zai-org/GLM-ASR-Nano-2512) -* Fun-ASR-Nano-2512 - 通义百聆语音识别模型 - - 模型:[Fun-ASR-Nano-2512](https://huggingface.co/FunAudioLLM/Fun-ASR-Nano-2512) 开源协议未标明 -* [Qwen3](https://huggingface.co/collections/Qwen/qwen3) - 通义千问 Qwen3系列语言模型 - - 模型:[Qwen3-0.6B](https://huggingface.co/Qwen/Qwen3-0.6B) 开源协议: [Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) -* [Qwen3-ASR](https://huggingface.co/collections/Qwen/qwen3-asr) - 通义千问 Qwen3语音识别模型 - - 模型:[Qwen3-ASR-0.6B](https://huggingface.co/Qwen/Qwen3-ASR-0.6B) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) - - 模型:[Qwen3-ASR-1.7B](https://huggingface.co/Qwen/Qwen3-ASR-1.7B) 开源协议:[Apache license 2.0](https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md) +

+ English | 简体中文 +

-## 计划支持 -我们持续扩展支持的模型列表,欢迎贡献! +# aha -⭐ 如果这个项目对你有帮助,请给我们一个 Star! +**轻量 AI 推理引擎 —— 文本、视觉、语音与 OCR 一站式解决方案** -## 环境依赖 -* 启用ffmpeg的feature时: - * ubuntu/WSL - ```bash - sudo apt-get update - sudo apt-get install -y clang pkg-config ffmpeg libavutil-dev libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libswresample-dev libswscale-dev - ``` - * windows参考: https://github.com/zmwangx/rust-ffmpeg/wiki/Notes-on-building +aha 是一款基于 Rust 和 Candle 框架构建的高性能跨平台 AI 推理引擎。将最先进的 AI 模型带到您的本地机器——无需 API 密钥,无需云依赖,纯粹、快速的 AI 直接在您的硬件上运行。 + +## 更新日志 + +### v0.2.0 (2026-02-05) +- 新增 Qwen3-ASR 语音识别模型 + +### v0.1.9 (2026-01-31) +- 新增 CLI `list` 子命令,显示支持的模型 +- 新增 CLI 子命令结构支持(`cli`、`serv`、`download`、`run`) +- 修复 Qwen3VL thinking startswith bug +- 修复 `aha run` 多输入 bug + +### v0.1.8 (2026-01-17) +- 新增 Qwen3 文本模型支持 +- 新增 Fun-ASR-Nano-2512 语音识别模型 +- 修复 ModelScope Fun-ASR-Nano 模型加载错误 +- 使用 rubato 更新音频重采样 + +### v0.1.7 (2026-01-07) +- 新增 GLM-ASR-Nano-2512 语音识别模型 +- 合并 Metal (GPU) 支持,适用于 Apple Silicon +- 新增动态主目录和模型下载脚本 + +**[查看完整更新日志](docs/changelog.zh-CN.md)** → + +## 快速开始 + +### 安装 -## 功能特性 -项目提供了几个可选的功能特性,您可以根据需要启用它们: -* flash-attn: 启用 Flash Attention 支持以提升模型推理性能: ```bash -cargo build -r --features flash-attn +git clone https://github.com/jhqxxx/aha.git +cd aha +cargo build --release ``` -* cuda: 为 candle 核心组件启用 CUDA 支持,实现 Nvidia GPU 加速计算: -```bash -cargo build -r --features cuda -``` - -* cuda: 为 candle 核心组件启用 Metal 支持,利用 Apple GPU 加速计算(适用于 macOS/iOS 平台): -```bash -cargo build -r --features metal -``` - -* ffmpeg: 启用 FFmpeg 支持,提供多媒体处理功能: -```bash -cargo build -r --features ffmpeg -``` -* 组合使用功能特性 +**可选特性:** ```bash -# 同时启用 CUDA 和 Flash Attention 以获得最佳性能 -cargo build -r --features "cuda,flash-attn" -``` -## 命令行工具 (CLI) -项目提供命令行工具,支持模型下载、服务启动和直接推理等多种操作。 +# CUDA (NVIDIA GPU 加速) +cargo build --release --features cuda + +# Metal (Apple GPU 加速,适用于 macOS) +cargo build --release --features metal + +# Flash Attention (更快推理) +cargo build --release --features flash-attn + +# FFmpeg (多媒体处理) +cargo build --release --features ffmpeg + +# 组合多个特性 +cargo build --release --features "cuda,flash-attn" +``` + +### CLI 快速参考 -### 快速开始 ```bash + +# 列出所有支持的模型 +aha list + +# 仅下载模型 +aha download -m qwen3asr-0.6b + # 下载模型并启动服务 aha -m qwen3asr-0.6b # 直接运行推理(无需启动服务) -aha run -m qwen3asr-0.6b -i "audio.wav" --weight-path /path/to/model +aha run -m qwen3asr-0.6b -i "audio.wav" + +# 仅启动服务(模型已下载) +aha serv -m qwen3asr-0.6b -p 10100 -# 仅下载模型 -aha download -m qwen3asr-0.6b ``` -### 主要功能 -* 模型管理 - 自动下载、本地模型加载 -* 服务模式 - 启动 HTTP API 服务 -* 直接推理 - 命令行直接执行推理任务 -* 多模型支持 - 支持aha已实现的模型类型 -### 详细使用说明 -请参阅 [CLI_USAGE.md](./docs/CLI_USAGE.md) 获取完整的命令行工具使用说明、参数详解和支持的模型列表。 +### 对话 -## 安装及使用 - -### 从源码构建部署 ```bash -git clone https://github.com/jhqxxx/aha.git -cd aha +aha serv -m qwen3-0.6b -p 10100 ``` -#### cargo run 运行参数说明 -##### 基本用法 +然后使用统一(兼容 OpenAI)的 API: + ```bash -cargo run -F cuda -r -- [参数] +curl http://localhost:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [{"role": "user", "content": "你好!"}] + }' ``` -##### 参数详解 -1. 端口设置 ------ - -p, --port -* 设置HTTP服务监听的端口号 -* 默认值:10100 -* 示例:--port 8080 或 -p 8080 -2. 模型选择(必选) ------ - -m, --model -* 指定要加载的模型类型 -* 可选值: - * minicpm4-0.5b:OpenBMB/MiniCPM4-0.5B 模型 - * qwen2.5vl-3b:Qwen/Qwen2.5-VL-3B-Instruct 模型 - * qwen2.5vl-7b:Qwen/Qwen2.5-VL-7B-Instruct 模型 - * qwen3-0.6b: Qwen/Qwen3-0.6B 模型 - * qwen3asr-0.6b: Qwen/Qwen3-ASR-0.6B 模型 - * qwen3asr-1.7b: Qwen/Qwen3-ASR-1.7B 模型 - * qwen3vl-2b:Qwen/Qwen3-VL-2B-Instruct 模型 - * qwen3vl-4b:Qwen/Qwen3-VL-4B-Instruct 模型 - * qwen3vl-8b:Qwen/Qwen3-VL-8B-Instruct 模型 - * qwen3vl-32b:Qwen/Qwen3-VL-32B-Instruct 模型 - * deepseek-ocr: deepseek-ai/DeepSeek-OCR 模型 - * hunyuan-ocr: Tencent-Hunyuan/HunyuanOCR 模型 - * paddleocr-vl: PaddlePaddle/PaddleOCR-VL 模型 - * rmbg2.0: AI-ModelScope/RMBG-2.0 模型 - * voxcpm: OpenBMB/VoxCPM-0.5B 模型 - * voxcpm1.5: OpenBMB/VoxCPM1.5 模型 - * glm-asr-nano-2512: ZhipuAI/GLM-ASR-Nano-2512 模型 - * fun-asr-nano-2512: FunAudioLLM/Fun-ASR-Nano-2512 模型 -* 示例:--model deepseek-ocr 或 -m qwen3vl-2b -3. 权重路径 ------ - --weight-path -* 指定本地模型权重文件路径 -* 如果指定此参数,则跳过模型下载步骤 -* 示例:--weight-path /path/to/model/dir +### 支持的模型 -4. 保存路径 ------ - --save-dir -* 指定模型下载保存的目录 -* 默认保存在用户主目录下的 .aha 文件夹中 -* 示例:--save-dir /custom/model/path +| 类别 | 模型 | +|------|------| +| **文本** | Qwen3, MiniCPM4 | +| **视觉** | Qwen2.5-VL, Qwen3-VL | +| **OCR** | DeepSeek-OCR, Hunyuan-OCR, PaddleOCR-VL | +| **ASR** | GLM-ASR-Nano, Fun-ASR-Nano,Qwen3-ASR | +| **音频** | VoxCPM, VoxCPM1.5 | +| **图像** | RMBG-2.0 (背景移除) | -5. 下载重试次数 ------ - --download-retries -* 设置模型下载失败时的最大重试次数 -* 默认值:3次 -* 示例:--download-retries 5 +## 文档 -##### 注意事项 -* 参数前需要使用双横线 -- 分隔 cargo 命令和应用程序参数 -* 模型参数 (--model 或 -m) 是必需的 -* 如果未指定 --weight-path,程序会自动下载指定模型 -* 下载的模型默认保存在 ~/.aha/ 目录下(除非指定了 --save-dir) +| 文档 | 描述 | +|------|------| +| [快速入门](docs/getting-started.zh-CN.md) | aha 入门指南 | +| [安装指南](docs/installation.zh-CN.md) | 详细安装说明 | +| [CLI 参考](docs/cli.zh-CN.md) | 命令行界面 | +| [API 文档](docs/api.zh-CN.md) | 库与 REST API | +| [支持的模型](docs/supported-models.zh-CN.md) | 可用的 AI 模型 | +| [核心概念](docs/concepts.zh-CN.md) | 架构与设计 | +| [开发指南](docs/development.zh-CN.md) | 贡献指南 | +| [更新日志](docs/changelog.zh-CN.md) | 版本历史 | -### API接口介绍 -项目提供基于 OpenAI API 兼容的 RESTful 接口,支持多种模型推理任务。 +## 为什么选择 aha? +- **🚀 高性能推理** - 基于 Candle 框架,提供高效的张量计算和模型推理 +- **🔧 统一接口** — 一个工具搞定文本、视觉、语音和 OCR +- **📦 本地优先** — 所有处理在本地运行,数据不离境 +- **🎯 跨平台** — 支持 Linux、macOS 和 Windows +- **⚡ GPU 加速** — 可选 CUDA 支持以获得更快推理 +- **🛡️ 内存安全** — Rust 构建,稳定可靠 +- **🧠 注意力优化** - 可选 Flash Attention 支持,优化长序列处理 -#### 接口列表 -1. 对话接口 -- **端点**: `POST /chat/completions` -- **功能**: 多模态对话和文本生成 -- **支持模型**: Qwen2.5VL, Qwen3, Qwen3VL, DeepSeekOCR, GLM-ASR-Nano-2512, Fun-ASR-Nano-2512 等 -- **请求格式**: OpenAI Chat Completion 格式 -- **响应格式**: OpenAI Chat Completion 格式 -- **流式支持**: 支持 +## 开发 -2. 图像处理接口 -- **端点**: `POST /images/remove_background` -- **功能**: 图像背景移除 -- **支持模型**: RMBG-2.0 -- **请求格式**: OpenAI Chat Completion 格式 -- **响应格式**: OpenAI Chat Completion 格式 -- **流式支持**: 不支持 +### aha 作为库使用 +> cargo add aha -3. 语音生成接口 -- **端点**: `POST /audio/speech` -- **功能**: 语音合成和生成 -- **支持模型**: VoxCPM,VoxCPM1.5 -- **请求格式**: OpenAI Chat Completion 格式 -- **响应格式**: OpenAI Chat Completion 格式 -- **流式支持**: 不支持 - -### 作为库使用 -* cargo add aha -* 或者在Cargo.toml中添加 -```toml -[dependencies] -aha = { git = "https://github.com/jhqxxx/aha.git" } - -# 启用 CUDA 支持(可选) -aha = { git = "https://github.com/jhqxxx/aha.git", features = ["cuda"] } - -# 启用Flash Attention 支持(可选) -aha = { git = "https://github.com/jhqxxx/aha.git", features = ["cuda", "flash-attn"] } -``` -#### VoxCPM示例 -```rust +```bash +# VoxCPM示例 use aha::models::voxcpm::generate::VoxCPMGenerate; use aha::utils::audio_utils::save_wav; use anyhow::Result; @@ -262,108 +188,43 @@ fn main() -> Result<()> { } ``` -### 从源码构建运行测试 -```bash -git clone https://github.com/jhqxxx/aha.git -cd aha -# 修改测试用例中模型路径 -# 运行 PaddleOCR-Vl 示例 -cargo test -F cuda paddleocr_vl_generate -r -- --nocapture -# 运行 Hunyuan-OCR 示例 -cargo test -F cuda hunyuan_ocr_generate -r -- --nocapture +### 扩展新的模型 -# 运行 DeepSeek-OCR 示例 -cargo test -F cuda deepseek_ocr_generate -r -- --nocapture +- 在src/models/创建新模型文件 +- 在src/models/mod.rs中导出 +- 在src/exec/中添加支持cli运行模型推理 +- 在tests/中添加测试和示例 -# 运行 Qwen3VL 示例 -cargo test -F cuda qwen3vl_generate -r -- --nocapture -# 运行 MiniCPM4 示例 -cargo test -F cuda minicpm_generate -r -- --nocapture +## 特性 -# 运行 VoxCPM 示例 -cargo test -F cuda voxcpm_generate -r -- --nocapture -``` - -## 开发 -### 项目结构 -```text -. -├── Cargo.toml -├── README.md -├── src -│ ├── chat_template -│ ├── models -│ │ ├── common -│ │ ├── deepseek_ocr -│ │ ├── hunyuan_ocr -│ │ ├── minicpm4 -│ │ ├── paddleocr_vl -│ │ ├── qwen2_5vl -│ │ ├── qwen3vl -│ │ ├── voxcpm -│ │ └── mod.rs -│ ├── position_embed -│ ├── tokenizer -│ ├── utils -│ ├── api.rs -│ └── lib.rs -└── tests - ├── test_hunyuan_ocr.rs - ├── test_deepseek_ocr.rs - ├── test_minicpm4.rs - ├── test_paddleocr_vl.rs - ├── test_qwen2_5vl.rs - └── test_voxcpm.rs -``` - -### 添加新模型 -* 在src/models/创建新模型文件 -* 在src/models/mod.rs中导出 -* 在tests/中添加测试和示例 +- 基于 Candle 框架的高性能推理 +- 多模态模型支持(视觉、语言、语音) +- 简洁易用的 API 设计 +- 最小化依赖,紧凑的二进制文件 +- Flash Attention 支持长序列处理 +- FFmpeg 支持多媒体处理 ## 许可证 -本项目采用 Apache License, Version 2.0 许可证 - 查看 [LICENSE](./LICENSE) 文件了解详情。 + +Apache-2.0 — 详见 [LICENSE](LICENSE) ## 致谢 -* [Candle](https://github.com/huggingface/candle) - 优秀的 Rust 机器学习框架 -* 所有模型的原作者和贡献者 -## 支持 -#### 如果你遇到问题: -1. 查看 Issues 是否已有解决方案 -2. 提交新的 Issue,包含详细描述和复现步骤 +- [Candle](https://github.com/huggingface/candle) - 优秀的 Rust 机器学习框架 +- 所有模型作者和贡献者 -## 更新日志 -### [Unreleased] - 2025-02-04 -* 支持Qwen3-ASR 模型 -### v0.1.8 -* 支持Fun-ASR-Nano-2512, Qwen3 模型 +--- -### v0.1.7 -* 支持GLM-ASR-Nano-2512 模型 - -### v0.1.6 -* 支持RMGB2.0 模型 - -### v0.1.5 -* 支持VoxCPM1.5 模型 - -### v0.1.4 -* 添加PaddleOCR-VL 模型 - -### v0.1.3 -* 添加 Hunyuan-OCR 模型 - -### v0.1.2 -* 添加 DeepSeek-OCR 模型 - -### v0.1.1 -* 添加 Qwen3VL 模型 - -### v0.1.0 -* 初始版本发布 -* 支持 Qwen2.5VL, MiniCPM4, VoxCPM 模型 +

+ 由 aha 团队用 ❤️ 构建 +

+

+ 我们持续扩展支持的模型列表,欢迎贡献! +

+

+ 如果这个项目对你有帮助,请给我们一个 ⭐ Star! +

diff --git a/assets/img/logo.png b/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e50916c22161ed6ec23aa89fe2cbc124820df477 GIT binary patch literal 378203 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¥#@1Dn;josJ%Mr`id1M%yHL>3tq55{I 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 z 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Õ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�i-527} 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 G{Qm%{d` | Service listen address | 127.0.0.1 | +| `-p, --port ` | Service listen port | 10100 | +| `-m, --model ` | Model type (required) | - | +| `--weight-path ` | Local model weight path | - | +| `--save-dir ` | Model download save directory | ~/.aha/ | +| `--download-retries ` | Download retry count | 3 | +| `-h, --help` | Display help information | - | +| `-V, --version` | Display version number | - | + +## Commands + +### cli - Download model and start service (default) + +Download the specified model and start an HTTP service. This command is used by default when no subcommand is specified. + +**Syntax:** +```bash +aha cli [OPTIONS] --model +``` + +**Options:** + +| Option | Description | Default | +|--------|-------------|---------| +| `-a, --address

` | Service listen address | 127.0.0.1 | +| `-p, --port ` | Service listen port | 10100 | +| `-m, --model ` | Model type (required) | - | +| `--weight-path ` | Local model weight path (skip download if specified) | - | +| `--save-dir ` | Model download save directory | ~/.aha/ | +| `--download-retries ` | Download retry count | 3 | + +**Examples:** + +```bash +# Download model and start service (default port 10100) +aha cli -m qwen3vl-2b + +# Specify port and save directory +aha cli -m qwen3vl-2b -p 8080 --save-dir /data/models + +# Use local model (skip download) +aha cli -m qwen3vl-2b --weight-path /path/to/model + +# Backward compatible way (equivalent to cli subcommand) +aha -m qwen3vl-2b +``` + +### run - Direct model inference + +Run model inference directly without starting an HTTP service. Suitable for one-time inference tasks or batch processing. + +**Syntax:** +```bash +aha run [OPTIONS] --model --input [--input ] --weight-path +``` + +**Options:** + +| Option | Description | Default | +|--------|-------------|---------| +| `-m, --model ` | Model type (required) | - | +| `-i, --input ` | Input text or file path (model-specific interpretation, supports 1-2 parameters: input1: prompt text, input2: file path) | - | +| `-o, --output ` | Output file path (optional, auto-generated if not specified) | - | +| `--weight-path ` | Local model weight path (required) | - | + +**Examples:** + +```bash +# VoxCPM1.5 text-to-speech (single input) +aha run -m voxcpm1.5 -i "太阳当空照" -o output.wav --weight-path /path/to/model + +# VoxCPM1.5 read input from file (single input) +aha run -m voxcpm1.5 -i "file://./input.txt" --weight-path /path/to/model + +# MiniCPM4 text generation (single input) +aha run -m minicpm4-0.5b -i "你好" --weight-path /path/to/model + +# DeepSeek OCR image recognition (single input) +aha run -m deepseek-ocr -i "image.jpg" --weight-path /path/to/model + +# RMBG2.0 background removal (single input) +aha run -m RMBG2.0 -i "photo.png" -o "no_bg.png" --weight-path /path/to/model + +# GLM-ASR speech recognition (two inputs: prompt text + audio file) +aha run -m glm-asr-nano-2512 -i "请转写这段音频" -i "audio.wav" --weight-path /path/to/model + +# Fun-ASR speech recognition (two inputs: prompt text + audio file) +aha run -m fun-asr-nano-2512 -i "语音转写:" -i "audio.wav" --weight-path /path/to/model + +# qwen3 text generation (single input) +aha run -m qwen3-0.6b -i "你好" --weight-path /path/to/model + +# qwen2.5vl image understanding (two inputs: prompt text + image file) +aha run -m qwen2.5vl-3b -i "请分析图片并提取所有可见文本内容,按从左到右、从上到下的布局,返回纯文本" -i "image.jpg" --weight-path /path/to/model + +# Qwen3-ASR speech recognition (single input: audio file) +aha run -m qwen3asr-0.6b -i "audio.wav" --weight-path /path/to/model +``` + +### serv - Start service + +Start HTTP service only, without downloading models. Must specify local model path via `--weight-path`. + +**Syntax:** +```bash +aha serv [OPTIONS] --model --weight-path +``` + +**Options:** + +| Option | Description | Default | +|--------|-------------|---------| +| `-a, --address
` | Service listen address | 127.0.0.1 | +| `-p, --port ` | Service listen port | 10100 | +| `-m, --model ` | Model type (required) | - | +| `--weight-path ` | Local model weight path (required) | - | + +**Examples:** + +```bash +# Start service with local model +aha serv -m qwen3vl-2b --weight-path /path/to/model + +# Start with specified port +aha serv -m qwen3vl-2b --weight-path /path/to/model -p 8080 + +# Specify listen address +aha serv -m qwen3vl-2b --weight-path /path/to/model -a 0.0.0.0 +``` + +### download - Download model + +Download the specified model only, without starting the service. + +**Syntax:** +```bash +aha download [OPTIONS] --model +``` + +**Options:** + +| Option | Description | Default | +|--------|-------------|---------| +| `-m, --model ` | Model type (required) | - | +| `-s, --save-dir ` | Model download save directory | ~/.aha/ | +| `--download-retries ` | Download retry count | 3 | + +**Examples:** + +```bash +# Download model to default directory +aha download -m qwen3vl-2b + +# Specify save directory +aha download -m qwen3vl-2b -s /data/models + +# Specify download retry count +aha download -m qwen3vl-2b --download-retries 5 + +# Download MiniCPM4-0.5B model +aha download -m minicpm4-0.5b -s models +``` + +## Supported Models + +| Model ID | Model Name | Description | +|----------|------------|-------------| +| `minicpm4-0.5b` | OpenBMB/MiniCPM4-0.5B | OpenBMB MiniCPM4 0.5B model | +| `qwen2.5vl-3b` | Qwen/Qwen2.5-VL-3B-Instruct | Qwen 2.5 VL 3B model | +| `qwen2.5vl-7b` | Qwen/Qwen2.5-VL-7B-Instruct | Qwen 2.5 VL 7B model | +| `qwen3-0.6b` | Qwen/Qwen3-0.6B | Qwen 3 0.6B model | +| `qwen3vl-2b` | Qwen/Qwen3-VL-2B-Instruct | Qwen 3 VL 2B model | +| `qwen3vl-4b` | Qwen/Qwen3-VL-4B-Instruct | Qwen 3 VL 4B model | +| `qwen3vl-8b` | Qwen/Qwen3-VL-8B-Instruct | Qwen 3 VL 8B model | +| `qwen3vl-32b` | Qwen/Qwen3-VL-32B-Instruct | Qwen 3 VL 32B model | +| `deepseek-ocr` | deepseek-ai/DeepSeek-OCR | DeepSeek OCR model | +| `hunyuan-ocr` | Tencent-Hunyuan/HunyuanOCR | Tencent Hunyuan OCR model | +| `paddleocr-vl` | PaddlePaddle/PaddleOCR-VL | Baidu PaddleOCR VL model | +| `RMBG2.0` | AI-ModelScope/RMBG-2.0 | RMBG 2.0 background removal model | +| `voxcpm` | OpenBMB/VoxCPM-0.5B | OpenBMB VoxCPM 0.5B speech synthesis model | +| `voxcpm1.5` | OpenBMB/VoxCPM1.5 | OpenBMB VoxCPM 1.5 speech synthesis model | +| `glm-asr-nano-2512` | ZhipuAI/GLM-ASR-Nano-2512 | Zhipu AI ASR Nano 2512 speech recognition model | +| `fun-asr-nano-2512` | FunAudioLLM/Fun-ASR-Nano-2512 | FunAudioLLM ASR Nano 2512 speech recognition model | + +## Common Use Cases + +### Scenario 1: Quick start inference service + +```bash +# One command to download and start service +aha -m qwen3vl-2b +``` + +### Scenario 2: Start service with existing model + +```bash +# Assuming model is downloaded to /data/models/Qwen/Qwen3-VL-2B-Instruct +aha serv -m qwen3vl-2b --weight-path /data/models/Qwen/Qwen3-VL-2B-Instruct +``` + +### Scenario 3: Pre-download model + +```bash +# Download model to specified directory for later use +aha download -m qwen3vl-2b -s /data/models + +# Later start with local model +aha serv -m qwen3vl-2b --weight-path /data/models/Qwen/Qwen3-VL-2B-Instruct +``` + +### Scenario 4: Custom service port and address + +```bash +# Start service on 0.0.0.0:8080, allow external access +aha -m qwen3vl-2b -a 0.0.0.0 -p 8080 +``` + +## API Endpoints + +After the service starts, the following API endpoints are available: + +### Chat Completion Endpoint +- **Endpoint**: `POST /chat/completions` +- **Function**: Multimodal chat and text generation +- **Supported Models**: Qwen2.5VL, Qwen3, Qwen3VL, DeepSeekOCR, GLM-ASR-Nano-2512, Fun-ASR-Nano-2512, etc. +- **Format**: OpenAI Chat Completion format +- **Streaming Support**: Yes + +### Image Processing Endpoint +- **Endpoint**: `POST /images/remove_background` +- **Function**: Image background removal +- **Supported Models**: RMBG-2.0 +- **Format**: OpenAI Chat Completion format +- **Streaming Support**: No + +### Audio Generation Endpoint +- **Endpoint**: `POST /audio/speech` +- **Function**: Speech synthesis and generation +- **Supported Models**: VoxCPM, VoxCPM1.5 +- **Format**: OpenAI Chat Completion format +- **Streaming Support**: No + +## Backward Compatibility + +To maintain compatibility with older versions, the following two usage methods are equivalent: + +```bash +# New way (recommended) +aha cli -m qwen3vl-2b + +# Old way (backward compatible) +aha -m qwen3vl-2b +``` + +## Notes + +1. **serv subcommand requires `--weight-path`**: Since the `serv` subcommand does not download models, you must specify the path to an already downloaded model via `--weight-path`. + +2. **Download retry mechanism**: By default, retries 3 times, waiting 2 seconds after each failure before retrying. You can adjust the retry count with `--download-retries`. + +3. **Default save directory**: Models are saved to `~/.aha/` directory by default, which can be customized via `--save-dir` or `-s` parameter. + +4. **Port occupation**: Ensure the specified port is not occupied before starting the service. The default port is 10100. + +5. **Permission issues**: If saving to a system directory (such as `/data/models`), ensure you have the corresponding write permissions. + +## Getting Help + +```bash +# View main help +aha --help + +# View subcommand help +aha cli --help +aha serv --help +aha download --help + +# View version information +aha --version +``` + +## See Also + +- [Getting Started](./getting-started.md) - Quick start guide +- [API Documentation](./api.md) - REST API reference +- [Supported Models](./supported-tools.md) - Available models diff --git a/docs/CLI_USAGE.md b/docs/cli.zh-CN.md similarity index 96% rename from docs/CLI_USAGE.md rename to docs/cli.zh-CN.md index f23a025..84b2c5e 100644 --- a/docs/CLI_USAGE.md +++ b/docs/cli.zh-CN.md @@ -1,11 +1,11 @@ -# AHA 命令行使用说明 +# CLI 参考 -## 概述 +aha 的完整命令行界面参考。 AHA 是一个基于 Candle 框架的高性能模型推理库,支持多种多模态模型,包括视觉、语言和语音模型。 ```bash -aha [COMMAND] [OPTIONS] +aha [COMMAND] [OPTIONS] ``` ## 全局选项 @@ -105,7 +105,7 @@ aha run -m fun-asr-nano-2512 -i "语音转写:" -i "audio.wav" --weight-path / aha run -m qwen3-0.6b -i "你好" --weight-path /path/to/model # qwen2.5vl 图像理解(两个输入:提示文本 + 图片文件) -aha run -m qwen2.5vl-3b -i "请分析图片并提取所有可见文本内容,按从左到右、从上到下的布局,返回纯文本" -i "image.jpg" --weight-path /path/to/model +aha run -m qwen2.5vl-3b -i "请分析图片并提取所有可见文本内容,按从左到右、从上到下的布局,返回纯文本" -i "image.jpg" --weight-path /path/to/model # Qwen3-ASR 语音识别(单个输入:音频文件) aha run -m qwen3asr-0.6b -i "audio.wav" --weight-path /path/to/model @@ -272,7 +272,7 @@ aha -m qwen3vl-2b 2. **下载重试机制**:默认重试 3 次,每次失败后等待 2 秒再重试。可通过 `--download-retries` 调整重试次数。 -3. **默认保存目录**:模型默认保存到 `~/.aha/` 目录下,可通过 `--save-dir` 或 `-d` 参数自定义。 +3. **默认保存目录**:模型默认保存到 `~/.aha/` 目录下,可通过 `--save-dir` 或 `-s` 参数自定义。 4. **端口占用**:启动服务前确保指定的端口未被占用,默认端口为 10100。 @@ -292,3 +292,9 @@ aha download --help # 查看版本信息 aha --version ``` + +## 另见 + +- [快速入门](./getting-started.zh-CN.md) - 快速入门指南 +- [API 文档](./api.zh-CN.md) - REST API 参考 +- [支持的模型](./supported-tools.zh-CN.md) - 可用模型 diff --git a/docs/concepts.md b/docs/concepts.md new file mode 100644 index 0000000..db4c784 --- /dev/null +++ b/docs/concepts.md @@ -0,0 +1,411 @@ +# Architecture & Design + +This document provides an in-depth look at the architecture and design principles behind AHA. + +## Overview + +AHA (High-performance AI inference engine) is a Rust-based library built on the [Candle](https://github.com/huggingface/candle) framework. It provides a unified interface for running multiple state-of-the-art AI models locally, without requiring API keys or cloud services. + +### Key Characteristics + +- **Local-First**: All inference runs on your machine +- **Multi-Modal**: Support for text, vision, audio, OCR, and ASR models +- **Cross-Platform**: Linux, macOS, and Windows support +- **GPU-Accelerated**: Optional CUDA and Metal support +- **Memory-Safe**: Built with Rust for safety and performance +- **OpenAI-Compatible**: Easy integration with existing tools + +## Architecture Principles + +### 1. Local-First Design + +AHA is designed to run entirely on your local machine: + +- **No cloud dependencies**: All models are downloaded and run locally +- **Privacy-preserving**: Your data never leaves your machine +- **No API keys required**: Once downloaded, models work indefinitely +- **Offline capable**: Models work without internet connection after download + +### 2. Unified Model Interface + +All models implement a common `GenerateModel` trait, providing: + +- Consistent API across different model types +- Easy model switching without code changes +- Streaming response support for real-time outputs +- Standardized error handling + +### 3. Cross-Platform Support + +AHA abstracts platform differences: + +- **Device abstraction**: Automatic CPU/GPU detection and selection +- **Precision handling**: Dynamic F32/F16/BF16 selection based on hardware +- **Path management**: Consistent model storage across platforms + +## Core Components + +``` +┌─────────────────────────────────────────────────────────────┐ +│ CLI Layer │ +│ (main.rs - Command parsing, model download, service mgmt) │ +└─────────────────────────────────────────────────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ HTTP API Layer │ +│ (api.rs - OpenAI-compatible endpoints, streaming, auth) │ +└─────────────────────────────────────────────────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ Model Abstraction Layer │ +│ (GenerateModel trait - unified interface) │ +└─────────────────────────────────────────────────────────────┘ + │ + ┌─────────────────────┼─────────────────────┐ + │ │ │ +┌───────▼────────┐ ┌────────▼─────────┐ ┌───────▼────────┐ +│ Text Models │ │ Vision Models │ │ Audio Models │ +│ - Qwen3 │ │ - Qwen2.5VL │ │ - VoxCPM │ +│ - MiniCPM4 │ │ - Qwen3VL │ │ - VoxCPM1.5 │ +└────────────────┘ └──────────────────┘ └────────────────┘ + │ │ │ +┌───────▼────────┐ ┌────────▼─────────┐ ┌───────▼────────┐ +│ OCR Models │ │ ASR Models │ │ Image Models │ +│ - DeepSeek │ │ - GLM-ASR │ │ - RMBG2.0 │ +│ - Hunyuan │ │ - Fun-ASR │ │ │ +│ - PaddleOCR │ │ - Qwen3-ASR │ │ │ +└────────────────┘ └──────────────────┘ └────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ Utility Modules │ +│ - tokenizer: Tokenization utilities │ +│ - chat_template: Chat format handling │ +│ - position_embed: Positional embeddings │ +│ - utils: Common utilities (audio, image, download) │ +└─────────────────────────────────────────────────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ Candle ML Framework │ +│ (Tensor operations, model loading, device management) │ +└─────────────────────────────────────────────────────────────┘ +``` + +### CLI Layer (`src/main.rs`) + +The CLI layer provides command-line interface functionality: + +- **Command parsing**: Uses `clap` for argument parsing +- **Model management**: Automatic download and caching +- **Service control**: Start/stop HTTP server +- **Direct inference**: Run models without server + +**Available Commands**: +- `cli` - Download model and start service (default) +- `serv` - Start service with existing model +- `download` - Download model only +- `run` - Direct model inference +- `list` - List supported models + +### HTTP API Layer (`src/api.rs`) + +The HTTP API layer provides REST endpoints: + +- **OpenAI-compatible**: Matches OpenAI API format +- **Streaming support**: Real-time response generation +- **Multi-modal**: Handles text, images, and audio +- **Thread-safe**: Uses RwLock for concurrent requests + +**Endpoints**: +- `POST /chat/completions` - Chat and text generation +- `POST /images/remove_background` - Image background removal +- `POST /audio/speech` - Text-to-speech synthesis + +### Model Abstraction Layer + +All models implement the `GenerateModel` trait: + +```rust +pub trait GenerateModel { + // Initialize model with weights + fn init(model_path: &str, config: Option) -> Result; + + // Generate response + fn generate(&mut self, prompt: &str, params: GenerationParams) -> Result; + + // Generate with streaming + fn generate_stream(&mut self, prompt: &str, params: GenerationParams) + -> Result>>>; +} +``` + +This provides: +- **Polymorphism**: Treat different models uniformly +- **Extensibility**: Easy to add new models +- **Type safety**: Compile-time guarantees + +### Utility Modules + +#### Tokenizer (`src/tokenizer/`) + +- Loads tokenizers from model configurations +- Handles special tokens +- Manages vocabulary + +#### Chat Template (`src/chat_template/`) + +- Formats chat messages into model prompts +- Supports multiple chat formats (ChatML, etc.) +- Handles system messages and role tags + +#### Position Embeddings (`src/position_embed/`) + +- Implements positional encoding for transformers +- Supports RoPE (Rotary Position Embedding) +- Handles M-RoPE for multimodal models + +#### Utils (`src/utils/`) + +- `audio_utils.rs` - Audio processing (WAV, MP3) +- `image_utils.rs` - Image processing (resize, encode/decode) +- `download.rs` - Model downloading with retry logic +- `common.rs` - Common utilities and constants + +## Design Patterns + +### 1. Trait-Based Abstraction + +The `GenerateModel` trait provides a unified interface: + +```rust +// All models implement this trait +impl GenerateModel for Qwen3VL { /* ... */ } +impl GenerateModel for VoxCPM { /* ... */ } +impl GenerateModel for DeepSeekOCR { /* ... */ } + +// Usage is model-agnostic +let mut model: Box = load_model(model_type)?; +let result = model.generate(prompt, params)?; +``` + +### 2. Factory Pattern + +Model loading uses a factory function: + +```rust +pub fn load_model( + model_type: &str, + model_path: &str, + device: &Device, +) -> Result> { + match model_type { + "qwen3vl-2b" => Ok(Box::new(qwen3vl::generate::Qwen3VLGenerate::init(...)?)), + "voxcpm1.5" => Ok(Box::new(voxcpm::generate::VoxCPMGenerate::init(...)?)), + // ... other models + _ => Err(anyhow!("Unsupported model: {}", model_type)), + } +} +``` + +### 3. Command Pattern + +CLI subcommands encapsulate different operations: + +```rust +match command { + Commands::Cli { model, port, address } => { /* download and serve */ } + Commands::Serv { model, weight_path, port } => { /* serve only */ } + Commands::Download { model, save_dir } => { /* download only */ } + Commands::Run { model, input, weight_path } => { /* direct inference */ } + Commands::List => { /* list models */ } +} +``` + +## Model Organization + +Each model follows a consistent structure: + +``` +src/models/{model_name}/ +├── config.rs # Model configuration and generation parameters +├── model.rs # Core model architecture (layers, attention) +├── generate.rs # Inference logic (implements GenerateModel trait) +├── processor.rs # Model-specific processing (for complex models) +└── mod.rs # Module declaration and exports +``` + +### Example: Qwen3VL + +``` +src/models/qwen3vl/ +├── config.rs # Qwen3VLConfig, GenerationConfig +├── model.rs # Qwen3VL transformer layers, attention mechanisms +├── generate.rs # Qwen3VLGenerate implementation +├── processor.rs # Image and text processing for multimodal input +└── mod.rs # Exports public API +``` + +## Performance Optimizations + +### GPU Acceleration + +AHA supports GPU acceleration through: + +- **CUDA**: For NVIDIA GPUs (Linux, Windows) +- **Metal**: For Apple Silicon (macOS) + +Enable with: +```bash +cargo build --features cuda # NVIDIA GPUs +cargo build --features metal # Apple Silicon +``` + +### Flash Attention + +Flash Attention optimizes long-sequence processing: + +- Reduces memory usage +- Improves inference speed +- Especially beneficial for vision models + +Enable with: +```bash +cargo build --features "cuda,flash-attn" +``` + +### Memory-Mapped Tensors + +Models use memory-mapped files for: + +- Faster loading times +- Reduced memory footprint +- Concurrent model loading + +### Precision Optimization + +Dynamic precision selection based on hardware: + +- **F32**: Maximum accuracy (CPU-only) +- **F16**: Balanced performance (GPU) +- **BF16**: Best for modern GPUs + +## Security Considerations + +### Local-Only Processing + +- No external API calls after model download +- No telemetry or data collection +- Full control over your data + +### Memory Safety + +- Rust's ownership system prevents memory leaks +- No buffer overflows or use-after-free bugs +- Thread-safe concurrent operations + +### Input Validation + +- File size limits (5MB strings, 100MB files) +- Path validation to prevent directory traversal +- Type-safe request handling + +## Data Flow + +### Request Flow + +``` +┌─────────┐ +│ Client │ +└────┬────┘ + │ HTTP Request + ▼ +┌──────────────────────────────────────────────────────────┐ +│ Rocket HTTP Server │ +│ - Route request to endpoint │ +│ - Parse request body │ +│ - Extract parameters │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ API Handler (api.rs) │ +│ - Acquire model lock │ +│ - Prepare input (tokenize, process images/audio) │ +│ - Call model.generate() or generate_stream() │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ Model Implementation (models/{model}/generate.rs) │ +│ - Load weights from memory-mapped files │ +│ - Run forward pass through Candle tensors │ +│ - Decode output tokens │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ Candle Framework │ +│ - Execute on CPU or GPU device │ +│ - Manage tensor operations │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ Response Generation │ +│ - Format response (JSON / streaming) │ +│ - Return to client │ +└──────────────────────────────────────────────────────────┘ +``` + +### Model Loading Flow + +``` +User specifies model + │ + ▼ +Check if --weight-path provided + │ + ┌───┴───┐ + │ │ + Yes No + │ │ + ▼ ▼ +Use local Download from ModelScope +path │ + │ ▼ + │ Save to ~/.aha/{model}/ + │ │ + └───┬────┘ + ▼ +Load model weights into memory + │ + ▼ +Initialize model (init()) + │ + ▼ +Ready for inference +``` + +## Extension Points + +### Adding a New Model + +1. Create model directory under `src/models/` +2. Implement `GenerateModel` trait +3. Add model to factory function in `mod.rs` +4. Add CLI mapping in `main.rs` +5. Add test case in `tests/` + +### Custom Processing + +Models can override default processing: + +- Custom tokenization +- Special input/output formats +- Model-specific optimizations + +## See Also + +- [Installation Guide](./installation.md) - Setup and installation +- [Getting Started](./getting-started.md) - Quick start guide +- [API Reference](./api.md) - REST API documentation +- [Development](./development.md) - Contributing guide diff --git a/docs/concepts.zh-CN.md b/docs/concepts.zh-CN.md new file mode 100644 index 0000000..2e1020e --- /dev/null +++ b/docs/concepts.zh-CN.md @@ -0,0 +1,411 @@ +# 架构与设计 + +本文档深入介绍 AHA 的架构和设计原则。 + +## 概述 + +AHA(高性能 AI 推理引擎)是一个基于 Rust 的库,构建在 [Candle](https://github.com/huggingface/candle) 框架之上。它提供了统一的接口,可以在本地运行多个最先进的 AI 模型,无需 API 密钥或云服务。 + +### 核心特性 + +- **本地优先**:所有推理都在您的机器上运行 +- **多模态支持**:支持文本、视觉、音频、OCR 和 ASR 模型 +- **跨平台**:支持 Linux、macOS 和 Windows +- **GPU 加速**:可选的 CUDA 和 Metal 支持 +- **内存安全**:使用 Rust 构建,确保安全性和性能 +- **OpenAI 兼容**:易于与现有工具集成 + +## 架构原则 + +### 1. 本地优先设计 + +AHA 设计为完全在本地运行: + +- **无云依赖**:所有模型都在本地下载和运行 +- **隐私保护**:您的数据永远不会离开您的机器 +- **无需 API 密钥**:下载后模型可永久使用 +- **离线可用**:下载后模型无需互联网连接 + +### 2. 统一模型接口 + +所有模型都实现通用的 `GenerateModel` trait,提供: + +- 不同模型类型之间的一致 API +- 无需更改代码即可轻松切换模型 +- 支持实时输出的流式响应 +- 标准化的错误处理 + +### 3. 跨平台支持 + +AHA 抽象了平台差异: + +- **设备抽象**:自动 CPU/GPU 检测和选择 +- **精度处理**:基于硬件动态选择 F32/F16/BF16 +- **路径管理**:跨平台一致的模型存储 + +## 核心组件 + +``` +┌─────────────────────────────────────────────────────────────┐ +│ CLI 层 │ +│ (main.rs - 命令解析、模型下载、服务管理) │ +└─────────────────────────────────────────────────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ HTTP API 层 │ +│ (api.rs - OpenAI 兼容端点、流式传输、认证) │ +└─────────────────────────────────────────────────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ 模型抽象层 │ +│ (GenerateModel trait - 统一接口) │ +└─────────────────────────────────────────────────────────────┘ + │ + ┌─────────────────────┼─────────────────────┐ + │ │ │ +┌───────▼────────┐ ┌────────▼─────────┐ ┌───────▼────────┐ +│ 文本模型 │ │ 视觉模型 │ │ 音频模型 │ +│ - Qwen3 │ │ - Qwen2.5VL │ │ - VoxCPM │ +│ - MiniCPM4 │ │ - Qwen3VL │ │ - VoxCPM1.5 │ +└────────────────┘ └──────────────────┘ └────────────────┘ + │ │ │ +┌───────▼────────┐ ┌────────▼─────────┐ ┌───────▼────────┐ +│ OCR 模型 │ │ ASR 模型 │ │ 图像模型 │ +│ - DeepSeek │ │ - GLM-ASR │ │ - RMBG2.0 │ +│ - Hunyuan │ │ - Fun-ASR │ │ │ +│ - PaddleOCR │ │ - Qwen3-ASR │ │ │ +└────────────────┘ └──────────────────┘ └────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ 工具模块 │ +│ - tokenizer: 分词工具 │ +│ - chat_template: 聊天格式处理 │ +│ - position_embed: 位置编码 │ +│ - utils: 通用工具(音频、图像、下载) │ +└─────────────────────────────────────────────────────────────┘ + │ +┌─────────────────────────────────────────────────────────────┐ +│ Candle ML 框架 │ +│ (张量操作、模型加载、设备管理) │ +└─────────────────────────────────────────────────────────────┘ +``` + +### CLI 层 (`src/main.rs`) + +CLI 层提供命令行界面功能: + +- **命令解析**:使用 `clap` 进行参数解析 +- **模型管理**:自动下载和缓存 +- **服务控制**:启动/停止 HTTP 服务器 +- **直接推理**:无需服务器即可运行模型 + +**可用命令**: +- `cli` - 下载模型并启动服务(默认) +- `serv` - 使用现有模型启动服务 +- `download` - 仅下载模型 +- `run` - 直接模型推理 +- `list` - 列出支持的模型 + +### HTTP API 层 (`src/api.rs`) + +HTTP API 层提供 REST 端点: + +- **OpenAI 兼容**:匹配 OpenAI API 格式 +- **流式支持**:实时响应生成 +- **多模态**:处理文本、图像和音频 +- **线程安全**:使用 RwLock 处理并发请求 + +**端点**: +- `POST /chat/completions` - 聊天和文本生成 +- `POST /images/remove_background` - 图像背景移除 +- `POST /audio/speech` - 文本转语音合成 + +### 模型抽象层 + +所有模型都实现 `GenerateModel` trait: + +```rust +pub trait GenerateModel { + // 使用权重初始化模型 + fn init(model_path: &str, config: Option) -> Result; + + // 生成响应 + fn generate(&mut self, prompt: &str, params: GenerationParams) -> Result; + + // 流式生成 + fn generate_stream(&mut self, prompt: &str, params: GenerationParams) + -> Result>>>; +} +``` + +这提供了: +- **多态性**:统一处理不同模型 +- **可扩展性**:易于添加新模型 +- **类型安全**:编译时保证 + +### 工具模块 + +#### 分词器 (`src/tokenizer/`) + +- 从模型配置加载分词器 +- 处理特殊标记 +- 管理词汇表 + +#### 聊天模板 (`src/chat_template/`) + +- 将聊天消息格式化为模型提示 +- 支持多种聊天格式(ChatML 等) +- 处理系统消息和角色标签 + +#### 位置编码 (`src/position_embed/`) + +- 为 transformer 实现位置编码 +- 支持 RoPE(旋转位置编码) +- 处理多模态模型的 M-RoPE + +#### 工具 (`src/utils/`) + +- `audio_utils.rs` - 音频处理(WAV、MP3) +- `image_utils.rs` - 图像处理(调整大小、编码/解码) +- `download.rs` - 带重试逻辑的模型下载 +- `common.rs` - 通用工具和常量 + +## 设计模式 + +### 1. 基于 Trait 的抽象 + +`GenerateModel` trait 提供统一接口: + +```rust +// 所有模型都实现此 trait +impl GenerateModel for Qwen3VL { /* ... */ } +impl GenerateModel for VoxCPM { /* ... */ } +impl GenerateModel for DeepSeekOCR { /* ... */ } + +// 使用方式与模型无关 +let mut model: Box = load_model(model_type)?; +let result = model.generate(prompt, params)?; +``` + +### 2. 工厂模式 + +模型加载使用工厂函数: + +```rust +pub fn load_model( + model_type: &str, + model_path: &str, + device: &Device, +) -> Result> { + match model_type { + "qwen3vl-2b" => Ok(Box::new(qwen3vl::generate::Qwen3VLGenerate::init(...)?)), + "voxcpm1.5" => Ok(Box::new(voxcpm::generate::VoxCPMGenerate::init(...)?)), + // ... 其他模型 + _ => Err(anyhow!("不支持的模型: {}", model_type)), + } +} +``` + +### 3. 命令模式 + +CLI 子命令封装不同的操作: + +```rust +match command { + Commands::Cli { model, port, address } => { /* 下载并启动服务 */ } + Commands::Serv { model, weight_path, port } => { /* 仅启动服务 */ } + Commands::Download { model, save_dir } => { /* 仅下载 */ } + Commands::Run { model, input, weight_path } => { /* 直接推理 */ } + Commands::List => { /* 列出模型 */ } +} +``` + +## 模型组织结构 + +每个模型都遵循一致的结构: + +``` +src/models/{model_name}/ +├── config.rs # 模型配置和生成参数 +├── model.rs # 核心模型架构(层、注意力) +├── generate.rs # 推理逻辑(实现 GenerateModel trait) +├── processor.rs # 模型特定处理(用于复杂模型) +└── mod.rs # 模块声明和导出 +``` + +### 示例:Qwen3VL + +``` +src/models/qwen3vl/ +├── config.rs # Qwen3VLConfig、GenerationConfig +├── model.rs # Qwen3VL transformer 层、注意力机制 +├── generate.rs # Qwen3VLGenerate 实现 +├── processor.rs # 多模态输入的图像和文本处理 +└── mod.rs # 导出公共 API +``` + +## 性能优化 + +### GPU 加速 + +AHA 通过以下方式支持 GPU 加速: + +- **CUDA**:用于 NVIDIA GPU(Linux、Windows) +- **Metal**:用于 Apple Silicon(macOS) + +启用方式: +```bash +cargo build --features cuda # NVIDIA GPU +cargo build --features metal # Apple Silicon +``` + +### Flash Attention + +Flash Attention 优化长序列处理: + +- 减少内存使用 +- 提高推理速度 +- 对视觉模型特别有益 + +启用方式: +```bash +cargo build --features "cuda,flash-attn" +``` + +### 内存映射张量 + +模型使用内存映射文件: + +- 更快的加载时间 +- 减少内存占用 +- 支持并发模型加载 + +### 精度优化 + +基于硬件的动态精度选择: + +- **F32**:最高精度(仅 CPU) +- **F16**:平衡性能(GPU) +- **BF16**:最适合现代 GPU + +## 安全考虑 + +### 本地处理 + +- 模型下载后无外部 API 调用 +- 无遥测或数据收集 +- 完全控制您的数据 + +### 内存安全 + +- Rust 所有权系统防止内存泄漏 +- 无缓冲区溢出或使用后释放错误 +- 线程安全的并发操作 + +### 输入验证 + +- 文件大小限制(字符串 5MB,文件 100MB) +- 路径验证防止目录遍历 +- 类型安全的请求处理 + +## 数据流 + +### 请求流程 + +``` +┌─────────┐ +│ 客户端 │ +└────┬────┘ + │ HTTP 请求 + ▼ +┌──────────────────────────────────────────────────────────┐ +│ Rocket HTTP 服务器 │ +│ - 将请求路由到端点 │ +│ - 解析请求体 │ +│ - 提取参数 │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ API 处理器 (api.rs) │ +│ - 获取模型锁 │ +│ - 准备输入(分词、处理图像/音频) │ +│ - 调用 model.generate() 或 generate_stream() │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ 模型实现 (models/{model}/generate.rs) │ +│ - 从内存映射文件加载权重 │ +│ - 通过 Candle 张量运行前向传播 │ +│ - 解码输出标记 │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ Candle 框架 │ +│ - 在 CPU 或 GPU 设备上执行 │ +│ - 管理张量操作 │ +└────────────┬─────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────────────────┐ +│ 响应生成 │ +│ - 格式化响应(JSON / 流式) │ +│ - 返回给客户端 │ +└──────────────────────────────────────────────────────────┘ +``` + +### 模型加载流程 + +``` +用户指定模型 + │ + ▼ +检查是否提供了 --weight-path + │ + ┌───┴───┐ + │ │ + 是 否 + │ │ + ▼ ▼ +使用本地 从 ModelScope 下载 +路径 │ + │ ▼ + │ 保存到 ~/.aha/{model}/ + │ │ + └───┬────┘ + ▼ +将模型权重加载到内存 + │ + ▼ +初始化模型 (init()) + │ + ▼ +准备就绪,可以进行推理 +``` + +## 扩展点 + +### 添加新模型 + +1. 在 `src/models/` 下创建模型目录 +2. 实现 `GenerateModel` trait +3. 在 `mod.rs` 的工厂函数中添加模型 +4. 在 `main.rs` 中添加 CLI 映射 +5. 在 `tests/` 中添加测试用例 + +### 自定义处理 + +模型可以覆盖默认处理: + +- 自定义分词 +- 特殊的输入/输出格式 +- 模型特定的优化 + +## 另见 + +- [安装指南](./installation.zh-CN.md) - 设置和安装 +- [快速入门](./getting-started.zh-CN.md) - 快速入门指南 +- [API 参考](./api.zh-CN.md) - REST API 文档 +- [开发指南](./development.zh-CN.md) - 贡献指南 diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 0000000..7a4a15d --- /dev/null +++ b/docs/development.md @@ -0,0 +1,601 @@ +# Development Guide + +This guide covers contributing to AHA, including development setup, adding new models, and submitting contributions. + +## Table of Contents + +- [Development Setup](#development-setup) +- [Project Structure](#project-structure) +- [Adding a New Model](#adding-a-new-model) +- [Testing](#testing) +- [Code Style](#code-style) +- [Submitting Contributions](#submitting-contributions) +- [Release Process](#release-process) + +## Development Setup + +### Prerequisites + +- Rust 1.85+ (edition 2024) +- Git +- Optional: CUDA Toolkit, Metal, FFmpeg (for feature development) + +### Clone and Build + +```bash +# Clone the repository +git clone https://github.com/jhqxxx/aha.git +cd aha + +# Build in debug mode (faster compilation) +cargo build + +# Build in release mode (better performance) +cargo build --release + +# Build with features +cargo build --features "cuda,flash-attn" +cargo build --features "metal" +cargo build --features "ffmpeg" +``` + +### Development Workflow + +```bash +# Run the CLI +cargo run -- -m qwen3-0.6b + +# Run tests +cargo test + +# Run specific test +cargo test test_qwen3vl_generate + +# Run with logging +RUST_LOG=debug cargo run -- -m qwen3-0.6b + +# Check code without building +cargo check + +# Format code +cargo fmt + +# Run linter +cargo clippy +``` + +## Project Structure + +``` +aha/ +├── Cargo.toml # Build configuration +├── src/ +│ ├── main.rs # CLI entry point +│ ├── lib.rs # Library exports +│ ├── api.rs # HTTP API handlers +│ ├── exec/ # CLI command implementations +│ │ ├── mod.rs +│ │ ├── cli.rs +│ │ ├── serv.rs +│ │ ├── download.rs +│ │ └── run.rs +│ ├── models/ # Model implementations +│ │ ├── mod.rs # Model factory and exports +│ │ ├── common/ # Shared model utilities +│ │ │ ├── config.rs +│ │ │ └── mod.rs +│ │ ├── qwen3vl/ # Qwen3-VL model +│ │ │ ├── config.rs +│ │ │ ├── model.rs +│ │ │ ├── generate.rs +│ │ │ ├── processor.rs +│ │ │ └── mod.rs +│ │ ├── voxcpm/ # VoxCPM model +│ │ └── ... # Other models +│ ├── tokenizer/ # Tokenization utilities +│ ├── chat_template/ # Chat template handling +│ ├── position_embed/ # Positional embeddings +│ └── utils/ # Utility functions +│ ├── audio_utils.rs +│ ├── image_utils.rs +│ ├── download.rs +│ └── common.rs +├── tests/ # Integration tests +│ ├── test_qwen2_5vl.rs +│ ├── test_qwen3vl.rs +│ └── ... +├── examples/ # Example code +└── docs/ # Documentation +``` + +## Adding a New Model + +This section provides a step-by-step guide for adding a new model to AHA. + +### Step 1: Create Model Directory + +Create a new directory under `src/models/`: + +```bash +mkdir -p src/models/newmodel +``` + +### Step 2: Implement Model Files + +Create the following files in `src/models/newmodel/`: + +#### config.rs + +Define model configuration: + +```rust +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct NewModelConfig { + pub vocab_size: usize, + pub hidden_size: usize, + pub num_hidden_layers: usize, + pub num_attention_heads: usize, + // ... other config fields +} + +impl Default for NewModelConfig { + fn default() -> Self { + Self { + vocab_size: 32000, + hidden_size: 2048, + num_hidden_layers: 24, + num_attention_heads: 32, + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct GenerationConfig { + pub temperature: f64, + pub top_p: f64, + pub max_tokens: usize, +} + +impl Default for GenerationConfig { + fn default() -> Self { + Self { + temperature: 1.0, + top_p: 1.0, + max_tokens: 100, + } + } +} +``` + +#### model.rs + +Implement the model architecture: + +```rust +use candle::{Result, Tensor}; +use candle_nn::{Module, VarBuilder}; + +use super::config::NewModelConfig; + +pub struct NewModel { + // Define model components + config: NewModelConfig, +} + +impl NewModel { + pub fn load(vb: VarBuilder, config: &NewModelConfig) -> Result { + // Load model weights + Ok(Self { + config: config.clone(), + }) + } + + pub fn forward(&self, input_ids: &Tensor) -> Result { + // Implement forward pass + Ok(input_ids.clone()) + } +} +``` + +#### generate.rs + +Implement the GenerateModel trait: + +```rust +use std::path::Path; +use anyhow::Result; +use candle::Device; + +use super::config::{GenerationConfig, NewModelConfig}; +use aha::models::common::GenerateModel; + +pub struct NewModelGenerate { + // Define generate state + model: super::model::NewModel, + config: GenerationConfig, + device: Device, +} + +impl GenerateModel for NewModelGenerate { + type Config = NewModelConfig; + type GenerateConfig = GenerationConfig; + + fn init( + model_path: &str, + config: Option, + generate_config: Option, + ) -> Result { + // Load model from disk + let device = Device::Cpu; + let config = config.unwrap_or_default(); + let generate_config = generate_config.unwrap_or_default(); + + // Load weights + let model_path = Path::new(model_path); + // ... load model implementation + + Ok(Self { + model: todo!(), + config: generate_config, + device, + }) + } + + fn generate(&mut self, prompt: &str) -> Result { + // Tokenize prompt + // Run inference + // Decode output + Ok(prompt.to_string()) + } +} +``` + +#### processor.rs (optional) + +For complex models with multimodal input: + +```rust +use anyhow::Result; + +pub struct NewModelProcessor { + // Processing state +} + +impl NewModelProcessor { + pub fn new() -> Self { + Self {} + } + + pub fn process_text(&self, text: &str) -> Result> { + // Process text input + Ok(vec![text.to_string()]) + } + + pub fn process_image(&self, image_path: &str) -> Result { + // Process image input + todo!() + } +} +``` + +#### mod.rs + +Export the model: + +```rust +mod config; +mod model; +mod generate; +pub mod processor; + +pub use generate::NewModelGenerate; +pub use config::{GenerationConfig, NewModelConfig}; +``` + +### Step 3: Register Model + +Update `src/models/mod.rs`: + +```rust +// Add to imports +pub mod newmodel; + +// Add to WhichModel enum +#[derive(ValueEnum, Clone, Debug, PartialEq, Eq)] +pub enum WhichModel { + // ... existing models + NewModel, +} + +// Add to model loading +pub fn load_model( + model_type: &WhichModel, + model_path: &str, + device: &Device, +) -> Result> { + match model_type { + // ... existing models + WhichModel::NewModel => { + Ok(Box::new(newmodel::NewModelGenerate::init(model_path, None, None)?)) + } + } +} +``` + +### Step 4: Update CLI + +Update `src/main.rs` to include the new model in help text and CLI options if needed. + +### Step 5: Add Tests + +Create `tests/test_newmodel.rs`: + +```rust +use anyhow::Result; + +#[test] +fn test_newmodel_generate() -> Result<()> { + let model_path = "path/to/test/model"; + let mut model = aha::models::newmodel::NewModelGenerate::init(model_path, None, None)?; + + let result = model.generate("Test prompt")?; + assert!(!result.is_empty()); + + Ok(()) +} +``` + +### Step 6: Update Documentation + +Update the following files: +- `README.md` - Add model to supported models list +- `docs/cli.md` - Add model ID to model list +- `docs/api.md` - Add model to supported models section +- `CHANGELOG.md` - Add entry for new model + +## Testing + +### Unit Tests + +```bash +# Run all tests +cargo test + +# Run specific test +cargo test test_newmodel_generate + +# Run with output +cargo test -- --nocapture + +# Run tests in parallel +cargo test -- --test-threads=4 +``` + +### Integration Tests + +Integration tests are located in `tests/`: + +```bash +# Run specific integration test +cargo test --test test_qwen3vl +``` + +### Manual Testing + +Test the CLI and API manually: + +```bash +# Test CLI +cargo run -- -m newmodel + +# Test API +cargo run -- -m newmodel -p 8080 +curl http://127.0.0.1:8080/chat/completions -d '{...}' +``` + +### Model-Specific Tests + +Each model should have tests covering: +- Model loading +- Basic inference +- Edge cases +- Error handling + +## Code Style + +### Formatting + +```bash +# Format all code +cargo fmt + +# Check formatting without making changes +cargo fmt --check +``` + +### Linting + +```bash +# Run clippy +cargo clippy + +# Fix clippy warnings +cargo clippy --fix +``` + +### Conventions + +- Use 4 spaces for indentation +- Prefer `Result` over `Option` for errors +- Use `anyhow::Result` for application errors +- Document public APIs with rustdoc comments +- Keep functions focused and small +- Use meaningful variable names + +### Documentation + +```rust +/// Generates text using the NewModel. +/// +/// # Arguments +/// +/// * `prompt` - The input prompt text +/// * `max_tokens` - Maximum tokens to generate +/// +/// # Returns +/// +/// Generated text as a String +/// +/// # Examples +/// +/// ```no_run +/// let result = model.generate("Hello")?; +/// ``` +pub fn generate(&mut self, prompt: &str) -> Result { + // Implementation +} +``` + +## Submitting Contributions + +### Pull Request Process + +1. Fork the repository +2. Create a feature branch: + ```bash + git checkout -b feature/new-model + ``` +3. Make your changes +4. Add tests +5. Update documentation +6. Ensure all tests pass: + ```bash + cargo test + cargo clippy + cargo fmt --check + ``` +7. Commit and push: + ```bash + git commit -m "Add NewModel support" + git push origin feature/new-model + ``` +8. Create a pull request on GitHub + +### Pull Request Checklist + +- [ ] Tests added/updated +- [ ] Documentation updated +- [ ] CHANGELOG.md updated +- [ ] Code formatted (`cargo fmt`) +- [ ] Clippy warnings fixed (`cargo clippy`) +- [ ] All tests pass (`cargo test`) +- [ ] Commit messages follow conventions + +### Commit Message Conventions + +Follow conventional commits: + +``` +feat: add NewModel support +fix: correct tensor dimensions in Qwen3VL +docs: update installation guide +test: add integration test for VoxCPM +refactor: simplify model loading logic +perf: improve inference speed by 20% +``` + +## Release Process + +### Version Bump + +Update `Cargo.toml`: + +```toml +[package] +version = "0.1.9" # Bump version +``` + +### Update Changelog + +Add entry to `CHANGELOG.md`: + +```markdown +## [0.1.9] - 2025-02-06 + +### Added +- NewModel support + +### Fixed +- Memory leak in image processing + +### Changed +- Improved error messages +``` + +### Create Release + +```bash +# Tag the release +git tag -a v0.1.9 -m "Release v0.1.9" +git push origin v0.1.9 + +# Build release artifacts +cargo build --release + +# Publish to crates.io (if applicable) +cargo publish +``` + +## Debugging + +### Logging + +Enable debug logging: + +```bash +RUST_LOG=debug cargo run -- -m qwen3-0.6b +``` + +Set specific module logging: + +```bash +RUST_LOG=aha::models::qwen3vl=debug cargo run -- -m qwen3-0.6b +``` + +### Debugging Tests + +```bash +# Print test output +cargo test -- --nocapture + +# Show backtrace +RUST_BACKTRACE=1 cargo test +``` + +### Common Issues + +#### Build Errors + +- **Linking errors**: Install required system dependencies +- **CUDA errors**: Ensure CUDA toolkit is installed +- **Metal errors**: Check you're on Apple Silicon + +#### Runtime Errors + +- **Model not found**: Check model path and download +- **Out of memory**: Use smaller model or enable GPU +- **Slow inference**: Enable GPU acceleration + +## Resources + +- [Candle Documentation](https://github.com/huggingface/candle) +- [Rust Guidelines](https://rust-lang.github.io/api-guidelines/) +- [Conventional Commits](https://www.conventionalcommits.org/) + +## See Also + +- [Architecture & Design](./concepts.md) - How AHA works +- [Installation](./installation.md) - Setup guide +- [API Reference](./api.md) - API documentation diff --git a/docs/development.zh-CN.md b/docs/development.zh-CN.md new file mode 100644 index 0000000..6170b47 --- /dev/null +++ b/docs/development.zh-CN.md @@ -0,0 +1,601 @@ +# 开发指南 + +本指南涵盖为 AHA 做贡献,包括开发设置、添加新模型和提交贡献。 + +## 目录 + +- [开发设置](#开发设置) +- [项目结构](#项目结构) +- [添加新模型](#添加新模型) +- [测试](#测试) +- [代码风格](#代码风格) +- [提交贡献](#提交贡献) +- [发布流程](#发布流程) + +## 开发设置 + +### 前置要求 + +- Rust 1.85+ (edition 2024) +- Git +- 可选:CUDA Toolkit、Metal、FFmpeg(用于功能开发) + +### 克隆和构建 + +```bash +# 克隆仓库 +git clone https://github.com/jhqxxx/aha.git +cd aha + +# 调试模式构建(编译更快) +cargo build + +# 发布模式构建(性能更好) +cargo build --release + +# 使用功能构建 +cargo build --features "cuda,flash-attn" +cargo build --features "metal" +cargo build --features "ffmpeg" +``` + +### 开发工作流程 + +```bash +# 运行 CLI +cargo run -- -m qwen3-0.6b + +# 运行测试 +cargo test + +# 运行特定测试 +cargo test test_qwen3vl_generate + +# 启用日志运行 +RUST_LOG=debug cargo run -- -m qwen3-0.6b + +# 检查代码而不构建 +cargo check + +# 格式化代码 +cargo fmt + +# 运行 linter +cargo clippy +``` + +## 项目结构 + +``` +aha/ +├── Cargo.toml # 构建配置 +├── src/ +│ ├── main.rs # CLI 入口点 +│ ├── lib.rs # 库导出 +│ ├── api.rs # HTTP API 处理程序 +│ ├── exec/ # CLI 命令实现 +│ │ ├── mod.rs +│ │ ├── cli.rs +│ │ ├── serv.rs +│ │ ├── download.rs +│ │ └── run.rs +│ ├── models/ # 模型实现 +│ │ ├── mod.rs # 模型工厂和导出 +│ │ ├── common/ # 共享模型工具 +│ │ │ ├── config.rs +│ │ │ └── mod.rs +│ │ ├── qwen3vl/ # Qwen3-VL 模型 +│ │ │ ├── config.rs +│ │ │ ├── model.rs +│ │ │ ├── generate.rs +│ │ │ ├── processor.rs +│ │ │ └── mod.rs +│ │ ├── voxcpm/ # VoxCPM 模型 +│ │ └── ... # 其他模型 +│ ├── tokenizer/ # 分词工具 +│ ├── chat_template/ # 聊天模板处理 +│ ├── position_embed/ # 位置编码 +│ └── utils/ # 工具函数 +│ ├── audio_utils.rs +│ ├── image_utils.rs +│ ├── download.rs +│ └── common.rs +├── tests/ # 集成测试 +│ ├── test_qwen2_5vl.rs +│ ├── test_qwen3vl.rs +│ └── ... +├── examples/ # 示例代码 +└── docs/ # 文档 +``` + +## 添加新模型 + +本节提供了向 AHA 添加新模型的分步指南。 + +### 步骤 1:创建模型目录 + +在 `src/models/` 下创建新目录: + +```bash +mkdir -p src/models/newmodel +``` + +### 步骤 2:实现模型文件 + +在 `src/models/newmodel/` 中创建以下文件: + +#### config.rs + +定义模型配置: + +```rust +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct NewModelConfig { + pub vocab_size: usize, + pub hidden_size: usize, + pub num_hidden_layers: usize, + pub num_attention_heads: usize, + // ... 其他配置字段 +} + +impl Default for NewModelConfig { + fn default() -> Self { + Self { + vocab_size: 32000, + hidden_size: 2048, + num_hidden_layers: 24, + num_attention_heads: 32, + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct GenerationConfig { + pub temperature: f64, + pub top_p: f64, + pub max_tokens: usize, +} + +impl Default for GenerationConfig { + fn default() -> Self { + Self { + temperature: 1.0, + top_p: 1.0, + max_tokens: 100, + } + } +} +``` + +#### model.rs + +实现模型架构: + +```rust +use candle::{Result, Tensor}; +use candle_nn::{Module, VarBuilder}; + +use super::config::NewModelConfig; + +pub struct NewModel { + // 定义模型组件 + config: NewModelConfig, +} + +impl NewModel { + pub fn load(vb: VarBuilder, config: &NewModelConfig) -> Result { + // 加载模型权重 + Ok(Self { + config: config.clone(), + }) + } + + pub fn forward(&self, input_ids: &Tensor) -> Result { + // 实现前向传播 + Ok(input_ids.clone()) + } +} +``` + +#### generate.rs + +实现 GenerateModel trait: + +```rust +use std::path::Path; +use anyhow::Result; +use candle::Device; + +use super::config::{GenerationConfig, NewModelConfig}; +use aha::models::common::GenerateModel; + +pub struct NewModelGenerate { + // 定义生成状态 + model: super::model::NewModel, + config: GenerationConfig, + device: Device, +} + +impl GenerateModel for NewModelGenerate { + type Config = NewModelConfig; + type GenerateConfig = GenerationConfig; + + fn init( + model_path: &str, + config: Option, + generate_config: Option, + ) -> Result { + // 从磁盘加载模型 + let device = Device::Cpu; + let config = config.unwrap_or_default(); + let generate_config = generate_config.unwrap_or_default(); + + // 加载权重 + let model_path = Path::new(model_path); + // ... 加载模型实现 + + Ok(Self { + model: todo!(), + config: generate_config, + device, + }) + } + + fn generate(&mut self, prompt: &str) -> Result { + // 分词提示 + // 运行推理 + // 解码输出 + Ok(prompt.to_string()) + } +} +``` + +#### processor.rs(可选) + +对于具有多模态输入的复杂模型: + +```rust +use anyhow::Result; + +pub struct NewModelProcessor { + // 处理状态 +} + +impl NewModelProcessor { + pub fn new() -> Self { + Self {} + } + + pub fn process_text(&self, text: &str) -> Result> { + // 处理文本输入 + Ok(vec![text.to_string()]) + } + + pub fn process_image(&self, image_path: &str) -> Result { + // 处理图像输入 + todo!() + } +} +``` + +#### mod.rs + +导出模型: + +```rust +mod config; +mod model; +mod generate; +pub mod processor; + +pub use generate::NewModelGenerate; +pub use config::{GenerationConfig, NewModelConfig}; +``` + +### 步骤 3:注册模型 + +更新 `src/models/mod.rs`: + +```rust +// 添加到导入 +pub mod newmodel; + +// 添加到 WhichModel 枚举 +#[derive(ValueEnum, Clone, Debug, PartialEq, Eq)] +pub enum WhichModel { + // ... 现有模型 + NewModel, +} + +// 添加到模型加载 +pub fn load_model( + model_type: &WhichModel, + model_path: &str, + device: &Device, +) -> Result> { + match model_type { + // ... 现有模型 + WhichModel::NewModel => { + Ok(Box::new(newmodel::NewModelGenerate::init(model_path, None, None)?)) + } + } +} +``` + +### 步骤 4:更新 CLI + +更新 `src/main.rs` 以在帮助文本和 CLI 选项中包含新模型(如果需要)。 + +### 步骤 5:添加测试 + +创建 `tests/test_newmodel.rs`: + +```rust +use anyhow::Result; + +#[test] +fn test_newmodel_generate() -> Result<()> { + let model_path = "path/to/test/model"; + let mut model = aha::models::newmodel::NewModelGenerate::init(model_path, None, None)?; + + let result = model.generate("测试提示")?; + assert!(!result.is_empty()); + + Ok(()) +} +``` + +### 步骤 6:更新文档 + +更新以下文件: +- `README.md` - 将模型添加到支持的模型列表 +- `docs/cli.md` - 将模型 ID 添加到模型列表 +- `docs/api.md` - 将模型添加到支持的模型部分 +- `CHANGELOG.md` - 为新模型添加条目 + +## 测试 + +### 单元测试 + +```bash +# 运行所有测试 +cargo test + +# 运行特定测试 +cargo test test_newmodel_generate + +# 启用输出运行 +cargo test -- --nocapture + +# 并行运行测试 +cargo test -- --test-threads=4 +``` + +### 集成测试 + +集成测试位于 `tests/` 中: + +```bash +# 运行特定集成测试 +cargo test --test test_qwen3vl +``` + +### 手动测试 + +手动测试 CLI 和 API: + +```bash +# 测试 CLI +cargo run -- -m newmodel + +# 测试 API +cargo run -- -m newmodel -p 8080 +curl http://127.0.0.1:8080/chat/completions -d '{...}' +``` + +### 模型特定测试 + +每个模型都应该有涵盖以下内容的测试: +- 模型加载 +- 基本推理 +- 边缘情况 +- 错误处理 + +## 代码风格 + +### 格式化 + +```bash +# 格式化所有代码 +cargo fmt + +# 检查格式化而不进行更改 +cargo fmt --check +``` + +### Linting + +```bash +# 运行 clippy +cargo clippy + +# 修复 clippy 警告 +cargo clippy --fix +``` + +### 约定 + +- 使用 4 个空格缩进 +- 对于错误,优先使用 `Result` 而不是 `Option` +- 对于应用程序错误使用 `anyhow::Result` +- 使用 rustdoc 注释记录公共 API +- 保持函数专注和小型 +- 使用有意义的变量名 + +### 文档 + +```rust +/// 使用 NewModel 生成文本。 +/// +/// # 参数 +/// +/// * `prompt` - 输入提示文本 +/// * `max_tokens` - 要生成的最大令牌数 +/// +/// # 返回 +/// +/// 生成的文本作为字符串 +/// +/// # 示例 +/// +/// ```no_run +/// let result = model.generate("你好")?; +/// ``` +pub fn generate(&mut self, prompt: &str) -> Result { + // 实现 +} +``` + +## 提交贡献 + +### Pull Request 流程 + +1. Fork 仓库 +2. 创建功能分支: + ```bash + git checkout -b feature/new-model + ``` +3. 进行更改 +4. 添加测试 +5. 更新文档 +6. 确保所有测试通过: + ```bash + cargo test + cargo clippy + cargo fmt --check + ``` +7. 提交并推送: + ```bash + git commit -m "添加 NewModel 支持" + git push origin feature/new-model + ``` +8. 在 GitHub 上创建 pull request + +### Pull Request 清单 + +- [ ] 已添加/更新测试 +- [ ] 已更新文档 +- [ ] 已更新 CHANGELOG.md +- [ ] 代码已格式化(`cargo fmt`) +- [ ] 已修复 Clippy 警告(`cargo clippy`) +- [ ] 所有测试通过(`cargo test`) +- [ ] 提交消息遵循约定 + +### 提交消息约定 + +遵循约定式提交: + +``` +feat: 添加 NewModel 支持 +fix: 修正 Qwen3VL 中的张量维度 +docs: 更新安装指南 +test: 添加 VoxCPM 集成测试 +refactor: 简化模型加载逻辑 +perf: 将推理速度提高 20% +``` + +## 发布流程 + +### 版本升级 + +更新 `Cargo.toml`: + +```toml +[package] +version = "0.1.9" # 升级版本 +``` + +### 更新变更日志 + +将条目添加到 `CHANGELOG.md`: + +```markdown +## [0.1.9] - 2025-02-06 + +### 新增 +- NewModel 支持 + +### 修复 +- 图像处理中的内存泄漏 + +### 更改 +- 改进错误消息 +``` + +### 创建发布 + +```bash +# 标记发布 +git tag -a v0.1.9 -m "Release v0.1.9" +git push origin v0.1.9 + +# 构建发布产物 +cargo build --release + +# 发布到 crates.io(如果适用) +cargo publish +``` + +## 调试 + +### 日志 + +启用调试日志: + +```bash +RUST_LOG=debug cargo run -- -m qwen3-0.6b +``` + +设置特定模块日志: + +```bash +RUST_LOG=aha::models::qwen3vl=debug cargo run -- -m qwen3-0.6b +``` + +### 调试测试 + +```bash +# 打印测试输出 +cargo test -- --nocapture + +# 显示回溯 +RUST_BACKTRACE=1 cargo test +``` + +### 常见问题 + +#### 构建错误 + +- **链接错误**:安装所需的系统依赖 +- **CUDA 错误**:确保已安装 CUDA toolkit +- **Metal 错误**:检查您是否在 Apple Silicon 上 + +#### 运行时错误 + +- **未找到模型**:检查模型路径和下载 +- **内存不足**:使用更小的模型或启用 GPU +- **推理速度慢**:启用 GPU 加速 + +## 资源 + +- [Candle 文档](https://github.com/huggingface/candle) +- [Rust 指南](https://rust-lang.github.io/api-guidelines/) +- [约定式提交](https://www.conventionalcommits.org/) + +## 另见 + +- [架构与设计](./concepts.zh-CN.md) - AHA 的工作原理 +- [安装](./installation.zh-CN.md) - 设置指南 +- [API 参考](./api.zh-CN.md) - API 文档 diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000..921752d --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,376 @@ +# Getting Started + +Welcome to AHA! This guide will help you get up and running quickly. + +## Quick Start (5 Minutes) + +### 1. Check Available Models + +```bash +aha list +``` + +### 2. Download Your First Model + +```bash +# Download a small text model to start +aha download -m qwen3-0.6b +``` + +### 3. Start the Service + +```bash +# Start the HTTP API server +aha cli -m qwen3-0.6b +``` + +The service will start on `http://127.0.0.1:10100` + +### 4. Make Your First API Call + +In a new terminal: + +```bash +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [ + {"role": "user", "content": "Hello, AHA!"} + ] + }' +``` + +## Basic Concepts + +### What is AHA? + +AHA is a local AI inference engine that: +- Runs models on your machine (no cloud API) +- Supports multiple model types (text, vision, audio, OCR, ASR) +- Provides an OpenAI-compatible API +- Works offline once models are downloaded + +### Model Categories + +| Category | Description | Example Models | +|----------|-------------|----------------| +| **Text** | Text generation and chat | Qwen3, MiniCPM4 | +| **Vision** | Image understanding | Qwen2.5VL, Qwen3VL | +| **OCR** | Text extraction from images | DeepSeek-OCR, Hunyuan-OCR | +| **ASR** | Speech-to-text | GLM-ASR, Fun-ASR, Qwen3-ASR | +| **Audio** | Text-to-speech | VoxCPM, VoxCPM1.5 | +| **Image** | Image processing | RMBG2.0 (background removal) | + +### CLI Commands + +| Command | Purpose | +|---------|---------| +| `aha cli` | Download model and start service | +| `aha serv` | Start service with existing model | +| `aha download` | Download model only | +| `aha run` | Direct inference without server | +| `aha list` | List available models | + +## Common Workflows + +### Text Generation + +```bash +# Start the service +aha cli -m qwen3-0.6b + +# In another terminal, make a request +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Explain quantum computing in simple terms."} + ], + "max_tokens": 200, + "temperature": 0.7 + }' +``` + +### Vision Understanding + +```bash +# Start a vision model +aha cli -m qwen3vl-2b + +# Analyze an image +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3vl-2b", + "messages": [ + { + "role": "user", + "content": [ + {"type": "text", "text": "Describe this image in detail."}, + {"type": "image_url", "image_url": {"url": "file:///path/to/image.jpg"}} + ] + } + ] + }' +``` + +### OCR (Text Extraction) + +```bash +# Start an OCR model +aha cli -m deepseek-ocr + +# Extract text from an image +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "deepseek-ocr", + "messages": [ + { + "role": "user", + "content": [ + {"type": "text", "text": "Extract all text from this image."}, + {"type": "image_url", "image_url": {"url": "file:///path/to/document.jpg"}} + ] + } + ] + }' +``` + +### Speech Recognition (ASR) + +```bash +# Start an ASR model +aha cli -m glm-asr-nano-2512 + +# Transcribe audio +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "glm-asr-nano-2512", + "messages": [ + { + "role": "user", + "content": [ + {"type": "text", "text": "Transcribe this audio."}, + {"type": "audio_url", "audio_url": {"url": "file:///path/to/audio.wav"}} + ] + } + ] + }' +``` + +### Text-to-Speech + +```bash +# Start a TTS model +aha cli -m voxcpm1.5 + +# Generate speech +curl http://127.0.0.1:10100/audio/speech \ + -H "Content-Type: application/json" \ + -d '{ + "model": "voxcpm1.5", + "input": "Hello, this is AHA speaking.", + "voice": "default" + }' \ + --output speech.wav +``` + +### Background Removal + +```bash +# Start RMBG2.0 model +aha cli -m rmbg2.0 + +# Remove background from image +curl http://127.0.0.1:10100/images/remove_background \ + -H "Content-Type: application/json" \ + -d '{ + "model": "rmbg2.0", + "image": "file:///path/to/photo.png" + }' \ + --output no-background.png +``` + +### Direct Inference (Without Server) + +```bash +# Run inference directly without starting HTTP server +aha run -m qwen3-0.6b \ + -i "Write a haiku about AI" \ + --weight-path ~/.aha/qwen3-0.6b +``` + +## Configuration Options + +### Change Port + +```bash +# Use port 8080 instead of default 10100 +aha cli -m qwen3-0.6b -p 8080 +``` + +### Bind to All Interfaces + +```bash +# Allow external access (use with caution) +aha cli -m qwen3-0.6b -a 0.0.0.0 -p 8080 +``` + +### Use Local Model + +```bash +# Skip download, use existing model +aha serv -m qwen3-0.6b \ + --weight-path /path/to/model \ + -p 8080 +``` + +### Custom Save Directory + +```bash +# Download model to specific directory +aha download -m qwen3vl-2b -s /data/models +``` + +## Streaming Responses + +For real-time responses, use streaming: + +```bash +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [ + {"role": "user", "content": "Tell me a story"} + ], + "stream": true + }' +``` + +## Model Selection Guide + +### For Text Generation +- **qwen3-0.6b**: Fast, lightweight (~1.2 GB) +- **minicpm4-0.5b**: Small, efficient (~1 GB) + +### For Vision Tasks +- **qwen3vl-2b**: Balanced performance (~4 GB) +- **qwen3vl-8b**: Better quality (~16 GB) + +### For OCR +- **deepseek-ocr**: General purpose +- **hunyuan-ocr**: Good for Chinese text +- **paddleocr-vl**: Lightweight option + +### For Speech Recognition +- **glm-asr-nano-2512**: Fast, accurate +- **fun-asr-nano-2512**: Good for Chinese +- **qwen3asr-0.6b**: Lightweight + +### For Text-to-Speech +- **voxcpm1.5**: High quality Chinese + +### For Background Removal +- **rmbg2.0**: State-of-the-art results + +## Tips & Best Practices + +### 1. Start Small + +Begin with smaller models to understand the workflow: +```bash +aha download -m qwen3-0.6b +``` + +### 2. Use GPU Acceleration + +Build with GPU support for better performance: +```bash +# NVIDIA GPUs +cargo build --release --features cuda + +# Apple Silicon +cargo build --release --features metal +``` + +### 3. Pre-download Models + +Download models when you have good internet: +```bash +aha download -m qwen3vl-2b +``` + +Then use them later without internet: +```bash +aha serv -m qwen3vl-2b --weight-path ~/.aha/qwen3vl-2b +``` + +### 4. Manage Disk Space + +Models are stored in `~/.aha/` by default. Clean up if needed: +```bash +# Check disk usage +du -sh ~/.aha/* + +# Remove old models +rm -rf ~/.aha/old-model-name +``` + +### 5. Monitor Resources + +For large models, monitor your resources: +```bash +# Linux +htop +nvidia-smi # For NVIDIA GPUs + +# macOS +Activity Monitor +``` + +## Troubleshooting + +### Port Already in Use + +```bash +# Use a different port +aha cli -m qwen3-0.6b -p 8080 +``` + +### Model Download Failed + +```bash +# Retry with more attempts +aha download -m qwen3vl-2b --download-retries 5 +``` + +### Out of Memory + +```bash +# Use a smaller model +aha cli -m qwen3-0.6b +``` + +## Next Steps + +1. Explore the [API Reference](./api.md) for detailed endpoint documentation +2. Read the [CLI Reference](./cli.md) for all command options +3. Check [Architecture & Design](./concepts.md) to understand how AHA works +4. See [Development](./development.md) if you want to contribute + +## Examples Repository + +For more examples, check out the [examples](../examples/) directory in the repository. + +## See Also + +- [API Reference](./api.md) - Complete API documentation +- [CLI Reference](./cli.md) - Command-line reference +- [Installation Guide](./installation.md) - Installation instructions +- [Development Guide](./development.md) - Contributing guide diff --git a/docs/getting-started.zh-CN.md b/docs/getting-started.zh-CN.md new file mode 100644 index 0000000..ce9856e --- /dev/null +++ b/docs/getting-started.zh-CN.md @@ -0,0 +1,376 @@ +# 快速入门 + +欢迎使用 AHA!本指南将帮助您快速上手。 + +## 快速开始(5 分钟) + +### 1. 查看可用模型 + +```bash +aha list +``` + +### 2. 下载第一个模型 + +```bash +# 下载一个小型文本模型开始 +aha download -m qwen3-0.6b +``` + +### 3. 启动服务 + +```bash +# 启动 HTTP API 服务器 +aha cli -m qwen3-0.6b +``` + +服务将在 `http://127.0.0.1:10100` 上启动 + +### 4. 发起第一个 API 调用 + +在新终端中: + +```bash +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [ + {"role": "user", "content": "你好,AHA!"} + ] + }' +``` + +## 基本概念 + +### 什么是 AHA? + +AHA 是一个本地 AI 推理引擎,具有以下特点: +- 在您的机器上运行模型(无需云 API) +- 支持多种模型类型(文本、视觉、音频、OCR、ASR) +- 提供 OpenAI 兼容的 API +- 模型下载后可离线工作 + +### 模型类别 + +| 类别 | 描述 | 示例模型 | +|------|------|----------| +| **文本** | 文本生成和对话 | Qwen3、MiniCPM4 | +| **视觉** | 图像理解 | Qwen2.5VL、Qwen3VL | +| **OCR** | 从图像中提取文本 | DeepSeek-OCR、Hunyuan-OCR | +| **ASR** | 语音转文本 | GLM-ASR、Fun-ASR、Qwen3-ASR | +| **音频** | 文本转语音 | VoxCPM、VoxCPM1.5 | +| **图像** | 图像处理 | RMBG2.0(背景移除) | + +### CLI 命令 + +| 命令 | 用途 | +|------|------| +| `aha cli` | 下载模型并启动服务 | +| `aha serv` | 使用现有模型启动服务 | +| `aha download` | 仅下载模型 | +| `aha run` | 直接推理,无需服务器 | +| `aha list` | 列出可用模型 | + +## 常见工作流程 + +### 文本生成 + +```bash +# 启动服务 +aha cli -m qwen3-0.6b + +# 在另一个终端中,发起请求 +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [ + {"role": "system", "content": "你是一个有用的助手。"}, + {"role": "user", "content": "用简单的术语解释量子计算。"} + ], + "max_tokens": 200, + "temperature": 0.7 + }' +``` + +### 视觉理解 + +```bash +# 启动视觉模型 +aha cli -m qwen3vl-2b + +# 分析图像 +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3vl-2b", + "messages": [ + { + "role": "user", + "content": [ + {"type": "text", "text": "详细描述这张图片。"}, + {"type": "image_url", "image_url": {"url": "file:///path/to/image.jpg"}} + ] + } + ] + }' +``` + +### OCR(文本提取) + +```bash +# 启动 OCR 模型 +aha cli -m deepseek-ocr + +# 从图像中提取文本 +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "deepseek-ocr", + "messages": [ + { + "role": "user", + "content": [ + {"type": "text", "text": "提取这张图片中的所有文本。"}, + {"type": "image_url", "image_url": {"url": "file:///path/to/document.jpg"}} + ] + } + ] + }' +``` + +### 语音识别(ASR) + +```bash +# 启动 ASR 模型 +aha cli -m glm-asr-nano-2512 + +# 转写音频 +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "glm-asr-nano-2512", + "messages": [ + { + "role": "user", + "content": [ + {"type": "text", "text": "转写这段音频。"}, + {"type": "audio_url", "audio_url": {"url": "file:///path/to/audio.wav"}} + ] + } + ] + }' +``` + +### 文本转语音 + +```bash +# 启动 TTS 模型 +aha cli -m voxcpm1.5 + +# 生成语音 +curl http://127.0.0.1:10100/audio/speech \ + -H "Content-Type: application/json" \ + -d '{ + "model": "voxcpm1.5", + "input": "你好,这是 AHA 在说话。", + "voice": "default" + }' \ + --output speech.wav +``` + +### 背景移除 + +```bash +# 启动 RMBG2.0 模型 +aha cli -m rmbg2.0 + +# 移除图像背景 +curl http://127.0.0.1:10100/images/remove_background \ + -H "Content-Type: application/json" \ + -d '{ + "model": "rmbg2.0", + "image": "file:///path/to/photo.png" + }' \ + --output no-background.png +``` + +### 直接推理(无需服务器) + +```bash +# 直接运行推理,无需启动 HTTP 服务器 +aha run -m qwen3-0.6b \ + -i "写一首关于 AI 的俳句" \ + --weight-path ~/.aha/qwen3-0.6b +``` + +## 配置选项 + +### 更改端口 + +```bash +# 使用端口 8080 而不是默认的 10100 +aha cli -m qwen3-0.6b -p 8080 +``` + +### 绑定到所有接口 + +```bash +# 允许外部访问(请谨慎使用) +aha cli -m qwen3-0.6b -a 0.0.0.0 -p 8080 +``` + +### 使用本地模型 + +```bash +# 跳过下载,使用现有模型 +aha serv -m qwen3-0.6b \ + --weight-path /path/to/model \ + -p 8080 +``` + +### 自定义保存目录 + +```bash +# 将模型下载到特定目录 +aha download -m qwen3vl-2b -s /data/models +``` + +## 流式响应 + +对于实时响应,使用流式传输: + +```bash +curl http://127.0.0.1:10100/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "qwen3-0.6b", + "messages": [ + {"role": "user", "content": "给我讲个故事"} + ], + "stream": true + }' +``` + +## 模型选择指南 + +### 文本生成 +- **qwen3-0.6b**:快速、轻量级(~1.2 GB) +- **minicpm4-0.5b**:小型、高效(~1 GB) + +### 视觉任务 +- **qwen3vl-2b**:平衡性能(~4 GB) +- **qwen3vl-8b**:更高质量(~16 GB) + +### OCR +- **deepseek-ocr**:通用 +- **hunyuan-ocr**:适合中文文本 +- **paddleocr-vl**:轻量级选项 + +### 语音识别 +- **glm-asr-nano-2512**:快速、准确 +- **fun-asr-nano-2512**:适合中文 +- **qwen3asr-0.6b**:轻量级 + +### 文本转语音 +- **voxcpm1.5**:高质量中文 + +### 背景移除 +- **rmbg2.0**:最先进的结果 + +## 提示与最佳实践 + +### 1. 从小开始 + +从小型模型开始了解工作流程: +```bash +aha download -m qwen3-0.6b +``` + +### 2. 使用 GPU 加速 + +使用 GPU 支持构建以获得更好的性能: +```bash +# NVIDIA GPU +cargo build --release --features cuda + +# Apple Silicon +cargo build --release --features metal +``` + +### 3. 预先下载模型 + +在网络良好时下载模型: +```bash +aha download -m qwen3vl-2b +``` + +稍后在没有网络的情况下使用: +```bash +aha serv -m qwen3vl-2b --weight-path ~/.aha/qwen3vl-2b +``` + +### 4. 管理磁盘空间 + +模型默认存储在 `~/.aha/` 中。如需要,清理: +```bash +# 检查磁盘使用情况 +du -sh ~/.aha/* + +# 删除旧模型 +rm -rf ~/.aha/old-model-name +``` + +### 5. 监控资源 + +对于大型模型,监控您的资源: +```bash +# Linux +htop +nvidia-smi # 对于 NVIDIA GPU + +# macOS +活动监视器 +``` + +## 故障排除 + +### 端口已被占用 + +```bash +# 使用不同的端口 +aha cli -m qwen3-0.6b -p 8080 +``` + +### 模型下载失败 + +```bash +# 重试更多次数 +aha download -m qwen3vl-2b --download-retries 5 +``` + +### 内存不足 + +```bash +# 使用更小的模型 +aha cli -m qwen3-0.6b +``` + +## 后续步骤 + +1. 探索 [API 参考](./api.zh-CN.md) 了解详细的端点文档 +2. 阅读 [CLI 参考](./cli.zh-CN.md) 了解所有命令选项 +3. 查看 [架构与设计](./concepts.zh-CN.md) 了解 AHA 的工作原理 +4. 如果您想贡献,请参阅 [开发指南](./development.zh-CN.md) + +## 示例仓库 + +更多示例,请查看仓库中的 [examples](../examples/) 目录。 + +## 另见 + +- [API 参考](./api.zh-CN.md) - 完整的 API 文档 +- [CLI 参考](./cli.zh-CN.md) - 命令行参考 +- [安装指南](./installation.zh-CN.md) - 安装说明 +- [开发指南](./development.zh-CN.md) - 贡献指南 diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 0000000..3aff0cf --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,420 @@ +# Installation Guide + +This guide covers installing and setting up AHA on your system. + +## Table of Contents + +- [Prerequisites](#prerequisites) +- [Installation Methods](#installation-methods) +- [Platform-Specific Instructions](#platform-specific-instructions) +- [Feature Flags](#feature-flags) +- [Verification](#verification) +- [Troubleshooting](#troubleshooting) + +## Prerequisites + +### Required + +- **Rust toolchain**: Rust 1.85 or later (edition 2024) + ```bash + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + ``` + +- **Git**: For cloning the repository + ```bash + # Ubuntu/Debian + sudo apt-get install git + + # macOS + brew install git + + # Windows + # Download from https://git-scm.com/download/win + ``` + +### Optional (for FFmpeg feature) + +- **FFmpeg development libraries**: Required for audio/video processing + +## Installation Methods + +### Method 1: Build from Source + +Clone the repository and build: + +```bash +git clone https://github.com/jhqxxx/aha.git +cd aha + +# Build release version +cargo build --release + +# The binary will be at target/release/aha +``` + +### Method 2: Install from Crates.io (when available) + +```bash +cargo install aha +``` + +### Method 3: Install with Features + +Build with specific features enabled: + +```bash +# With CUDA support (NVIDIA GPUs) +cargo build --release --features cuda + +# With Metal support (Apple Silicon) +cargo build --release --features metal + +# With Flash Attention +cargo build --release --features "cuda,flash-attn" + +# With FFmpeg support +cargo build --release --features ffmpeg +``` + +## Platform-Specific Instructions + +### Linux + +#### Ubuntu/Debian + +```bash +# Install build dependencies +sudo apt-get update +sudo apt-get install -y build-essential pkg-config git clang + +# For FFmpeg feature +sudo apt-get install -y ffmpeg libavutil-dev libavcodec-dev \ + libavformat-dev libavfilter-dev libavdevice-dev \ + libswresample-dev libswscale-dev + +# For CUDA support, install CUDA toolkit +# See https://developer.nvidia.com/cuda-downloads +``` + +#### Fedora/RHEL + +```bash +# Install build dependencies +sudo dnf install gcc gcc-c++ make git clang pkg-config + +# For FFmpeg feature +sudo dnf install ffmpeg-devel + +# For CUDA support +sudo dnf install cuda-devel +``` + +### macOS + +#### Apple Silicon (M1/M2/M3/M4) + +```bash +# Install Rust (if not already installed) +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + +# Install command line tools +xcode-select --install + +# For FFmpeg feature +brew install ffmpeg + +# Build with Metal support for GPU acceleration +cargo build --release --features metal +``` + +#### Intel Mac + +```bash +# Install Rust (if not already installed) +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + +# Install command line tools +xcode-select --install + +# For FFmpeg feature +brew install ffmpeg + +# For CUDA support (if you have NVIDIA GPU) +# Install CUDA from https://developer.nvidia.com/cuda-downloads +cargo build --release --features cuda +``` + +### Windows + +#### Using MSVC + +```bash +# Install Rust from https://rustup.rs/ +# Install Visual Studio Build Tools from https://visualstudio.microsoft.com/downloads/ + +# For FFmpeg feature +# Download FFmpeg from https://ffmpeg.org/download.html +# Set FFMPEG_DIR environment variable to your FFmpeg installation + +# Build +cargo build --release +``` + +#### Using WSL2 (Recommended) + +```bash +# Follow Linux instructions inside WSL2 +wsl +sudo apt-get update +sudo apt-get install -y build-essential pkg-config git clang +``` + +## Feature Flags + +aha supports several optional features: + +### cuda + +Enables CUDA support for NVIDIA GPU acceleration. + +```bash +cargo build --release --features cuda +``` + +**Requirements**: +- NVIDIA GPU +- CUDA Toolkit 11.0 or later +- cuDNN library + +**Benefits**: +- 10-50x faster inference +- Support for larger models +- Lower CPU usage + +### metal + +Enables Metal support for Apple Silicon GPU acceleration. + +```bash +cargo build --release --features metal +``` + +**Requirements**: +- Apple Silicon (M1/M2/M3/M4) +- macOS 11.0 or later + +**Benefits**: +- 5-20x faster inference +- Lower power consumption +- Support for larger models + +### flash-attn + +Enables Flash Attention for optimized long-sequence processing. + +```bash +cargo build --release --features "cuda,flash-attn" +``` + +**Requirements**: +- CUDA feature enabled +- Supported GPU architecture (compute capability 7.0+) + +**Benefits**: +- Reduced memory usage +- Faster inference for long sequences +- Especially beneficial for vision models + +**Note**: Must be used with `cuda` feature. + +### ffmpeg + +Enables FFmpeg support for audio/video processing. + +```bash +cargo build --release --features ffmpeg +``` + +**Requirements**: +- FFmpeg development libraries +- Platform-specific (see above) + +**Benefits**: +- Extended audio format support (MP3, AAC, etc.) +- Video processing capabilities +- Better audio resampling + +### Combining Features + +You can combine multiple features: + +```bash +# Maximum performance on NVIDIA GPU +cargo build --release --features "cuda,flash-attn" + +# Apple Silicon with audio support +cargo build --release --features "metal,ffmpeg" + +# Everything enabled +cargo build --release --features "cuda,flash-attn,ffmpeg" +``` + +## Verification + +After installation, verify that AHA is working: + +```bash +# Check version +./target/release/aha --version + +# List supported models +./target/release/aha list + +# (Or if installed to PATH) +aha --version +aha list +``` + +Expected output for `aha list`: + +``` +#Supported models: + + Available models: + +Model Name ModelScope ID +----------------------------------------------------------- +minicpm4-0.5b OpenBMB/MiniCPM4-0.5B +qwen2.5vl-3b Qwen/Qwen2.5-VL-3B-Instruct +qwen2.5vl-7b Qwen/Qwen2.5-VL-7B-Instruct +qwen3-0.6b Qwen/Qwen3-0.6B +qwen3asr-0.6b Qwen/Qwen3-ASR-0.6B +qwen3asr-1.7b Qwen/Qwen3-ASR-1.7B +qwen3vl-4b Qwen/Qwen3-VL-2B-Instruct +qwen3vl-4b Qwen/Qwen3-VL-4B-Instruct +qwen3vl-8b Qwen/Qwen3-VL-8B-Instruct +qwen3vl-32b Qwen/Qwen3-VL-32B-Instruct +deepseek-ocr deepseek-ai/DeepSeek-OCR +hunyuan-ocr Tencent-Hunyuan/HunyuanOCR +paddleocr-vl PaddlePaddle/PaddleOCR-VL +rmbg2.0 AI-ModelScope/RMBG-2.0 +voxcpm OpenBMB/VoxCPM-0.5B +voxcpm1.5 OpenBMB/VoxCPM1.5 +glm-asr-nano-2512 ZhipuAI/GLM-ASR-Nano-2512 +fun-asr-nano-2512 FunAudioLLM/Fun-ASR-Nano-2512 + +``` + +## Troubleshooting + +### Build Errors + +#### "error: linking with cc failed" + +This usually indicates missing system dependencies. + +**Solution**: Install required build tools for your platform (see Platform-Specific Instructions). + +#### "error: CUDA not found" + +CUDA feature is enabled but CUDA toolkit is not installed. + +**Solution**: +- Install CUDA toolkit from https://developer.nvidia.com/cuda-downloads +- Or build without CUDA: `cargo build --release` + +#### "error: Metal not available" + +Metal feature is enabled but not on supported hardware. + +**Solution**: +- Ensure you're on Apple Silicon +- Or build without Metal: `cargo build --release` + +### Runtime Errors + +#### "error while loading shared libraries" + +Missing runtime libraries. + +**Solution**: Install required libraries (see Platform-Specific Instructions). + +#### "Out of memory" + +Model is too large for available RAM/VRAM. + +**Solution**: +- Use a smaller model +- Close other applications +- Enable GPU acceleration for better memory efficiency + +#### "Model download failed" + +Network issue or insufficient disk space. + +**Solution**: +- Check internet connection +- Ensure sufficient disk space in `~/.aha/` +- Try again: download will resume if interrupted + +### Performance Issues + +#### Slow inference + +**Solutions**: +1. Enable GPU acceleration: `--features cuda` or `--features metal` +2. Enable Flash Attention: `--features "cuda,flash-attn"` +3. Use a smaller model +4. Check if GPU is being used (should see GPU usage in monitoring tools) + +#### High CPU usage + +**Solutions**: +1. Enable GPU acceleration +2. Reduce batch size +3. Use model with lower precision + +## System Requirements +*Different models require different hardware and software, for reference.* + +### Minimum Requirements + +- **CPU**: x86_64 or ARM64 +- **RAM**: 8 GB (16 GB recommended) +- **Disk**: 10 GB for models (varies by model) +- **OS**: Linux, macOS, or Windows + +### Recommended Requirements + +- **CPU**: Modern multi-core processor +- **RAM**: 32 GB or more +- **GPU**: NVIDIA GPU (with CUDA) or Apple Silicon +- **Disk**: SSD with 50+ GB free space +- **OS**: Linux (Ubuntu 22.04+) or macOS (Monterey+) + +## Model Sizes + +Approximate download sizes for popular models: + +| Model | Size | RAM Usage | +|-------|------|-----------| +| qwen3-0.6b | ~1.2 GB | ~2 GB | +| qwen3vl-2b | ~4 GB | ~6 GB | +| qwen3vl-8b | ~16 GB | ~20 GB | +| qwen3vl-32b | ~64 GB | ~70 GB | + +## Next Steps + +After successful installation: + +1. Read the [Getting Started Guide](./getting-started.md) +2. Download your first model: `aha download -m qwen3-0.6b` +3. Start the service: `aha cli -m qwen3-0.6b` +4. Explore the [API Reference](./api.md) + +## See Also + +- [Getting Started](./getting-started.md) - Quick start guide +- [CLI Reference](./cli.md) - Command-line usage +- [API Reference](./api.md) - REST API documentation +- [Development](./development.md) - Contributing guide diff --git a/docs/installation.zh-CN.md b/docs/installation.zh-CN.md new file mode 100644 index 0000000..03ae3a2 --- /dev/null +++ b/docs/installation.zh-CN.md @@ -0,0 +1,419 @@ +# 安装指南 + +本指南介绍如何在您的系统上安装和设置 AHA。 + +## 目录 + +- [前置要求](#前置要求) +- [安装方法](#安装方法) +- [平台特定说明](#平台特定说明) +- [功能特性](#功能特性) +- [验证安装](#验证安装) +- [故障排除](#故障排除) + +## 前置要求 + +### 必需 + +- **Rust 工具链**:Rust 1.85 或更高版本(edition 2024) + ```bash + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + ``` + +- **Git**:用于克隆仓库 + ```bash + # Ubuntu/Debian + sudo apt-get install git + + # macOS + brew install git + + # Windows + # 从 https://git-scm.com/download/win 下载 + ``` + +### 可选(用于 FFmpeg 功能) + +- **FFmpeg 开发库**:音频/视频处理所需 + +## 安装方法 + +### 方法 1:从源码构建 + +克隆仓库并构建: + +```bash +git clone https://github.com/jhqxxx/aha.git +cd aha + +# 构建发布版本 +cargo build --release + +# 二进制文件位于 target/release/aha +``` + +### 方法 2:从 Crates.io 安装(当可用时) + +```bash +cargo install aha +``` + +### 方法 3:启用特定功能构建 + +使用特定功能构建: + +```bash +# 启用 CUDA 支持(NVIDIA GPU) +cargo build --release --features cuda + +# 启用 Metal 支持(Apple Silicon) +cargo build --release --features metal + +# 启用 Flash Attention +cargo build --release --features "cuda,flash-attn" + +# 启用 FFmpeg 支持 +cargo build --release --features ffmpeg +``` + +## 平台特定说明 + +### Linux + +#### Ubuntu/Debian + +```bash +# 安装构建依赖 +sudo apt-get update +sudo apt-get install -y build-essential pkg-config git clang + +# FFmpeg 功能所需 +sudo apt-get install -y ffmpeg libavutil-dev libavcodec-dev \ + libavformat-dev libavfilter-dev libavdevice-dev \ + libswresample-dev libswscale-dev + +# CUDA 支持,从 https://developer.nvidia.com/cuda-downloads 安装 CUDA toolkit +``` + +#### Fedora/RHEL + +```bash +# 安装构建依赖 +sudo dnf install gcc gcc-c++ make git clang pkg-config + +# FFmpeg 功能所需 +sudo dnf install ffmpeg-devel + +# CUDA 支持 +sudo dnf install cuda-devel +``` + +### macOS + +#### Apple Silicon (M1/M2/M3/M4) + +```bash +# 安装 Rust(如果尚未安装) +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + +# 安装命令行工具 +xcode-select --install + +# FFmpeg 功能所需 +brew install ffmpeg + +# 启用 Metal 支持以进行 GPU 加速 +cargo build --release --features metal +``` + +#### Intel Mac + +```bash +# 安装 Rust(如果尚未安装) +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + +# 安装命令行工具 +xcode-select --install + +# FFmpeg 功能所需 +brew install ffmpeg + +# CUDA 支持(如果您有 NVIDIA GPU) +# 从 https://developer.nvidia.com/cuda-downloads 安装 CUDA +cargo build --release --features cuda +``` + +### Windows + +#### 使用 MSVC + +```bash +# 从 https://rustup.rs/ 安装 Rust +# 从 https://visualstudio.microsoft.com/downloads/ 安装 Visual Studio Build Tools + +# FFmpeg 功能 +# 从 https://ffmpeg.org/download.html 下载 FFmpeg +# 设置 FFMPEG_DIR 环境变量指向您的 FFmpeg 安装目录 + +# 构建 +cargo build --release +``` + +#### 使用 WSL2(推荐) + +```bash +# 在 WSL2 中按照 Linux 说明操作 +wsl +sudo apt-get update +sudo apt-get install -y build-essential pkg-config git clang +``` + +## 功能特性 + +AHA 支持多个可选功能: + +### cuda + +启用 NVIDIA GPU 加速的 CUDA 支持。 + +```bash +cargo build --release --features cuda +``` + +**要求**: +- NVIDIA GPU +- CUDA Toolkit 11.0 或更高版本 +- cuDNN 库 + +**优势**: +- 推理速度提升 10-50 倍 +- 支持更大的模型 +- 降低 CPU 使用率 + +### metal + +启用 Apple Silicon GPU 加速的 Metal 支持。 + +```bash +cargo build --release --features metal +``` + +**要求**: +- Apple Silicon (M1/M2/M3/M4) +- macOS 11.0 或更高版本 + +**优势**: +- 推理速度提升 5-20 倍 +- 更低的功耗 +- 支持更大的模型 + +### flash-attn + +启用 Flash Attention 以优化长序列处理。 + +```bash +cargo build --release --features "cuda,flash-attn" +``` + +**要求**: +- 启用 CUDA 功能 +- 支持的 GPU 架构(计算能力 7.0+) + +**优势**: +- 减少内存使用 +- 长序列推理更快 +- 对视觉模型特别有益 + +**注意**:必须与 `cuda` 功能一起使用。 + +### ffmpeg + +启用 FFmpeg 支持以进行音频/视频处理。 + +```bash +cargo build --release --features ffmpeg +``` + +**要求**: +- FFmpeg 开发库 +- 特定平台(见上文) + +**优势**: +- 扩展的音频格式支持(MP3、AAC 等) +- 视频处理能力 +- 更好的音频重采样 + +### 组合功能 + +您可以组合多个功能: + +```bash +# NVIDIA GPU 上的最佳性能 +cargo build --release --features "cuda,flash-attn" + +# 带音频支持的 Apple Silicon +cargo build --release --features "metal,ffmpeg" + +# 启用所有功能 +cargo build --release --features "cuda,flash-attn,ffmpeg" +``` + +## 验证安装 + +安装后,验证 AHA 是否正常工作: + +```bash +# 检查版本 +./target/release/aha --version + +# 列出支持的模型 +./target/release/aha list + +# (如果已安装到 PATH) +aha --version +aha list +``` + +`aha list` 的预期输出: + +```shell +#Supported models: + + Available models: + +Model Name ModelScope ID +----------------------------------------------------------- +minicpm4-0.5b OpenBMB/MiniCPM4-0.5B +qwen2.5vl-3b Qwen/Qwen2.5-VL-3B-Instruct +qwen2.5vl-7b Qwen/Qwen2.5-VL-7B-Instruct +qwen3-0.6b Qwen/Qwen3-0.6B +qwen3asr-0.6b Qwen/Qwen3-ASR-0.6B +qwen3asr-1.7b Qwen/Qwen3-ASR-1.7B +qwen3vl-4b Qwen/Qwen3-VL-2B-Instruct +qwen3vl-4b Qwen/Qwen3-VL-4B-Instruct +qwen3vl-8b Qwen/Qwen3-VL-8B-Instruct +qwen3vl-32b Qwen/Qwen3-VL-32B-Instruct +deepseek-ocr deepseek-ai/DeepSeek-OCR +hunyuan-ocr Tencent-Hunyuan/HunyuanOCR +paddleocr-vl PaddlePaddle/PaddleOCR-VL +rmbg2.0 AI-ModelScope/RMBG-2.0 +voxcpm OpenBMB/VoxCPM-0.5B +voxcpm1.5 OpenBMB/VoxCPM1.5 +glm-asr-nano-2512 ZhipuAI/GLM-ASR-Nano-2512 +fun-asr-nano-2512 FunAudioLLM/Fun-ASR-Nano-2512 + +``` + +## 故障排除 + +### 构建错误 + +#### "error: linking with cc failed" + +通常表示缺少系统依赖。 + +**解决方案**:为您的平台安装所需的构建工具(见平台特定说明)。 + +#### "error: CUDA not found" + +启用了 CUDA 功能但未安装 CUDA toolkit。 + +**解决方案**: +- 从 https://developer.nvidia.com/cuda-downloads 安装 CUDA toolkit +- 或不使用 CUDA 构建:`cargo build --release` + +#### "error: Metal not available" + +启用了 Metal 功能但硬件不支持。 + +**解决方案**: +- 确保您在 Apple Silicon 上 +- 或不使用 Metal 构建:`cargo build --release` + +### 运行时错误 + +#### "error while loading shared libraries" + +缺少运行时库。 + +**解决方案**:安装所需的库(见平台特定说明)。 + +#### "Out of memory" + +模型对于可用 RAM/VRAM 太大。 + +**解决方案**: +- 使用更小的模型 +- 关闭其他应用程序 +- 启用 GPU 加速以获得更好的内存效率 + +#### "Model download failed" + +网络问题或磁盘空间不足。 + +**解决方案**: +- 检查互联网连接 +- 确保 `~/.aha/` 中有足够的磁盘空间 +- 重试:如果中断,下载将恢复 + +### 性能问题 + +#### 推理速度慢 + +**解决方案**: +1. 启用 GPU 加速:`--features cuda` 或 `--features metal` +2. 启用 Flash Attention:`--features "cuda,flash-attn"` +3. 使用更小的模型 +4. 检查是否正在使用 GPU(应在监控工具中看到 GPU 使用率) + +#### CPU 使用率高 + +**解决方案**: +1. 启用 GPU 加速 +2. 减少批处理大小 +3. 使用低精度模型 + +## 系统要求 + +*注:模型不同需求不同的硬件和软件,供参考* +### 最低要求 + +- **CPU**:x86_64 或 ARM64 +- **RAM**:8 GB(推荐 16 GB) +- **磁盘**:10 GB 用于模型(因模型而异) +- **OS**:Linux、macOS 或 Windows + +### 推荐要求 + +- **CPU**:现代多核处理器 +- **RAM**:24 GB 或更多 +- **GPU**:NVIDIA GPU(带 CUDA)或 Apple Silicon +- **磁盘**:具有 50+ GB 可用空间的 SSD +- **OS**:Linux (Ubuntu 22.04+) 或 macOS (Monterey+) + +## 模型大小 + +流行模型的**大致**下载大小: + +| 模型 | 大小 | RAM 使用 | +|------|------|----------| +| qwen3-0.6b | ~1.2 GB | ~2 GB | +| qwen3vl-2b | ~4 GB | ~6 GB | +| qwen3vl-8b | ~16 GB | ~20 GB | +| qwen3vl-32b | ~64 GB | ~70 GB | + +## 后续步骤 + +成功安装后: + +1. 阅读[快速入门指南](./getting-started.zh-CN.md) +2. 下载您的第一个模型:`aha download -m qwen3-0.6b` +3. 启动服务:`aha cli -m qwen3-0.6b` +4. 探索 [API 参考](./api.zh-CN.md) + +## 另见 + +- [快速入门](./getting-started.zh-CN.md) - 快速入门指南 +- [CLI 参考](./cli.zh-CN.md) - 命令行使用 +- [API 参考](./api.zh-CN.md) - REST API 文档 +- [开发指南](./development.zh-CN.md) - 贡献指南 diff --git a/docs/supported-models.md b/docs/supported-models.md new file mode 100644 index 0000000..01765d5 --- /dev/null +++ b/docs/supported-models.md @@ -0,0 +1,92 @@ +# Supported Models + +aha supports a growing collection of state-of-the-art AI models across multiple domains. + +## Text Generation + +| Model | Parameters | Description | Use Case | +|-------|-----------|-------------|----------| +| **Qwen2.5-7B** | 7B | General-purpose LLM | Chat, reasoning, code | +| **Qwen3** | Various | Latest generation | Advanced reasoning | +| **MiniCPM4** | 4B | Efficient lightweight | Edge deployment | + +## Vision & Multimodal + +| Model | Type | Description | Resolution | +|-------|------|-------------|------------| +| **Qwen2.5-VL** | Vision-Language | Image understanding | Up to 1024x1024 | +| **Qwen3-VL** | Vision-Language | Enhanced multimodal | Up to 1536x1536 | +| **MiniCPM-V** | Vision-Language | Lightweight vision | Up to 768x768 | + +## Speech Recognition (ASR) + +| Model | Language | Real-time | Speed | +|-------|----------|-----------|-------| +| **FunASR-Nano** | Chinese/English | Yes | 16x realtime | +| **GLM-ASR-Nano** | Chinese/English | Yes | 32x realtime | + +## OCR + +| Model | Languages | Type | Strength | +|-------|-----------|------|----------| +| **PaddleOCR-VL** | 80+ | Lightweight | General documents | +| **Hunyuan-OCR** | Chinese | Deep learning | Complex layouts | +| **DeepSeek-OCR** | Multi | Scene text | Natural images | + +## Audio Processing + +| Model | Type | Description | +|-------|------|-------------| +| **VoxCPM** | Voice Codec | Neural audio codec | +| **RMBG-2.0** | Background Removal | Voice isolation | + +## Model Formats + +All models are served in optimized ONNX format for: + +- **Cross-platform compatibility** - Windows, macOS, Linux +- **CPU acceleration** - AVX2, NEON, SIMD +- **Edge deployment** - No GPU required +- **Fast inference** - Optimized runtime + +## Model Selection + +aha automatically selects the best model for each task. To override: + +```bash +aha chat "Hello" --model qwen2.5-7b +aha vision --model qwen2.5-vl "Describe this" --image img.jpg +aha asr --model fun-asr-nano audio.wav +``` + +## Model Sources + +Models are sourced from: + +- [Hugging Face](https://huggingface.co) - Primary model hub +- [ModelScope](https://modelscope.cn) - Chinese model hub +- [GitHub Releases](https://github.com) - Backup releases + +## Adding New Models + +See [Development Guide](./development.md) for instructions on adding new model integrations. + +## Model Updates + +Models are regularly updated. Check the [releases](https://github.com/yourusername/aha/releases) for the latest versions. + +## License + +Each model has its own license. Please review the model's license before use in production. + +## Performance Benchmarks + +Approximate inference speeds on CPU (M1 Pro): + +| Model | Task | Tokens/sec | +|-------|------|------------| +| Qwen2.5-7B | Text | 25-35 | +| Qwen2.5-VL | Vision | 20-30 | +| FunASR-Nano | ASR | 200-500x | + +*Benchmarks vary by hardware and input size.* diff --git a/docs/supported-models.zh-CN.md b/docs/supported-models.zh-CN.md new file mode 100644 index 0000000..0827760 --- /dev/null +++ b/docs/supported-models.zh-CN.md @@ -0,0 +1,92 @@ +# 支持的模型 + +aha 支持多个领域的最先进 AI 模型集合。 + +## 文本生成 + +| 模型 | 参数量 | 描述 | 使用场景 | +|------|--------|------|----------| +| **Qwen2.5-7B** | 7B | 通用大语言模型 | 对话、推理、代码 | +| **Qwen3** | 多种 | 最新一代 | 高级推理 | +| **MiniCPM4** | 4B | 高效轻量级 | 边缘部署 | + +## 视觉与多模态 + +| 模型 | 类型 | 描述 | 分辨率 | +|------|------|------|--------| +| **Qwen2.5-VL** | 视觉语言 | 图像理解 | 最高 1024x1024 | +| **Qwen3-VL** | 视觉语言 | 增强多模态 | 最高 1536x1536 | +| **MiniCPM-V** | 视觉语言 | 轻量视觉 | 最高 768x768 | + +## 语音识别 (ASR) + +| 模型 | 语言 | 实时 | 速度 | +|------|------|------|------| +| **FunASR-Nano** | 中/英 | 是 | 16x 实时 | +| **GLM-ASR-Nano** | 中/英 | 是 | 32x 实时 | + +## OCR + +| 模型 | 语言 | 类型 | 优势 | +|------|------|------|------| +| **PaddleOCR-VL** | 80+ | 轻量级 | 通用文档 | +| **Hunyuan-OCR** | 中文 | 深度学习 | 复杂布局 | +| **DeepSeek-OCR** | 多语言 | 场景文字 | 自然图像 | + +## 音频处理 + +| 模型 | 类型 | 描述 | +|------|------|------| +| **VoxCPM** | 语音编解码器 | 神经音频编解码 | +| **RMBG-2.0** | 背景移除 | 语音隔离 | + +## 模型格式 + +所有模型均采用优化的 ONNX 格式,提供: + +- **跨平台兼容** - Windows、macOS、Linux +- **CPU 加速** - AVX2、NEON、SIMD +- **边缘部署** - 无需 GPU +- **快速推理** - 优化运行时 + +## 模型选择 + +aha 会自动为每个任务选择最佳模型。如需覆盖: + +```bash +aha chat "你好" --model qwen2.5-7b +aha vision --model qwen2.5-vl "描述这个" --image img.jpg +aha asr --model fun-asr-nano audio.wav +``` + +## 模型来源 + +模型来源: + +- [Hugging Face](https://huggingface.co) - 主模型中心 +- [ModelScope](https://modelscope.cn) - 中文模型中心 +- [GitHub Releases](https://github.com) - 备份发布 + +## 添加新模型 + +参见 [开发指南](./development.zh-CN.md) 了解添加新模型集成的说明。 + +## 模型更新 + +模型定期更新。查看 [releases](https://github.com/jhqxxx/aha/releases) 获取最新版本。 + +## 许可证 + +每个模型都有自己的许可证。在生产中使用前请查看模型许可证。 + +## 性能基准 + +CPU (M1 Pro) 上的近似推理速度: + +| 模型 | 任务 | Tokens/秒 | +|------|------|-----------| +| Qwen2.5-7B | 文本 | 25-35 | +| Qwen2.5-VL | 视觉 | 20-30 | +| FunASR-Nano | ASR | 200-500x | + +*基准测试因硬件和输入大小而异。* diff --git a/download_and_run.sh b/scripts/download_and_run.sh similarity index 100% rename from download_and_run.sh rename to scripts/download_and_run.sh