5分钟Mac本地跑通32B Qwen!免费GPT-4o替代,还能5分钟造个会开浏览器+执行Shell的AI Agent

张开发
2026/4/4 15:17:43 15 分钟阅读
5分钟Mac本地跑通32B Qwen!免费GPT-4o替代,还能5分钟造个会开浏览器+执行Shell的AI Agent
1. 硬件与模型选择配置Apple M2 Pro19 核 GPU、32GB 统一内存。推荐模型mlx-community/Qwen2.5-Coder-32B-Instruct-4bit4bit 量化后只占 18-22GB 内存专为代码和 Agent 优化Tool Calling 能力强MLX 原生支持 Metal 4速度和功耗最优2. 环境搭建5 分钟用pip3即可python3 -m venv ~/mlx-env source ~/mlx-env/bin/activate pip3 install --upgrade pip pip3 install mlx-lm以后每次新开终端先执行source ~/mlx-env/bin/activate进入环境。3. 首次下载模型必看自动触发首次运行任何 mlx_lm 命令时会自动下载模型权重# 推荐用这个命令安全触发下载只下载不聊天 mlx_lm.generate --model mlx-community/Qwen2.5-Coder-32B-Instruct-4bit --prompt hello --max-tokens 10下载大小18.4 GB.safetensors 权重文件下载时间普通家用宽带 3-8 分钟慢速网络或高峰期可能 10-20 分钟存储位置~/.cache/huggingface/hub/models--mlx-community--Qwen2.5-Coder-32B-Instruct-4bit磁盘要求确保至少25GB空闲空间后续运行无需重复下载下次秒开下载完成后模型就永久保存在本地。4. 命令行直接运行模型下载完成后进入环境执行# 交互聊天推荐 mlx_lm.chat --model mlx-community/Qwen2.5-Coder-32B-Instruct-4bit --temp 0.7 --context-length 32768输入问题即可实时对话。退出输入/exit。单次生成用mlx_lm.generate加--prompt。图1Decoder-only Transformer 结构Qwen 正是这种架构每层做 Masked Self-Attention FFN5. LLM 运行机制Transformer 执行器 权重LLM 本质只有两部分架构Transformer 代码mlx-lm 里models/qwen2.py已实现权重320 亿个数字18.4GB 文件训练好的参数mlx-lm 就是执行器加载权重到 GPU按 Transformer 规则一步步计算输出。它不是编译源代码只是把预训练好的权重加载运行。6. KV Cache生成加速的核心生成文字是“每次只出一个词再把新词加回去继续生成”。没有 KV Cache 时每次都要重新算前面所有词的 Key/Value速度极慢。KV Cache 把历史 Key 和 Value 存起来下次只算新词速度提升 3-10 倍。你的 32k 上下文全靠它实现。图2有/无 KV Cache 的对比紫色部分直接从缓存拿省去重复计算7. mlx-lm 内部具体做了什么每次运行mlx-lm 按顺序执行 7 步加载权重到 GPU把提示词转成 token IDPrefill一次性算完整个提示词建好 KV CacheDecode 循环每次只输入上一个词用 KV Cache 计算新词采样下一个词转回文字输出KV Cache 自动追加图3Prefill黄色 Decode红色完整流程TTFT 是首字延迟后续飞快想看真实过程运行下面测试脚本cat test_flow.py EOF from mlx_lm import load, stream_generate model, tokenizer load(mlx-community/Qwen2.5-Coder-32B-Instruct-4bit) prompt tokenizer.apply_chat_template([{role:user,content:写个 Python 函数}], add_generation_promptTrue) for resp in stream_generate(model, tokenizer, prompt, verboseTrue): print(resp.text, end, flushTrue) EOF python test_flow.py8. 实战5 分钟做一个能控制浏览器和 Shell 的 Agent安装浏览器依赖pip3 install playwright playwright install chromium创建 Agent48 行并运行cat ~/mini_openclaw_agent.py EOF from mlx_lm import load, generate import subprocess from playwright.sync_api import sync_playwright import re model, tokenizer load(mlx-community/Qwen2.5-Coder-32B-Instruct-4bit) SYSTEM 你是简易 OpenClaw Agent。需要工具时严格输出 toolshell_exec/toolarg命令/arg 或 toolbrowser_open/toolargURL/arg history [{role: system, content: SYSTEM}] def execute_tool(tool, arg): if tool shell_exec: return subprocess.check_output(arg, shellTrue, textTrue, timeout15).strip() elif tool browser_open: with sync_playwright() as p: page p.chromium.launch().new_page() page.goto(arg) return page.title() while True: user input(\n你: ) if user in [exit, quit]: break history.append({role: user, content: user}) prompt tokenizer.apply_chat_template(history, add_generation_promptTrue) response generate(model, tokenizer, promptprompt, max_tokens512, temp0.7) match re.search(rtool(.*?)/tool\s*arg(.*?)/arg, response, re.DOTALL) if match: tool, arg match.group(1).strip(), match.group(2).strip() print(f\n执行工具 {tool}({arg})) result execute_tool(tool, arg) print(result) history.append({role: tool, content: result}) else: print(response) history.append({role: assistant, content: response}) EOF python ~/mini_openclaw_agent.py输入“打开 https://x.ai 并告诉我标题”或“列出当前目录文件”Agent 就会自动执行。

更多文章