收起左侧

实现你家里的贾维斯Llama.cpp➕Miloco➕HA,低配N卡和CPU推理部署经验分享

2
回复
726
查看
[ 复制链接 ]

2

主题

23

回帖

0

牛值

江湖小虾

前言

小米刚发布不久的小米自研的多模态模型,用于图像的本地推理MiMo-VL-7B-GGUF。并开源了一个能与大模型对话并能识别小米摄像头图像的智能家居项目Xiaomi Miloco。
经过多天来的踩坑,从tesla P4 8G 显卡到3060 12G,在docker运行小米开源miloco_ai_engine各种报错死活都加载不了本地模型。最后发现小米量化模型时是用llama.cpp,所以就有了本次教程。

llama.cpp

llama.cpp是以一个开源项目(GitHub主页:llamma.cpp),也是本地化部署[LLM]模型的方式之一,除了自身能够作为工具直接运行模型文件,也能够被其他软件或框架进行调用进行集成。

其自身支持C++编译,也兼容其他语言,如python(llama-cpp-python)。默认编译流程设计更多针对 Linux/macOS,所以在 Windows 上需要额外设置和工具支持。

Xiaomi Miloco:

由小米推出的智能家居未来探索解决方案,以米家摄像机为视觉信息来源,以自研大模型为核心,打通全屋 IoT 设备。基于大模型的开发范式,让用户能够以自然语言定义家庭的各种需求和规则,实现更广泛、更具创意的智能联动。

需要原版AI引擎部署的请转到此贴:未来已来?本地部署小米开源 Miloco,用 AI 控制全屋设备 ,这位大神的教程已经很详细了。

Home Assistant:

Home Assistant 是一个开源家庭自动化平台,以本地控制和隐私保护为核心,支持2000+智能设备集成,涵盖Zigbee、Z-Wave、MQTT等开放标准。它由全球社区驱动,适合DIY爱好者和技术用户构建高度定制化的智能家居系统。

这个我相信大家都认识它了,论坛也有很多教程我就不再引用了。

llama.cpp server 部署

一、 请确认安装好NVdia 驱动

二、 安装CUDA Toolkit

wget https://developer.download.nvidia.com/com**/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-0

三、创建llama.cpp项目文件夹

创建你的llama.cpp项目文件夹,里面再创建一个 models 文件夹用于大模型存放
如图

image.png

下载量化后的模型到 models

MiMo-VL-Miloco-7B/MiMo-VL-Miloco-7B_Q4_0.gguf
MiMo-VL-Miloco-7B/mmproj-MiMo-VL-Miloco-7B_BF16.gguf

下载地址:https://github.com/XiaoMi/xiaomi-miloco/blob/main/docs/environment-setup_zh-Hans.md

四、创建docker compose

以我的P4显卡为例

services:
  mimovl-server:
    # 使用支持CUDA的llama.cpp镜像
    image: ghcr.io/ggml-org/llama.cpp:server-cuda
    container_name: llama-cpp-server
    restart: unless-stopped  # 容器异常退出时自动重启
    ports:
      - "8033:8033"  # 端口映射:宿主机8033 -> 容器8033
    volumes:
      # 挂载本地模型目录到容器内/models
      - ./models:/models
    runtime: nvidia
    command: [
      "--host", "0.0.0.0",
      "--port", "8033",
      "-m", "/models/MiMo-VL-Miloco-7B/MiMo-VL-Miloco-7B_Q4_0.gguf",
      "--mmproj", "/models/MiMo-VL-Miloco-7B/mmproj-MiMo-VL-Miloco-7B_BF16.gguf",
      "--jinja",          # 启用jinja模板
      "-c", "0",          # 上下文长度(0=使用模型默认128000)
      "-ngl", "12",       # GPU层数(Tesla P4 最优稳定值)
      "--threads", "4",  # CPU线程数(请匹配你的CPU并行序列数,提升处理速度)
      "--cache-type-k", "q8_0",  # KV缓存8位量化(核心显存优化)
      "--cache-type-v", "q8_0",  # KV缓存8位量化
      "--image-max-tokens", "384" , # 限制图像tokens数(降低解码耗时)
    ]
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

构建后查看容器日志

lllamacpp日志.png如果不成功可以修改以上启动参数。建议只修改(更详细优化可以看llama.cpp档,或请教 deepseek和豆包)

