使用 DeepSeek AI 生成和理解代码2025年4月23日 | 阅读 11 分钟 在技术领域,众所周知,DeepSeek Coder 主要由一系列代码语言模型组成,其中每个模型都从头开始在2T个 token 上进行训练,其中包含87% 的代码和 13% 的英语和中文自然语言。尽管如此,它提供了各种大小的代码模型,范围从 1B 到 33B 版本。 在本教程中,每个模型主要在项目级别的代码语料库上进行预训练,使用 16K 的窗口大小和一个额外的填空任务,以支持项目级别的代码补全和填充。在编码能力方面,DeepSeek Coder 在多种编程语言和基准测试中的开源代码模型中取得了最先进的性能。 ![]()
性能我们已经在各种与编码相关的基准测试上评估了 DeepSeek Coder。所有这些结果基本上表明,DeepSeek-Coder-Base-33B 的性能明显优于现有的开源代码 LLM。与相应的 CodeLLama-34B 相比,在HumanEval Python、HumanEval Multilingual、MBPP 和 DS-1000 上,它分别领先 7.9%、9.3%、10.8% 和 5.9%。 ![]() 令人惊讶的是,DeepSeek-Coder-Base-7B 的性能超过了 CodeLlama-34B。在经过指令微调后,DeepSeek-Coder-Instruct-33B 模型在 HumanEval 上的性能优于 GPT-3.5-turbo,并且它还可以有效地在 MBPP 上取得与 GPT-3.5-turbo 相当的成果。 DeepSeek 这个词是什么意思?DeepSeek basically is considered to be the Chinese artificial intelligence software company that develops large, open-source language models. Inspite of all this, "DeepSeek” has developed two large language models (LLMs) to date, R1 and V3. Furthermore, DeepSeek offers its users a much cheaper LLM experience with the similar capabilities and performance to the various popular LLMs, which may be included as GPT-4o. ![]() 使用 DeepSeek 的优势![]()
涉及该系统的各种技术,例如技术、金融和研究,在很大程度上依赖于这些类型的流程。 系统背后的可能技术系统背后的各种技术如下所示 ![]()
支持的各种编程语言DeepSeek 支持的不同编程语言如下所示 结果/成果评估人们可以轻松地在各种与编码相关的基准测试上评估相应的 DeepSeek Coder。此处仅报告 HumanEval(Python 和多语言)、MBPP 和 DS-1000 上的pass@1 结果。 ![]() 结果/成果表明,DeepSeek-Coder-Base-33B 的性能明显优于现有的开源代码 LLM。与 CodeLlama-34B 相比,在 HumanEval Python、HumanEval Multilingual、MBPP 和 DS-1000 上,它通常分别领先 7.9%、9.3%、10.8% 和 5.9%。令人惊讶的是,我们的 DeepSeek-Coder-Base-7B 达到了 CodeLlama-34B 的性能。 而且,DeepSeek-Coder-Instruct-33B 模型在经过指令微调后,性能优于 HumanEval 上的 GPT35-turbo,并且随后在 MBPP 上有效地实现了与 GPT35-turbo 相当的成果。 代码生成和理解系统(如 DeepSeek AI)的关键特性与代码及其理解相关的各种关键特性如下
数据创建和模型训练的程序1. 数据创建步骤 1:首先,我们需要从 GitHub 收集代码数据,然后应用与 StarCoder Data 相同的过滤规则来有效地过滤数据。 步骤 2:解析同一存储库中文件的依赖关系,以便根据它们的依赖关系重新排列文件的位置。 步骤 3:连接各种依赖文件以形成单个示例,然后我们必须使用存储库级别的 minhash 进行去重。 步骤 4:进一步过滤低质量代码,例如带有语法错误或可读性差的代码。 2. 模型训练步骤 1:最初使用包含 87% 代码、10% 代码相关语言(Github Markdown 和 StackExchange)和 3% 非代码相关中文的数据集进行预训练。模型通常在此步骤中通过使用 1.8T 个 token 和 4K 的窗口大小进行预训练。 步骤 2:使用扩展的 16K 窗口大小在额外的 200B 个 token 上进一步预训练,从而生成基础模型(DeepSeek-Coder-Base)。 步骤 3:在 2B 个 token 的相应指令数据上进行指令微调,从而生成指令微调模型(DeepSeek-Coder-Instruct)。 如何使用代码因此,在继续之前,我们需要安装必要的依赖项。可以通过在有效的方式下运行以下命令来完成此操作 ![]() 1) 代码补全![]() 此代码将分别输出以下结果 ![]() 2) 代码插入![]() 此代码将分别输出以下结果 ![]() 3) 聊天模型推理![]() 此代码将分别输出以下结果 ![]() 如果我们不想使用提供的 API,即:apply_chat_template,它负责从 tokenizer_config.json 加载模板,我们也可以使用以下模板来与我们选择的模型集进行聊天。然后,我们可以用我们的指令替换 ['content'] 以及模型之前的(如果有)响应,模型将有效地生成对当前给定指令的响应。 ![]() 4) 存储库级代码补全![]() ![]() ![]() 通常,在以下场景中,相应的 DeepSeek-Coder-6.7B 模型将调用 model.py 文件中的类 IrisClassifier 及其成员函数,然后它将利用 utils.py 文件中的函数,以正确完成 main.py 文件中的主函数,用于模型训练和有效评估结果,而不会出现任何失败。 常见问题解答/FAQ关于使用 DeepSeek AI 进行代码生成和有效理解的常见问题解答如下 问题 1:为 DeepSeek AI 中的模型量化提供 tokenizer.model 文件?答案:相应的 DeepSeek Coder 主要利用 HuggingFace Tokenizer 来实现 Bytelevel-BPE 算法,并带有专门设计的预分词器以确保最佳性能。目前,没有直接的方法可以轻松地将分词器转换为 SentencePiece 分词器。我们正在为开源量化方法做出贡献,以促进 HuggingFace Tokenizer 的使用。 尽管如此,我们还向流行的量化存储库 llama.cpp 提交了一个 PR,以完全支持我们包括在内的所有 HuggingFace 预分词器。 在等待 PR 合并的同时,我们可以通过以下步骤有效地生成我们的 GGUF 模型: ![]() 问题 2:如何有效地使用 deepseek-coder-instruct 来完成代码?答案:虽然 deepseek-coder-instruct 模型在监督微调 (SFT) 期间没有专门针对代码补全任务进行训练,但它们仍然能够有效地执行代码补全。要启用此功能,我们只需调整 eos_token_id 参数。之后,我们必须将 eos_token_id 设置为 32014,而不是 deepseek-coder-instruct 配置中的默认值 32021。这个特定的修改会促使模型以不同的方式识别序列的结束,从而促进代码补全任务。 |
我们请求您订阅我们的新闻通讯以获取最新更新。