本地部署DeepSeek-R1保姆级教程
近期,我国一款开源模型 DeepSeek-R1以低成本和高性能震撼了全球科技界。该模型的开源性使开发者能够在本地环境中部署和运行,提供了更高的灵活性和控制力。如果你也想在本地部署 DeepSeek-R1,可以参考以下完整的教程,涵盖Mac 版本的安装、优化以及 API 调用。
1. 引言
1.1 什么是 DeepSeek-R1?
DeepSeek-R1 是由中国初创公司 DeepSeek 开发的开源人工智能模型,专注于增强推理能力。 其独特之处在于主要通过强化学习进行训练,无需大量的监督微调数据。 在数学、代码生成和自然语言推理等任务中,DeepSeek-R1 展现了卓越的性能。
与其他同类模型相比,DeepSeek-R1 具有以下优势:
-
高效的训练方法:采用纯强化学习策略,显著提升了模型的推理能力。
-
开源与可定制性:遵循 MIT 许可证开源,允许用户自由使用、修改和商用,并支持通过蒸馏技术训练其他模型,提供了高度的灵活性。
-
中文能力:与其他模型相比,DeepSeek-R1 在中文处理能力方面表现出色,尤其在古文和历史研究领域,其处理和推理能力尤为突出。 在中文任务的基准测试(如 C-Eval)中,DeepSeek-R1 的表现也显著优于其他开源模型。
1.2 为什么选择 Ollama 进行本地部署?
-
一键安装,无需复杂环境配置(相比 transformers + llama.cpp)。
-
高效量化,支持 FP16、GGUF 格式,减少显存占用。
1.3 适用人群
-
需要本地运行大模型的开发者。
-
AI 研究人员或爱好者,想要低成本测试 LLM。
-
需要离线 AI 处理任务的用户。
2. 环境要求
2.1 硬件要求
根据运行模型的参数量大小,对于硬件配置有不同的要求,请根据个人主机配置选取对应的模型。以下表格指的是推荐配置,实际的运行稳定性会根据主机后台运行的其他进程和资源占用情况波动;比如博主使用11C36GB的Mac部署了32B参数的DeepSeek仍然能够正常使用。
注:Apple Silicon芯片因GPU与CPU共享内存,因此不需要额外的显存
| 模型版本 | 参数量 | CPU | 内存 |
|---|---|---|---|
| DeepSeek-R1-1.5B | 15亿 | 2C | 8GB |
| DeepSeek-R1-7B | 70亿 | 4C | 16GB |
| DeepSeek-R1-8B | 80亿 | 4C | 16GB |
| DeepSeek-R1-14B | 140亿 | 4C | 32GB |
| DeepSeek-R1-32B | 320亿 | 6C | 64GB |
| DeepSeek-R1-70B | 700亿 | 8C | 128GB |
2.2 软件要求
-
macOS 13+(Apple Silicon 原生支持)
3. 安装并启动 Ollama
3.1 安装
-
打开终端工具,使用 Homebrew 安装,输入命令如下:
brew install ollama
3.3 启动Ollama
-
点击应用图标启动,启动完成后可以在主机菜单栏中看到一只羊驼的logo:

-
使用命令启动,命令如下:
ollama serve
启动后能够看到ollama的启动日志:

注:上述两种启动方式建议只使用一种,因为ollama进程会占用主机的11434端口,如果通过点击应用图标启动后再使用命令启动的话,命令启动的进程就会因为端口号已经被占用而导致启动失败,报错信息如下图所示:

4. 运行 DeepSeek-R1
4.1 运行 DeepSeek-R1
DeepSeek-R1的模型在ollama中的名称就是deepseek-r1,可以使用deepseek-r1:{参数量}的格式选取指定参数量的模型,比如博主运行的是32B参数量的模型,命令就是:
ollama run deepseek-r1:32b
其他参数量的模型运行示例如下:
ollama run deepseek-r1:1.5b
ollama run deepseek-r1:7b
ollama run deepseek-r1:8b
ollama run deepseek-r1:14b
ollama run deepseek-r1:32b
ollama run deepseek-r1:70b
如果是第一次运行该模型,则ollama会先下载所需的文件,下载完成后会自动运行,一切正常的话终端将进入交互模式,启动过程如下图所示:

4.2 本地体验 DeepSeek-R1模型
运行成功后即可体验模型,可以通过终端工具与模型进行对话,运行结果如下图所示:

