Project Icon

DeepSeek-Coder-V2

开源代码语言模型

DeepSeek-Coder-V2是一款性能出色的开源代码语言模型,在多项代码相关任务中展现了强大实力。该模型支持338种编程语言,拥有128K的上下文长度,采用混合专家(MoE)架构。提供16B和236B两种参数版本,在代码生成、补全和修复等任务中表现卓越,同时在数学推理和通用语言任务中也展现出强大能力,为代码智能领域带来重要进展。

DeepSeek-V2

模型下载 | 评估结果 | API平台 | 使用方法 | 许可 | 引用

论文链接👁️

DeepSeek-Coder-V2:突破代码智能领域闭源模型的壁垒

1. 简介

我们推出了DeepSeek-Coder-V2,这是一个开源的专家混合(MoE)代码语言模型,在代码特定任务中达到了与GPT4-Turbo相当的性能。具体来说,DeepSeek-Coder-V2是在DeepSeek-V2的中间检查点基础上进行了额外6万亿token的进一步预训练。通过这种持续预训练,DeepSeek-Coder-V2大幅提升了DeepSeek-V2的编码和数学推理能力,同时在通用语言任务中保持了相当的性能。与DeepSeek-Coder-33B相比,DeepSeek-Coder-V2在代码相关任务的各个方面,以及推理和通用能力上都展现出显著的进步。此外,DeepSeek-Coder-V2将支持的编程语言从86种扩展到338种,并将上下文长度从16K延长到128K。

在标准基准评估中,DeepSeek-Coder-V2在编码和数学基准测试中的表现超过了GPT4-Turbo、Claude 3 Opus和Gemini 1.5 Pro等闭源模型。支持的编程语言列表可以在这里找到。

2. 模型下载

我们向公众发布了基于DeepSeekMoE框架的16B和236B参数的DeepSeek-Coder-V2,其实际活跃参数仅为2.4B和21B,包括基础模型和指令模型。

模型总参数量活跃参数量上下文长度下载
DeepSeek-Coder-V2-Lite-Base16B2.4B128k🤗 HuggingFace
DeepSeek-Coder-V2-Lite-Instruct16B2.4B128k🤗 HuggingFace
DeepSeek-Coder-V2-Base236B21B128k🤗 HuggingFace
DeepSeek-Coder-V2-Instruct236B21B128k🤗 HuggingFace

3. 评估结果

3.1 代码生成

#总参数#活跃参数HumanEvalMBPP+LiveCodeBenchUSACO
闭源模型
Gemini-1.5-Pro--83.574.634.14.9
Claude-3-Opus--84.272.034.67.8
GPT-4-Turbo-1106--87.869.337.111.1
GPT-4-Turbo-0409--88.272.245.712.3
GPT-4o-0513--91.073.543.418.8
开源模型
CodeStral22B22B78.168.231.04.6
DeepSeek-Coder-Instruct33B33B79.370.122.54.2
Llama3-Instruct70B70B81.168.828.73.3
DeepSeek-Coder-V2-Lite-Instruct16B2.4B81.168.824.36.5
DeepSeek-Coder-V2-Instruct236B21B90.276.243.412.1

3.2 代码补全

模型#总参数#活跃参数RepoBench (Python)RepoBench (Java)HumanEval FIM
CodeStral22B22B46.145.783.0
DeepSeek-Coder-Base7B7B36.243.386.1
DeepSeek-Coder-Base33B33B39.144.886.4
DeepSeek-Coder-V2-Lite-Base16B2.4B38.943.386.4

3.3 代码修复

#TP#APDefects4JSWE-BenchAider
闭源模型
Gemini-1.5-Pro--18.619.357.1
Claude-3-Opus--25.511.768.4
GPT-4-Turbo-1106--22.822.765.4
GPT-4-Turbo-0409--24.318.363.9
GPT-4o-0513--26.126.772.9
开源模型
CodeStral22B22B17.82.751.1
DeepSeek-Coder-Instruct33B33B11.30.054.5
Llama3-Instruct70B70B16.2-49.2
DeepSeek-Coder-V2-Lite-Instruct16B2.4B9.20.044.4
DeepSeek-Coder-V2-Instruct236B21B21.012.773.7

3.4 数学推理能力

#TP#APGSM8KMATHAIME 2024Math Odyssey
闭源模型
Gemini-1.5-Pro--90.867.72/3045.0
Claude-3-Opus--95.060.12/3040.6
GPT-4-Turbo-1106--91.464.31/3049.1
GPT-4-Turbo-0409--93.773.43/3046.8
GPT-4o-0513--95.876.62/3053.2
开源模型
Llama3-Instruct70B70B93.050.41/3027.9
DeepSeek-Coder-V2-Lite-Instruct16B2.4B86.461.80/3044.4
DeepSeek-Coder-V2-Instruct236B21B94.975.74/3053.7

3.5 通用自然语言处理

