DeepSeek-Coder-V2:打破代码智能闭源模型壁垒

DeepSeek-Coder-V2:打破代码智能闭源模型壁垒

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. 模型下载

我们基于框架发布了参数量分别为16B和236B的DeepSeek-Coder-V2,而DeepSeek-Coder-V2的有效参数量仅为2.4B和21B,包括基础模型和指导模型。

模型#总参数#活动参数上下文长度下载
DeepSeek-Coder-V2-Lite-Base16B2.4B128千
DeepSeek-Coder-V2-Lite-指导16B2.4B128千
DeepSeek-Coder-V2-基础版236B21B128千
DeepSeek-Coder-V2-指导236B21B128千

3.评估结果

3.1 代码生成

#TP#美联社人力评估马来西亚公共服务计划+活码测试美国陆军航空兵司令部
闭源模型
Gemini-1.5-Pro--83.574.634.14.9
克劳德-3-作品--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
开源模型
代码22B22B78.168.231.04.6
DeepSeek-Coder-指导33B33B79.370.122.54.2
Llama3-指导70B70B81.168.828.73.3
DeepSeek-Coder-V2-Lite-指导16B2.4B81.168.824.36.5
DeepSeek-Coder-V2-指导236B21B90.276.243.412.1

3.2 代码完成

模型#TP#美联社RepoBench(Python)RepoBench (Java)HumanEval FIM
代码22B22B46.145.783.0
DeepSeek-Coder 库7B7B36.243.386.1
DeepSeek-Coder 库33B33B39.144.886.4
DeepSeek-Coder-V2-Lite-Base16B2.4B38.943.386.4

3.3 代码修复

#TP#美联社缺陷4JSWE 工作台艾德
闭源模型
Gemini-1.5-Pro--18.619.357.1
克劳德-3-作品--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
开源模型
代码22B22B17.82.751.1
DeepSeek-Coder-指导33B33B11.30.054.5
Llama3-指导70B70B16.2-49.2
DeepSeek-Coder-V2-Lite-指导16B2.4B9.20.044.4
DeepSeek-Coder-V2-指导236B21B21.012.773.7

3.4 数学推理

#TP#美联社GSM8K数学2024年国际医学博览会数学奥德赛
闭源模型
Gemini-1.5-Pro--90.867.72/3045.0
克劳德-3-作品--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-指导70B70B93.050.41/3027.9
DeepSeek-Coder-V2-Lite-指导16B2.4B86.461.80/3044.4
DeepSeek-Coder-V2-指导236B21B94.975.74/3053.7

3.5 通用自然语言

基准领域DeepSeek-V2-Lite 聊天DeepSeek-Coder-V2-Lite 指导DeepSeek-V2 聊天DeepSeek-Coder-V2 指导
百比黑英语48.161.279.783.9
莫尔登大学英语55.760.178.179.2
ARC-Easy英语86.188.998.197.4
ARC 挑战赛英语73.477.492.392.8
琐事问答英语65.259.586.782.3
自然问题英语35.530.853.447.5
评估英语42.828.761.460
线索中国人80.076.589.985.9
C-评估中国人60.161.678.079.4
加拿大蒙特利尔大学中国人62.562.781.680.9
竞技场-困难-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) 测试的评估结果Needle In A Haystack。DeepSeek-Coder-V2 在高达128K的所有上下文窗口长度上均表现良好。

4. 聊天网站

您可以在DeepSeek的官方网站上与DeepSeek-Coder-V2进行聊天:

5. API 平台

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

6. 如何在本地运行

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

使用 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 = "#write a quick sort algorithm" 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 is the id of <|end▁of▁sentence|> token 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))

完整的聊天模板可以在tokenizer_config.jsonhuggingface 模型库中找到。

聊天模板示例如下:  <|begin▁of▁sentence|>User: {user_message_1} Assistant: {assistant_message_1}<|end▁of▁sentence|>User: {user_message_2} Assistant:

您还可以添加可选的系统消息:  <|begin▁of▁sentence|>{system_message} User: {user_message_1} Assistant: {assistant_message_1}<|end▁of▁sentence|>User: {user_message_2} Assistant:

在最后一轮对话中,请注意“Assistant:”冒号后没有空格。添加空格可能会导致 16B-Lite 型号出现以下问题:

  • 英文问题得到中文解答。
  • 响应包含乱码文本。
  • 回答重复过多。

旧版本的 Ollama 存在此错误(参见),但最新版本已修复。

使用 vLLM 进行推理(推荐)

要利用进行模型推理,请将此 Pull Request 合并到您的 vLLM 代码库中:。  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. 许可

