Mac 部署Ollama + OpenWebUI完全指南

文章目录

    • 💻 环境说明
    • 🛠️ Ollama安装配置
      • 1. 安装[Ollama](https://github.com/ollama/ollama)
      • 2. 启动Ollama
      • 3. 模型存储位置
      • 4. 配置 Ollama
    • 🌐 OpenWebUI部署
      • 1. 安装Docker
      • 2. 部署[OpenWebUI](https://www.openwebui.com/)(可视化大模型对话界面)
    • 🔒 离线部署方案
    • ⚡ 性能优化建议
    • ❓ 常见问题
    • 🎉 结语

想拥有一个完全属于自己的AI助手,还不依赖互联网?本教程带你从零开始搭建本地AI环境!(Apple Silicon架构)

💻 环境说明

配置项MacWindows
操作系统macOS SonomaWindows 10/11
CPUM412核或以上
内存16GB32GB或以上
硬盘空间20GB20GB或以上

🛠️ Ollama安装配置

1. 安装Ollama

# 使用Homebrew安装
brew install ollama# 或直接下载安装包
curl https://ollama.ai/download/Ollama-darwin.zip -o Ollama.zip
unzip Ollama.zip# 输入`ollama`或 `ollama -v`验证安装
ollama

在这里插入图片描述

2. 启动Ollama

# 启动Ollama服务
ollama serve

在这里插入图片描述

# 或点击浏览器访问:http://localhost:11434

在这里插入图片描述

显示Ollama is running代表已经运行起来了!

 # 下载Llama3 8B模型
ollama run llama3:8b  # 建议先尝试小模型

在这里插入图片描述
💡 小贴士:你应该至少有 8 GB 的 RAM 来运行 7B 模型,16 GB 的 RAM 来运行 13B 模型,以及 32 GB 的 RAM 来运行 33B 模型。

3. 模型存储位置

Mac下,Ollama的默认存储位置:

  • 模型文件:~/.ollama/models
  • 配置文件:~/Library/Application Support/Ollama

Windows下,Ollama的默认存储位置:

  • 程序目录:C:\Users\<用户名>\AppData\Local\Programs\Ollama
  • 模型目录:C:\Users\<用户名>\.ollamamodels
  • 配置文件:C:\Users\<用户名>\AppData\Local\Ollama

💡 小贴士:建议通过环境变量OLLAMA_MODELS自定义模型存储路径,避免占用系统盘空间。

4. 配置 Ollama

Ollama 提供了多种环境变量以供配置:

  • OLLAMA_DEBUG:是否开启调试模式,默认为 false。
  • OLLAMA_FLASH_ATTENTION:是否闪烁注意力,默认为 true。
  • OLLAMA_HOST:Ollama 服务器的主机地址,默认为空。
  • OLLAMA_KEEP_ALIVE:保持连接的时间,默认为 5m。
  • OLLAMA_LLM_LIBRARY:LLM 库,默认为空。
  • OLLAMA_MAX_LOADED_MODELS:最大加载模型数,默认为 1。
  • OLLAMA_MAX_QUEUE:最大队列数,默认为空。
  • OLLAMA_MAX_VRAM:最大虚拟内存,默认为空。
  • OLLAMA_MODELS:模型目录,默认为空。
  • OLLAMA_NOHISTORY:是否保存历史记录,默认为 false。
  • OLLAMA_NOPRUNE:是否启用剪枝,默认为 false。
  • OLLAMA_NUM_PARALLEL:并行数,默认为 1。
  • OLLAMA_ORIGINS:允许的来源,默认为空。
  • OLLAMA_RUNNERS_DIR:运行器目录,默认为空。
  • OLLAMA_SCHED_SPREAD:调度分布,默认为空。
  • OLLAMA_TMPDIR:临时文件目录,默认为空。
  • OLLAMA_DEBUG:是否开启调试模式,默认为 false。
  • OLLAMA_FLASH_ATTENTION:是否闪烁注意力,默认为 true。
  • OLLAMA_HOST:Ollama 服务器的主机地址,默认为空。
  • OLLAMA_KEEP_ALIVE:保持连接的时间,默认为 5m。
  • OLLAMA_LLM_LIBRARY:LLM 库,默认为空。
  • OLLAMA_MAX_LOADED_MODELS:最大加载模型数,默认为 1。
  • OLLAMA_MAX_QUEUE:最大队列数,默认为空。
  • OLLAMA_MAX_VRAM:最大虚拟内存,默认为空。
  • OLLAMA_MODELS:模型目录,默认为空。
  • OLLAMA_NOHISTORY:是否保存历史记录,默认为 false。
  • OLLAMA_NOPRUNE:是否启用剪枝,默认为 false。
  • OLLAMA_NUM_PARALLEL:并行数,默认为 1。
  • OLLAMA_ORIGINS:允许的来源,默认为空。
  • OLLAMA_RUNNERS_DIR:运行器目录,默认为空。
  • OLLAMA_SCHED_SPREAD:调度分布,默认为空。
  • OLLAMA_TMPDIR:临时文件目录,默认为空。

🌐 OpenWebUI部署

1. 安装Docker

  1. 访问 Docker官网 下载Mac版本(Apple Silicon)
  2. 安装并启动Docker Desktop
  3. 配置国内镜像源加速下载(我这里科学上网不需要)
    在这里插入图片描述

💡 小贴士:Windows 安装 Docker 需要开启 Hyper-V(Windows专业版必需)

2. 部署OpenWebUI(可视化大模型对话界面)

# 拉取镜像 (直接run默认会拉取 latest 标签的镜像)
docker pull ghcr.io/open-webui/open-webui:main#(官方文档)以上是从 GitHub Container Registry (GHCR) 上拉取镜像,而不是从 Docker Hub。
# 也可以docker hub 拉取 open-webui镜像
docker pull dyrnq/open-webui:main

在这里插入图片描述

# 启动容器
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

访问 http://localhost:3000 即可使用Web界面。
在这里插入图片描述创建账号,这个是本地账号,随便添加账号信息即可
在这里插入图片描述
选择ollama中的模型,聊天测试
在这里插入图片描述
也可以在这里直接拉取模型
在这里插入图片描述
与下载的新模型进行对话
在这里插入图片描述
💡 小贴士:

  • 注册时邮箱可以随便填写,设置密码后注意保存!
  • ollama后台一定要运行着模型,如:ollama run phi-4

🔒 离线部署方案

如果需要在无网环境下部署,可以按照以下步骤操作:

  1. 在有网环境下准备资源:

    • 下载Ollama安装包
    • 导出模型文件
    • 导出Docker镜像
  2. 离线环境部署:

    • 安装Ollama
    • 复制模型文件到指定目录
    • 导入Docker镜像
    • 启动OpenWebUI

⚡ 性能优化建议

  1. 内存管理

    • 关闭不必要的后台应用
    • 使用Activity Monitor监控内存使用
  2. 模型选择

    • 建议从小模型开始测试
    • 推荐模型大小顺序:
      • qwen2:0.5b (最轻量)
      • llama2:7b (平衡型)
      • codellama:7b (代码专用)
  3. 温度控制

    • 保持Mac Mini通风良好
    • 可使用监控工具观察CPU温度

❓ 常见问题

  1. Q: M4芯片能跑多大的模型?
    A: 16GB内存的M4可以流畅运行8B参数的模型,更大的模型可能会影响性能。

  2. Q: Llama中文支持不好怎么办?
    A: 可以使用Llama-Chinese等经过中文优化的模型。

  3. Q: OpenWebUI打不开怎么办?
    A: 检查Docker状态:

    docker ps  # 查看容器状态
    docker logs open-webui  # 查看日志
    

🎉 结语

通过本教程的配置,你已经拥有了一个完全本地化的AI助手!有任何问题欢迎在评论区讨论,让我们一起探索AI的无限可能!


如果觉得这篇文章对你有帮助,别忘了点赞转发哦~ 👍

你用Mac Mini跑过哪些AI模型?欢迎分享你的使用体验!💭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一次报警了解:direct path read、enq: KO - fast object checkpoint

背景 今天突然接到订单超时报警&#xff0c;数据库的状态确实惊出一身冷汗&#xff0c;查看系统日志正常&#xff0c;数据库日志正常&#xff0c;load 1-3之间&#xff0c;Session 连接200左右&#xff0c;未发现有负载。于是生成一个ASH报告&#xff0c;感觉比平时要慢很多&am…

Flink2支持提交StreamGraph到Flink集群

最近研究Flink源码的时候&#xff0c;发现Flink已经支持提交StreamGraph到集群了&#xff0c;替换掉了原来的提交JobGraph。 新增ExecutionPlan接口&#xff0c;将JobGraph和StreamGraph作为实现。 Flink集群Dispatcher也进行了修改&#xff0c;从JobGraph改成了接口Executio…

数据结构(1)——算法时间复杂度与空间复杂度

目录 前言 一、算法 1.1算法是什么&#xff1f; 1.2算法的特性 1.有穷性 2.确定性 3.可行性 4.输入 5.输出 二、算法效率 2.1衡量算法效率 1、事后统计方法 2、事前分析估计方法 2.2算法的复杂度 2.3时间复杂度 2.3.1定义 2.3.2大O渐进表示法 2.3.3常见时间复…

spring aop失效场景

aop基于代理&#xff08;jdk动态代理 / cglib代理&#xff09;实现&#xff0c;即new了新的类实例&#xff0c;代理了原来的定义的类实例。 目录 1. final修饰的方法无法被代理2. 静态方法无法被代理3. 内部方法调用&#xff0c;即this.method()无法被代理4. 私有方法不能代理5…

Page Assist - 本地Deepseek模型 Web UI 的安装和使用

Page Assist Page Assist是一个开源的Chrome扩展程序&#xff0c;为本地AI模型提供一个直观的交互界面。通过它可以在任何网页上打开侧边栏或Web UI&#xff0c;与自己的AI模型进行对话&#xff0c;获取智能辅助。这种设计不仅方便了用户随时调用AI的能力&#xff0c;还保护了…

GRN前沿:STGRNS:一种基于transformer的可解释方法,用于从单细胞转录组数据推断基因调控网络

1.论文原名&#xff1a;STGRNS: an interpretable transformer-based method for inferring gene regulatory networks from single-cell transcriptomic data 2.发表日期&#xff1a;2023.4.2 摘要&#xff1a; 动机&#xff1a;单细胞RNA测序&#xff08;scRNA-seq&#xf…

OpenAI 实战进阶教程 - 第四节: 结合 Web 服务:构建 Flask API 网关

目标 学习将 OpenAI 接入 Web 应用&#xff0c;构建交互式 API 网关理解 Flask 框架的基本用法实现 GPT 模型的 API 集成并返回结果 内容与实操 一、环境准备 安装必要依赖&#xff1a; 打开终端或命令行&#xff0c;执行以下命令安装 Flask 和 OpenAI SDK&#xff1a; pip i…

深入浅出:旋转变位编码(RoPE)在现代大语言模型中的应用

在现代大语言模型&#xff08;LLMs&#xff09;中&#xff0c;位置编码是一个至关重要的组件。无论是 Meta 的 LLaMA 还是 Google 的 PaLM&#xff0c;这些模型都依赖于位置编码来捕捉序列中元素的顺序信息。而旋转变位编码&#xff08;RoPE&#xff09; 作为一种创新的位置编码…

DeepSeek 部署过程中的问题

文章目录 DeepSeek 部署过程中的问题一、部署扩展&#xff1a;docker 部署 DS1.1 部署1.2 可视化 二、问题三、GPU 设置3.1 ollama GPU 的支持情况3.2 更新 GPU 驱动3.3 安装 cuda3.4 下载 cuDNN3.5 配置环境变量 四、测试 DeepSeek 部署过程中的问题 Windows 中 利用 ollama 来…

基础算法——二维前缀和

二维前缀和 我们先前已经了解了前缀和思想&#xff0c;二维前缀和感觉上就是一维前缀和的进阶&#xff0c;下面 &#xff0c;我们剖析一下两种前缀和。 一维前缀和 一维前缀和的核心就是这两个公式&#xff0c;二维前缀和也差不多的嘞 下面我们来推理一下二维前缀和 已知&a…

每日Attention学习19——Convolutional Multi-Focal Attention

每日Attention学习19——Convolutional Multi-Focal Attention 模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Convolutional Multi-Focal Atte…

2. K8S集群架构及主机准备

本次集群部署主机分布K8S集群主机配置主机静态IP设置主机名解析ipvs管理工具安装及模块加载主机系统升级主机间免密登录配置主机基础配置完后最好做个快照备份 2台负载均衡器 Haproxy高可用keepalived3台k8s master节点5台工作节点(至少2及以上)本次集群部署主机分布 K8S集群主…

游戏引擎学习第89天

回顾 由于一直没有渲染器&#xff0c;终于决定开始动手做一个渲染器&#xff0c;虽然开始时并不确定该如何进行&#xff0c;但一旦开始做&#xff0c;发现这其实是正确的决定。因此&#xff0c;接下来可能会花一到两周的时间来编写渲染器&#xff0c;甚至可能更长时间&#xf…

链式结构二叉树(递归暴力美学)

文章目录 1. 链式结构二叉树1.1 二叉树创建 2. 前中后序遍历2.1 遍历规则2.2 代码实现图文理解 3. 结点个数以及高度等二叉树结点个数正确做法&#xff1a; 4. 层序遍历5. 判断是否完全二叉树 1. 链式结构二叉树 完成了顺序结构二叉树的代码实现&#xff0c;可以知道其底层结构…

Kubernetes 中 BGP 与二层网络的较量:究竟孰轻孰重?

如果你曾搭建过Kubernetes集群,就会知道网络配置是一个很容易让人深陷其中的领域。在负载均衡器、服务通告和IP管理之间,你要同时应对许多变动的因素。对于许多配置而言,使用二层(L2)网络就完全能满足需求。但边界网关协议(BGP)—— 支撑互联网运行的技术 —— 也逐渐出…

Linux提权--John碰撞密码提权

​John the Ripper​&#xff08;简称 John&#xff09;是一个常用的密码破解工具&#xff0c;可以通过暴力破解、字典攻击、规则攻击等方式&#xff0c;尝试猜解用户密码。密码的弱度是提权攻击中的一个重要因素&#xff0c;如果某个用户的密码非常简单或是默认密码&#xff0…

大数据学习之Spark分布式计算框架RDD、内核进阶

一.RDD 28.RDD_为什么需要RDD 29.RDD_定义 30.RDD_五大特性总述 31.RDD_五大特性1 32.RDD_五大特性2 33.RDD_五大特性3 34.RDD_五大特性4 35.RDD_五大特性5 36.RDD_五大特性总结 37.RDD_创建概述 38.RDD_并行化创建 演示代码&#xff1a; // 获取当前 RDD 的分区数 Since ( …

[创业之路-286]:《产品开发管理-方法.流程.工具 》-1- IPD两个跨职能团队的组织

IPD&#xff08;集成产品开发&#xff09;中的两个重要跨职能组织是IPMT&#xff08;集成产品管理团队&#xff09;和PDT&#xff08;产品开发团队&#xff09;。 在IPD&#xff08;集成产品开发&#xff09;体系中&#xff0c;IRB&#xff08;投资评审委员会&#xff09;、IPM…

DeepSeek 提示词之角色扮演的使用技巧

老六哥的小提示&#xff1a;我们可能不会被AI轻易淘汰&#xff0c;但是会被“会使用AI的人”淘汰。 在DeepSeek的官方提示库中&#xff0c;有“角色扮演&#xff08;自定义人设&#xff09;”的提示词案例。截图如下&#xff1a; 在“角色扮演”的提示词案例中&#xff0c;其实…

第二个Qt开发实例:在Qt中利用GPIO子系统和sysfs伪文件系统实现按钮(Push Button)点击控制GPIO口(效果为LED2灯的灭和亮)

引言 本文承接博文 https://blog.csdn.net/wenhao_ir/article/details/145420998 里的代码&#xff0c;在那里面代码的基础上添加上利用sysfs伪文件系统实现按钮(Push Button)点击控制GPIO口的代码&#xff0c;进而实现LED2灯的灭和亮。 最终的效果是点击下面的LED按钮实现LED…