摘要:最近 DeepSeek 在全球掀起了热潮,其以低成本获得了世界领先模型的性能,引发了科技行业的广泛关注。在其引人注目的推理和问答能力以外,DeepSeek 也致力于为代码编写提效,推出的 DeepSeek Coder 吸引着众多开发者的目光。
最近 DeepSeek 在全球掀起了热潮,其以低成本获得了世界领先模型的性能,引发了科技行业的广泛关注。在其引人注目的推理和问答能力以外,DeepSeek 也致力于为代码编写提效,推出的 DeepSeek Coder 吸引着众多开发者的目光。
DeepSeek Coder 是 DeepSeek 团队开发维护的代码生成项目,仓库位于 https://github.com/deepseek-ai/DeepSeek-Coder。DeepSeek Coder 组合了一系列的代码语言模型,每种语言使用了达 2T 的海量 token,并提供了从 1B 到 33B 不等的多种规模的模型,达到了在多语言编程领域的领先水准。
DeepSeek Coder 有以下特点:
海量训练数据:使用了 2T 的 Token 进行训练,训练数据包括 87% 的代码和 13% 的自然语言数据(中文和英文)高度灵活和可扩展:提供1B、5.7B、6.7B和33B不同规模的模型,使用户能够按需使用卓越的模型性能:在 HumanEval、MultiPL-E、MBPP、DS-1000 和 APPS 基准测试中,取得了在公开代码模型中的领先水平高级代码补全能力:支持项目级别的代码补全和填空任务使用 DeepSeek Coder 其实并不复杂,按照以下步骤操作,开发者就能快速体验其强大功能。
安装依赖:在使用前,需要先安装必要的依赖项。打开命令行工具,运行pip install -r requirements.txt完成依赖的安装和环境搭建。
代码补全:以 Python 代码为例,首先导入相关的库,然后初始化模型:from transformers import AutoTokenizer, AutoModelForCausalLMimport torchtokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-coder-6.7b-base", trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained("deepseek-ai/deepseek-coder-6.7b-base", trust_remote_code=True, torch_dtype=torch.bfloat16).cuda接着,提供输入的文本,经过 tokenizer 解析后,输入到模型中进行生成,最终得到一个快排的算法实现代码:
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))运行这段代码,模型就会输出快速排序算法的 Python 代码:
def quick_sort(arr):if len(arr)
3. 代码插入:通过提供需要插入代码的源代码块,同样经过模型生成,就能自动插入缺失的代码:
运行程序,会生成以下代码,能够合理填补源代码的空缺:
for i in range(1, len(arr)):
4. 聊天模型推理:DeepSeek Coder 也支持与模型进行交互,实现聊天式的代码生成:
在这里,通过提供一条聊天的消息,就能够实现与常见的聊天对话式的交互。运行程序,会返回包含相关代码的富文本聊天消息:
Sure, here is a simple implementation of the Quick Sort algorithm in Python:def quick_sort(arr):if len(arr) pivot]return quick_sort(less_than_pivot) + [pivot] + quick_sort(greater_than_pivot)# Test the functionarr = [10, 7, 8, 9, 1, 5]print("Original array:", arr)print("Sorted array:", quick_sort(arr))This code works by selecting a 'pivot' element from the array and partitioning the other elements into two sub-arrays, according to whether they are less than or greater than the pivot. The pivot element is then in its final position. The process is then repeated for the sub-arrays.5. 仓库级别的代码补全:DeepSeek Coder 性能优异,已经能支持代码仓库级别的大量代码的补全,实现更为准确和合理的编码提效。
6. 微调模型:DeepSeek Coder 也为用户提供了脚本,以便在下游任务上进行模型微调。相应的脚本位于 finetune/finetune_deepseekcoder.py,该脚本支持使用 DeepSpeed 进行训练。首先安装依赖:
然后按照示例数据集格式准备训练数据,每行都是一个 json 序列化的字符串,其中包含两个必填字段和 .instruction,output。数据准备完成后,就可以使用示例脚本进行参数微调了。
DeepSeek Coder 的出现,无疑为代码开发领域带来了诸多便利,其较低的成本和优越的性能,使其成为难以忽视的编码利器。
DeepSeek Coder 可以帮助开发者快速补全代码,减少重复和基础代码的编写,大大提高开发效率。而对于初学者而言,它就像是一个随时在线的编程导师,能够帮助学习编程知识和理解代码逻辑。
乘着 DeepSeek 的春风,DeepSeek Coder 将凭借其强大的性能,在编程领域中扮演重要角色,值得广大开发者深入探索和应用。
来源:每日开源代码