打工人效率密码:手把手教你DeepSeek R1 本地私有化部署,开启智能助理时代
DeepSeek R1 体验下来,具备非常强大的推理能力,可以基于用户的问题进行问题改写,推理的过程十分接近人类,令人着实吃惊。数理逻辑:尤其是在数学和人文方面,表现十分出色 ,可以看出来分析过程逻辑的连贯性性能表现:之前本地部署过 llama3:7b 的 模型,整体表现非常的吃机器资源,但是 这台笔记本装上 DeepSeek R1 14b ,回答的流程也是非常连贯的。文本输入:DeepSeek
缘何而起:一台闲置的机器引发的故事
笔者家中一直闲置一台 Windows 笔记本,之前抽空改造了下当成了家庭 Nas 在用。但是作为一台还不错的笔记本,如果只是作为存储设备,他的独立显卡一直是闲置状态。
于是突发奇想,首先 DeepSeek R1 的性能远超之前的 llama3,但是却不是非常的吃机器配置,如果将这个独立显卡给到大模型使用,那岂不是强强联合?最终可以演变为可以家庭 Nas 和 多智能助理的一个私有化部署的智能终端!
感兴趣的小伙伴可以接着往下看~ 有帮助的话多多点赞收藏哦 ~
手把手入门:环境要求 & 安装步骤
机器配置参考
先来看下 DeepSeek 的部署机器配置要求
我的笔记本电脑配置
操作系统: WIndows 11
内存: 32G
显卡:
GTX 1060 : 独立显卡,显存 6G
Inter® HD Graphics 530 : 集成显卡,共享 GPU 内存 16G
安装 Ollama
这是一个大模型管理工具,支持大模型快速下载、部署、本地执行,有点儿类似大模型版本的 Docker
下载地址:https://ollama.com/download/windows
下载后直接安装即可,使用命令查看安装是否成功 ollama -v
DeepSeek 模型拉取
官网仓库搜索 https://ollama.com/search
结合我的机器配置,我选了 14b => ollama run deepseek-r1:14b
局域网部署
完成上述步骤,在控制台实际执行时消耗的还是 CPU 资源,要想指定显卡资源,还需进行如下配置
1、下载 NVIDA 最新的显卡驱动程序(大模型执行时依赖 GPU 的 CUDA 运行环境)
2、安装显卡驱动程序
3、配置 Ollama 指定显卡运行
查看显卡序号
控制台输入 nvidia-smi
系统环境变量设置 CUDA_VISIBLE_DEVICES=0
注意:若不设置该参数, 或是使用集成显卡 会导致运行时内存、CPU飙升
4、测试部署的 Ollama API 服务
curl http://localhost:11434/api/generate -d '{ "model": "deepseek-r1:14b", "prompt":"你是谁?" }'
5、如果是像我一样局域网部署,还需要暴露部署大模型的机器的 11434 端口,这个是 Ollama API 服务的 默认端口
系统设置 -> 防火墙设置 -> 新增入站规则 -> TCP 端口 11434 -> 作用域范围选择局域网
6、配置打开 Ollama 的局域网访问
系统环境变量新增OLLAMA_HOST=0.0.0.0
此时除了 127.0.0.1:11434 可以访问服务,使用服务端的机器 ip 也是可以访问的 192.168.x.x:11434
DeepSeek 与主流模型孰优孰劣?
从图中可以看出几乎是全面对齐 OpenAI o1,不少项的表现甚至超过了 o1
可视化交互方案推荐
方式 1 : docker 安装 open-webui
(一键 Docker 部署,支持通过 ollama 下载模型,语音输入) 推荐指数 ☆☆☆
本机部署方式:
# 若部署在客户端,执行: sudo docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main # 若部署在服务端,执行: docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
方式 2:chatbox 安装(客户端支持多平台,网页、ios、mac、windows、安卓、linux,开箱即用)推荐指数 ☆☆☆☆
官网下载
不同端的设置差不多,可以参考这个设置
设置角色 Prompt -> 输入 Ollama API 服务地址 -> 选择模型
Mac 客户端
安卓客户端
令人惊叹的推理能力
求和 1+2+3+…+100 等于多少?
怎么证明勾股定理?
怎么在当下社会寻找人生价值?
先有鸡还是先有蛋?
解释一下 TCP
解释一下 正态分布
笔记增强
下图演示了笔者写这篇文章时,通过笔记的插件和大模型交互的一个示例:
产出结果
`写个Java 读取本地文件的示例 <think> 好吧,我现在需要写一个Java程序来读取本地文件。我对Java还算熟悉,但具体如何操作可能记不太清。让我仔细想想。 首先,我知道要使用File类来处理文件。我应该在代码里创建File对象。然后,可能需要检查文件是否存在,如果不存在的话,可能会抛出IOException,所以我得用try-catch块来捕捉异常。 接下来,我需要读取文件的内容。听说可以用BufferedReader和InputStreamReader来读取文本文件。那我应该怎么做呢?首先,用File对象创建一个FileInputStream,然后再用BufferedReader包装它,接着用readLine()方法读取每一行。 那如何处理错误的情况呢?比如,如果用户没有权限访问某个文件,或者文件不存在,这时候程序会抛出异常。我需要在try块里处理这些情况,可能还要打印出错误信息。 另外,我应该考虑关闭资源,比如输入流和缓冲器,以避免内存泄漏。这意味着我要在finally块中添加关闭代码,使用flush()方法确保数据没有被遗忘。 那程序的结构大致是这样的:读取文件名作为输入,然后创建File对象,检查是否可读。如果不行,打印错误信息。然后用BufferedReader读取内容,并将每一行保存到一个List中或者直接输出。最后关闭资源。 我还需要注意权限问题,确保程序有权限访问该文件。这可能涉及到文件的路径和用户权限的问题,但这部分可能在try-catch里处理即可。 那现在,我应该怎么写代码呢?先导入必要的包,比如java.io.*。然后,在main方法里创建File对象,然后读取内容,最后打印出来。 我是不是需要考虑不同类型的文件,比如图片或二进制文件?不过问题只提到读取文本文件,所以用readLine()应该没问题。如果处理其他类型的文件,可能要用不同的方法,但这里不用考虑了。 那么,我来试着写一个示例代码: 1. 首先获取文件名:String fileName = JOptionPane.showInputDialog("请输入文件路径"); 2. 创建File对象:File file = new File(fileName); 3. 检查是否存在并可读:if (!file.exists() || !file.canRead()) { System.out.println("错误:文件不存在或不可读"); } 4. 使用BufferedReader读取内容:BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream(), "UTF-8")); 5. 读取每一行,并保存到列表中或者直接输出。 6. 最后关闭资源,确保流被关闭。 在代码里,我应该把这些步骤连贯起来,并在try-catch块处理IO异常。这样程序就能正确读取本地文件了。 比如,完整的代码可能像这样: import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; public class ReadFile { public static void main(String[] args) { try { String fileName = JOptionPane.showInputDialog("请输入文件路径"); File file = new File(fileName); if (!file.exists() || !file.canRead()) { System.out.println("错误:无法访问文件:" + fileName); return; } BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream(), "UTF-8")); while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { System.out.println("错误:" + e.getMessage()); } } } 但是,我注意到这里有几个地方可能会出错。比如,如果用户输入一个非法的文件路径,程序会抛出异常。但是,这个情况通常在try-catch中被处理。另外,在Java 7以后,使用try-with-resources会更安全,因为它自动关闭资源。不过,现在假设不使用这种方法,而是手动关闭。 哦,对了,我之前忘记声明line变量。我应该在循环外初始化它: String line = null; 这样就能正确读取每一行了。 另外,我需要导入JOptionPane和其他必要的包,但问题可能只让展示示例,所以我假设已经导入了。 总之,这样的代码应该能够正确读取本地文件并打印其内容。如果有权限的问题,可能会抛出SecurityException,但这个例子中没有处理,所以用户可能需要处理这些情况。 </think> 以下是一个Java程序,该程序演示如何读取本地文件的步骤: ```java import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; public class ReadFile { public static void main(String[] args) { try { String fileName = JOptionPane.showInputDialog("请输入文件路径"); File file = new File(fileName); if (!file.exists() || !file.canRead()) { System.out.println("错误:无法访问文件:" + fileName); return; } BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream(), "UTF-8")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { System.out.println("错误:" + e.getMessage()); } } } ```**步骤解释:** 1. **导入必要的包:** - `java.io.*` 导入了基本的输入/输出类,如File、BufferedReader等。 2. **读取文件路径:** - 使用 `JOptionPane.showInputDialog()` 获取用户输入的文件路径。 3. **创建File对象:** - 使用提供的文件路径创建File对象,用于检查文件是否存在和可读性。 4. **检查文件状态:** - 调用 `file.exists()` 检查文件是否存在。 - 调用 `file.canRead()` 检查用户是否有权限读取该文件。如果任何一个条件不满足,打印错误信息并退出程序。 5. **读取文件内容:** - 使用 `BufferedReader` 和 `InputStreamReader` 读取文件内容。`InputStreamReader` 指定了编码方式(这里使用UTF-8)。 - 调用 `readLine()` 方法逐行读取文件内容,并打印到标准输出。 6. **关闭资源:** - 使用 `reader.close()` 关闭BufferedReader,释放内存。 7. **异常处理:** - 在try-catch块中捕捉IOException,打印错误信息以便用户了解问题原因。 **注意事项:** - 确保程序有权限访问文件所在的目录。如果没有权限,可能会抛出SecurityException。 - 读取大文件时,使用`readLine()`可能会导致内存不足,因为它将整个行读入内存。对于非常大的文件,可以考虑分块读取。 - 使用try-with-resources(Java 7及以上)可以更安全地关闭资源,但在这个例子中,我们手动关闭。 这段代码展示了如何在Java中读取本地文本文件,确保代码结构清晰且易于理解。 `
技术总结
DeepSeek R1 体验下来,具备非常强大的推理能力,可以基于用户的问题进行问题改写,推理的过程十分接近人类,令人着实吃惊。
数理逻辑:尤其是在数学和人文方面,表现十分出色 ,可以看出来分析过程逻辑的连贯性
性能表现:之前本地部署过 llama3:7b 的 模型,整体表现非常的吃机器资源,但是 这台笔记本装上 DeepSeek R1 14b ,回答的流程也是非常连贯的。
文本输入:DeepSeek R1 支持文本输入分析总结
长文本:以上几个问题本身就占用了大量的文本,但是没有出现记忆过载,Tokens 过长的问题
记忆:回答的推理过程中,DeepSeek R1 会结合之前的提问进行逻辑推理
文本绘图:表现也十分不俗,没有出现明显的错误
结合 Ollama 和各类插件可以极大的 提升日常工作、写作的效率,不得不说,跨时代的杰作。
最后推荐几本大模型相关的书,感兴趣的同学可以买回家看一看~
不想买实体书的也可以关注公众号「架构探险之道」回复 资源20250130 领取电子书籍。
最后,借用我小助理说的一句话,希望我的粉丝们也可以健康生活、快乐平安。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!
更多推荐
所有评论(0)