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模型?欢迎分享你的使用体验!💭

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#常用集合优缺点对比

先上结论&#xff1a; 在C#中&#xff0c;链表、一维数组、字典、List<T>和ArrayList是常见的数据集合类型&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的比较&#xff1a; 1. 一维数组 (T[]) 优点&#xff1a; 性能高&#xff1a;数组在内存中…

额外题目汇总2-链表

链表 1.24. 两两交换链表中的节点 力扣题目链接(opens new window) 给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。 你不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。 思路 使用虚拟头结点会很方便&#xff…

Nginx 中启用 Gzip 压缩以优化网页加载速度

&#x1f3e1;作者主页&#xff1a;点击&#xff01; Nginx-从零开始的服务器之旅专栏&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年2月7日17点14分 目录 1. 配置网页压缩 目的 …

《云夹:高效便捷的书签管理利器》

在信息爆炸的时代&#xff0c;我们每天都会浏览大量的网页&#xff0c;遇到许多有价值的内容。如何高效地管理这些网页书签&#xff0c;以便随时快速访问&#xff0c;成为了一个重要的问题。云夹作为一款出色的书签管理工具&#xff0c;为我们提供了完美的解决方案。 强大的功能…

学习数据结构(6)链表OJ

1.移除链表元素 解法一&#xff1a;&#xff08;我的做法&#xff09;在遍历的同时移除&#xff0c;代码写法比较复杂 解法二&#xff1a;创建新的链表&#xff0c;遍历原链表&#xff0c;将非val的节点尾插到新链表&#xff0c;注意&#xff0c;如果原链表结尾是val节点需要将…

MongoDB开发规范

分级名称定义P0核心系统需7*24不间断运行&#xff0c;一旦发生不可用&#xff0c;会直接影响核心业务的连续性&#xff0c;或影响公司名誉、品牌、集团战略、营销计划等&#xff0c;可能会造成P0-P2级事故发生。P1次核心系统这些系统降级或不可用&#xff0c;会间接影响用户使用…

设计模式.

设计模式 一、介绍二、六大原则1、单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;2、开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;3、里氏替换原则&#xff08;Liskov Substitution Principle, LSP&#xff09;4、接口隔离原则&am…

STM32的HAL库开发-通用定时器输入捕获实验

一、通用定时器输入捕获部分框图介绍 1、捕获/比较通道的输入部分(通道1) 首先设置 TIM_CCMR1的CC1S[1:0]位&#xff0c;设置成01&#xff0c;那么IC1来自于TI1&#xff0c;也就是说连接到TI1FP1上边。设置成10&#xff0c;那个IC1来自于TI2&#xff0c;连接到TI2FP1上。设置成…

JavaScript 复习

文章目录 语法前置语法组成引入位置内部引入外部引入 基础语法输出变量变量声明规则变量赋值变量的作用范围 数据类型强制类型转换强转为 Number强转为 Boolean强转为 String强转为 整数 | 浮点数 运算符流程控制隐式转换函数常用内置对象String 对象Array 数组对象Math 数学对…

【C】链表算法题5 -- 相交链表

leetcode链接https://leetcode.cn/problems/intersection-of-two-linked-lists/description/https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节…

蓝桥杯准备 【入门3】循环结构

素数小算法&#xff08;埃氏筛&&欧拉筛&#xff09; 以下四段代码都是求20以内的所有素数 1.0版求素数 #include<iostream> using namespace std;int main() {int n 20;for(int i2;i<n;i){int j0;for(j2;j<i;j)//遍历i{if(i%j0){break;}}if(ij){cout&l…

寒假2.6--SQL注入之布尔盲注

知识点 原理&#xff1a;通过发送不同的SQL查询来观察应用程序的响应&#xff0c;进而判断查询的真假&#xff0c;并逐步推断出有用的信息 适用情况&#xff1a;一个界面存在注入&#xff0c;但是没有显示位&#xff0c;没有SQL语句执行错误信息&#xff0c;通常用于在无法直接…

Servlet笔记(下)

HttpServletRequest对象相关API 获取请求行信息相关(方式,请求的url,协议及版本) | API | 功能解释 | | ----------------------------- | ------------------------------ | | StringBuffer getRequestURL(); | 获取客户端…

QQ自动发送消息

QQ自动发送消息 python包导入 import time import pandas as pd import pyautogui import pyperclip图像识别函数封装 本程序使用pyautogui模块控制鼠标和键盘来实现QQ自动发送消息&#xff0c;因此必须得到需要点击位置的坐标&#xff08;当然也可以在程序中将位置写死&…

5.1计算机网络基本知识

5.1.1计算机网络概述 目前&#xff0c;三网融合(电信网络、有线电视网络和计算机网络)和宽带化是网络技术的发展的大方向&#xff0c;其应用广泛&#xff0c;遍及智能交通、环境保护、政府工作、公共安全、平安家居等多个领域&#xff0c;其中发展最快的并起到核心作用的则是计…

51单片机之冯·诺依曼结构

一、概述 8051系列单片机将作为控制应用最基本的内容集成在一个硅片上&#xff0c;其内部结构如图4-1所示。作为单一芯片的计算机&#xff0c;它的内部结构与一台计算机的主机非常相似。其中微处理器相当于计算机中的CPU&#xff0c;由运算器和控制器两个部分构成&#xff1b;…

13.PPT:诺贝尔奖【28】

目录 NO1234 NO567 NO8/9/10 NO11/12 NO1234 设计→变体→字体→自定义字体 SmartArt超链接新增加节 NO567 版式删除图片中的白色背景&#xff1a;选中图片→格式→删除背景→拖拉整个图片→保留更改插入→图表→散点图 &#xff1a;图表图例、网格线、坐标轴和图表标题…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)

#作者&#xff1a;闫乾苓 文章目录 RabbitMQ简介RabbitMQ与VMware的关系架构工作流程RabbitMQ 队列工作模式及适用场景简单队列模式&#xff08;Simple Queue&#xff09;工作队列模式&#xff08;Work Queue&#xff09;发布/订阅模式&#xff08;Publish/Subscribe&#xff…

DFX(Design for eXcellence)架构设计全解析:理论、实战、案例与面试指南*

一、什么是 DFX &#xff1f;为什么重要&#xff1f; DFX&#xff08;Design for eXcellence&#xff0c;卓越设计&#xff09;是一种面向产品全生命周期的设计理念&#xff0c;旨在确保产品在设计阶段就具备**良好的制造性&#xff08;DFM&#xff09;、可测试性&#xff08;…

【Elasticsearch】diversified sampler

作用就是聚合前的采样&#xff0c;主要是采样 它就是用来采样的&#xff0c;采完样后在进行聚合操作 random_sampler和diversified_sampler是 Elasticsearch 中用于聚合查询的两种采样方法&#xff0c;它们的主要区别如下&#xff1a; 采样方式 • random_sampler&#xff1a…