Files
auto_agent/llm_server/README.md
T

191 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LLM Server 部署指南
本目录包含 4 个模型的推理服务:**ASR(语音识别)**、**TTS(语音合成)**、**Reranker(重排序)**、**Embedding(文本嵌入)**。
## 1. 上传到远程服务器
```bash
scp -P 60007 -r C:\Users\86166\Desktop\Agent_Learning_minor\Agent\llm_server\* minor123@semi-ai.tech:~/llm_server/
```
## 2. 远程服务器环境准备
```bash
ssh minor123@6000d
cd ~/llm_server
# 给所有脚本添加执行权限
chmod +x *.sh
# 配置 HuggingFace 镜像加速(国内服务器必需)
export HF_ENDPOINT=https://hf-mirror.com
export HF_HUB_ENABLE_XET=0
echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
echo 'export HF_HUB_ENABLE_XET=0' >> ~/.bashrc
# 安装 modelscope CLI(用于下载模型)
pip install modelscope
# 创建虚拟环境(如尚未创建,需安装对应依赖)
python3 -m venv myenv
source myenv/bin/activate
pip install vllm modelscope transformers fastapi uvicorn torch soundfile bitsandbytes
pip install genie-tts "huggingface_hub>=0.25,<0.30"
```
## 3. 模型下载
所有模型统一存放在 `~/llm_server/models/` 目录下。
### 3.1 安装 modelscope CLI
```bash
pip install modelscope -U
```
### 3.2 Qwen3-ASR-1.7B(语音识别)
```bash
cd ~/llm_server
# 用于 start_asr.sh (vLLM 加载)
modelscope download --model Qwen/Qwen3-ASR-1.7B --local_dir ./models/Qwen/Qwen3-ASR-1.7B
```
> 两个目录内容相同,只是命名不同以适配不同加载方式。
### 3.3 Qwen3-Embedding-0.6B(文本嵌入)
```bash
cd ~/llm_server
modelscope download --model Qwen/Qwen3-Embedding-0.6B --local_dir ./models/Qwen/Qwen3-Embedding-0___6B
```
### 3.4 Qwen3-Reranker-4B(重排序)
```bash
cd ~/llm_server
modelscope download --model Qwen/Qwen3-Reranker-4B --local_dir ./models/Qwen/Qwen3-Reranker-4B
```
### 3.5 Genie TTS(语音合成,端口 8902)
GENIE 是一个基于开源 TTS 项目 **GPT-SoVITS** 构建的轻量级推理引擎,支持中文/日语/英语/韩语,提供极致的 CPU/GPU 推理性能。
#### Step 1:安装 genie-tts
```bash
pip install genie-tts
```
#### Step 2:下载基础资源文件 GenieData(~391MB)
```bash
git clone https://huggingface.co/High-Logic/Genie
```
**方式三:从本地上传**
如果已在本地下载好完整 Genie 目录(如 `Agent/Genie/`),直接 scp:
```bash
scp -P 60007 -r C:\Users\86166\Desktop\Agent_Learning_minor\Agent\Genie\* minor123@semi-ai.tech:~/llm_server/models/genie_tts/
```
> 注意:环境变量 `GENIE_DATA_DIR` 已在 `tts_server.py` 中自动指向 `models/genie_tts/GenieData`,无需额外设置。
#### Step 3:验证文件完整性
完成后检查以下路径均存在:
| 文件/目录 | 说明 |
|-----------|------|
| `models/genie_tts/GenieData/` | 基础资源(词典、声码器等) |
| `models/genie_tts/CharacterModels/v2ProPlus/feibi/tts_models/` | feibi 角色 ONNX 模型 |
| `models/genie_tts/CharacterModels/v2ProPlus/feibi/prompt_wav/zh_vo_Main_Linaxita_2_1_10_26.wav` | feibi 参考音频 |
> 如需使用其他预定义角色(mika、ThirtySeven 等),可浏览 [HuggingFace CharacterModels](https://huggingface.co/High-Logic/Genie/tree/main/CharacterModels) 并按相同方式下载。
### 3.7 完成后的目录结构
```
~/llm_server/
├── models/
│ ├── Qwen/
│ │ ├── Qwen3-ASR-1.7B/ # ASR(vLLM)
│ │ ├── Qwen3-Embedding-0___6B/ # Embedding
│ │ └── Qwen3-Reranker-4B/ # Reranker
│ └── genie_tts/
│ ├── GenieData/
│ └── CharacterModels/
│ └── v2ProPlus/
│ └── feibi/
│ ├── tts_models/
│ └── prompt_wav/
│ └── zh_vo_Main_Linaxita_2_1_10_26.wav
├── start_asr.sh # 启动 ASR 服务
├── start_tts.sh # 启动 TTS 服务
├── start_rag_server.sh # 启动 Reranker + Embedding 服务
└── ...
```
## 4. 启动各服务
### 4.1 ASR(语音识别)— 端口 8901
```bash
cd ~/llm_server
bash start_asr.sh
```
测试:
```bash
python3 test_asr.py --audio /path/to/audio.wav --url http://127.0.0.1:8901/v1/chat/completions
```
### 4.2 TTS(语音合成)— 端口 8902
```bash
cd ~/llm_server
bash start_tts.sh
```
测试:
```bash
python3 test_tts.py
```
> 注意:测试脚本中 `TTS_BASE_URL` 默认为 `http://192.168.137.164:8902`,在远程服务器上需改为 `http://127.0.0.1:8902`。
### 4.3 Reranker + Embedding — 端口 8903
```bash
cd ~/llm_server
bash start_rag_server.sh
```
测试:
```bash
python3 test_rag.py
```
## 5. 服务端口汇总
| 服务 | 脚本 | 端口 |
|------|------|------|
| ASR | `start_asr.sh` | 8901 |
| TTS | `start_tts.sh` | 8902 |
| Reranker | `start_rag_server.sh` | 8903 |
| Embedding | `start_rag_server.sh` | 8903 |
## 6. 停止服务
```bash
kill $(lsof -t -i:8901) # 停止 ASR
kill $(lsof -t -i:8902) # 停止 TTS
kill $(lsof -t -i:8903) # 停止 Reranker/Embedding
```
## 7. 路径说明
所有 Python 脚本中的模型路径已改为基于脚本所在目录的相对路径(通过 `os.path.dirname(os.path.abspath(__file__))` 动态获取),Shell 脚本使用 `${SCRIPT_DIR}` 定位。因此目录整体迁移到任意位置均可正常运行,无需再修改路径。