本代码库遵循。DeepSeek-Coder-V2 Base/Instruct 模型的使用受约束。DeepSeek-Coder-V2 系列(包括 Base 和 Instruct)支持商业使用。

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. 联系方式

Read more

60个“特征工程”计算函数(Python代码)

60个“特征工程”计算函数(Python代码)

转自:coggle数据科学 近期一些朋友询问我关于如何做特征工程的问题,有没有什么适合初学者的有效操作。 特征工程的问题往往需要具体问题具体分析,当然也有一些暴力的策略,可以在竞赛初赛前期可以带来较大提升,而很多竞赛往往依赖这些信息就可以拿到非常好的效果,剩余的则需要结合业务逻辑以及很多其他的技巧,此处我们将平时用得最多的聚合操作罗列在下方。 最近刚好看到一篇文章汇总了非常多的聚合函数,就摘录在下方,供许多初入竞赛的朋友参考。 聚合特征汇总 pandas自带的聚合函数 * 其它重要聚合函数 其它重要聚合函数&分类分别如下。 def median(x):     return np.median(x) def variation_coefficient(x):     mean = np.mean(x)     if mean != 0:         return np.std(x) / mean     else:         return np.nan def variance(x):     return

By Ne0inhk
90w,确实可以封神了!

90w,确实可以封神了!

要说24年一定最热的技术,还得是AIGC! 前段时间阿里旗下的开源项目,登上GitHub热榜! AI大热,如今ChatGPT的优异表现,必然会出现各种细分场景应用的工具软件,和大量岗位项目! 山雨欲来风满楼,强人工智能的出现,所有科技公司已经开始巨量扩招此领域的人才。算法的岗位,近三个月已经增长68%!这件事在HR届也是相当震撼的。 目前各行各业都不景气的市场,人工智能岗位却一直保持常青!甚至同属AI边缘岗都比其他岗薪资高40%! 与此同时,AI算法岗上岸也不简单,竞争激烈,好公司核心岗位不用说,谁都想去。 所以事实就是,想要上岸,门槛也逐渐变高,项目经历、实习经历都很重要,越早明白这个道理就越能提前建立起自己的优势。 但我在b站逛知识区的时候,经常看到有些同学,因为一些客观原因导致无法参加实习,这种情况下,如果你想提升背景,增加项目经历的话,可以试试这个《CV/NLP 算法工程师培养计划》。 目前已经有上千位同学通过该计划拿到offer了,最新一期学员就业薪资最高能拿到78K!年薪94w! 优势就是有BAT大厂讲师带领,手把手带做AI真实企业项目(包含CV、NLP等

By Ne0inhk
再见nohup!试试这个神器,Python Supervisor!

再见nohup!试试这个神器,Python Supervisor!

👇我的小册 45章教程:() ,原价299,限时特价2杯咖啡,满100人涨10元。 作者丨Ais137 https://juejin.cn/post/7354406980784373798 1. 概述 Supervisor 是一个 C/S 架构的进程监控与管理工具,本文主要介绍其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题。 2. 问题场景 在实际的工作中,往往会有部署持久化进程的需求,比如接口服务进程,又或者是消费者进程等。这类进程通常是作为后台进程持久化运行的。 一般的部署方法是通过 nohup cmd & 命令来部署。但是这种方式有个弊端是在某些情况下无法保证目标进程的稳定性运行,有的时候 nohup 运行的后台任务会因为未知原因中断,从而导致服务或者消费中断,进而影响项目的正常运行。 为了解决上述问题,通过引入 Supervisor 来部署持久化进程,提高系统运行的稳定性。 3. Supervisor 简介 Supervisor is a client/

By Ne0inhk
第一本给程序员看的AI Agent图书上市了!

第一本给程序员看的AI Agent图书上市了!

AI Agent火爆到什么程度? OpenAI创始人奥特曼预测,未来各行各业,每一个人都可以拥有一个AI Agent;比尔·盖茨在2023年层预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业;吴恩达教授在AI Ascent 2024演讲中高赞:AI Agent是一个令人兴奋的趋势,所有从事AI开发的人都应该关注。而国内的各科技巨头也纷纷布局AI Agent平台,如:钉钉的AI PaaS、百度智能云千帆大模型平台等等。 Agent 是未来最重要的智能化工具。对于程序员来说,是时候将目光转向大模型的应用开发了,率先抢占AI的下一个风口AI Agent。 小异带来一本新书《大模型应用开发 动手做 AI Agent》,这本书由《GPT图解》的作者黄佳老师创作,从0到1手把手教你做AI Agent。现在下单享受5折特惠! ▼点击下方,即可5折起购书 有这样一本秘籍在手,程序员们这下放心了吧,让我们先来揭开 Agent 的神秘面纱。 AI Agent 面面观

By Ne0inhk