本次任务将使用昇腾300I显卡的Mindie镜像部署DeepSeek-32B模型

首先,下载Mindie镜像,请根据需求选择对应版本。请注意,下载该镜像需提前申请权限。

mindie

第二步,运行Docker容器

docker run -it -d --net=host --shm-size=1g \
    --privileged \
    --name  deepseek32B \ # 容器名
    --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 /home/deepseek32b:/mnt/deepseek32b:ro \  # 主机模型路径挂载的容器路径 
    mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts bash

拉取镜像方式-MindIE1.0.RC3-昇腾社区

https://zhuanlan.zhihu.com/p/1908541326699503727

第三步,调整模型目录中的配置文件

cd /home/deepseek32b

修改模型目录下的config.json文件,将torch_dtype的值修改为float16

 第四步,进入容器内修改模型配置文件

docker exec -it deepseek32B bash
cd /usr/local/Ascend/mindie/latest/mindie-service

vim conf/config.json

配置文件修改可参考以下注释行的参数: 

 "ServerConfig" :
    {
        "ipAddress" : "xx.xx.xx.xx", //替换为自己的主机ip
        "managementIpAddress" : "127.0.0.2",
        "port" : 1025, //运行端口
        "managementPort" : 1026,
        "metricsPort" : 1027,
        "allowAllZeroIpListening" : false,
        "maxLinkNum" : 1000,
        "httpsEnabled" : false,  //设置为false

},
    "BackendConfig" : {
        "backendName" : "mindieservice_llm_engine",
        "modelInstanceNumber" : 1,
        "npuDeviceIds" : [[0,1,2,3]],  //需要的npu设备ID

......
  "ModelDeployConfig" :
        {
            "maxSeqLen" : 32768, //最大序列长度(输入输出长度)
            "maxInputTokenLen" : 8192, //最大输入长度
            "truncation" : false,
            "ModelConfig" : [
                {
                    "modelInstanceType" : "Standard",
                    "modelName" : "deepseek_32b", //模型名称,请求时填入
                    "modelWeightPath" : "/mnt/deepseek32b", //容器内模型的绝对路径

                    "worldSize" : 4,  //使用的npu设备的数量

...
                }
            ]
        },

 ......

 "ScheduleConfig" :
        {
            "templateType" : "Standard",
            "templateName" : "Standard_LLM",
            "cacheBlockSize" : 128,

            "maxPrefillBatchSize" : 50,
            "maxPrefillTokens" : 32768,  // 必须大于或等于maxInputTokenLen
            "prefillTimeMsPerReq" : 150,
            "prefillPolicyType" : 0,

            "decodeTimeMsPerReq" : 50,
            "decodePolicyType" : 0,

            "maxBatchSize" : 200,
            "maxIterTimes" : 8192,  // 模型全局最大输出长度,[1, maxSeqLen-1]
...
        }

                                                                                               41,1          14% 

配置参数说明-MindIE1.0.RC3-昇腾社区

第五步,启动

cd /usr/local/Ascend/mindie/latest/mindie-service

./bin/mindieservice_daemon

第六步,请求

ss -tuln | grep 1025
curl -X POST http://<ip>:1025/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek_32b",
    "messages": [{"role": "user", "content": "What is deep learning?"}],
    "max_tokens": 32,
    "temperature": 0.01,
    "top_p": 0.001,
    "top_k": 1,
    "do_sample": true,
    "repetition_penalty": 1.0,
    "stream": false
}'

如何测试请求没问题可以使用后台进程方式启动服务:

cd /usr/local/Ascend/mindie/latest/mindie-service 

nohup ./bin/mindieservice_daemon > deepseek_32b.log 2>&1 &

如有疏漏,敬请指正

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