在模型给出的回答中,<think>和</think>符号中的文本是模型的思考过程,可以让用户看到模型在回答问题时考虑到的各个方面,以便让用户对后面的提问进行查漏补缺。
5. 通过 API 调用
5.1 使用 cURL 调用
curl -X POST http://localhost:11434/api/generate -d '{"model": "deepseek-r1:32b","prompt": "你是谁","stream": false
}'
上述命令中,model参数指的是使用ollama所运行的模型,博主使用的是32b模型,所以参数是deepseek-r1:32b,prompt参数的值就是你所想问的问题,大家注意根据自己的需要进行提问,调用返回的结果中会有一些其他参数,如时间、上下文、token信息等,在使用ollama客户端体验模型时,ollama客户端自动处理了这些参数,在使用curl调用的时候这些参数就会都展示出来,调用结果如下图所示:

5.2 使用 Python 调用 DeepSeek-R1
import requests
import jsonOLLAMA_API_URL = "http://localhost:11434/api/generate"payload = {"model": "deepseek-r1:32b","prompt": "你是谁","stream": False
}response = requests.post(OLLAMA_API_URL, data=json.dumps(payload))if response.status_code == 200:result = response.json()print("模型输出:", result.get("response", "未获取到结果"))
else:print("请求失败,状态码:", response.status_code, "错误信息:", response.text)
运行结果如下图所示:

