1 实验目标
1.1 实验目标
- 掌握纯模型的精度和性能测试
- 掌握服务化的部署
- 掌握服务化的精度和性能测试
2 前置准备
2.1 准备推理环境
2.1.1 下载镜像
1)进入登录昇腾镜像仓库:www.hiascend.com/developer/a... 查询mindie
2)申请权限后,下载对应的镜像版本
2.1.2 拉起容器
shell
docker run -itd --privileged --name=$container_name --net=host --shm-size=500g \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
-v /usr/local/sbin/:/usr/local/sbin/ \
-v /var/log/npu/slog/:/var/log/npu/slog \
-v /var/log/npu/profiling/:/var/log/npu/profiling \
-v /var/log/npu/dump/:/var/log/npu/dump \
-v /var/log/npu/:/usr/slog \
-v /etc/hccn.conf:/etc/hccn.conf \
-v $model_path:/model \
$image_id /bin/bash
进入容器:
shell
docker exec -it $container_name bash
2.2 模型权重下载
设置个人开发目录,如:
shell
mkdir /home/zhangsan
cd /home/zhangsan
下载DeepSeek-R1-Distill-Qwen-1.5B权重: modelers.cn/models/Stat...
shell
# 首先保证已安装git-lfs(https://git-lfs.com),如没安装可自行安装:apt update && apt install git-lfs
git lfs install
git clone https://modelers.cn/State_Cloud/DeepSeek-R1-Distill-Qwen-1.5B.git
2.3 数据集(GSM8K)准备
shell
mkdir -p /home/zhangsan/data/gsm8k
cd /home/zhangsan/data/gsm8k
wget -O GSM8K.jsonl https://sail-moe.oss-cn-hangzhou.aliyuncs.com/open_data/gsm8k/test.jsonl --no-check-certificate
3 纯模型测试
3.1 性能测试
3.1.1 初始化环境变量
shell
source /usr/local/Ascend/mindie/set_env.sh
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
source /usr/local/Ascend/llm_model/set_env.sh
export MINDIE_LLM_LOG_TO_STDOUT=1
export PATH=/usr/local/python3.11.10/bin:$PATH
3.1.2 执行性能测试
shell
cd /usr/local/Ascend/llm_model/tests/modeltests
# bash run.sh pa_[数据类型] performance $ALL_IN_OUT_SETS $BS [模型名] [模型权重路径] [使用卡数]
# 示例
bash run.sh pa_bf16 performance [[256,256]] 1 qwen $权重路径 1
3.1.3 查看性能结果
3.2 精度测试
3.2.1 初始化环境变量(同3.1.1,如果设置过,则可跳过这步)
3.2.2 准备测试数据集
shell
cd /usr/local/Ascend/llm_model/tests/modeltests
cp -r /home/zhangsan/data/ ./
3.3 执行精度测试
shell
cd /usr/local/Ascend/llm_model/tests/modeltests
# bash run.sh pa_[数据类型] [数据集名称] $BS [模型名] [模型权重路径] [使用卡数]
# 示例
bash run.sh pa_bf16 full_GSM8K 100 qwen $权重路径 1
3.4 查看精度结果
4 服务化测试
4.1 服务化部署
4.1.1 服务化配置文件修改
shell
cd /usr/local/Ascend/mindie/latest/mindie-service
vim conf/config.json
修改内容如下:
4.1.2 初始化环境变量
shell
source /usr/local/Ascend/mindie/set_env.sh
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
source /usr/local/Ascend/llm_model/set_env.sh
export MINDIE_LLM_LOG_TO_STDOUT=1
export MINDIE_LOG_TO_STDOUT=1
export PATH=/usr/local/python3.11.10/bin:$PATH
4.1.3 拉起服务化
shell
cd /usr/local/Ascend/mindie/latest/mindie-service
./bin/mindieservice_daemon
回显下面内容表示服务化启动成功:
Daemon start success!
4.1.4 测试服务化是否正常
另开一个session, 发送请求测试:
shell
curl -X POST -d '{
"model":"qwen",
"messages": [{
"role": "system",
"content": "what is deep learning?"
}],
"max_tokens": 100,
"stream": false
}' http://10.3.14.15:1025/v1/chat/completions
4.2 服务化性能测试
保证上面的4.1.3操作已完成!!
4.2.1 初始化环境变量
另开一个session:
shell
export PATH=/usr/local/python3.11.10/bin:$PATH
export MINDIE_LOG_TO_STDOUT="benchmark:1; client:1"
4.2.2 性能测试
根据实际情况修改下面datasetpath, modelname, modelpath参数
shell
benchmark --DatasetPath "$datasetPath" --DatasetType "gsm8k" --ModelName qwen --ModelPath "$weightPath" --TestType client --Http http://127.0.0.1:1025 --ManagementHttp http://127.0.0.2:1026 --Concurrency 100 --TaskKind stream --Tokenizer True --MaxOutputLen 512
4.2.3 查看性能结果
4.3 服务化精度测试
4.3.1 初始化环境变量
shell
export PATH=/usr/local/python3.11.10/bin:$PATH
export MINDIE_LOG_TO_STDOUT="benchmark:1; client:1"
export LCCL_DETERMINISTIC=1
export HCCL_DETERMINISTIC=true
export ATB_MATMUL_SHUFFLE_K_ENABLE=0
4.3.2 精度测试
根据实际情况修改下面datasetpath, modelname, modelpath参数
shell
benchmark --DatasetPath "$datasetPath" --DatasetType "gsm8k" --ModelName qwen --ModelPath "$weightPath" --TestType client --Http http://127.0.0.1:1025 --ManagementHttp http://127.0.0.2:1026 --Concurrency 1 --TaskKind stream --Tokenizer True --MaxOutputLen 512 --TestAccuracy True