7
7
conda create --name paddle_env python=3.10
8
8
conda activate paddle_env
9
9
10
- # 安装 paddlenlp develop版本
10
+ # 安装 paddlenlp develop版本
11
11
pip install --pre --upgrade paddlenlp -f https://www.paddlepaddle.org.cn/whl/paddlenlp.html
12
12
13
13
# 安装 paddlepaddle-gpu nightly版本
@@ -206,6 +206,7 @@ python -u evaluation/eval_mteb.py \
206
206
| [ NV‑Embed‑v1] ( https://huggingface.co/nvidia/NV-Embed-v1 ) | 4096 |
207
207
| [ BGE‑EN‑ICL] ( https://huggingface.co/BAAI/bge-en-icl ) | 4096 |
208
208
| [ LLARA‑passage] ( https://huggingface.co/BAAI/LLARA-passage ) | 4096 |
209
+ | [ Qwen3-Embedding-8B] ( https://huggingface.co/Qwen/Qwen3-Embedding-8B ) | 32K |
209
210
210
211
可支持配置的参数:
211
212
- ` base_model_name_or_path ` : 模型名称或路径
@@ -231,6 +232,7 @@ MSMARCO-Title 数据集, MRR@10, Recall@10, NDCG@10分数:
231
232
| RocketQA v1 | 36.94 | 65.67 | 43.51 |
232
233
| RocketQA v2 | 38.88 | 67.06 | 45.28 |
233
234
| bge-large-en-v1.5 | 35.30 | 64.24 | 41.96 |
235
+ | Qwen3-Embedding-8B | 38.66 | 69.46 | 45.72 |
234
236
| repllama-v1-7b-lora-passage | 38.24 | 66.26 | 45.13 |
235
237
| NV-Embed-v1 | 38.39 | 68.02 | 45.21 |
236
238
| bge-en-icl (zero-shot) | 42.74 | 71.90 | 49.47 |
@@ -246,6 +248,7 @@ MTEB-Retrieval 数据集, MRR@10分数:
246
248
| NV‑Embed‑v1 | 65.24 | 60.28 | 45.17 | 48.14 | 80.19 | 86.78 | 69.24 | 88.36 | 39.73 | 59.40 | 66.70 | 88.35 | 34.27 | 75.17 | 42.50 | 94.33 |
247
249
| bge‑en‑icl (zero‑shot) | 69.29 | 77.83 | 57.88 | 45.69 | 82.04 | 92.50 | 65.78 | 92.76 | 39.97 | 61.84 | 69.64 | 90.22 | 41.14 | 75.13 | 56.56 | 90.33 |
248
250
| LLARA-passage | 60.11 | 38.77 | 34.58 | 36.19 | 75.50 | 81.02 | 51.72 | 86.36 | 38.81 | 57.69 | 56.85 | 80.58 | 30.15 | 73.17 | 67.20 | 93.07 |
251
+ | Qwen3-Embedding-8B | 69.79 | 70.12 | 61.52 | 52.23 | 81.29 | 93.54 | 69.72 | 89.46 | 37.44 | 61.46 | 59.63 | 88.01 | 49.32 | 74.06 | 59.09 | 100.00 |
249
252
250
253
MTEB-Retrieval 数据集, Recall@10分数:
251
254
| 模型 | 平均分数 | ArguAna | ClimateFEVER | CQADupstackRetrieval | DBPedia | FEVER | FiQA2018 | HotpotQA | MSMARCO | NFCorpus | NQ | QuoraRetrieval | SCIDOCS | SciFact | Touche2020 | TRECCOVID |
@@ -257,6 +260,7 @@ MTEB-Retrieval 数据集, Recall@10分数:
257
260
| NV‑Embed‑v1 | 58.78 | 93.95 | 41.07 | 64.66 | 28.67 | 95.24 | 70.62 | 85.19 | 69.15 | 18.45 | 89.16 | 95.92 | 21.27 | 90.02 | 15.94 | 2.36 |
258
261
| bge‑en‑icl (zero‑shot) | 60.62 | 97.08 | 52.19 | 60.38 | 29.81 | 96.92 | 67.42 | 88.33 | 69.53 | 20.42 | 90.96 | 97.02 | 27.33 | 91.05 | 18.81 | 2.11 |
259
262
| LLARA-passage | 52.30 | 76.17 | 32.52 | 47.91 | 26.33 | 90.48 | 51.09 | 71.16 | 67.82 | 17.67 | 81.89 | 92.54 | 18.12 | 86.80 | 21.81 | 2.23 |
263
+ | Qwen3-Embedding-8B | 60.96 | 97.51 | 52.34 | 67.80 | 28.99 | 96.01 | 71.33 | 79.05 | 67.43 | 19.95 | 84.87 | 96.16 | 34.57 | 93.50 | 22.41 | 2.50 |
260
264
261
265
MTEB-Retrieval 数据集, NDCG@10分数:
262
266
| 模型 | 平均分数 | ArguAna | ClimateFEVER | CQADupstackRetrieval | DBPedia | FEVER | FiQA2018 | HotpotQA | MSMARCO | NFCorpus | NQ | QuoraRetrieval | SCIDOCS | SciFact | Touche2020 | TRECCOVID |
@@ -268,6 +272,7 @@ MTEB-Retrieval 数据集, NDCG@10分数:
268
272
| NV‑Embed‑v1 | 58.86 | 68.30 | 34.37 | 50.27 | 48.29 | 86.58 | 62.90 | 79.92 | 46.48 | 37.98 | 71.22 | 89.20 | 20.16 | 78.30 | 23.98 | 84.91 |
269
273
| bge‑en‑icl (zero‑shot) | 61.62 | 82.34 | 45.33 | 47.27 | 50.60 | 91.91 | 59.13 | 84.90 | 46.78 | 40.66 | 73.85 | 91.03 | 25.46 | 77.91 | 30.71 | 76.38 |
270
274
| LLARA-passage | 52.48 | 47.51 | 26.13 | 37.26 | 44.12 | 81.09 | 43.98 | 69.17 | 45.49 | 37.07 | 61.76 | 82.29 | 17.30 | 76.07 | 36.73 | 81.30 |
275
+ | Qwen3-Embedding-8B | 62.36 | 76.63 | 47.13 | 54.01 | 48.86 | 91.82 | 62.14 | 76.28 | 44.29 | 41.31 | 64.63 | 89.03 | 32.22 | 78.48 | 34.99 | 93.54 |
271
276
272
277
273
278
## 压缩
@@ -277,9 +282,9 @@ MTEB-Retrieval 数据集, NDCG@10分数:
277
282
278
283
#### 使用方法
279
284
280
- 通过以下命令执行剪枝脚本。可指定原始模型、输出路径、要剪枝的层数以及模型中transformer层的路径 。
285
+ 通过以下命令执行剪枝脚本。可指定原始模型、输出路径、要剪枝的层数以及模型中 transformer 层的路径 。
281
286
282
- 以repllama -v1-7b-lora-passage为例 :
287
+ 以 repllama -v1-7b-lora-passage 为例 :
283
288
``` bash
284
289
python shortgpt_prune.py \
285
290
--model_name_or_path castorini/repllama-v1-7b-lora-passage \
@@ -288,21 +293,66 @@ python shortgpt_prune.py \
288
293
--layers_path " llama.layers"
289
294
```
290
295
291
- 以NV -Embed-v1为例:
296
+ 以 NV -Embed-v1为例:
292
297
``` bash
293
298
python shortgpt_prune.py \
294
299
--model_name_or_path nvidia/NV-Embed-v1 \
295
- --output_model_path /pruned-NV-Embed-v1_pruned_26 \
300
+ --output_model_path . /pruned-NV-Embed-v1_pruned_26 \
296
301
--n_prune_layers 6 \
297
302
--layers_path " layers"
298
303
```
299
304
可配置参数包括:
300
305
- ` --model_name_or_path ` : 原始模型的名称或本地路径。
301
306
- ` --output_model_path ` : 剪枝后模型的保存路径。
302
- - ` --n_prune_layers ` : 希望移除的层数。脚本会自动找出最不重要的N层 。
303
- - ` --layers_path ` : 模型对象中指向transformer层列表的点分隔路径(例如repllama为 ` "llama.layers" ` , llama为 ` "model.layers" ` )。
307
+ - ` --n_prune_layers ` : 希望移除的层数。脚本会自动找出最不重要的 N 层 。
308
+ - ` --layers_path ` : 模型对象中指向 transformer 层列表的点分隔路径(例如 repllama 为 ` "llama.layers" ` , llama 为 ` "model.layers" ` )。
304
309
305
- 可用output_model_path路径中的模型跑评估[ 评估部分的代码] ( #评估 )
310
+ #### 性能评估
311
+ 剪枝完成后,可以使用 output_model_path 路径下的新模型进行[ MTEB 评估] ( #评估 ) 。
312
+
313
+ 在多个检索任务上评估了` RepLLaMA ` 模型剪枝前后的性能和推理速度。所有实验均在单张 80G A100 GPU 上进行。
314
+
315
+
316
+ | 模型 | 指标 | MSMARCO-Title<br >(MRR@10) | SciFact<br >(NDCG@10) | FiQA2018<br >(NDCG@10)| QuoraRetrieval<br >(NDCG@10) | NFCorpus<br >(NDCG@10) |
317
+ | :--- | :--- | :---: | :---: | :---: | :---: | :---: |
318
+ | ** RepLLaMA** | Batchsize | 7 | 22 | 8 | 320 | 15 |
319
+ | | 时间 (s) | 106863 | 257 | 1381 | 1649 | 198 |
320
+ | | 性能 | 38.33 | 76.19 | 45.95 | 88.25 | 38.02 |
321
+ | ** +shortgpt** | Batchsize | 7 | 22 | 9 | 390 | 15 |
322
+ | | 时间 (s) | 88064 | 211 | 1169 | 1475 | 162 |
323
+ | | 性能 | 36.31 | 73.82 | 44.36 | 88.06 | 38.05 |
324
+
325
+ ### 模型量化
326
+ 支持对向量模型进行量化加载,以降低显存占用和推理延迟。
327
+
328
+ #### 使用方法
329
+ ``` bash
330
+ python -u evaluation/eval_mteb.py \
331
+ --base_model_name_or_path castorini/repllama-v1-7b-lora-passage \
332
+ --output_folder eval_results/repllama-v1-7b-lora-passage \
333
+ --task_name ' SciFact' \
334
+ --eval_batch_size 8 \
335
+ --max_seq_length 2048 \
336
+ --task_split dev \
337
+ --quant_type weight_only_int8 \
338
+ --kv_cache_reuse 1
339
+ ```
340
+ 可配置参数包括:
341
+ * ` --quant_type ` :是否使用量化加载,可选项包括 weight_only_int8,weight_only_int4,no,默认为 no,即不进行量化
342
+ * ` --kv_cache_reuse ` : 量化加载时,是否仅预分配首层 kv_cache 并重复利用,0 表示不复用,1 表示复用,默认为 0,此策略可降低量化加载时显存占用
343
+
344
+
345
+ #### 性能评估
346
+ 在多个检索任务上评估了` RepLLaMA ` 模型量化加载前后的性能和推理速度。所有实验均在单张 80G A100 GPU 上进行。
347
+
348
+ | 模型 | 指标 | MSMARCO-Title<br >(MRR@10) | SciFact<br >(NDCG@10) | FiQA2018<br >(NDCG@10)| QuoraRetrieval<br >(NDCG@10) | NFCorpus<br >(NDCG@10) |
349
+ | :--- | :--- | :---: | :---: | :---: | :---: | :---: |
350
+ | ** RepLLaMA** | Batchsize | 7 | 22 | 8 | 320 | 15 |
351
+ | | 时间 (s) | 106863 | 257 | 1381 | 1649 | 198 |
352
+ | | 性能 | 38.33 | 76.19 | 45.95 | 88.25 | 38.02 |
353
+ | ** +int8量化** | Batchsize | 50 | 180 | 80 | 180 | 180 |
354
+ | | 时间 (s) | 70888 | 172 | 904 | 1143 | 132 |
355
+ | | 性能 | 37.21 | 75.92 | 45.67 | 88.00 | 37.71 |
306
356
307
357
## Reference
308
358
@@ -324,4 +374,4 @@ python shortgpt_prune.py \
324
374
325
375
[ 9] Ruiyang Ren, Yingqi Qu, Jing Liu, Wayne Xin Zhao, Qiaoqiao She, Hua Wu, Haifeng Wang, Ji-Rong Wen: RocketQAv2: A Joint Training Method for Dense Passage Retrieval and Passage Re-ranking. EMNLP 2021
326
376
327
- [ 10] Xin Men, Mingyu Xu, Qingyu Zhang, Bingning Wang, Hongyu Lin, Yaojie Lu, Xianpei Han, Weipeng Chen: Shortgpt: Layers in large language models are more redundant than you expect. ACL Findings 2025
377
+ [ 10] Xin Men, Mingyu Xu, Qingyu Zhang, Bingning Wang, Hongyu Lin, Yaojie Lu, Xianpei Han, Weipeng Chen: Shortgpt: Layers in large language models are more redundant than you expect. ACL Findings 2025
0 commit comments