| # HOS Model Optimizer |
|
|
| HOS Model Optimizer 是一个面向小模型(0.5B-7B 参数)的完整优化工具链,针对 **8GB VRAM** 场景进行了深度优化。 |
|
|
| ## 项目介绍 |
|
|
| 本项目提供从模型量化、推理加速、微调到一键部署的全流程解决方案,帮助开发者在有限硬件资源下高效运行大语言模型。 |
|
|
| ### 核心特性 |
|
|
| - **多种量化方案**:支持 GGUF、AWQ、GPTQ 三种主流量化格式 |
| - **三后端推理引擎**:llama-cpp-python、vLLM、SGLang,自动选择最优后端 |
| - **低资源微调**:QLoRA/LoRA 微调,8GB VRAM 即可训练 7B 模型 |
| - **一键部署**:自动检测硬件并选择最优配置,快速启动 API 服务 |
| - **智能配置**:根据场景自动生成 8GB VRAM 最优配置 |
|
|
| ## 核心功能列表 |
|
|
| | 功能模块 | 说明 | 命令行工具 | |
| |---------|------|-----------| |
| | 量化 | GGUF/AWQ/GPTQ 量化、PPL 评估、格式转换 | `hos-quantize` | |
| | 推理 | 三后端统一接口、API 服务、交互模式、性能基准测试 | `hos-infer` | |
| | 训练 | QLoRA/LoRA 微调、数据集处理、模型合并 | `hos-train` | |
| | 部署 | 硬件检测、自动配置、一键启动 API 服务 | `hos-deploy` | |
| | 配置 | 最优配置生成、配置验证、模板管理 | `hos-config` | |
|
|
| ## 快速开始 |
|
|
| ### 安装 |
|
|
| ```bash |
| # 基础安装 |
| pip install -e . |
| |
| # 安装全部依赖 |
| pip install -e ".[all]" |
| |
| # 按需安装 |
| pip install -e ".[quantization]" # 量化相关 |
| pip install -e ".[inference]" # llama-cpp 推理 |
| pip install -e ".[vllm]" # vLLM 推理 |
| pip install -e ".[sglang]" # SGLang 推理 |
| pip install -e ".[training]" # 训练加速 |
| ``` |
|
|
| ### 5 分钟上手 |
|
|
| ```bash |
| # 1. 量化模型(GGUF Q4_K_M) |
| hos-quantize --method gguf --model ./model --output ./model.gguf |
| |
| # 2. 推理测试 |
| hos-infer --model ./model.gguf --prompt "你好,请介绍一下自己" |
| |
| # 3. 启动 API 服务 |
| hos-infer --model ./model.gguf --serve --port 8000 |
| |
| # 4. 一键部署(自动检测硬件并选择最优配置) |
| hos-deploy --model ./model.gguf --model-size 7.0 |
| |
| # 5. 生成 8GB VRAM 最优配置 |
| hos-config --generate --scenario inference_7b --model-path ./model |
| ``` |
|
|
| ## 安装说明 |
|
|
| ### 系统要求 |
|
|
| - Python >= 3.8 |
| - CUDA >= 11.8(GPU 加速需要) |
| - 推荐 8GB+ VRAM(针对 8GB 场景优化) |
|
|
| ### 安装方式 |
|
|
| ```bash |
| # 从源码安装 |
| git clone https://github.com/hos-team/hos-model-optimizer.git |
| cd HOS-Model-Optimizer |
| pip install -e . |
| |
| # 安装可选依赖 |
| pip install -e ".[all]" |
| ``` |
|
|
| 详细安装指南请参考 [INSTALL.md](INSTALL.md)。 |
|
|
| ## 使用示例 |
|
|
| ### 量化 |
|
|
| ```bash |
| # GGUF 量化(推荐 8GB VRAM 场景) |
| hos-quantize --method gguf --model ./model --output ./model.gguf --quant-type Q4_K_M |
| |
| # AWQ 4-bit 量化 |
| hos-quantize --method awq --bits 4 --model ./model --output ./model-awq |
| |
| # GPTQ 量化 |
| hos-quantize --method gptq --bits 4 --model ./model --output ./model-gptq |
| |
| # 评估量化质量(PPL) |
| hos-quantize --method evaluate --model ./model-awq |
| ``` |
|
|
| ### 推理 |
|
|
| ```bash |
| # 自动选择后端,单次推理 |
| hos-infer --model ./model --prompt "什么是SQL注入?" |
| |
| # 指定 vLLM 后端,启动 API 服务 |
| hos-infer --backend vllm --model ./model --serve --port 8000 |
| |
| # 交互模式 |
| hos-infer --model ./model --chat |
| |
| # 性能基准测试 |
| hos-infer --model ./model --benchmark |
| ``` |
|
|
| ### 训练 |
|
|
| ```bash |
| # QLoRA 微调(8GB VRAM 可用) |
| hos-train --model Qwen/Qwen2.5-0.5B --dataset ./data.json --method qlora |
| |
| # LoRA 微调并自动合并 |
| hos-train --model ./model --dataset ./data.json --method lora --merge |
| |
| # 自定义训练参数 |
| hos-train --model ./model --dataset ./data.json \ |
| --epochs 3 --batch-size 2 --lr 2e-4 \ |
| --lora-rank 16 --lora-alpha 32 |
| ``` |
|
|
| ### 部署 |
|
|
| ```bash |
| # 部署 7B 模型 |
| hos-deploy --model ./model.gguf --model-size 7.0 |
| |
| # 高并发场景 |
| hos-deploy --model ./model.gguf --model-size 7.0 --use-case high_concurrency |
| |
| # 多轮对话场景 |
| hos-deploy --model ./model.gguf --model-size 7.0 --use-case multi_turn |
| ``` |
|
|
| 更多示例请参考 [EXAMPLES.md](EXAMPLES.md)。 |
|
|
| ## 配置说明 |
|
|
| ### 配置文件格式 |
|
|
| 配置文件使用 YAML 格式,支持以下场景模板: |
|
|
| | 模板名称 | 说明 | |
| |---------|------| |
| | `llama_cpp` | llama-cpp 推理配置 | |
| | `vllm` | vLLM 推理配置 | |
| | `sglang` | SGLang 推理配置 | |
| | `quantize` | 量化配置 | |
| | `training` | 训练配置 | |
| | `deploy` | 部署配置 | |
|
|
| ### 生成最优配置 |
|
|
| ```bash |
| # 根据场景生成 |
| hos-config --generate --scenario inference_7b --model-path ./model |
| |
| # 自动生成(根据模型大小和任务类型) |
| hos-config --auto --model-size 7.0 --task inference |
| |
| # 验证配置文件 |
| hos-config --validate --config my_config.yaml |
| |
| # 列出所有模板 |
| hos-config --list-templates |
| |
| # 导出模板 |
| hos-config --export-template llama_cpp --output ./llama_cpp.yaml |
| ``` |
|
|
| ### 8GB VRAM 场景预设 |
|
|
| | 场景 | 推荐后端 | 预期性能 | |
| |------|---------|---------| |
| | `inference_0.8b` | llama-cpp | 100+ tokens/s, 1-2GB VRAM | |
| | `inference_7b` | llama-cpp | 35-45 tokens/s, 5-6GB VRAM | |
| | `training_0.8b` | QLoRA | 2-3GB VRAM | |
| | `training_7b` | QLoRA | 6-8GB VRAM | |
| | `high_throughput_serving` | vLLM | 高吞吐服务 | |
| | `multi_turn_dialogue` | SGLang | 多轮对话优化 | |
|
|
| ## 性能优化建议 |
|
|
| ### 推理优化 |
|
|
| 1. **选择合适的量化格式** |
| - GGUF Q4_K_M:8GB VRAM 首选,平衡速度和精度 |
| - AWQ 4-bit:vLLM 后端首选,精度损失最小 |
| - GPTQ 4-bit:通用性好,兼容性强 |
|
|
| 2. **调整上下文长度** |
| - 8GB VRAM + 7B 模型:建议 `n_ctx=512` 或 `max_model_len=512` |
| - 8GB VRAM + 0.8B 模型:可使用 `n_ctx=2048` |
|
|
| 3. **GPU Offload 策略** |
| - llama-cpp:设置 `n_gpu_layers=-1` 全部 offload 到 GPU |
| - 如果 OOM,逐步减少 offload 层数 |
|
|
| 4. **批处理优化** |
| - vLLM:利用 Continuous Batching,设置合理的 `max_num_seqs` |
| - SGLang:利用 RadixAttention,多轮对话可加速 3-5x |
|
|
| ### 训练优化 |
|
|
| 1. **使用 QLoRA**:4-bit 量化 + LoRA,大幅降低显存需求 |
| 2. **梯度检查点**:启用 `gradient_checkpointing=True` |
| 3. **梯度累积**:使用 `gradient_accumulation_steps` 模拟大批次 |
| 4. **Unsloth 加速**:安装 `unsloth` 可获得 2x 训练加速 |
|
|
| ### 部署优化 |
|
|
| 1. **自动配置**:使用 `hos-deploy` 自动检测硬件并选择最优配置 |
| 2. **健康检查**:部署后自动执行健康检查确保服务正常 |
| 3. **监控显存**:使用 `VRAMCallback` 监控训练过程中的显存使用 |
|
|
| ## 项目结构 |
|
|
| ``` |
| HOS-Model-Optimizer/ |
| ├── hos_optimizer/ |
| │ ├── __init__.py # 包初始化,导出主要类 |
| │ ├── cli.py # 统一命令行接口 |
| │ ├── config.py # 配置管理和优化 |
| │ ├── quantize.py # 量化模块(GGUF/AWQ/GPTQ) |
| │ ├── inference.py # 推理模块(llama-cpp/vLLM/SGLang) |
| │ ├── train.py # 训练模块(QLoRA/LoRA) |
| │ ├── deploy.py # 部署模块(硬件检测/自动配置) |
| │ └── utils.py # 工具函数 |
| ├── docs/ |
| │ └── architecture.md # 架构文档 |
| ├── pyproject.toml # 项目配置 |
| ├── requirements.txt # 依赖列表 |
| ├── setup.py # 安装脚本 |
| ├── LICENSE # MIT 许可证 |
| ├── README.md # 项目主文档(本文件) |
| ├── INSTALL.md # 安装指南 |
| ├── EXAMPLES.md # 使用示例 |
| └── API.md # API 文档 |
| ``` |
|
|
| ## 贡献指南 |
|
|
| 欢迎贡献!请遵循以下步骤: |
|
|
| 1. Fork 本仓库 |
| 2. 创建特性分支 (`git checkout -b feature/amazing-feature`) |
| 3. 提交更改 (`git commit -m 'Add amazing feature'`) |
| 4. 推送到分支 (`git push origin feature/amazing-feature`) |
| 5. 创建 Pull Request |
|
|
| ### 开发规范 |
|
|
| - 代码风格遵循 PEP 8,使用 `black` 格式化(行宽 100) |
| - 提交前运行 `flake8` 检查 |
| - 新功能需要附带测试用例 |
| - Commit message 使用语义化格式 |
|
|
| ```bash |
| # 安装开发依赖 |
| pip install -e ".[dev]" |
| |
| # 运行测试 |
| pytest |
| |
| # 代码格式化 |
| black hos_optimizer/ |
| |
| # 代码检查 |
| flake8 hos_optimizer/ |
| ``` |
|
|
| ## 许可证 |
|
|
| 本项目基于 [MIT License](LICENSE) 开源。 |
|
|
| ``` |
| MIT License |
| |
| Copyright (c) 2026 HOS Team |
| |
| Permission is hereby granted, free of charge, to any person obtaining a copy |
| of this software and associated documentation files (the "Software"), to deal |
| in the Software without restriction, including without limitation the rights |
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| copies of the Software, and to permit persons to whom the Software is |
| furnished to do so, subject to the following conditions: |
| |
| The above copyright notice and this permission notice shall be included in all |
| copies or substantial portions of the Software. |
| ``` |
|
|
| ## 相关链接 |
|
|
| - [安装指南](INSTALL.md) - 详细安装步骤 |
| - [使用示例](EXAMPLES.md) - 完整使用示例 |
| - [API 文档](API.md) - Python API 参考 |
| - [架构文档](docs/architecture.md) - 系统架构说明 |
| - [问题反馈](https://github.com/hos-team/hos-model-optimizer/issues) |
| - [项目源码](https://github.com/hos-team/hos-model-optimizer) |
|
|