部署DeepSeek蒸馏模型推理服务
更新时间:2025-11-03
本文主要介绍使用容器引擎CCE 部署DeepSeek-R1-Distill-Qwen-7B蒸馏模型推理服务。
背景知识
- DeepSeek-R1-Distill-Qwen-7B
 
DeepSeek-R1-Distill-Qwen-7B 是一个基于知识蒸馏技术的大型语言模型,它将 DeepSeek-R1 的推理能力迁移到了 Qwen-7B 架构上。
                Plain Text
                
            
            11. **知识蒸馏架构**:通过蒸馏技术,将更大规模的 DeepSeek-R1 模型的推理能力压缩到 70 亿参数的 Qwen 模型中,在保持较小模型体积的同时获得强大的推理性能。
22. **推理增强**:继承了 DeepSeek-R1 的强化学习推理能力,擅长处理需要多步骤逻辑推理的复杂任务,如数学问题、代码生成、逻辑分析等。
33. **高效部署**:7B 参数规模使其能在消费级硬件上运行,降低了部署成本和推理延迟,适合资源受限的应用场景。
            前提条件
已创建CCE集群且集群版本为1.31及以上,并且已经为集群添加GPU节点。
具体操作,请参见创建CCE托管集群。
本文推荐使用bcc.lsgn7ec.c176m1952.8h20-141.2d规格(请联系客户经理申请GPU规格邀测),实际使用一张H20卡。
模型部署
步骤一:准备DeepSeek-R1-Distill-Qwen-7B模型文件
在PFS中创建目录,将模型下载至PFS。
- 登录PFS控制台,将集群中的节点挂载到PFS挂载服务中,参考控制台操作文档和命令行操作文档。如何创建PFS文件系统,创建挂载服务并绑定存储实例,请参考创建文件系统,创建挂载服务,绑定存储实例。
 - 在PFS中创建目录,并执行以下命令从ModelScope下载DeepSeek-R1-Distill-Qwen-7B模型,将模型拷贝到PFS中。
 
                Plain Text
                
            
            1mkdir -p deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
2pip install modelscope
3modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local_dir <pfs目录>/models-test/DeepSeek-R1-Distill-Qwen-7B
            - 创建PV和PVC。为目标集群配置存储卷PV和存储声明PVC。请参考使用并行文件存储PFS L2。
 
- 通过Yaml新建PV示例:
 
                Plain Text
                
            
            1apiVersion: v1
2kind: PersistentVolume
3metadata:
4  name: <your-pv-name> #本示例中为test-pv-02
5spec:
6  accessModes:
7  - ReadOnlyMany
8  capacity:
9    storage: 500Gi
10  local:
11    path: <your-pfs-path> #本示例中为/pfs/pfs-qnL8Jh/Qwen-models
12  nodeAffinity:
13    required:
14      nodeSelectorTerms:
15      - matchExpressions:
16        - key: ready-for-pfsl2
17          operator: In
18          values:
19          - "true"
20  persistentVolumeReclaimPolicy: Retain
21  storageClassName: local-volume
22  volumeMode: Filesystem
            - 通过Yaml新建PVC示例:
 
                Plain Text
                
            
            1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4  finalizers:
5  - kubernetes.io/pvc-protection
6  name: <your-pvc-name> #本示例中为test-pvc-02
7  namespace: default
8spec:
9  accessModes:
10  - ReadOnlyMany
11  resources:
12    requests:
13      storage: 500Gi
14  storageClassName: local-volume
15  volumeMode: Filesystem
16  volumeName: <your-pv-name> #本示例中为test-pv-02
            步骤二:部署推理服务
参考以下YAML代码示例,在CCE中部署DeepSeek-R1-Distill-Qwen-7B蒸馏模型推理服务。
                Plain Text
                
            
            1apiVersion: apps/v1
2kind: StatefulSet
3metadata:
4  labels:
5    # for prometheus to scrape
6    baidu-cce/inference-workload: sglang-ds-r1-distill-qwen-7b
7    baidu-cce/inference_backend: sglang
8  name: sglang-ds-r1-distill-qwen-7b
9  namespace: default
10spec:
11  replicas: 1
12  selector:
13    matchLabels:
14      baidu-cce/inference-workload: sglang-ds-r1-distill-qwen-7b
15      baidu-cce/inference_backend: sglang
16  template:
17    metadata:
18      labels:
19        baidu-cce/inference-workload: sglang-ds-r1-distill-qwen-7b
20        baidu-cce/inference_backend: sglang
21    spec:
22      nodeSelector:
23        gputype: h20
24      volumes:
25      - name: model
26        persistentVolumeClaim:
27          claimName: <your-pvc-name> #本示例中为test-pvc-02
28          readOnly: true
29      - name: dshm
30        emptyDir:
31          medium: Memory
32          sizeLimit: 15Gi
33      containers:
34      - command:
35        - sh
36        - -c
37        - python -m sglang.launch_server --model-path /models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B/ --tp 1 --host 0.0.0.0 --port 8000 --enable-metrics
38        image: registry.baidubce.com/ai-native-dev/infer-manager/dev-image:0.4.ubuntu2204-py313-sglang0.5.2-router0.1.9-mooncake-0.3.6-nixl-0.6.0-cuda12.4
39        name: sglang
40        ports:
41        - containerPort: 8000
42          name: http
43        readinessProbe:
44          initialDelaySeconds: 30
45          periodSeconds: 10
46          tcpSocket:
47            port: 8000
48        resources:
49          limits:
50            nvidia.com/gpu: "1"
51            memory: "64Gi"
52            cpu: "16"
53          requests:
54            nvidia.com/gpu: "1"
55            memory: "64Gi"
56            cpu: "16"
57        volumeMounts:
58        - mountPath: /models
59          name: model
60        - mountPath: /dev/shm
61          name: dshm
            步骤三:验证推理服务
- 登录容器,执行以下命令,向模型推理服务发送一条示例的模型推理请求。
 
                Plain Text
                
            
            1curl http://127.0.0.1:8000/v1/chat/completions -H "Content-Type: application/json"  -d '{"model": "/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B/", "messages": [{"role": "user", "content": "你是什么模型?"}], "max_tokens": 2000, "temperature": 0.7, "top_p": 0.9, "seed": 10}'
            预期输出:
                Plain Text
                
            
            1{"id":"d6b03adf59054ddf8e69cae3a6a412cc","object":"chat.completion","created":1761816628,"model":"/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B/","choices":[{"index":0,"message":{"role":"assistant","content":"您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。\n</think>\n\n您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。","reasoning_content":null,"tool_calls":null},"logprobs":null,"finish_reason":"stop","matched_stop":151643}],"usage":{"prompt_tokens":9,"total_tokens":82,"completion_tokens":73,"prompt_tokens_details":null,"reasoning_tokens":0},"metadata":{"weight_version":"default"}}
            输出结果表明模型可以根据给定的输入生成相应的回复。
