权重下载
前往魔乐镜像中心/昇腾社区下载适配本模型的镜像包:1.0.0-800I-A2-py311-openeuler24.03-lts或1.0.0-300I-Duo-py311-openeuler24.03-lts
完成加载镜像后,请使用docker images命令确认查找具体镜像名称与标签。
docker load -i mindie:1.0.0-800I-A2-py311-openeuler24.03-lts(下载的镜像名称与标签)or
docker load -i mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts(下载的镜像名称与标签)镜像中各组件版本配套如下:
| 组件 | 版本 |
|---|---|
| MindIE | 1.0.0 |
| CANN | 8.0.0 |
| PTA | 6.0.0 |
| MindStudio | 7.0.0 |
| HDK | 24.1.0 |
config.json文件,"torch_dtype"字段改为"float16"目前提供的MindIE镜像预置了DeepSeek-R1-Distill-Qwen-1.5B模型推理脚本,无需再额外下载魔乐仓库承载的模型适配代码,直接新建容器即可。
执行以下启动命令(参考): 如果您使用的是root用户镜像(例如从Ascend Hub上取得),并且可以使用特权容器,请使用以下命令启动容器:
docker run -it -d --net=host --shm-size=1g \
--privileged \
--name <container-name> \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /path-to-weights:/path-to-weights:ro \
mindie:1.0.0-800I-A2-py311-openeuler24.03-lts bash如果您希望使用自行构建的普通用户镜像,并且规避容器相关权限风险,可以使用以下命令指定用户与设备:
docker run -it -d --net=host --shm-size=1g \
--user mindieuser:<HDK-user-group> \
--name <container-name> \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /path-to-weights:/path-to-weights:ro \
mindie:1.0.0-800I-A2-py311-openeuler24.03-lts bash注意,以上启动命令仅供参考,请根据需求自行修改再启动容器,尤其需要注意:
--user,如果您的环境中HDK是通过普通用户安装(例如默认的HwHiAiUser,可以通过id HwHiAiUser命令查看该用户组ID),请设置好对应的用户组,例如用户组1001可以使用HDK,则--user mindieuser:1001,镜像中默认使用的是用户组1000。如果您的HDK是由root用户安装,且指定了--install-for-all参数,则无需指定--user参数。设定容器名称
--name与镜像名称,800I A2和300I DUO各自使用对应版本的镜像,例如800I A2服务器使用mindie:1.0.0-py3.11-800I-A2-aarch64-Ubuntu22.04。设定想要使用的卡号
--device。设定权重挂载的路径,
-v /path-to-weights:/path-to-weights:ro,注意,如果使用普通用户镜像,权重路径所属应为镜像内默认的1000用户,且权限可设置为750。可使用以下命令进行修改:chown -R 1000:1000 /path-to-weights chmod -R 755 /path-to-weights在普通用户镜像中,注意所有文件均在
/home/mindieuser下,请勿直接挂载/home目录,以免宿主机上存在相同目录,将容器内文件覆盖清除。
docker exec -it ${容器名称} bashW8A8量化权重可通过msmodelslim(昇腾压缩加速工具)实现。
git clone https://gitee.com/ascend/msit.gitcd msit/msmodelslim;并在进入的msmodelslim目录下,运行安装脚本 bash install.sh;# 设置CANN包的环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
cd ${llm_path}
# 指定当前机器上可用的逻辑NPU核心 通过修改convert_quant_weight.sh文件中export ASCEND_RT_VISIBLE_DEVICES值 指定使用卡号及数量
# 7b系列使用单卡 14b 32b使用4卡 eg: ASCEND_RT_VISIBLE_DEVICES=4,5,6,7
vi examples/models/qwen/convert_quant_weight.sh
bash examples/models/qwen/convert_quant_weight.sh -src {浮点权重路径} -dst {W8A8量化权重路径} -type qwen_w8a8export ASCEND_RT_VISIBLE_DEVICES=0,1
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:FalseStep 1
torch_dtype字段为float16cd msit/msmodelslim/example/Qwen
注: 安装完cann后 需要执行source set_env.sh 声明ASCEND_HOME_PATH值 后续安装msmodelslim前需保证其不为空# 执行"jq --version"查看是否安装jq,若返回"bash:jq:command not found",则依次执行"apt-get update"和"apt install jq"
jq --version
# 指定当前机器上可用的逻辑NPU核心 通过修改convert_quant_weight.sh文件中export ASCEND_RT_VISIBLE_DEVICES值 指定使用卡号及数量
export ASCEND_RT_VISIBLE_DEVICES=0
python3 quant_qwen.py --model_path {浮点权重路径} --save_directory {W8A8S量化权重路径} --calib_file ../common/boolq.jsonl --w_bit 4 --a_bit 8 --fraction 0.011 --co_sparse True --device_type npu --use_sigma True --is_lowbit TrueStep 2:量化权重切分及压缩
export IGNORE_INFER_ERROR=1
torchrun --nproc_per_node {TP数} -m examples.convert.model_slim.sparse_compressor --model_path {W8A8S量化权重路径} --save_directory {W8A8SC量化权重路径} torchrun --nproc_per_node 2 -m examples.convert.model_slim.sparse_compressor --model_path /data1/weights/model_slim/Qwen-7b_w8a8s --save_directory /data1/weights/model_slim/Qwen-7b_w8a8sc进入llm_model路径
cd $ATB_SPEED_HOME_PATH执行对话测试
torchrun --nproc_per_node 2 \
--master_port 20037 \
-m examples.run_pa \
--model_path {权重路径} \
--max_output_length 20进入ModelTest路径
cd $ATB_SPEED_HOME_PATH/tests/modeltest/运行测试脚本
bash run.sh pa_[data_type] performance [case_pair] [batch_size] ([prefill_batch_size]) [model_name] ([is_chat_model]) (lora [lora_data_path]) [weight_dir] ([trust_remote_code]) [chip_num] ([parallel_params]) ([max_position_embedding/max_sequence_length])具体执行batch=1, 输入长度256, 输出长度256用例的2卡并行性能测试命令为:
bash run.sh pa_bf16 performance [[256,256]] 1 qwen ${weight_path} 2注:ModelTest为大模型的性能和精度提供测试功能。使用文档请参考
${ATB_SPEED_HOME_PATH}/tests/modeltest/README.md
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json{
...
"ServerConfig" :
{
...
"port" : 1040, #自定义
"managementPort" : 1041, #自定义
"metricsPort" : 1042, #自定义
...
"httpsEnabled" : false,
...
},
"BackendConfig": {
...
"npuDeviceIds" : [[0,1]],
...
"ModelDeployConfig":
{
"truncation" : false,
"ModelConfig" : [
{
...
"modelName" : "qwen",
"modelWeightPath" : "/data/datasets/DeepSeek-R1-Distill-Qwen-1.5B",
"worldSize" : 2,
...
}
]
},
}
}cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice_daemoncurl 127.0.0.1:1040/generate -d '{
"prompt": "What is deep learning?",
"max_tokens": 32,
"stream": false,
"do_sample":true,
"repetition_penalty": 1.00,
"temperature": 0.01,
"top_p": 0.001,
"top_k": 1,
"model": "qwen"
}'注: 服务化推理的更多信息请参考MindIE Service用户指南
pip install transformers==4.46.3 --force-reinstall
pip install numpy==1.26.4 --force-reinstall