
Deepseek 编码器部署
驱动
我已经使用 Cursor AI 和 Claude Sonet 一段时间了,这真是一次令人震惊的体验。自从我将人工智能驱动的编码辅助纳入我的工作流程后,我的生产力轻松提高了近 50%。事实上,我发现这些人工智能工具不仅加快了琐碎的编码任务——它们还鼓励我探索可能被忽视的新库和框架。
与此同时,作为一个开源爱好者,总是有一个挥之不去的想法:“如果我可以使用开源模型实现类似的结果,同时保持对我的数据的完全控制,会怎么样?”
DeepSeek,特别是在他们将 R1 模型免费公开后,在人工智能社区引起了轰动——在 Hugging Face 和 Ollama 上完全开源。16B 的“Lite”版本引起了我的注意——小到足以在我的 M2 MacBook Air 上运行,配备 24GB RAM。
这成为了我动机的完美风暴:
- 成本节省(谁不喜欢免费的?)
- 开源热情
- 数据隐私保障
- 深入现代大语言模型架构
我也将此视为一个机会,以了解更多关于 DeepSeek 生态系统的信息——它的 V3 和 R1 模型,以及更广泛的开源大语言模型世界。为了使这个过程更有趣,我决定咨询 DeepSeek-R1 本身,以获取有关设置一切的指导。
TL;DR
本系列博客的第一部分专注于部署背后的策略——特别是我如何提示 R1 获取模型推荐和说明。如果您更愿意直接跳到设置过程,请访问 Part 2,在那里我将介绍实际的部署步骤。
本地人工智能编码助手在原始性能上无法与商业选项如 Claude 3 Opus 或 DeepSeek-R1 的 API 相匹配;实际上,它们相差甚远。付费解决方案显著更强大且更完善。此外,如果您决定使用 R1 进行编码任务,其定价相当有吸引力——每百万令牌仅需 $2.19,而 Claude 则为每百万令牌 $15,甚至 ChatGPT o1 为每百万令牌 $60。这意味着最高可节省 96.35% 的成本!
如果数据隐私是您的首要任务,本地路线是合理的。此外,微软最近宣布 Windows 11 已优化以本地运行提炼后的 DeepSeek R1 模型(DeepSeek-R1-Distill-Qwen-1.5B),这突显了一个日益增长的趋势。
或者,也许您和我一样——喜欢玩弄开源产品的人。让我们深入了解吧!
提示
我同时使用了 DeepSeek-R1 和 ChatGPT o1 来指导我完成这个过程,因为它们都被认为非常适合基于指令的提示。以下是我使用的提示:
请提供在 M2 MacBook Air(24GB RAM)上本地部署最合适的 DeepSeek 模型的逐步说明。我想将其与 VSCode Continue 扩展一起用于 Python、Node.js、SQL、Jinja 和 Bash 的编程任务。
请包括:
- 系统要求
- 是否需要 Ollama 部署,以及原因
- 是否推荐使用 Anaconda,原因是什么,如何使用
- 基于 Ollama 评估的详细部署说明
请首先在互联网上搜索最新信息,并在多次修订后提供精炼的答案。给我答案。
让我印象深刻的是 R1 的思维链。尽管最终答案需要稍加润色,但 R1 的推理过程详细且非常 类人。通过多次提示它完善答案,我看到它如何逐步改进,展示了相当迷人的“思考”深度。
根据 R1 的回答,我发现 Ollama 是必需的(幸运的是我已经安装了它)。Anaconda 是可选的。更重要的是,R1 提到还有另一个特定于编码的模型(类似于 Qwen),称为 DeepSeek-Coder。这就是我了解到 DeepSeek-Coder-V2 (DSC2) 的方式。
注意事项
- DeepSeek遭遇网络攻击 在撰写本文时(2025年2月5日),DeepSeek正遭遇多次网络攻击,导致注册限制和搜索功能被禁用。根据CNBC和NSFocus Global,该公司面临着严重的DDoS压力,限制了实时更新的访问。
- R1和ChatGPT o1的混合结果
当我尝试在R1和ChatGPT o1上运行提示时,两个都没有在第一次尝试中正确。R1建议使用
deepseek-coder:6.7b-instruct-q4_K_M
,而ChatGPT o1推荐llama2-7b-chat
。诚然,这不是一个公平的比较——向ChatGPT询问DeepSeek模型的指导可能超出了它的能力范围。尽管如此,我还是希望o1至少能推荐一些面向编码的选项。
模型和标签的选择
DeepSeek-Coder-V2 (DSC2)
DeepSeek 在推出其旗舰 R1 模型前大约四个月发布了 Coder-V2 模型。它是完全免费的开源软件,既可以在 Hugging Face 上获取,也可以在 Ollama 上使用。
DSC2 基于 DeepSeek-V2 的一个中间检查点,增加了另外 6 万亿 令牌用于训练。这种扩展的预训练提高了编码和数学推理的能力,同时在一般语言任务上表现良好。与 DeepSeek-Coder-33B 相比,DSC2 在与代码相关的任务、推理和更广泛的能力方面显示出显著的改进。
它利用了前沿架构,如 MoE、蒸馏、MPI 和 MLA。开发者们自己这样描述它:
“我们呈现 DeepSeek-Coder-V2,一个开源的专家混合模型(Mixture-of-Experts, MoE)代码语言模型,在代码特定任务中实现了与 GPT4-Turbo 相当的性能。具体而言,DeepSeek-Coder-V2 是从 DeepSeek-V2 的一个中间检查点进一步预训练的,增加了 6 万亿 令牌。通过这种持续的预训练,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。”
在 Ollama 上,有多个标签用于该模型的不同变体,每个标签针对略有不同的使用案例进行了优化。经过一些研究,我发现 每个标签都是为独特的需求量身定制的 — 有些用于纯代码补全,而另一些则专注于交互式指令跟随。选择最符合您任务的标签至关重要。
Instruct Model vs. Base Model
DeepSeek-Coder-V2 有两种主要类型:Instruct 和 Base。
Base model
基础模型是一个通用语言模型,训练于大量文本语料库(例如,代码、文档和自然语言)。它没有针对指令跟随或任务导向行为的特定微调。
Strengths:
- 非常适合文本补全(例如,完成代码片段)。
- 对于生成原始文本或代码等无监督任务非常有用。
Weaknesses:
- 跟随指令的能力较差(例如,“编写一个 Python 函数来排序列表”)。
- 可能对直接查询产生无关或无意义的回应。
Instruct model
指令模型是基础模型的微调版本,优化以跟随指令并执行特定任务。它在包含指令-响应对的数据集上进行训练(例如,“编写一个 SQL 查询以查找重复项” → “SELECT …”)。在 任务导向交互(例如,调试、重构、回答问题)方面表现出色。
Strengths:
- 在任务导向交互方面表现出色(例如,调试、重构、回答问题)。
- 更好地理解自然语言提示并生成相关输出。
Weaknesses:
- 可能对指令类提示过拟合,在原始补全任务中表现不佳。
- 由于额外的微调层,需要更多的计算资源。
Key Differences
参数选择
DeepSeek 提供两种参数大小:16B (Lite) 和 236B (Full)。如果您想在 BF16 格式下运行 DeepSeek-Coder-V2 进行推理,您需要 80 GB * 8 GPUs — 这对于一台普通的笔记本电脑来说是个总的障碍。显然,16B “Lite” 版本 是任何使用消费级机器的人的最佳选择。
量化
量化涉及减少模型权重和激活存储的数值精度。例如,使用16位浮点数而不是32位可以将您的RAM需求减半。降低到8位甚至4位可以大幅减少内存需求,尽管这有可能导致一些准确性损失。
量化选择
有一个粗略的经验法则是,1亿参数在8位精度下大约需要1.2GB的RAM。使用4位和混合精度技术,您可以在主流笔记本电脑上实现更大的规模。
对于我的M2 MacBook Air(24GB RAM),我决定对16B Lite模型进行4位量化。这应该消耗大约10到14GB的RAM,同时留出足够的余地来处理模型本地运行时的日常任务。
精度选择
精度是指用于表示权重和激活的位数。DSC2使用混合精度量化技术,对更敏感的层分配更高的精度,对不太敏感的层分配较低的精度。这在保持性能的同时仍然受益于减少的内存占用。
决策
- 参数:16B Lite
- 量化:4位
- 模型标签:DeepSeek-Coder-V2-Lite-Instruct:16b-lite-instruct-q4_K_M
这个组合应该为在M2 MacBook Air上的本地使用提供最佳平衡,特别是当您希望将其与VSCode中的Continue扩展集成以进行编码任务时。
请关注第二部分
在第二部分中,我将带您了解如何使用 Ollama 在本地启动和运行 DSC2 的实际步骤,展示如何将其与您的编码环境集成,并分享故障排除的技巧。同时,如果您正在尝试开源的大语言模型,请关注您系统的资源使用情况,并准备调整量化级别或模型变体,以找到最适合您的配置。