3.5. chatglm2/3

chatglm系列模型,使用vllm 0.6.1.post2及以上版本时,需要手动降级transformers库版本

pip3 install transformers==4.43.0

chatglm2/3-6b

模型下载

从huggingface上下载下列任意模型的预训练ckpt,路径记为[path of chatglmckpt]

批量离线推理

python3 -m vllm_utils.benchmark_test \
 --model=[path of chatglmckpt] \
 --demo=te \
 --dtype=float16 \
 --output-len=256

性能测试

python3 -m vllm_utils.benchmark_test --perf \
 --model=[path of chatglmckpt] \
 --input-len=128 \
 --output-len=32640 \
 --num-prompts=16 \
 --block-size=64 \
 --dtype=float16 \
 --max-model-len=32768

注:

  • 本模型支持的max-model-len为8192(chatglm2-6b和chatglm3-6b ckpt)/32768(chatglm2-6b-32k和chatglm3-6b-32k ckpt);

  • input-lenoutput-lennum-prompts可按需调整;

  • 配置 output-len为1时,输出内容中的latency即为time_to_first_token_latency;

  • chatglm2/3 32k模型运行时需要添加环境变量:

    • export PYTORCH_GCU_ALLOC_CONF=backend:topsMallocAsync

基于OpenCompass进行mmlu数据集评测

  1. 安装OpenCompass

执行 OpenCompass的安装步骤

注:建议使用OpenCompass0.3.1版本。如果安装依赖时安装了和torch_gcu不一致的版本,请重新手动安装。

注:需要安装以下依赖:

python3 -m pip install opencv-python==4.9.0.80
python3 -m pip install huggingface-hub==0.25.2
# for x86_64
python3 -m pip install torchvision==0.18.0+cpu -i https://download.pytorch.org/whl/cpu
# for aarch64
python3 -m pip install torchvision==0.18.0
# for x86_64 and python_version>=3.10
python3 -m pip install importlib-metadata==8.5.0
# for aarch64 and python_version>=3.10
python3 -m pip install importlib-metadata==4.6.4
  1. 准备config文件

将下面的配置信息存为一个python文件,放入OpenCompass中如下路径configs/models/chatglm/vllm_chatglm2_6b.py

from opencompass.models import VLLM

models = [
    dict(
        type=VLLM,
        abbr='chatglm2-6b-vllm',
        path='/path/to/chatglm2-6b',
        max_out_len=100,
        max_seq_len=4096,
        batch_size=32,
        generation_kwargs=dict(temperature=0),
        run_cfg=dict(num_gpus=0, num_procs=1),
        model_kwargs=dict(device='gcu', enforce_eager=True)
    )
]

执行以下命令

python3 run.py \
 --models=vllm_chatglm2_6b \
 --datasets=mmlu_gen

chatglm2/3-6b-w8a16_gptq

本模型推理及性能测试需要1张enflame gcu。

模型下载

  • 如需要下载权重,请联系商务人员开通EGC权限进行下载

  • 下载 ChatGLM2-6b-8k-w8a16_gptq.tarchatglm2-6b-32k-w8a16_gptq.tarChatGLM3-6b-8k-w8a16_gptq.tarChatGLM3-6b-32k-w8a16_gptq.tar 文件并解压,将压缩包内的内容全部拷贝到chatglm_w8a16_gptq文件夹中。

  • chatglm_w8a16_gptq目录结构如下所示:

chatglm_w8a16_gptq/
├── config.json
├── configuration_chatglm.py
├── model.safetensors
├── quantize_config.json
├── tokenization_chatglm.py
├── tokenizer_config.json
├── tokenizer.model
└── tops_quantize_info.json

批量离线推理

python3 -m vllm_utils.benchmark_test \
 --model=[path of chatglm_w8a16_gptq] \
 --demo=tc \
 --dtype=float16 \
 --quantization=gptq \
 --output-len=256

性能测试

python3 -m vllm_utils.benchmark_test --perf \
 --model=[path of chatglm_w8a16_gptq] \
 --input-len=512 \
 --output-len=128 \
 --num-prompts=16 \
 --block-size=64 \
 --dtype=float16 \
 --quantization=gptq \
 --max-model-len 8192