5.3 Web交互
如果你想用更友好的界面,可以安装 text-generation-webui,具体命令如下:
git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
pip install -r requirements.txt
python server.py --model deepseek-r1:32b
然后打开浏览器访问 http://localhost:7860 进行交互。
6. 结语
通过 Ollama 部署 DeepSeek-R1,可以快速在本地运行强大的大模型,适用于 AI 研究、代码生成、知识问答等任务。本教程提供的从 安装、运行、优化到 API 调用 的完整流程,希望对你有所帮助!🚀
相关文章:
本地部署DeepSeek-R1保姆级教程
近期,我国一款开源模型 DeepSeek-R1以低成本和高性能震撼了全球科技界。该模型的开源性使开发者能够在本地环境中部署和运行,提供了更高的灵活性和控制力。如果你也想在本地部署 DeepSeek-R1,可以参考以下完整的教程,涵盖Mac 版本…...
blender 相机参数
目录 设置相机参数: 3. 设置相机参数示例 4. 相机透视与正交 5. 额外的高级设置 设置相机参数: 设置渲染器: 外参转换函数 转换测试代码: 获取blender渲染外参: 设置相机参数: 3. 设置相机参数示…...
在GPIO控制器中,配置通用输入,读取IO口电平时,上拉和下拉起到什么作用
上下拉电阻作用 在通用输入的时候,也就是在读某个IO的电平的时候 一定要让IO口先保持一个电平状态,这样才能检测到不同电平状态。 如何保持电平状态? 1. 可以通过芯片内部的上下拉电阻,由于是弱上下拉一般不用 2. 硬件外界一个…...
Maven工程核心概念GAVP详解:从命名规范到项目协作的基石
Maven工程核心概念GAVP详解:从命名规范到项目协作的基石 一、GAVP是什么? 在Maven工程中,GAVP是四个核心属性的缩写:GroupId、ArtifactId、Version、Packaging。这组属性为项目在Maven仓库中提供了唯一标识,类似于“项…...
如何利用DeepSeek打造医疗领域专属AI助手?从微调到部署全流程解析
如何利用DeepSeek开源模型打造医疗领域专属AI助手?从微调到部署全流程解析 医疗人工智能正迎来爆发式增长,但在实际应用中,通用大模型往往存在医学知识不精准、诊断逻辑不严谨等问题。本文将手把手带您实现医疗垂直领域大模型的定制化训练&a…...
Redis|前言
文章目录 什么是 Redis?Redis 主流功能与应用 什么是 Redis? Redis,Remote Dictionary Server(远程字典服务器)。Redis 是完全开源的,使用 ANSIC 语言编写,遵守 BSD 协议,是一个高性…...
眼见着折叠手机面临崩溃,三星计划增强抗摔能力挽救它
据悉折叠手机开创者三星披露了一份专利,通过在折叠手机屏幕上增加一个抗冲击和遮光层的方式来增强折叠手机的抗摔能力,希望通过这种方式进一步增强折叠手机的可靠性和耐用性,来促进折叠手机的发展。 据悉三星和研发可折叠玻璃的企业的做法是在…...
Leetcode面试高频题分类刷题总结
https://zhuanlan.zhihu.com/p/349940945 以下8个门类是面试中最常考的算法与数据结构知识点。 排序类(Sort): 基础知识:快速排序(Quick Sort), 归并排序(Merge Sort)的…...
Vue.js `v-memo` 性能优化技巧
Vue.js v-memo 性能优化技巧 今天我们来聊聊 Vue 3.2 引入的一个性能优化指令:v-memo。如果你在处理大型列表或复杂组件时,遇到性能瓶颈,那么 v-memo 可能会成为你的得力助手。 什么是 v-memo? v-memo 是 Vue 3.2 新增的内置指…...
Altium Designer绘制原理图时画斜线的方法
第一步:检查设置是否正确 打开preferences->PCB Editor ->Interactive Routing->Interactive Routing Options->Restrict TO 90/45去掉勾选项,点击OK即可。如下图所示: 然后在划线时,按下shift空格就能够切换划线…...
在K8S中,有哪几种控制器类型?
在Kubernetes中,控制器(Controller)是用来确保实际集群状态与所需状态保持一致的关键组件。它们监控并自动调整系统以达到预期状态,以下是Kubernetes中主要的几种控制器类型: ReplicationController(RC&am…...
什么是Rust?它有什么特点?为什么要学习Rust?
什么是Rust?它有什么特点?为什么要学习Rust? 如果你是一名编程初学者,或者已经有一些编程经验但对Rust感兴趣,那么这篇文章就是为你准备的!我们将用简单易懂的语言,带你了解Rust是什么、它有什…...
Golang 并发机制-3:通道(channels)机制详解
并发编程是一种创建性能优化且响应迅速的软件的强大方法。Golang(也称为 Go)通过通道(channels)这一特性,能够可靠且优雅地实现并发通信。本文将揭示通道的概念,解释其在并发编程中的作用,并提供…...
kamailio的kamctl的使用
kamctl 是 Kamailio SIP 服务器的管理工具,用于执行各种管理任务,如启动、停止、重启 Kamailio 进程,管理用户、ACL、路由、信任的 IP 地址等。以下是对 kamctl 命令的解释及举例说明: 1. 启动、停止、重启 Kamailio start: 启动…...
HarmonyOS:ArkWeb进程
ArkWeb是多进程模型,分为应用进程、Web渲染进程、Web GPU进程、Web孵化进程和Foundation进程。 说明 Web内核没有明确的内存大小申请约束,理论上可以无限大,直到被资源管理释放。 ArkWeb进程模型图 应用进程中Web相关线程(应用唯一) 应用进程为主进程。包含网络线程、Vi…...
UI线程用到COM只能选单线程模型
无论用不用UI库,哪怕是用Win32 API手搓UI,UI线程要用COM的话,必须初始化为单线程单元(STA),即CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);,不能用MULTITHREADTHREADED。 实际上,很多(WPF等)UI库若…...
LLMs之DeepSeek:Math-To-Manim的简介(包括DeepSeek R1-Zero的详解)、安装和使用方法、案例应用之详细攻略
LLMs之DeepSeek:Math-To-Manim的简介(包括DeepSeek R1-Zero的详解)、安装和使用方法、案例应用之详细攻略 目录 Math-To-Manim的简介 1、特点 2、一个空间推理测试—考察不同大型语言模型如何解释和可视化空间关系 3、DeepSeek R1-Zero的简介:处理更…...
在C语言中使用条件变量实现线程同步
互斥量、原子操作都是实现线程同步的方法,今日介绍使用条件变量来实现线程同步。在多线程应用中,当某个线程的执行依赖于另一个线程对数据的处理时,这个线程可能没有被阻塞,只是不断地检查某个条件是否成立了(这个条件…...
图书管理系统 Axios 源码__新增图书
目录 功能介绍 核心代码解析 源码:新增图书功能 总结 本项目基于 HTML、Bootstrap、JavaScript 和 Axios 开发,实现了图书的增删改查功能。以下是新增图书的功能实现,适合前端开发学习和项目实践。 功能介绍 用户可以通过 模态框…...
Maven全解析:从基础到精通的实战指南
概念: Maven 是跨平台的项目管理工具。主要服务基于 Java 平台的构建,依赖管理和项目信息管理项目构建:高度自动化,跨平台,可重用的组件,标准化的流程 依赖管理: 对第三方依赖包的管理…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
