普通视图

发现新文章,点击刷新页面。
今天 — 2025年4月4日首页

【亲测】1.5万搞定DeepSeek满血版!本地部署避坑指南+内网穿透黑科技揭秘

服务器总“繁忙”?不如自己当老板!

17.jpg 最近疯狂追着AI大模型的朋友们应该都懂,每次想用官网或APP测试DeepSeek R1 671B,总被一句“服务器繁忙,请稍后再试”气到血压飙升。我也不例外——直到花1.5万组装了一台“战车”,在家门口把满血版给跑起来了!速度居然还能飙到2.18 tokens/s,这波操作直接把我从“被服务器卡脖子的韭菜”变成了“自己掌控节奏的老铁”。

为什么非要折腾本地部署?

痛点一:“稍后再试”的魔咒 之前用APP测生成效果,经常等半小时才能成功一次。有次赶工写方案,连刷5次提示“服务器过载”,差点把手机摔了(还好老婆没看到)。

痛点二:蒸馏版 vs 满血版的差距 有人推荐我试试轻量级模型,但测试下来效果真心不如满血版丝滑。比如让模型写技术文档,蒸馏版总漏掉关键参数,而671B的大模型能直接把代码片段和公式都整出来——这钱不花白不花!

pexels-cottonbro-6804604.jpg

1.5万的硬件配置真香

我的“性价比战车”配置单

服务器:技嘉X99

CPU:单路E5-2673v4

显卡:2080Ti 22G*4

内存:512G

机箱:工作站全塔机箱

电源:1200W

14.jpg

远程访问神器——cpolar的“魔法”

为什么需要内网穿透? 本地部署的最大好处是速度快,但问题来了:出差在外还能用吗?这时候 cpolar 真是个宝藏工具。

  • 场景1:在家训练,在公司调用 我把模型放在家里电脑跑,通过cpolar生成一个外网链接。到办公室一开网页,直接远程操作,连咖啡都不用等。带着个私人秘书上班不但提高效率,摸鱼时间更多,还能时不时的装那么一下子。
  • 场景2:朋友借我模型?没问题,分分钟搞定! 好哥们想试试DeepSeek效果,我给他发个专属链接,他手机、平板都能用——前提是得提醒他别乱改我的训练参数😀。

本地部署的“真·自由”

现在我终于能任性地测试各种场景了——比如让模型生成代码时故意给错参数,看它怎么纠错,或者半夜突发灵感直接调出大模型将灵感变现。而这一切的成本,cpolar比租用云服务一年还省一半

下面就看看部署过程吧!保证有图有真相

前言

最近因为访问人数过多,大家在访问Deepseek官网或是使用手机APP版本的时候,经常会遇到服务器繁忙,请稍后再试的情况。于是就出现了很多本地部署DeepSeek大模型的文章或者视频教程,但是跑跑轻量级的还好,如果想体验满血版DeepSeek R1 671B这种几百个G的大模型,那在本地部署所需的硬件配置与费用也会更高。

各种版本的DeepSeek参数和本地部署的要求大家可以参考下图:

image-20250219144230816

为了能花更少的钱体验到满血版的DeepSeek和蒸馏版的到底使用起来有什么区别,笔者尝试使用一套更具性价比的硬件配置挑战将DeepSeek R1 671B 的满血量化版Q4大模型运行在个人PC上,成本压缩在1.5万,经过测试,跑出的速度可达到2.18 tokens/s ,基本可用,如下图所示:

QQ20250211-191422

下面就来详细分享一下具体配置与实际运行效果。

1. 硬件配置

服务器:技嘉X99

CPU:单路E5-2673v4

显卡:2080Ti 22G*4

内存:512G

机箱:工作站全塔机箱

电源:1200W

image-20250218112655164

2. 软件配置

操作系统:Ubuntu 22.04.5

本地大模型运行工具:Ollama

curl -fsSL https://ollama.com/install.sh | sh

大模型:DeepSeek R1 671B满血量化版 404GB

ollama run deepseek-r1:671b

3. 调优配置

如果按默认安装Ollama会报内存溢出错误,这里配置了几个调优参数,可以使得显卡不再内存溢出,会使用内存当显存,同时因为是4张显卡启动,所以在开机初始化时,加了延迟10秒启动Ollama,这样会让4张显卡启动正常后,再加载Ollama。

ExecStartPre=sleep 10
Environment="OLLAMA_HOST=0.0.0.0"
Environment="GGML_CUDA_ENABLE_UNIFIED_MEMORY=1"

image-20250218113229495

4. 实际运行效果

首先ssh登录到服务器后,查看Ollama当前环境所有大模型列表:

ollama list

image-20250218112753842

可以看到,当前已经下载好的deepseek-r1:671b满血全量模型,大小 404GB

然后运行Deepseek R1 671B:

ollama run deepseek-r1:671b

进入运行画面后,设置输出明细信息:/set verbose

image-20250218112946416

这里加载可能需要一些时间,加载完成后进行提问,即能看到实际运行的速率了:

QQ20250211-191422

5. 安装Dify服务

