在 DeepSeek-R1 的本地指导下部署 DeepSeek Coder(第 1 部分)

驱动器

        使用 Cursor AI 和 Claude Sonet 已经有一段时间了,这绝对是一次令人兴奋的体验。自从我将人工智能驱动的编码辅助功能纳入我的工作流程后,我的工作效率轻松提升了近 50%。事实上,我发现这些人工智能工具不仅加快了琐碎的编码任务,还鼓励我探索我可能忽略的新库和框架。

        同时,作为一名开源爱好者,我始终有一个挥之不去的想法:“如果我能够使用开源模型获得类似的结果,同时又能完全控制我的数据,那会怎样?”

        尤其是 DeepSeek,在免费向公众发布其 R1 模型后,在 AI 社区引起了轰动——在 Hugging Face 和 Ollama 上完全开源。16B“精简版”引起了我的注意——小到可以在配备 24GB RAM 的 M2 MacBook Air 上运行。

这成为了我完美的动机:

节省成本(谁不喜欢免费?)
开源热情
数据隐私保证
深入探究现代 LLM 架构

        还将此视为进一步了解 DeepSeek 生态系统的机会——其 V3 和 R1 模型,以及更广泛的开源 LLM 世界。为了让这个过程更有趣,我决定咨询 DeepSeek-R1 本身,以获得有关设置一切的指导。

总结

        本博客系列的第一部分重点介绍部署背后的策略 — 尤其是我如何提示 R1 获取模型建议和说明。如果您想直接跳到设置过程,请转到第 2 部分,我将在其中介绍实际的部署步骤。

        本地 AI 编码助手在原始性能方面无法与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 来指导我完成这个过程,因为它们都非常适合基于指令的提示。以下是我使用的提示:

请提供在具有24GB RAM的M2 MacBook Air上本地部署最合适的DeepSeek模型的分步说明。我想将其与VSCode Continue扩展一起用于Python、Node.js、SQL、Jinja和Bash中的编程任务。
包括:
1.系统要求
2.Ollama部署是否必要,为什么
3.是否推荐Anaconda,为什么或为什么不推荐,以及如何使用它
4.基于Olama评估的详细部署说明
请先在互联网上搜索最新信息
在多次修订后提供精确的答案

        真正让我印象深刻的是R1 的思维链。尽管最终答案需要一点打磨,但 R1 的推理过程非常详细,非常像人类。通过多次提示它完善答案,我看到它如何迭代改进,展现出令人着迷的“思考”深度。

        根据 R1 的回复,我发现 Ollama 必不可少(幸运的是我已经安装了它)。Anaconda 是可选的。更重要的是,R1 提到还有另一个编码专用模型(类似于 Qwen),称为 DeepSeek-Coder。这就是我发现 DeepSeek-Coder-V2(DSC2)的方式。

注意事项

1、DeepSeek 遭受网络攻击
截至撰写本文时(2025 年 2 月 5 日),DeepSeek 正遭受多次网络攻击,导致注册受限和搜索功能被禁用。据CNBCNSFocus Global报道,该公司一直面临巨大的 DDoS 压力,这限制了实时更新的访问。

2、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 万亿个 token 用于训练。这种扩展的预训练提高了编码和数学推理能力,同时在一般语言任务上仍然表现良好。与 DeepSeek-Coder-33B 相比,DSC2 在与代码相关的任务、推理和更广泛的功能方面表现出色。

它利用了 MoE、distillation、MPI 和 MLA 等尖端架构。开发人员自己这样描述它:
        “我们提出了 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 等闭源模型取得了更优异的性能。”

        但这还不是全部!在 Ollama 上,有多个标签适用于此模型的不同变体,每个标签都针对略有不同的用例进行了优化。经过一番研究,我发现每个标签都是针对独特需求量身定制的——有些标签用于纯代码完成,而另一些则专注于交互式指令遵循。选择最适合您任务的标签至关重要。

指导模型与基础模型

DeepSeek-Coder-V2 有两种主要类型:Instruct 和 Base。

基础模型

基础模型是一种通用语言模型,在大量文本(例如代码、文档和自然语言)上进行训练。它没有针对指令遵循或面向任务的行为进行特定的微调。

优势:

非常适合文本完成(例如,完成代码片段)。
对于生成原始文本或代码等无监督任务很有用。

弱点:

不善于遵循指令(例如,“编写一个 Python 函数来对列表进行排序”)。
可能会对直接查询产生不相关或无意义的回答。

指导模型

        指令模型是基础模型的微调版本,经过优化可遵循指令并执行特定任务。它使用包含指令-响应对的数据集进行训练(例如,“编写 SQL 查询以查找重复项”→“SELECT …”)。擅长面向任务的交互(例如调试、重构、回答问题)。

优势:

擅长面向任务的交互(例如调试、重构、回答问题)。
更好地理解自然语言提示并生成相关输出。

弱点:

可能过度拟合类似指令的提示,并且在原始完成任务上表现不佳。
由于额外的微调层,需要更多的计算资源。

主要区别

参数选择

        DeepSeek 提供两种参数大小:16B(精简版)和236B(完整版)。如果您想以 BF16 格式运行 DeepSeek-Coder-V2 进行推理,则需要 80 GB * 8 GPU — 对于一台普通笔记本电脑来说,这完全是一笔不小的交易。显然,16B“精简版”是任何消费级机器的最佳选择。

量化

        量化涉及降低模型权重和激活的存储数值精度。例如,使用 16 位浮点数而不是 32 位浮点数可将 RAM 需求减半。降至 8 位甚至 4 位可以大幅减少内存需求,但可能会损失一些准确性。

量化选择

        粗略的经验法则是,10 亿个参数需要大约 1.2GB 的 RAM(8 位精度)。使用4 位和混合精度技术,您可以获得更大的内存,同时仍适合主流笔记本电脑。

        对于配备 24GB RAM 的 M2 MacBook Air,我决定对 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 扩展集成以执行编码任务时。

敬请期待第二部分

        对于第2 部分,我将引导您完成使用 Ollama 在本地启动和运行 DSC2 的实际步骤,向您展示如何将其与您的编码环境集成,并分享故障排除技巧。与此同时,如果您正在尝试使用开源 LLM,请密切关注系统的资源使用情况,并准备调整量化级别或模型变体以找到最适合您的方法。干杯!

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn_aspnet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值