基准测试领域DeepSeek-V2-Lite ChatDeepSeek-Coder-V2-Lite InstructDeepSeek-V2 ChatDeepSeek-Coder-V2 Instruct
BBH英语48.161.279.783.9
MMLU英语55.760.178.179.2
ARC-Easy英语86.188.998.197.4
ARC-Challenge英语73.477.492.392.8
TriviaQA英语65.259.586.782.3
NaturalQuestions英语35.530.853.447.5
AGIEval英语42.828.761.460
CLUEWSC中文80.076.589.985.9
C-Eval中文60.161.678.079.4
CMMLU中文62.562.781.680.9
Arena-Hard-11.438.141.665.0
AlpaceEval 2.0-16.917.738.936.9
MT-Bench-7.377.818.978.77
Alignbench-6.026.837.917.84

3.6 上下文窗口

在"大海捞针"(NIAH)测试上的评估结果。DeepSeek-Coder-V2在所有长达128K的上下文窗口长度上表现良好。

4. 聊天网站

您可以在DeepSeek的官方网站上与DeepSeek-Coder-V2聊天:coder.deepseek.com

5. API平台

我们还在DeepSeek平台提供OpenAI兼容的API:platform.deepseek.com,您也可以以无与伦比的价格按使用量付费。

6. 如何本地运行

这里,我们提供了一些如何使用DeepSeek-Coder-V2-Lite模型的示例。如果您想使用BF16格式的DeepSeek-Coder-V2进行推理,需要80GB*8的GPU。

使用Huggingface的Transformers进行推理

您可以直接使用Huggingface的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()
input_text = "#写一个快速排序算法"
inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_length=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

代码插入

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()
input_text = """<|fim▁begin|>def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    left = []
    right = []
<|fim▁hole|>
        if arr[i] < pivot:
            left.append(arr[i])
        else:
            right.append(arr[i])
    return quick_sort(left) + [pivot] + quick_sort(right)<|fim▁end|>"""
inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_length=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True)[len(input_text):])

对话补全

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
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)
# tokenizer.eos_token_id 是 <|end▁of▁sentence|> 标记的 id
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))

完整的对话模板可以在 huggingface 模型仓库中的 tokenizer_config.json 文件中找到。

以下是对话模板的示例:

<|begin▁of▁sentence|>User: {user_message_1}

A: {assistant_message_1}<|end▁of▁sentence|>User: {user_message_2}

A:

你也可以添加一个可选的系统消息:

<|begin▁of▁sentence|>{system_message}

User: {user_message_1}

A: {assistant_message_1}<|end▁of▁sentence|>User: {user_message_2}

A:

在对话的最后一轮中,请注意"Assistant:"后面没有空格。在16B-Lite模型上,添加空格可能会导致以下问题:

  • 英语问题得到中文回答。
  • 回答包含乱码。
  • 回答过度重复。

Ollama 的旧版本存在这个 bug(参见 https://github.com/deepseek-ai/DeepSeek-Coder-V2/issues/12),但在最新版本中已修复。

使用 vLLM 进行推理(推荐)

要使用 vLLM 进行模型推理,请将此 Pull Request 合并到你的 vLLM 代码库中:https://github.com/vllm-project/vllm/pull/4650。

from transformers import AutoTokenizer
from vllm import LLM, SamplingParams

max_model_len, tp_size = 8192, 1
model_name = "deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
llm = LLM(model=model_name, tensor_parallel_size=tp_size, max_model_len=max_model_len, trust_remote_code=True, enforce_eager=True)
sampling_params = SamplingParams(temperature=0.3, max_tokens=256, stop_token_ids=[tokenizer.eos_token_id])

messages_list = [
    [{"role": "user", "content": "Who are you?"}],
    [{"role": "user", "content": "write a quick sort algorithm in python."}],
    [{"role": "user", "content": "Write a piece of quicksort code in C++."}],
]

prompt_token_ids = [tokenizer.apply_chat_template(messages, add_generation_prompt=True) for messages in messages_list]

outputs = llm.generate(prompt_token_ids=prompt_token_ids, sampling_params=sampling_params)

generated_text = [output.outputs[0].text for output in outputs]
print(generated_text)

7. 许可证

此代码仓库采用 MIT 许可证。DeepSeek-Coder-V2 基础/指令模型的使用受 模型许可证 约束。DeepSeek-Coder-V2 系列(包括基础和指令模型)支持商业使用。

8. 引用

@article{zhu2024deepseek,
  title={DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence},
  author={Zhu, Qihao and Guo, Daya and Shao, Zhihong and Yang, Dejian and Wang, Peiyi and Xu, Runxin and Wu, Y and Li, Yukun and Gao, Huazuo and Ma, Shirong and others},
  journal={arXiv preprint arXiv:2406.11931},
  year={2024}
}

9. 联系方式

如果你有任何问题,请提出 issue 或通过 service@deepseek.com 联系我们。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号