Blame view

reranker/DEPLOYMENT_AND_TUNING.md 5.11 KB
e50924ed   tangwang   1. tags -> enrich...
1
  # Reranker 部署与性能调优手册(Qwen3-vLLM)
9f5994b4   tangwang   reranker
2
3
4
5
  
  本文档沉淀当前项目在电商搜索重排场景下的可复用实践,覆盖:
  
  - 环境准备与安装部署
e50924ed   tangwang   1. tags -> enrich...
6
  - `qwen3_vllm` 配置项与优化思路
9f5994b4   tangwang   reranker
7
8
9
10
11
12
  - 1000-doc 场景压测流程
  - 关键结论与推荐默认参数
  - 常见故障排查
  
  适用范围:
  
e50924ed   tangwang   1. tags -> enrich...
13
14
  - 重排后端:`services.rerank.backend: qwen3_vllm`
  - 模型:`Qwen/Qwen3-Reranker-0.6B`
9f5994b4   tangwang   reranker
15
16
17
18
  - 场景:query 较短(通常 < 100 tokens),doc 为商品标题或标题+简短描述,单请求 docs 约 1000 条
  
  ## 1. 环境基线
  
e50924ed   tangwang   1. tags -> enrich...
19
  当前验证环境(2026-03-11):
9f5994b4   tangwang   reranker
20
21
22
23
  
  - GPU:`Tesla T4 16GB`
  - Driver / CUDA:`570.158.01 / 12.8`
  - Python:`3.12.3`
e50924ed   tangwang   1. tags -> enrich...
24
  - 关键依赖:`vllm==0.17.0`、`torch==2.10.0+cu128`、`transformers==4.57.6`、`fastapi==0.135.1`、`uvicorn==0.41.0`
9f5994b4   tangwang   reranker
25
26
27
28
29
30
  
  ## 2. 环境准备与安装
  
  ### 2.1 准备 reranker 独立虚拟环境
  
  ```bash
e50924ed   tangwang   1. tags -> enrich...
31
  ./scripts/setup_reranker_venv.sh
9f5994b4   tangwang   reranker
32
33
34
35
36
37
38
39
  ```
  
  ### 2.2 基础检查
  
  ```bash
  nvidia-smi
  ./.venv-reranker/bin/python -c "import torch; print(torch.cuda.is_available())"
  ./.venv-reranker/bin/python -c "import vllm, transformers; print(vllm.__version__, transformers.__version__)"
9f5994b4   tangwang   reranker
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  ```
  
  ## 3. 部署与运行
  
  ### 3.1 配置(`config/config.yaml`)
  
  当前推荐基线:
  
  ```yaml
  services:
    rerank:
      backend: "qwen3_vllm"
      backends:
        qwen3_vllm:
          model_name: "Qwen/Qwen3-Reranker-0.6B"
          engine: "vllm"
          max_model_len: 256
          tensor_parallel_size: 1
          gpu_memory_utilization: 0.36
          dtype: "float16"
          enable_prefix_caching: true
          enforce_eager: false
          infer_batch_size: 64
          sort_by_doc_length: true
3d508beb   tangwang   reranker-4b-gguf
64
65
  ```
  
9f5994b4   tangwang   reranker
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  ### 3.2 启停命令
  
  推荐统一使用:
  
  ```bash
  ./scripts/service_ctl.sh start reranker
  ./scripts/service_ctl.sh status reranker
  ./scripts/service_ctl.sh stop reranker
  ```
  
  也可直接运行原生脚本:
  
  ```bash
  ./scripts/start_reranker.sh
af7ee060   tangwang   service_ctl 简化为“显...
80
  ./scripts/service_ctl.sh stop reranker
9f5994b4   tangwang   reranker
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  ```
  
  健康检查:
  
  ```bash
  curl -sS http://127.0.0.1:6007/health
  ```
  
  ## 4. 核心优化点(已落地)
  
  ### 4.1 请求大小与推理 batch 解耦
  
  - 调用方一次可传入 1000 docs(业务需求)
  - 服务端按 `infer_batch_size` 自动拆批推理(模型效率需求)
9f5994b4   tangwang   reranker
95
  - `sort_by_doc_length: true`:按长度排序后再分批
9f5994b4   tangwang   reranker
96
  
fb973d19   tangwang   configs
97
  ### 4.2 全局去重后回填
9f5994b4   tangwang   reranker
98
99
100
101
  
  - 对 docs 进行全局去重(非“仅相邻去重”)
  - 推理后按原请求顺序回填 scores,保证接口契约稳定
  
fb973d19   tangwang   configs
102
  ### 4.3 启动稳定性修复
