3.5. chatglm2/3

chatglm2/3-6b

模型下载

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

批量离线推理

python3.8 -m vllm_utils.benchmark_test \
 --model=[path to chatglm ckpt] \
 --demo=tc \
 --dtype=float16 \
 --output-len=256

性能测试

python3.8 -m vllm_utils.benchmark_test --perf \
 --model=[path to chatglm ckpt] \
 --input-len=512 \
 --output-len=128 \
 --num-prompts=16 \
 --block-size=64 \
 --max-model-len=8192 \
 --dtype=float16

注:

  • 本模型支持的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.2.1版本。如果安装依赖时安装了和torch_gcu不一致的版本,请重新手动安装。

  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 \
 --max-partition-size=10000000

chatglm2/3-6b-w8a16

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

模型下载

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

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

  • chatglm_w8a16目录结构如下所示:

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

批量离线推理

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

性能测试

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