Loading...

文章背景图

DeepSeek-Coder-V2:MoE 代码大模型部署与 SGLang/vLLM 指南

2026-10-27
0
- 字
- 分钟
|

DeepSeek-Coder-V2 是开源 MoE 代码大模型,在 DeepSeek-V2 中间检查点上继续预训练 6T tokens,代码能力对标 GPT-4-Turbo。提供 16B(Lite,激活 2.4B)与 236B(激活 21B)两档,上下文 128K,支持 338 种编程语言。

一、项目官方信息

项目 信息
GitHub 仓库 https://github.com/deepseek-ai/DeepSeek-Coder-V2
官方网站 https://www.deepseek.com
Hugging Face https://huggingface.co/deepseek-ai
论文 https://arxiv.org/abs/2406.11931
开源协议 代码 MIT;模型遵循 Model License(支持商用)
主要语言 Python(约 100%)
Star 数 约 7.0k

二、官方图片

DeepSeek-Coder-V2 与 GPT-4-Turbo、Claude 3 Opus、Gemini 1.5 Pro 的对比:

DeepSeek-Coder-V2 性能对比

三、环境要求

  • BF16 完整 236B 模型:README 明确需 80GB×8 张 GPU。
  • 16B Lite 版:单卡 24GB 即可。
  • Python 3.8+、PyTorch、transformers(trust_remote_code)。
  • SGLang/vLLM 推荐用于生产部署。

四、完整部署步骤

1. 选择模型

模型 总参 激活 上下文
Coder-V2-Lite-Base 16B 2.4B 128K
Coder-V2-Lite-Instruct 16B 2.4B 128K
Coder-V2-Base 236B 21B 128K
Coder-V2-Instruct 236B 21B 128K

2. Transformers 代码补全

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-Coder-V2-Lite-Base", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    "deepseek-ai/DeepSeek-Coder-V2-Lite-Base",
    trust_remote_code=True, torch_dtype=torch.bfloat16).cuda()
inputs = tokenizer("#write a quick sort algorithm", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_length=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

3. Transformers 对话

tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    "deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct",
    trust_remote_code=True, torch_dtype=torch.bfloat16).cuda()
messages=[{"role":"user","content":"write a quick sort algorithm in python."}]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, do_sample=False, top_k=50, top_p=0.95,
                         num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)
print(tokenizer.decode(outputs[0][len(inputs[0]):], skip_special_tokens=True))

4. 用 SGLang 启动 OpenAI 兼容服务

BF16、8 卡张量并行:

python3 -m sglang.launch_server \
  --model deepseek-ai/DeepSeek-Coder-V2-Instruct \
  --tp 8 --trust_remote-code

Lite 版启用 torch.compile:

python3 -m sglang.launch_server \
  --model deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct \
  --trust-remote-code --enable-torch-compile

FP8 版本:

python3 -m sglang.launch_server \
  --model neuralmagic/DeepSeek-Coder-V2-Instruct-FP8 \
  --tp 8 --trust-remote-code --kv-cache-dtype fp8_e5m2

调用:

import openai
client = openai.Client(base_url="http://127.0.0.1:30000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
    model="default",
    messages=[{"role":"user","content":"List 3 countries and their capitals."}],
    temperature=0, max_tokens=64)
print(resp)

5. 用 vLLM 批量推理

from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
model_name = "deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
llm = LLM(model=model_name, tensor_parallel_size=1, max_model_len=8192,
          trust_remote_code=True, enforce_eager=True)
sp = SamplingParams(temperature=0.3, max_tokens=256, stop_token_ids=[tokenizer.eos_token_id])
prompts = [tokenizer.apply_chat_template([{"role":"user","content":"Who are you?"}], add_generation_prompt=True)]
print([o.outputs[0].text for o in llm.generate(prompt_token_ids=prompts, sampling_params=sp)])

五、使用方法

Chat 模板

<|begin▁of▁sentence|>User: {msg1}
Assistant: {ans1}<|end▁of▁sentence|>User: {msg2}
Assistant:

最后一轮 Assistant: 后不要加空格,否则 Lite 版可能出中英混杂、乱码、重复。

在线 API

DeepSeek 平台提供 OpenAI 兼容 API,按 token 计费。

关键性能

  • HumanEval 90.2、MBPP+ 76.2、LiveCodeBench 43.4;
  • AIME 2024 4/30;
  • 128K 长上下文。

六、常见问题 FAQ

1. 236B 一张卡够吗? 不够,BF16 需 8×80GB。

2. 旧版 Ollama 出中文答英文题? 是 chat 模板空格 bug,升级 Ollama 即可。

3. 支持多少语言? 338 种,列表见 supported_langs.txt。

4. 与 V1(DeepSeek-Coder-33B)比? V2 全面提升:HumanEval 79.3→90.2,上下文 16K→128K。

5. 支持商用吗? 代码 MIT;模型遵循 Model License,支持商用。

6. vLLM 怎么部署? README 推荐 SGLang;vLLM 需合并对应 PR,见 https://github.com/vllm-project/vllm/pull/4650 。

七、跳转链接

评论交流

文章目录