Unverified Commit edb6eb86 authored by tpoisonooo's avatar tpoisonooo Committed by GitHub
Browse files

docs(quantization): add more test (#53)

* docs(quantization): add more test

* revert(generate.sh): revert ninja

* revert(llama_config.ini): revert empty line

* fix(quantization.md): fix link error
parent 4fd6e710
# PTQ 量化测试结果 # PTQ 量化测试结果
测试对象为内部早期的 100B 模型。尽管模型暂不开放,测试数据仍能展示量化方法对此模型的影响。 ## 显存测试
测试对象为 [Chinese-LLaMa-Alpaca 7B](https://github.com/ymcui/Chinese-LLaMA-Alpaca) 指令模型。
测试方法: 测试方法:
1. 运行 `deploy.py`,切分 100B 模型到 8 个 GPU 上 1. 使用 `deploy.py` 转换模型,修改 `workspace` 配置中的最大并发数;调整 `llama_config.ini` 中的请求数
2. 运行量化脚本,得到量化参数,放到 weights 目录 2. 编译执行 `bin/llama_triton_example`,获取 fp16 版本在不同 batch_size 的显存情况
3. 修改配置文件,使 [kCacheKVInt8](../../src/turbomind/models/llama/llama_utils.h) 选项生效 3. 执行量化脚本,获取量化参数;修改配置文件,使 [kCacheKVInt8](../../src/turbomind/models/llama/llama_utils.h) 选项生效
4. 执行测试数据集,和 fp16 版本对比精度和显存使用情况 4. 重新执行 `bin/llama_triton_example`,获取 int8 版本在不同 batch_size 显存情况
## 显存降低 以下是两个版本的显存对比:
随着 batch_size 增加,`kCacheKVInt8` 可以节约更多显存,从而降低部署成本。 | batch_size | fp16 memory(MiB) | int8 memory(MiB) | diff(MiB) |
| :-: | :-: | :-: | :-: |
| batch | int8 memory(GB/GPU) | fp16 memory(GB/GPU) | | 8 | 22337 | 18241 | -4096 |
| :-: | :-: | :-: | | 16 | 30593 | 22369 | -8224 |
| 16 | 40 | 43 | | 32 | 47073 | 30625 | -16448 |
| 32 | 48 | 60 | | 48 | 63553 | 38881 | -24672 |
相对于直接量化 Weight(如 [GPTQ-for-LLaMa](https://github.com/qwopqwop200/GPTQ-for-LLaMa/)),我们做了两种方案在 7B 模型中的内存增长对比预估,部分数据来自 [llama.cpp](https://github.com/ggerganov/llama.cpp)
## 精度影响
![](../../resources/batch_memory.png)
以下是 `kCacheKVInt8` 方法仅用 c4 数据集量化,在其他数据集的精度损失,数值仅供参考。
因为每个并发需要 1030MB 显存为 2048 token 保存 kv_cache,而服务端需要考量高并发场景的成本,所以量化 kv_cache 比直接量化 weight更合适。
| task | dataset | version | metric | diff |
| :-: | :-: | :-: | :-: | :-: | 需要注意的是,`kCacheKVInt8``WeightInt4` 两种方案可以同时运行,我们后续将提供相关实现。
| Exam | ceval | - | avg_accuracy | -0.43 |
| Exam | ceval-hard | - | avg_accuracy | 2.24 | ## 精度测试
| ChineseUniversal | CMRC_dev | v1-65aa5c | score | -2.99 |
| ChineseUniversal | DRCD_dev | v1-65aa5c | score | -1.14 | 测试对象为 [Chinese-LLaMa-Alpaca 7B](https://github.com/ymcui/Chinese-LLaMA-Alpaca) 指令模型。
| ChineseUniversal | afqmc-dev | v1-bbbabc | accuracy | 1.67 | 测试方法:
| ChineseUniversal | bustm-dev | v1-ecded6 | accuracy | 10.62 | 1.`deploy.py` 转换模型,运行 docker 服务
| ChineseUniversal | bustm-test | v1-ecded6 | accuracy | 14.90 | 2. 通过 `client.py` 测试数据集,获取 fp16 版本精度
| ChineseUniversal | chid-dev | v1-ffc5eb | accuracy | -5.94 | 3. 执行量化脚本,得到量化参数,放到 weights 目录;修改配置文件,使 [kCacheKVInt8](../../src/turbomind/models/llama/llama_utils.h) 选项生效
| ChineseUniversal | chid-test | v1-ffc5eb | accuracy | -4.19 | 4. 再次执行 `client.py`,读取 int8 版本精度
| ChineseUniversal | cluewsc-dev | v1-b88a63 | accuracy | -4.40 |
| ChineseUniversal | cluewsc-test | v1-b88a63 | accuracy | -2.56 | 以下是 `kCacheKVInt8` 方法仅用 c4 数据集量化,在 mmlu-social-science 数据集的精度损失。
| ChineseUniversal | eprstmt-dev | v1-99cf6f | accuracy | 1.87 |
| ChineseUniversal | eprstmt-test | v1-99cf6f | accuracy | 1.48 | | task | dataset | metric | fp16 | int8 | diff |
| Completion | lambada | v1-678ebd | accuracy | -1.65 | | :-: | :-: | :-: | :-: | :-: | :-: |
| Completion | story_cloze | v1-f92a41 | accuracy | -0.11 | | Exam | mmlu-social-science | score | 31.81 | 32.00 | +0.19 |
| EnglishUniversal | AX_b | v1-78e4c2 | accuracy | -1.27 |
| EnglishUniversal | AX_g | v1-ccfc17 | accuracy | -2.81 | 我们注意到精度有轻微提升,mmlu-social-science 一共 3065 个选择题,具体差异如下:
| EnglishUniversal | BoolQ | v1-2c7cf3 | accuracy | -4.22 |
| EnglishUniversal | CB | v1-f60fbb | accuracy | 0.00 | | 类型 | 个数 |
| EnglishUniversal | COPA | v1-d3a03c | accuracy | -2.00 | | :-: | :-: |
| EnglishUniversal | MultiRC | v1-560d31 | accuracy | -8.79 | | fp16 版回答错误,int8 版变对 | 72 |
| EnglishUniversal | ReCoRD | v1-5a2219 | score | -2.09 | | fp16 版回答正确,int8 版变错 | 66 |
| EnglishUniversal | RTE | v1-ccfc17 | accuracy | -3.25 | | 两版均答错且答案不同 | 118 |
| EnglishUniversal | WiC | v1-019721 | accuracy | -6.74 |
| EnglishUniversal | WSC | v1-57571c | accuracy | -5.77 | 我们已经在更大的模型上验证了更多数据集,将持续更新结果。
| EnglishUniversal | race-middle | v1-0c5c3c | accuracy | -1.19 |
| EnglishUniversal | race-high | v1-0c5c3c | accuracy | -1.06 |
| Reasoning | gsm8k_main | v1-3d5be1 | accuracy | -8.80 |
| QA | hellaswag | v1-3e134d | accuracy | -1.45 |
| QA | piqa | v1-362133 | accuracy | -1.53 |
| QA | winogrande | v1-a2f53f | accuracy | -0.79 |
| QA | openbookqa | v1-8587d7 | accuracy | -7.00 |
| QA | openbookqa_fact | v1-4e92f0 | accuracy | -14.00 |
| QA | nq | v1-d2370e | score | -2.16 |
| QA | triviaqa | v1-ead882 | score | -0.43 |
| Security | crows_pairs | v1-8fe12f | accuracy | 11.08 |
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment