DeepSeek-R1-Distill-Qwen-32B的W8A8量化版本纯模型推理正常,服务化推理异常
收藏回复举报
DeepSeek-R1-Distill-Qwen-32B的W8A8量化版本纯模型推理正常,服务化推理异常
t('forum.solved') 已解决
新人帖
发表于2025-02-19 16:12:40
0 查看

w8a8量化后的DeepSeek-R1-Distill-Qwen-32B使用run_pa脚本推理结果正常,拉起mindie服务后,测试返回结果异常。

目录

  1. 测试环境
  2. w8a8量化
  3. 纯模型推理
  4. 服务化推理
    • 服务启动
    • 服务测试

测试环境

  • 硬件
    Atlas 300I Duo true
  • 驱动
    cat /usr/local/Ascend/driver/version.info
    Version=24.1.rc2
    ascendhal_version=7.35.23
    aicpu_version=1.0
    tdt_version=1.0
    log_version=1.0
    prof_version=2.0
    dvppkernels_version=1.1
    tsfw_version=1.0
    Innerversion=V100R001C18SPC001B233
    compatible_version=[V100R001C30],[V100R001C13],[V100R001C15],[V100R001C17],[V100R001C18]
    compatible_version_fw=[6.4.0,6.4.99],[7.0.0,7.2.99]
    package_version=24.1.rc2
  • 固件
    cat /usr/local/Ascend/firmware/version.info
    Version=7.3.0.1.231
    firmware_version=1.0
    package_version=24.1.rc2
    compatible_version_drv=[23.0.rc2,23.0.rc2.],[23.0.rc3,23.0.rc3.],[23.0.0,23.0.0.],[24.0,24.0.],[24.1,24.1.]
  • 镜像
    swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts
    启动命令
    docker run -it -d --net=host --shm-size=1g \
      --privileged \
      --name xkgao_mindie_official \
      --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 \
      -v /data:/data \
      swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts bash

w8a8量化

根据README.md,使用单卡300I Duo(310P3*2)执行w8a8量化

pushd /data/xkgao/msit/msmodelslim/example/Qwen

source /usr/local/Ascend/ascend-toolkit/set_env.sh
export ASCEND_RT_VISIBLE_DEVICES=6,7
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False

model_path=/data/bchen/model/DeepSeek-R1-Distill-Qwen-32B
model_path_quant=/data/xkgao/llama.cpp/mindie/official/DeepSeek-R1-Distill-Qwen-32B_W8A8
python3 quant_qwen.py --model_path ${model_path} \
    --save_directory ${model_path_quant} \
    --calib_file ../common/boolq.jsonl \
    --w_bit 8 --a_bit 8 --device_type npu  

popd

纯模型推理

model=/data/xkgao/llama.cpp/mindie/official/DeepSeek-R1-Distill-Qwen-32B_W8A8

torchrun --nproc_per_node 2 \
         --master_port 20037 \
         -m examples.run_pa \
         --model_path ${model} \
         --max_output_length 20

推理结果显示正常 true

服务化推理

服务启动

  • 启动命令
    pushd /usr/local/Ascend/mindie/latest/mindie-service/bin
    ./mindieservice_daemon
    popd
  • 配置文件
"Version" : "1.1.0",
    "LogConfig" :
    {
        "logLevel" : "Info",
        "logFileSize" : 20,
        "logFileNum" : 20,
        "logPath" : "logs/mindservice.log"
    },

    "ServerConfig" :
    {
        "ipAddress" : "127.0.0.1",
        "managementIpAddress" : "127.0.0.2",
        "port" : 10828,
        "managementPort" : 10829,
        "metricsPort" : 10830,
        "allowAllZeroIpListening" : false,
        "maxLinkNum" : 1000,
        "httpsEnabled" : false,
        "fullTextEnabled" : false,
        "tlsCaPath" : "security/ca/",
        "tlsCaFile" : ["ca.pem"],
        "tlsCert" : "security/certs/server.pem",
        "tlsPk" : "security/keys/server.key.pem",
        "tlsPkPwd" : "security/pass/key_pwd.txt",
        "tlsCrlPath" : "security/certs/",
        "tlsCrlFiles" : ["server_crl.pem"],
        "managementTlsCaFile" : ["management_ca.pem"],
        "managementTlsCert" : "security/certs/management/server.pem",
        "managementTlsPk" : "security/keys/management/server.key.pem",
        "managementTlsPkPwd" : "security/pass/management/key_pwd.txt",
        "managementTlsCrlPath" : "security/management/certs/",
        "managementTlsCrlFiles" : ["server_crl.pem"],
        "kmcKsfMaster" : "tools/pmt/master/ksfa",
        "kmcKsfStandby" : "tools/pmt/standby/ksfb",
        "inferMode" : "standard",
        "interCommTLSEnabled" : true,
        "interCommPort" : 1121,
        "interCommTlsCaPath" : "security/grpc/ca/",
        "interCommTlsCaFiles" : ["ca.pem"],
        "interCommTlsCert" : "security/grpc/certs/server.pem",
        "interCommPk" : "security/grpc/keys/server.key.pem",
        "interCommPkPwd" : "security/grpc/pass/key_pwd.txt",
        "interCommTlsCrlPath" : "security/grpc/certs/",
        "interCommTlsCrlFiles" : ["server_crl.pem"],
        "openAiSupport" : "vllm"
    },

    "BackendConfig" : {
        "backendName" : "mindieservice_llm_engine",
        "modelInstanceNumber" : 1,
        "npuDeviceIds" : [[0,1]],
        "tokenizerProcessNumber" : 8,
        "multiNodesInferEnabled" : false,
        "multiNodesInferPort" : 1120,
        "interNodeTLSEnabled" : true,
        "interNodeTlsCaPath" : "security/grpc/ca/",
        "interNodeTlsCaFiles" : ["ca.pem"],
        "interNodeTlsCert" : "security/grpc/certs/server.pem",
        "interNodeTlsPk" : "security/grpc/keys/server.key.pem",
        "interNodeTlsPkPwd" : "security/grpc/pass/mindie_server_key_pwd.txt",
        "interNodeTlsCrlPath" : "security/grpc/certs/",
        "interNodeTlsCrlFiles" : ["server_crl.pem"],
        "interNodeKmcKsfMaster" : "tools/pmt/master/ksfa",
        "interNodeKmcKsfStandby" : "tools/pmt/standby/ksfb",
        "ModelDeployConfig" :
        {
            "maxSeqLen" : 2560,
            "maxInputTokenLen" : 2048,
            "truncation" : false,
            "ModelConfig" : [
                {
                    "modelInstanceType" : "Standard",
                    "modelName" : "xkgaoModel",
                    "modelWeightPath" : "/data/xkgao/llama.cpp/mindie/official/DeepSeek-R1-Distill-Qwen-32B_W8A8",
                    "worldSize" : 2,
                    "cpuMemSize" : 5,
                    "npuMemSize" : -1,
                    "backendType" : "atb",
                    "trustRemoteCode" : false
                }
            ]
        },

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

            "maxPrefillBatchSize" : 50,
            "maxPrefillTokens" : 8192,
            "prefillTimeMsPerReq" : 150,
            "prefillPolicyType" : 0,

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

            "maxBatchSize" : 200,
            "maxIterTimes" : 512,
            "maxPreemptCount" : 0,
            "supportSelectBatch" : false,
            "maxQueueDelayMicroseconds" : 5000
        }
    }
}

服务测试

curl 127.0.0.1:10828/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": "xkgaoModel"
}'

测试结果显示异常 true

我要发帖子