如果想要在网页中与Deepseek大模型交互,我们可以使用Docker来本地部署Dify服务来实现,首先需要安装Docker:

sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun

然后本地部署Dify:

克隆 Dify 源代码至本地环境:

git clone https://github.com/langgenius/dify.git

环境配置:

cd dify/docker  #进入 Dify 源代码的 Docker 目录
cp .env.example .env  #复制环境配置文件

启动容器:

sudo docker compose up -d

Dify 接入Ollama:

进入Dify主界面,点击设置—模型供应商—Ollama,添加模型名称,基础URL,支持Vision保存。

7cfcff463b949cc043836214a500cd1.png

image-20250219163910801

回到主页面当中,点击创建空白应用,选择deepseek-r1:671b模型,在文本框中编辑文字即可进行对话。

image-20250219162424420转存失败,建议直接上传图片文件

6.安装内网穿透远程访问

如果想实现其他用户跨网络环境,远程访问本地部署的Deepseek R1 671B,可以通过安装cpolar内网穿透工具实现。

sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

img

Cpolar安装和成功启动服务后,在浏览器上输入Ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar账号登录后即可看到配置界面:

点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了: dify 注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:80
  • 域名类型:随机域名
  • 地区:选择China Top

点击创建

e236629c30c2161232c1655493d22ad.png

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个网址在浏览器中访问即可。

成功实现使用公网地址异地远程访问本地部署的Dify在网页中与Deepseek R1 671B聊天了!

bb5906f2d50520ec228aa78b1b8b859.png

为了方便演示,我们在上边的操作过程中使用了cpolar生成的公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用,然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。

如果有长期远程访问本地 Dify开发应用平台或者其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择使用固定的二级子域名方式来远程访问,带宽会更快,使用cpolar在其他用途还可以保留多个子域名,支持多个cpolar在线进程。

配置固定Dify公网地址

我们可以为Dify配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择china vip,然后设置一个二级子域名名称,填写备注信息,点击保留。

fe72be4b9c350c2fb34cdfb88e49320.png

然后登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道:dify,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China VIP

点击更新

463706456a7806bb596036ec151044a.png

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

82274f0c737fed53d9b60a375935c82.png

最后,我们使用固定的公网地址访问 Dify 界面可以看到访问成功,这样一个永久不会变化的网址就设置好了。

5315f47a37dae1b8a7663b1d1d64ba6.png

接下来就可以随时随地进行cpolar生成的公网地址来远程使用本地部署的Dify与deepseek满血大模型聊天了,你也可以把分享这个固定的公网地址,方便团队协作,同时也大大提高了工作效率!自己用的话,无需云服务器,还可以实现异地其他设备登录!

总结

本次挑战中,笔者使用的基本均为多年前上市但极具性价比的硬件来实现本地部署deepseek满血大模型,并结合cpolar内网穿透工具将你本地的deepseek服务发布公网,轻松实现让好友或是同事也能远程访问你在本机部署的大模型,无需二次部署,节省成本的同时也不用再体验deepseek服务器繁忙的情况了。

目前笔者正在测试新的部署方案,期望是达成提高每秒tokens速度的同时还能进一步降低硬件的配置预算,敬请期待.

有兴趣的小伙伴赶紧去试试吧

我的主页里,藏着更多让你惊喜的内容:

💡这软件让我AI助理们排队打工!Cherry Studio+内网穿透=效率狂魔的终极组合 - 掘金

💡云端跳跃:在NAS上用cpolar重现马里奥的童趣时光 - 掘金

💡十年Python老司机分享:那些实战中比写代码更重要的事 - 掘金

💡老板让我三天做AI客服?有了Flowise我边吃火锅边回:"行啊,链接发您微信了" - 掘金

💡告别云盘付费焦虑!Zfile+cpolar手把手教你搭建私人数据王国 - 掘金

💡手机扫码秒传文件!你的“私人云管家”ZFile,让全家文件不再散落天涯-掘金

💡PHPStudy+WordPress+cpolar建立商业网站的心得:从忐忑到惊喜的旅程怎一个爽字了得😊 - 掘金

💡代码写不动?命令行狂按到手酸?这个AI开发助手让我效率翻了3倍!- 掘金

💡3分钟生成4K电影海报?这个AI工具让小白秒变大神!用内网穿透还能远程操控!普通人也能玩转的“造梦机器”——SD 3.5 - 掘金

关注我,成为第一批掌握cpolar内网穿透科技赋能的大神

昨天以前首页

JavaScript高级程序设计(第5版):扎实的基本功是唯一捷径

作者 灵感__idea
2025年3月31日 22:56

每个系列一本前端好书,帮你轻松学重点。

本系列来自曾供职于Google的知名前端技术专家马特·弗里斯比编写的 《JavaScript高级程序设计》(第5版)

不论从事什么,真正的高手都是把基本功练到炉火纯青的人,只有熟悉每个细节,熟练每个动作,才能在情况多变的实战中如肌肉记忆般灵活应对,从容不迫。

学习JavaScript的最佳书籍是什么,不论十年前还是现在,都会得到一个答案 —《JavaScript高级程序设计》(红宝书)。

