
线上共学 | Mac本地玩转大模型
本文介绍如何在Mac本地部署和使用大模型,包括基础运行、多模态扩展、交互优化、知识增强、定制进化等技术链路,并提供Ollama、Stable Diffusion、LM-Studio等工具的详细操作指南
主题内容简介
🌟【从零构建本地AI工作流:打造属于你的智能助手生态】
本次分享将带你探索本地化AI部署的完整技术链路,构建一个安全可控、功能强大的个人智能助手系统:
1️⃣ 基础筑基:从本地部署开源大模型出发,本地简单运行大模型
2️⃣ 多模态扩展:接入Stable Diffusion等文生图模型,实现文生图功能
3️⃣ 交互优化:基于LM-Studio构建个人知识助手,实现智能对话与记忆存储
4️⃣ 知识增强:通过LangFlow搭建RAG应用,连接本地知识库与网络资源,打造定制化AI助手
5️⃣ 定制进化:运用MLX框架进行领域适配微调,让通用模型拥有专属风格
6️⃣ 系统融合:借力Open Interpreter打通操作系统API,实现文件管理、数据分析等自动化办公场景
💡本地部署优势:
-
全链路隐私保护:数据不出本地
-
低成本定制方案:mac M系列芯片即可运行
-
可扩展架构:模块化设计自由组合
适合追求数据安全、需要定制化AI能力的技术探索者,开启属于你的智能生产力革命!🚀
环境搭建
虚拟环境准备
-
使用Python 3内置的模块venv来创建一个虚拟环境(也可以使用conda),使用source命令激活虚拟环境。
python3 -m venv testsource test/bin/activate
虚拟环境可以为不同的项目维护独立的依赖关系和版本,避免库之间的冲突
下载依赖库文件
-
下载Langflow、MLX等相关库
pip install langflow
pip install mlx-lmpip install transformers
pip install torchpip install numpy
pip install modelscope
🖥️首先,我们可以使用Ollama、stable-diffusion-webui等工具直接运行大模型,进行简单对话或图片生成
ollama 本地部署运行大模型
下载ollama工具
-
点击ollama官网一键下载 本地镜像包(https://modelscope.oss-cn-beijing.aliyuncs.com/releases/Ollama-darwin.zip)。下载后自动启用,或输入以下命令:
ollama serve
如果运行ollama serve后出现类似下面的提示,说明已经可以正常使用:
Error: listen tcp 127.0.0.1:11434: bind: address already in use
选择模型
-
在魔搭社区的模型库中选择合适的GGUF模型:(网站链接:)
开始运行
-
复制模型路径(如:Qwen/Qwen2.5-0.5B-Instruct-GGUF),替换下面命令中的{model path},然后进行运行:
ollama run modelscope.cn/{model path}
例如:ollama run modelscope.cn/Qwen/Qwen2.5-0.5B-Instruct-GGUF
运行后,就可以直接使用大模型进行对话啦
-
可以通过ollama list命令看到已经有的模型:
ollama list
stable-diffusion-webui框架本地运行文生图模型
环境准备
-
克隆stable-diffusion-webui库
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
运行及配置
-
运行stable-diffusion-webui
cd stable-diffusion-webui
./webui.sh
可能的报错:
OSError: Can't load tokenizer for 'openai/clip-vit-large-patch14'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'openai/clip-vit-large-patch14' is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer.
如果出现以上报错信息,说明当前网络无法从huggingface上下载文件,可以从魔搭上下载所需的模型,命令:
modelscope download --model AI-ModelScope/clip-vit-large-patch14
打开调用这个模型的代码位置,将路径换成刚才下载的文件路径:
此时运行./webui.sh ,就不会出现报错,自动打开本地网页界面
下载模型并使用
-
打开魔搭社区diffusion模型库:,选择合适的模型,在模型文件中下载模型权重(ckpt或safetensors格式)
-
将下载好的模型保存在:stable-diffusion-webui/models/Stable-diffusion路径下
-
此时在左上角刷新后就会显示可以使用的模型:
-
接下来就可以使用各种功能进行图片生成啦:
ComfyUI使用工作流形式灵活搭建生图功能
下载ComfyUI代码框架并运行
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
python main.py
下载生图模型
使用命令行下载stable-diffusion-v1-5:(将path/to换成你本地的路径)
或者直接在魔搭社区https://www.modelscope.cn/models?name=stable%20diffusion&page=1进行下载
将模型下载到ComfyUI/models/checkpoints目录下
modelscope download --model AI-ModelScope/stable-diffusion-v1-5 v1-5-pruned-emaonly.safetensors --local_dir path/to/ComfyUI/models/checkpoints
同样下载lora模型到ComfyUI/models/loras目录下
具体演示
使用模版工作流,在checkpoint组建中选择下载好的stable-diffusion-v1-5模型,点击执行即可生成图片
在clip文本编辑中可以修改提示词以及反向提示词;在k采样器中可以修改迭代步数等一些参数
https://live.csdn.net/v/468909
添加lora模型后,可以生成更有风格化的图片(可以在模型强度中修改lora模型的风格程度)
https://live.csdn.net/v/468910
🖥️想要更美观的交互界面?试试LM-studio
LM-studio本地大模型个人助手
下载LM-studio及大模型
-
点击LM-studio官网一键下载(本地镜像:https://modelscope.oss-cn-beijing.aliyuncs.com/releases/LM-Studio-0.3.10-6-arm64.dmg)
-
下载后自动启用,并下载模型存入指定目录,下载命令:
modelscope download --model Qwen/Qwen2.5-0.5B-Instruct-GGUF --local_dir /Users/mingjiangao/lmstudio/models/Publisher/Repository/qwen2.5-0.5b
存入的local_dir目录与LM-studio中的模型路径相同即可,注意需要Publisher/Repository/两层目录
开始使用
-
在Chat界面选择下载好的模型
-
开始聊天吧!
如果想要使用工作流的形式搭建功能更强大的大模型应用,可以使用Langflow工具
langflow搭建RAG应用
准备模型
-
使用ollama pull命令下载一个一个文本嵌入模型,用来构建RAG知识库:
ollama pull modelscope.cn/Embedding-GGUF/nomic-embed-text-v1.5-GGUF:latest
本地运行langflow
-
运行langflow:
pip install langflowpython -m langflow run
-
运行成功后,会出现以下的提示及本地网址:
搭建工作流
-
打开给出的本地网址http://127.0.0.1:7861,点击New Flow,创建一个空的工作流:
-
添加最简单的输入输出逻辑,分别添加Chat Input、Chat output以及ollama模型块,在ollama模型块中选择已经上传的qwen模型,将输入输出块与模型块相连,点击右上角的playground即可运行
https://live.csdn.net/v/468911
-
添加提示词,个性化AI服务:添加prompt块,在内容中加入需要的提示词,并添加question接口,将我们的输入添加在提示词后
https://live.csdn.net/v/468912
-
添加本地知识库,获得更加专业的回答:创建一个数据库,将知识库的文件/链接等输入到数据库中,连接准备好的embedding模型和查询输入,将数据库检索的结果转换为text格式。在提示词中添加知识库接口,将检索结果输入到这个接口上。
https://live.csdn.net/v/468913
然后,我们就可以开始进行对话啦,可以看到此时大模型的知识库已经包含我们所上传的内容:
🖥️对已有的模型不满意,想要更个性化专业化的模型?试试MLX框架进行大模型微调吧
MLX框架本地大模型微调
下载模型
-
调用ModelScope平台提供的下载工具的命令,从ModelScope模型库中下载需要的模型(--model参数表示下载的模型名称;--local_dir表示会把模型下载到这个路径的文件夹下)
modelscope download --model 'Qwen/Qwen2.5-0.5B-Instruct' --local_dir 'qwen2.5-0.5B'
微调大模型
-
下载mlx代码库:
git clone https://github.com/ml-explore/mlx-examples.git
-
找到lora/data目录下的train.jsonl文件,修改为我们自己的训练集,以可爱幽默风格为例:
{"prompt": "为什么冬天要穿棉衣?", "completion": "呜呜呜~因为小雪花会偷偷钻进衣服里,穿上厚厚的棉衣就像被温暖的小熊抱抱一样暖和!"}{"prompt": "怎么让猫咪喜欢你?", "completion": "喵喵喵~拿小鱼干当见面礼,然后轻轻摸摸它的头,它就会蹭蹭你啦!"}{"prompt": "怎样才能快速入睡?", "completion": "呼噜噜~想象自己躺在云朵上,数着绵羊跳过月亮,很快就能进入甜甜的梦乡啦!"}{"prompt": "怎么记住朋友的生日?", "completion": "叮咚咚~在手机里设置小闹钟提醒,这样就不会忘记给小伙伴庆祝生日啦!"}{"prompt": "怎样能让头发长得快?", "completion": "唰唰唰~多吃蔬菜水果,多喝水,还可以跟头发说悄悄话,让它快点长高高哦!"}{"prompt": "为什么夏天要吃冰淇淋?", "completion": "丝丝丝~因为冰淇淋能赶走炎热的小恶魔,带来清凉的感觉,超级舒服哒!"}{"prompt": "如何让自己的房间变得整洁?", "completion": "嗖嗖嗖~把所有东西都放进魔法盒子里(收纳箱),房间瞬间就干净整齐啦!"}{"prompt": "怎么让自己更开心?", "completion": "嘻嘻嘻~看一部搞笑的动画片,或者和好朋友一起玩耍,快乐马上来敲门啦!"}{"prompt": "怎样做作业更快?", "completion": "刷刷刷~集中注意力,像小火箭一样冲向题目,做完后别忘了给自己一个小奖励哦!"}{"prompt": "为什么读书很重要?", "completion": "呀呀呀~因为书本是知识的小宝库,每读一本书就像是找到了一颗闪亮的宝石呢!"}{"prompt": "为什么睡觉要盖被子?", "completion": "小兔子要暖和才能蹦蹦跳跳,盖上被子就像爸爸妈妈抱着小兔子一样温暖!"}{"prompt": "怎么让眼睛不累?", "completion": "眨巴眨巴~多看看远处的绿树,给眼睛做个小按摩,它们就会很开心啦!"}{"prompt": "怎样才能交到好朋友?", "completion": "嘻嘻嘻~分享自己的小零食,一起玩耍聊天,很快就能找到志同道合的好朋友啦!"}{"prompt": "为什么要做运动?", "completion": "动一动~蹦蹦跳跳能让身体变得更加强壮,像小超人一样充满活力哦!"}{"prompt": "如何让心情变好?", "completion": "哼哼歌~找小伙伴倾诉一下心事,或者画一幅彩色的心情图,快乐就会回来找你啦!"}{"prompt": "怎么知道天气好不好?", "completion": "瞧一瞧~打开窗户看看太阳公公是不是在微笑,听听风儿姐姐的声音就知道啦!"}{"prompt": "为什么不能挑食?", "completion": "咕噜咕噜~各种食物都有自己的魔法力量,多吃不同的食物才能变得更强壮哦!"}{"prompt": "怎样保护牙齿健康?", "completion": "刷刷刷~每天早晚用小牙刷给牙齿们洗澡,不让蛀虫小坏蛋有机会捣乱!"}{"prompt": "怎么选择喜欢的书?", "completion": "翻一翻~找到让你心跳加速、眼睛放光的故事,那就是你的最爱啦!"}{"prompt": "为什么需要喝水?", "completion": "咕咚咕咚~水是生命的小溪流,喝够水身体里的小细胞们才能欢快地跳舞哦!"}
-
进入lora目录,开始微调,注意--model参数后换成你本地模型文件夹的实际目录,使用默认的训练参数,更多的训练参数可以参考
cd mlx-examples/lora
mlx_lm.lora --model path/to/qwen2.5-0.5B --train --data ./data
-
在训练结束后后,会在lora目录下生成微调后的模型适配器权重文件目录adapters
模型生成并验证
-
通过mlx_lm.fuse命生成新模型,命名为“qwen2.5-0.5B-new”
mlx_lm.fuse --model path/to/qwen2.5-0.5B --adapter-path adapters --save-path qwen2.5-0.5B-new
-
通过简单的问题来验证微调后的模型效果:
命令:
mlx_lm.generate --model path/to/model --prompt "Your promp"
可以看到,微调之后的回答十分可爱幽默:
🖥️不止于对话,想用大模型完成更多任务?
open-interpreter框架本地操作电脑
创建新的虚拟环境
-
新建一个虚拟环境,避免与Langflow库之间产生冲突。
python3 -m venv computer_use
source computer_use/bin/activate
-
下载open-interpreter库
pip install open-interpreter
运行代码完成指令
-
新建Python文件,使用魔搭免费模型推理AP,运行下面的代码(将Your-SDK-Token替换为魔搭SDK令牌):
from interpreter import interpreter
interpreter.llm.api_base = "https://api-inference.modelscope.cn/v1"
interpreter.llm.api_key = "Your-SDK-Token"
interpreter.llm.model = "openai/Qwen/Qwen2.5-Coder-32B-Instruct"
interpreter.chat("Can you help me create a.txt in Desktop")
更多推荐
所有评论(0)