Macmini M4 原生部署教程:Miloco + 本地 7B 视觉模型 + 云端语言模型

之前看到miloco一直被8G显存和30系列显卡劝退,也一直担心云端的隐私安全问题,但是现在有了macmini后这些问题就迎刃而解啦: 如题,介绍一下大致流程: 目标: Miloco 后端和 Web 页面运行在本机 https://127.0.0.1:8000 本地视觉模型使用 Xiaomi MiM...
Macmini M4 原生部署教程:Miloco + 本地 7B 视觉模型 + 云端语言模型
Macmini M4 原生部署教程:Miloco + 本地 7B 视觉模型 + 云端语言模型

之前看到miloco一直被8G显存和30系列显卡劝退,也一直担心云端的隐私安全问题,但是现在有了macmini后这些问题就迎刃而解啦:
如题,介绍一下大致流程:
目标:

  • Miloco 后端和 Web 页面运行在本机 https://127.0.0.1:8000
  • 本地视觉模型使用 Xiaomi MiMo-VL-Miloco-7B GGUF,通过 llama-server 提供 OpenAI 兼容接口
  • 规划/对话语言模型走云端 OpenAI 兼容接口
  • 米家摄像头、本地视觉理解、米家通知、米家设备控制可联动

以丐版为例(主要我的就是丐版 :melting_face:
建议配置:

  • macOS,Apple Silicon
  • Python 3.12
  • Homebrew
  • 16 GB 以上可用磁盘空间
  • 和米家摄像头处于同一个局域网

1. 安装基础依赖

brew install python@3.12 git git-lfs expat llama.cpp jq sqlite

如果没有安装 Homebrew,先安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

确认版本:

python3 --version
llama-server --version

2. 获取 Miloco 源码

cd ~/Documents
git clone https://github.com/XiaoMi/xiaomi-miloco.git
cd xiaomi-miloco

进入项目目录:

cd ~/Documents/xiaomi-miloco

3. 创建 Python 虚拟环境并安装后端

python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip setuptools wheel
pip install -e miot_kit
pip install -e miloco_server

macOS 上如果遇到 expat 动态库加载问题,启动后端时需要设置:

export DYLD_LIBRARY_PATH="/opt/homebrew/opt/expat/lib:${DYLD_LIBRARY_PATH:-}"

4. 下载本地 7B 视觉模型

安装 Hugging Face CLI:

source .venv/bin/activate
pip install -U huggingface_hub

下载 Xiaomi MiMo-VL-Miloco-7B GGUF:

huggingface-cli download xiaomi-open-source/Xiaomi-MiMo-VL-Miloco-7B-GGUF \
  MiMo-VL-Miloco-7B_Q4_0.gguf \
  mmproj-MiMo-VL-Miloco-7B_BF16.gguf

5. 创建启动脚本

项目根目录创建后端启动脚本 start-miloco.sh

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
export DYLD_LIBRARY_PATH="/opt/homebrew/opt/expat/lib:${DYLD_LIBRARY_PATH:-}"
export MILOCO_SERVER_STORAGE_DIR="${MILOCO_SERVER_STORAGE_DIR:-$PWD/.temp}"
exec .venv/bin/python scripts/start_server.py

创建视觉模型启动脚本 start-miloco-vision.sh

#!/usr/bin/env bash
set -euo pipefail

MODEL_FILE="${MILOCO_VISION_MODEL_FILE:-MiMo-VL-Miloco-7B_Q4_0.gguf}"
MMPROJ_FILE="${MILOCO_VISION_MMPROJ_FILE:-mmproj-MiMo-VL-Miloco-7B_BF16.gguf}"
HF_CACHE_ROOT="${HF_HOME:-$HOME/.cache/huggingface}/hub/models--xiaomi-open-source--Xiaomi-MiMo-VL-Miloco-7B-GGUF/snapshots"

if [[ -n "${MILOCO_VISION_MODEL_DIR:-}" ]]; then
  MODEL_DIR="$MILOCO_VISION_MODEL_DIR"
else
  MODEL_PATH="$(find "$HF_CACHE_ROOT" -maxdepth 2 -name "$MODEL_FILE" -print -quit 2>/dev/null || true)"
  if [[ -z "$MODEL_PATH" ]]; then
    echo "Cannot find $MODEL_FILE under $HF_CACHE_ROOT"
    echo "Set MILOCO_VISION_MODEL_DIR to the directory containing the GGUF files."
    exit 1
  fi
  MODEL_DIR="$(dirname "$MODEL_PATH")"
fi

if [[ ! -f "$MODEL_DIR/$MODEL_FILE" || ! -f "$MODEL_DIR/$MMPROJ_FILE" ]]; then
  echo "Missing model files in $MODEL_DIR"
  echo "Expected: $MODEL_FILE and $MMPROJ_FILE"
  exit 1
fi

exec llama-server \
  -m "${MODEL_DIR}/${MODEL_FILE}" \
  --mmproj "${MODEL_DIR}/${MMPROJ_FILE}" \
  --host 127.0.0.1 \
  --port 8081 \
  -c 8192 \
  -ngl 99 \
  -np 1 \
  --alias miloco-7b \
  --no-ui \
  --media-path /private/tmp \
  --cache-ram 0 \
  --reasoning off \
  --reasoning-budget 0 \
  --reasoning-format none

赋予执行权限:

chmod +x start-miloco.sh start-miloco-vision.sh

关键参数说明:

  • -c 8192:上下文长度。低于这个值容易出现 exceeds the available context size
  • --alias miloco-7b:Miloco 里配置的模型名。
  • --reasoning off:减少模型输出 <think> 的概率。
  • -ngl 99:尽量使用 Apple GPU / Metal 加速。

6. 启动本地视觉模型

新开一个终端:

cd ~/Documents/xiaomi-miloco
./start-miloco-vision.sh

验证模型服务:

curl http://127.0.0.1:8081/v1/models

能看到模型列表即可。

7. 启动 Miloco 后端

再开一个终端:

cd ~/Documents/xiaomi-miloco
./start-miloco.sh

访问:

https://127.0.0.1:8000

浏览器会提示本地 HTTPS 证书不受信任,继续访问即可。

8. 配置模型

进入 Miloco 页面后,先登录并授权米家账号,然后进入模型配置。

视觉理解模型

新增或编辑视觉模型:

用途:随便填
Base URL:http://127.0.0.1:8081/v1
Model:miloco-7b
API Key:可以填任意非空值,例如 local

保存后设为当前视觉模型。

规划/对话语言模型

新增或编辑云端语言模型:

用途:规划/对话
Base URL:你的 OpenAI 兼容接口地址,例如 https://example.com/v1
Model:你的云端模型名
API Key:你的服务商密钥

保存后设为当前规划模型。

如果云端服务返回 Your request was blocked,一般不是本地视觉模型问题,而是云端代理拦截了请求。需要换可用的 OpenAI 兼容服务,或调整代理侧策略。

至此配置完成,愿诸君都能和我一样愉快玩耍 :melting_face:

纯手打,为什么被识别ai啊:melting_face:

9 个帖子 - 4 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文