"-ngl", "12", # GPU层数(显存小的往小值改)
"--threads", "4", # CPU线程数(建议匹配你的CPU线程数)

加载模型成功后,日志最后会出现以下信息。

main: server is listening on http://0.0.0.0:8033

main: starting the main loop...

srv  update_slots: all slots are idle

此时就可以访问你的 http://你的服务器IP:8033 与大模型对话了

CPU推理1.png

五、docker compose 小米的miloco

同上,创建好你的miloco文件夹

services:
  backend:
    container_name: miloco-backend
    image: ghcr.nju.edu.cn/xiaomi/miloco-backend:latest
    # NOTICE: MUST be host for miot device discovery.
    network_mode: host
    expose:
      - 9000
    environment:
      - BACKEND_HOST=0.0.0.0
      - BACKEND_PORT=9000
      - AI_ENGINE_HOST=0.0.0.0
      - AI_ENGINE_PORT=9001
      - BACKEND_LOG_LEVEL=info
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/app/miloco_server/.temp
      - ./log/backend:/app/miloco_server/.temp/log
    # NOTICE: Mount configuration files, if you want to use your own configuration files, please mount them here.
    #  - ./config/server_config.yaml:/app/config/server_config.yaml
    #  - ./config/prompt_config.yaml:/app/config/prompt_config.yaml
    restart: unless-stopped
    healthcheck:
      disable: true

构建运行后输入 https://你的服务器IP:9000/

第一次登录需要设置一个6位的数字密码,以后每天登陆要用到。

然后到模型管理里添加模型

添加模型.png

添加我们安装好的llama.cpp API http://你的服务器IP:8033

API key 随便填,填完后点进模型过一会就会出现模型列表了。
你也可以用API添加别的云端模型,自测的最好用的是豆包模型做则划,调用工具基本不会出错
免费推荐的到硅基流动 Qwen3-8B 邀请链接:https://cloud.siliconflow.cn/i/L8WgaciU
纯CPU推理docker compose在最后(不推荐)

API.png

配置好模型后,可以无视上面的错误提示。因为我们没用到小米的AI引擎。

image.png

六、使用演示:

这里我是写了两个MCP工具时间和天气给大模型调用。如果有需要的可以再分享

演示2.png

推理速度日志

这个是 3060 12G,P4 8G会慢一点

日志.png

最后

纯CPU运行推理 docker compose 分享,祝大家早日拥有你梦想中的贾维斯!

services:
  llama-server-cpu:
    # 替换为纯CPU版本的llama.cpp镜像(移除cuda后缀)
    image: ghcr.io/ggml-org/llama.cpp:server
    container_name: llama-server-cpu
    restart: unless-stopped
    ports:
      - "8034:8033"
    volumes:
      - /vol1/1000/appdata/llama_cpp/models:/models
      - /vol1/1000/appdata/llama_cpp/images:/images
      - /vol1/1000/appdata/llama_cpp/cache:/cache
    command: [
      "--host", "0.0.0.0",
      "--port", "8033",
      "-m", "/models/MiMo-VL-Miloco-7B_Q4_0.gguf",
      "--mmproj", "/models/mmproj-MiMo-VL-Miloco-7B_BF16.gguf",
      "--jinja",
      "-c", "0",
      "-ngl", "0",
      # 核心修改2:调整CPU线程数(建议设为宿主机CPU核心数的80%-100%,根据你的机器调整)
      "--threads", "12",
      # 可选优化:CPU推理添加内存优化参数
      "--no-mmap",  # 禁用内存映射(部分场景提升CPU推理稳定性)
      "--batch-size", "512",  # CPU批处理大小(根据内存调整)
      "--image-max-tokens", "384",
      # 可选:启用CPU大页内存(需宿主机支持)
      # "--mlock",
    ]
收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

2

回帖

0

牛值

江湖小虾

不调用gpu是什么原因

你是用最后的compose吗?最后的是纯cpu 推理的镜像。  详情 回复
昨天 16:47

2

主题

23

回帖

0

牛值

江湖小虾

昨天 16:47 楼主 显示全部楼层
Aa._m8Gee 发表于 2025-12-16 13:17
不调用gpu是什么原因

你是用最后的compose吗?最后的是纯cpu 推理的镜像。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则