Triển khai DeepSeek-V3-0324 cục bộ với vLLM và SGLang

Tải mô hình

Vào ngày phát hành DeepSeek-V3-0324, đội ngũ chính thức đã tải lên tất cả các tham số mô hình trên Hugging Face tại địa chỉ:

https://huggingface.co/deepseek-ai/DeepSeek-V3-0324

Để tiện lợi, tôi thường tải mô hình từ ModelScope. Vào sáng ngày 25/3, ModelScope đã phát hành mô hình này, ngay cả khi README chưa được tải lên và mô hình giới thiệu vẫn trống. Sau khi tải và triển khai thử nghiệm, tôi phát hiện đầu ra chứa nhiều ký tự lạ.

Ban đầu, tôi nghĩ có thể có vấn đề với engine suy luận, có thể việc thích ứng với mô hình mới chưa hoàn thành. Tuy nhiên, các nhà cung cấp token lớn đã triển khai thành công và không ai báo cáo vấn đề này, cộng đồng cũng không có issue liên quan.

Vậy chỉ có hai khả năng:

  1. Quá trình tải của tôi có vấn đề
  2. Mô hình trong kho này có vấn đề

Nhưng với mô hình hơn 600GB, tôi không đủ kiên nhẫn xóa và tải lại để thử.

Có thể thấy mô hình từ chính thức là 642GB, trong khi mô hình tôi tải chỉ có 634GB. Vì vậy, hơn 500 người khác đã tải cùng kho với tôi, nếu bạn đọc được bài viết này, hy vọng nó sẽ giúp ích cho bạn.

Vào khoảng trưa ngày 25/3, ModelScope đã cập nhật DeepSeek-V3-0324 từ kho chính thức của DeepSeek. Sau khi tải lại và triển khai, mọi thứ hoạt động bình thường. Luôn nên sử dụng các nguồn chính thức.

Theo tài liệu chính thức của DeepSeek, cấu trúc mô hình 0324 hoàn toàn giống với DeepSeek-V3 gốc. Do đó, nguyên tắc là chúng ta chỉ cần lấy kịch bản khởi động đã dùng để triển khai DeepSeek-V3/R1 trước đây và chỉ cần thay đổi đường dẫn mô hình là có thể triển khai bình thường!

Môi trường triển khai

Cấu hình môi trường của tôi như sau: Máy: 2 máy 8 * H100 80G Mô hình: Deepseek-V3-0324 685B FP8

vLLM

Phiên bản trên Alibaba Cloud:

docker pull registry.cn-hangzhou.aliyuncs.com/dongfangzan/vllm-openai:v0.8.1

Kịch bản khởi động:

# Node 1
bash run_cluster.sh \
vllm/vllm-openai \
ip_of_head_node \
--head \
/path/to/the/huggingface/home/in/this/node \
-e VLLM_HOST_IP=ip_of_this_node \
--privileged -e NCCL_IB_HCA=mlx5 #bỏ qua cấu hình IB
# Node 2
bash run_cluster.sh \
vllm/vllm-openai \
ip_of_head_node \
--worker \
/path/to/the/huggingface/home/in/this/node \
-e VLLM_HOST_IP=ip_of_this_node \
--privileged -e NCCL_IB_HCA=mlx5 #bỏ qua cấu hình IB

Sau khi khởi động thành công, sử dụng docker exec -it node bash

Trước khi khởi động phiên bản này, thực thi trên cả hai node:

pip install pyarrow pandas

Sau đó thực thi lệnh sau:

VLLM_MECHANISM=FLASHMLA \
VLLM_USE_V1=1 \
vllm serve /root/.cache/huggingface/hub/deepseek-ai/DeepSeek-V3-0324 \
--served-model-name deepseek-v3-0324 \  # Tên mô hình
--enable-prefix-caching \
--max-length 131072 \
--gpu-memory-utilization 0.95 \
--tensor-parallel-size 8 \
--pipeline-parallel-size 2  \
--enable-chunked-prefill \
--enable-expert-parallel \
--max_num_batched_tokens 32768 \
--trust-remote-code \
--block-size 64 \
--port 8000

Giải thích một số tham số chính:

  1. VLLM_MECHANISM=FLASHMLA --block-size 64, bật FlashMLA
  2. –enable-expert-parallel, bật EP

VLLM_TEST_ENABLE_EP=1 tham số này đã bị loại bỏ trong phiên bản này, bật sẽ không có hiệu quả.

SGLang

Tiếp theo là cách triển khai SGLang:

Sử dụng镜像 lmsysorg/sglang:v0.4.4.post1-cu124

Để tiện việc tải, tôi đã tải một镜像 lên Alibaba Cloud:

registry.cn-hangzhou.aliyuncs.com/dongfangzan/sglang:v0.4.4.post1-cu124

Lưu ý rằng bạn có thể cần tải một mô hình nháp phù hợp với DeepSeek-V3-0324 để khởi chạy MTP. Điều này sẽ tăng đáng kể tốc độ xuất của mô hình.

Địa chỉ: https://huggingface.co/lmsys/DeepSeek-V3-0324-NextN

Cách triển khai SGLang đơn giản hơn vLLM, thực thi lệnh sau trên từng node:

# Node 1
docker run \
  --gpus all \  # Sử dụng tất cả GPUs
  --shm-size 512g \  # Thiết lập kích thước shared memory là 512GB
  --network=host \  # Sử dụng mạng host
  -v /your/path/of/model:/root/.cache/huggingface \  # Mount Hugging Face cache directory
  --name sglang_multinode1 \  # Tên container
  -d \  # Chạy nền
  --ipc=host \  # Sử dụng IPC namespace của host
  --restart always \  # Luôn khởi động lại khi container thoát
  --privileged \  # Chạy ở chế độ đặc quyền
  -e NCCL_IB_HCA=mlx5 # Bỏ qua cấu hình IB tiếp theo
  -e SGL_ENABLE_JIT_DEEPGEMM=1 \  # Kích hoạt JIT DeepGEMM
  lmsysorg/sglang:v0.4.4.post1-cu124 \  # Tên và tag Docker image
  python3 -m sglang.launch_server \
    --model-path /root/.cache/huggingface/hub/deepseek-ai/DeepSeek-V3-0324 \  # Đường dẫn mô hình
    --served-model-name deepseek-v3-0324 \  # Tên mô hình dịch vụ
    --tp 16 \  # Độ song song mô hình
    --enable-torch-compile \
    --enable-flashinfer-mla \  # Kích hoạt FlashInfer MLA
    --speculative-algo EAGLE \  
    --speculative-num-steps 3 \  
    --speculative-eagle-topk 1 \  
    --speculative-num-draft-tokens 4 \  
    --speculative-draft /root/.cache/huggingface/hub/deepseek-ai/DeepSeek-V3-0324-NextN \  # Đường dẫn mô hình nháp
    --dist-init-addr 10.0.41.2:20000 \  # Địa chỉ khởi tạo phân tán
    --nnodes 2 \  # Số node
    --node-rank 0 \  # Xếp hạng node
    --trust-remote-code \  # Tin tưởng code từ xa
    --host 0.0.0.0 \  # Địa chỉ dịch vụ host
    --port 8000  # Cổng dịch vụ
# Node 2
docker run \
    .... # Bỏ qua các tham số giống nhau
    --node-rank 1 \  # Xếp hạng node

Thẻ: deepseek-v3 vLLM sglang trien-khai-cuc-bo HuggingFace

Đăng vào ngày 5 tháng 7 lúc 07:54