9f5994b4   tangwang   reranker
103
104
105
106
  
  - `service_ctl.sh` 对 reranker 使用独立启动路径
  - 增加“稳定健康检查”(连续健康探测)避免“刚 healthy 即退出”的假阳性
  
9f5994b4   tangwang   reranker
107
108
109
110
111
  ## 5. 性能调优流程(标准流程)
  
  ### 5.1 使用一键压测脚本
  
  ```bash
3abbc95a   tangwang   重构(scripts): 整理sc...
112
  ./benchmarks/reranker/benchmark_reranker_1000docs.sh
9f5994b4   tangwang   reranker
113
114
115
116
117
118
119
120
121
122
123
124
125
126
  ```
  
  输出目录:
  
  - `perf_reports/<date>/reranker_1000docs/*.json`
  - `perf_reports/<date>/reranker_1000docs/report.md`
  
  ### 5.2 常用参数扫描
  
  默认扫描:
  
  - `infer_batch_size`: `24 32 48 64`
  - 并发组:`c=1`(看单请求延迟)、`c=4`(看并发吞吐与尾延迟)
  
9f5994b4   tangwang   reranker
127
128
129
130
131
132
133
134
135
136
137
138
139
140
  可通过环境变量覆盖:
  
  - `BATCH_SIZES`
  - `C1_REQUESTS`
  - `C4_REQUESTS`
  - `TENANT_ID`
  - `RERANK_BASE`
  
  ### 5.3 运行时临时覆盖服务参数
  
  用于“同机对比不同参数”:
  
  - `RERANK_VLLM_INFER_BATCH_SIZE`
  - `RERANK_VLLM_SORT_BY_DOC_LENGTH`
9f5994b4   tangwang   reranker
141
  
e50924ed   tangwang   1. tags -> enrich...
142
143
144
145
146
  ## 6. 本轮关键结论(2026-03-11)
  
  基于报告:
  
  - `perf_reports/20260311/reranker_1000docs/report.md`
9f5994b4   tangwang   reranker
147
  
e50924ed   tangwang   1. tags -> enrich...
148
  结论:
9f5994b4   tangwang   reranker
149
150
151
152
153
  
  - 对在线重排更重要的单请求延迟(`c=1`)指标,`infer_batch_size=64` 最优
  - `infer_batch_size=96` 在更高并发下吞吐略高,但会牺牲单请求延迟稳定性
  - 当前默认选择 `infer_batch_size=64` 作为平衡点
  
9f5994b4   tangwang   reranker
154
155
  ## 7. 生产建议
  
fb973d19   tangwang   configs
156
  - 默认保持:`infer_batch_size: 64`、`sort_by_doc_length: true`
9f5994b4   tangwang   reranker
157
158
  - 满足以下条件时可考虑提高到 `96`:业务以吞吐优先、可接受更高单请求延迟、已通过同机同数据压测验证收益
  - 每次改动后都必须复跑 `benchmark_reranker_1000docs.sh` 并归档结果
9f5994b4   tangwang   reranker
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
  
  ## 8. 故障排查
  
  ### 8.1 `start reranker` 显示 healthy 后很快退出
  
  排查顺序:
  
  ```bash
  ./scripts/service_ctl.sh status reranker
  tail -n 200 logs/reranker.log
  lsof -i :6007 -P -n
  ```
  
  说明:
  
  - 该类问题已在 `scripts/service_ctl.sh` 中通过 reranker 独立启动分支与稳定健康检查进行修复
  - 若仍出现,优先检查 GPU 资源争用、vLLM 初始化失败或端口冲突
  
  ### 8.2 启动慢
  
  现象:
  
  - 首次启动会加载模型、torch.compile、CUDA graph capture,耗时较长
  
  建议:
  
  - 启动时预留足够健康检查窗口
  - 避免频繁重启(编译缓存在 `.runtime/reranker` 下可复用)
  
  ### 8.3 OOM 或显存不足
  
  优先调整:
  
  - 降低 `gpu_memory_utilization`
  - 降低 `infer_batch_size`
  - 检查是否有其他进程占用同卡
  
9f5994b4   tangwang   reranker
196
197
198
199
200
201
202
203
  ## 9. 变更与验证清单
  
  每次 reranker 调优改动后,至少完成:
  
  - 配置变更已同步 `config/config.yaml`
  - 文档变更已同步 `reranker/README.md` 与本手册
  - 压测报告已归档到 `perf_reports/<date>/reranker_1000docs/`
  - 启停验证通过:`./scripts/service_ctl.sh start reranker`、`./scripts/service_ctl.sh status reranker`、`curl http://127.0.0.1:6007/health`