尽管技术在不断换代,“红宝书”仍以其全面性、权威性成为难以替代的经典。本系列文章的目标,就是借助这样一本书的最新版,帮大家打破知识壁垒,夯实基本功。

它的全面性体现在,不仅介绍了JavaScript语言的发展背景和基本概念,还讲解了面向对象编程、迭代器、Promise、Canvas、客户端存储等现代Web开发不可缺少的知识点。在系统性的同时兼顾了精简,并融入作者多年一线开发经验。

所以,它不单是一本知识讲解书,也是一本编程指导书。

编程在干什么

对于非开发人员来说,看代码无异于看“天书”,不少想入行的人会因此打退堂鼓。

每个人都存在过这样的疑问:编程学了能干什么?那些字母、符号和我要做的事有什么关联?

实不相瞒,笔者没有编程天赋,大学计算机专业学渣,工作前几年做的也不是真正意义的编程,切实体会过从不知所措到逐渐开窍的过程。

分享两个关键点:载体、信息

任何一门编程语言都不能凭空变魔术,需要依附于某种载体才能发挥作用。

你不要想着怎么用程序把人从一个地方送到另一个地方,你要做的是拿起手机打车。

JavaScript的载体是浏览器,我们编写的代码都要运行在浏览器中,这就解答了“用在哪”。

下一个问题是“怎么做”,程序是用来控制机器的,而不是人,所以,落脚点还在载体。

编程,就是把现实需求和载体建立联系,用来建立联系的是”信息“。

假设需要处理的信息是”一个班级的学生“:

你想记录人的名字,需要一个变量(name),你想拿到某个人的资料,需要一个对象(person),你想把所有人存储在一起,需要一个列表/数组(personList),你想把前十个分到一组,后面的分到另一组,需要进行条件判断(if逻辑)

编程语言就像一个工具箱,把想法用“工具”组合呈现出来就是在编程。

你精通JavaScript吗?

“精通”本是褒义词,现在成了敏感词,不论是工作三年五年,还是十年八年,只要敢在简历中写“精通”二字,就等着被出难题,不过略尴尬的是,有能力出难题的面试官也很少,面试官也是普通人,有强项,有薄弱,很多知识点研究也不深。

既然没多少人精通,还应不应该追求精通?当然应该。

精通有哪些好处,最直接的:

  • 遇到需求有方案
  • 碰到问题有答案

这里又提到两个点:需求、问题

如果单纯追求理论,把这本书背下来够吗?说不够怕你打我,但确实不够。一来,JavaScript的细节丰富程度远非一本书能涵盖;二来,知识永远要和应用结合才有价值,才能发现它适合的场景以及优缺点,最终沉淀为经验。

从这个角度看,“精通”不是一个指日可待的目标,而是一种不断精进的状态。

JavaScript的实现

全书共25章,看起来很多,但没有一章是多余的,而且相较于第4版(28章)做了适当地删减与合并,如”DOM2和DOM3、XML、客户端检测“不再作为单独的章节,同时新增了ES2020-2024中新的语言特性,表明了它在与时俱进。

我们从整体上看看JavaScript到底实现了哪些东西。

先聊聊ECMAScript,你会看到JavaScript,也会看到ECMAScript,这两者常被混用,实则有差异。

ECMAScript是指ECMAScript-262标准,主要描述一门语言的语法、语句、关键字,它不局限于浏览器,浏览器只是其中一个运行环境,它还能应用在Node.js、嵌入式系统等。

我们常说的ES6,就是ECMAScript-262的第6版,这一版是自ES5发布时隔6年后的一次大更新,很多新特性均来自它,如:类、箭头函数、Promise,从ES6之后,就开始以年为单位进行版本更新,如:ES2017、ES2018等,本书包含了最新的ES2024版内容。

前面说JavaScript的载体是浏览器,那么语言就要具备跟浏览器交互的能力,成为用户与应用交互的桥梁,这个能力由DOM和BOM提供。

DOM:Document Object Model,文档对象模型,它分管文档。什么是文档,你打开的每个网页,都是一个HTML文档,就好比用WPS打开Word文档一样。

应用:获取页面中某个元素,改变其内容,或者绑定事件以响应用户操作等。

BOM:Browser Object Model,浏览器对象模型,用于支持访问浏览器窗口。

应用:弹出新窗口,获取浏览器类型,获取访问URL等。

综上,JavaScript的实现,就是ECMAScript的语言能力,结合DOM的文档处理能力,再加上BOM的窗口交互能力,一切皆有此生。

小结

本系列文章,会把这本经典书籍的精华部分一网打尽,同时分享如何构建编程思维。

人常有一种观念,能力强者都有诀窍,技术高手都靠天赋。其实不然,优秀离不开几个因素:打好基础、反复练习、多做总结。

如果你发现有些东西你不懂而别人懂,多半因为基础没打牢,基本功的反复练习是自我提升性价比最高的方式。

这一次,跟我一起,拿下它!

更多好文第一时间接收,可关注公众号:前端说书匠

❌
❌