add pkgs
This commit is contained in:
132
examples/bloom/README_CN.md
Normal file
132
examples/bloom/README_CN.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# BLOOM
|
||||
|
||||
本文档介绍了如何使用昆仑芯XTRT-LLM在单XPU和单节点多XPU上使用昆仑芯XTRT-LLM构建和运行BLOOM模型。
|
||||
|
||||
## 概述
|
||||
|
||||
XTRT-LLM BLOOM示例代码位于 [`examples/bloom`](./). 此文件夹中有以下几个主要文件:
|
||||
|
||||
* [`build.py`](./build.py) 构建运行BLOOM模型所需的XTRT引擎
|
||||
* [`run.py`](./run.py) 基于输入的文字进行推理
|
||||
* [`summarize.py`](./summarize.py) 使用此模型对[cnn_dailymail](https://huggingface.co/datasets/cnn_dailymail) 数据集中的文章进行总结
|
||||
|
||||
## 支持的矩阵
|
||||
|
||||
* FP16
|
||||
* INT8 Weight-Only
|
||||
* Tensor Parallel
|
||||
|
||||
## 使用说明
|
||||
|
||||
XTRT-LLM BLOOM示例代码位于[examples/bloom](./)。它使用HF权重作为输入,并且构建对应的XTRT引擎。XTRT引擎的数量取决于为了运行推理而是用的XPU个数。
|
||||
|
||||
### 构建XTRT引擎
|
||||
|
||||
需要先按照下面的指南准备HF BLOOM checkpoint:https://huggingface.co/docs/transformers/main/en/model_doc/bloom。
|
||||
|
||||
举例:安装BLOOM-560M
|
||||
|
||||
```bash
|
||||
# Setup git-lfs
|
||||
git lfs install
|
||||
rm -rf ./downloads/bloom/560M/
|
||||
mkdir -p ./downloads/bloom/560M/ && git clone https://huggingface.co/bigscience/bloom-560m ./downloads/bloom/560M/
|
||||
```
|
||||
|
||||
XTRT-LLM BLOOM从HF checkpoint构建XTRT引擎。
|
||||
|
||||
通常 `build.py`只需要单个XPU,但如果您已经获得了推理所需的所有XPU,则可以通过添加 `--parallel_build` 参数来启用并行构建,从而加快引擎构建过程。请注意,目前`parallel_build`仅支持单个节点XPU。
|
||||
|
||||
以下为示例:
|
||||
|
||||
```bash
|
||||
# Build a single-XPU float16 engine from HF weights.
|
||||
# Try use_gemm_plugin to prevent accuracy issue. TODO check this holds for BLOOM
|
||||
|
||||
# Single XPU on BLOOM 560M
|
||||
python build.py --model_dir ./downloads/bloom/560M/ \
|
||||
--dtype float16 \
|
||||
--use_gpt_attention_plugin float16 \
|
||||
--output_dir ./downloads/bloom/560M/trt_engines/fp16/1-XPU/
|
||||
|
||||
# Build the BLOOM 560M using a single XPU and apply INT8 weight-only quantization.
|
||||
python build.py --model_dir ./downloads/bloom/560M/ \
|
||||
--dtype float16 \
|
||||
--use_gpt_attention_plugin float16 \
|
||||
--use_weight_only \
|
||||
--weight_only_precision int8 \
|
||||
--output_dir ./downloads/bloom/560M/trt_engines/int8_weight_only/1-XPU/
|
||||
|
||||
# Use 2-way tensor parallelism on BLOOM 560M
|
||||
python build.py --model_dir ./downloads/bloom/560M/ \
|
||||
--dtype float16 \
|
||||
--use_gpt_attention_plugin float16 \
|
||||
--output_dir ./downloads/bloom/560M/trt_engines/fp16/2-XPU/ \
|
||||
--world_size 2
|
||||
```
|
||||
|
||||
#### SmoothQuant
|
||||
|
||||
|
||||
与FP16的HF权重可以直接被处理并加载到XTRT-LLM不同,SmoothQuant需要加载INT8权重,而INT8权重在构建引擎之前需要进行预处理。
|
||||
|
||||
示例:
|
||||
```bash
|
||||
python3 hf_bloom_convert.py -i ./downloads/bloom/560M/ -o ./downloads/bloom-smooth/560M --smoothquant 0.5 --tensor-parallelism 1 --storage-type float16
|
||||
```
|
||||
|
||||
注意:使用PyTorch运行`hf_bloom_convert.py`,并且
|
||||
|
||||
1. 'torch-cpu' 通常比XPyTorch精度更高
|
||||
2. XPyTorch 通常使用超过32GB的GM,因此需要更多的XPU来完成它
|
||||
3. 使用XPyTorch运行时,请添加`-p=1`
|
||||
|
||||
`build.py`增加了新的选项来支持SmoothQuant模型的INT8推理。
|
||||
|
||||
`--use_smooth_quant` 是INT8推理的起点。默认情况下,它将以`--per-token`模式运行模型。
|
||||
`--per-token`和`--per-channel`目前还不支持。
|
||||
|
||||
构建调用示例:
|
||||
|
||||
```bash
|
||||
# Build model for SmoothQuant in the _per_tensor_ mode.
|
||||
python3 build.py --bin_model_dir=./downloads/bloom-smooth/560M/1-XPU \
|
||||
--use_smooth_quant \
|
||||
--use_gpt_attention_plugin float16 \
|
||||
--output_dir ./downloads/bloom-smooth/560M/trt_engines/fp16/1-XPU/
|
||||
```
|
||||
|
||||
注意:目前,SmoothQuant需要启用GPT attention插件。
|
||||
|
||||
注意:我们使用`--bin_model_dir`而不是`--model_dir`,因为SmoothQuant模型需要INT8权重和二进制文件中的各种scales。
|
||||
|
||||
### 运行
|
||||
|
||||
```bash
|
||||
python ../summarize.py --test_trt_llm \
|
||||
--hf_model_dir ./downloads/bloom/560M/ \
|
||||
--data_type fp16 \
|
||||
--engine_dir ./downloads/bloom/560M/trt_engines/fp16/1-XPU/
|
||||
|
||||
python ../summarize.py --test_trt_llm \
|
||||
--hf_model_dir ./downloads/bloom/560M/ \
|
||||
--data_type fp16 \
|
||||
--engine_dir ./downloads/bloom/560M/trt_engines/int8_weight_only/1-XPU/
|
||||
|
||||
python run.py --tokenizer_dir ./downloads/bloom/560M/ \
|
||||
--max_output_len=50 \
|
||||
--engine_dir ./downloads/bloom/560M/trt_engines/fp16/1-XPU/
|
||||
|
||||
python run.py --tokenizer_dir ./downloads/bloom/560M/ \
|
||||
--max_output_len=50 \
|
||||
--engine_dir ./downloads/bloom/560M/trt_engines/int8_weight_only/1-XPU/
|
||||
|
||||
python run.py --tokenizer_dir ./downloads/bloom/560M/ \
|
||||
--max_output_len=50 \
|
||||
--engine_dir ./downloads/bloom-smooth/560M/trt_engines/fp16/1-XPU/
|
||||
|
||||
mpirun -n 2 --allow-run-as-root \
|
||||
python run.py --tokenizer_dir ./downloads/bloom/560M/ \
|
||||
--max_output_len=50 \
|
||||
--engine_dir ./downloads/bloom/560M/trt_engines/fp16/2-XPU/
|
||||
```
|
||||
Reference in New Issue
Block a user