简单易学的分离式部署小米智能家居Miloco方法

一、安装环境

  • Windows用户:安装WSL2以及Docker
  • macOS/Linux用户:安装Docker
    此处不再赘述,网上随便找个教程即可。特别地,对于Windows用户来说,你需要将 WSL2 的网络模式设置为 Mirrored。

二、使用Docker部署Miloco后端

以下均为bash命令。请Windows用户进入WSL2 / Linux、macOS用户进入终端操作:

mkdir miloco cd milico vi docker-compose.yml 

以下是compose的内容(不会使用vi的同学可以傻瓜式操作:先按i,再使用粘贴功能,然后按冒号,输入wq然后回车,记得关闭输入法):

services:backend:container_name: miloco-backend image: ghcr.nju.edu.cn/xiaomi/miloco-backend:latest network_mode: host expose:- ${BACKEND_PORT:-8000}environment:- BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}- BACKEND_PORT=${BACKEND_PORT:-8000}- AI_ENGINE_HOST=${AI_ENGINE_HOST:-0.0.0.0}- AI_ENGINE_PORT=${AI_ENGINE_PORT:-8001}- BACKEND_LOG_LEVEL=${BACKEND_LOG_LEVEL:-info}- TZ=${TZ:-Asia/Shanghai}volumes:- ./data:/app/miloco_server/.temp - ./log/backend:/app/miloco_server/.temp/log restart: unless-stopped healthcheck:disable:true

再写个.env

vi .env 

以下是.env的内容:

TZ=Asia/Shanghai BACKEND_HOST=0.0.0.0 BACKEND_PORT=8000 BACKEND_LOG_LEVER=info AI_ENGINE_HOST=0.0.0.0 AI_ENGINE_PORT=8001 AI_ENGINE_LOG_LEVER=info 

继续执行命令:

mkdir -p data mkdir -p log/backend docker compose up -d 

静待下载镜像以及运行即可。

三、部署视觉大模型

对于小白用户(含非专业的AMD用户),此处建议使用LM StudioOllama来部署GGUF版的VL模型。
如果你有一张高性能NVIDIA显卡(RTX3090、RTX4090、RTX5090等显存>=24G的),想要更加专业稳定的服务,那么建议使用vLLMSGLang进行生产级服务部署。
此处为了照顾Windows及macOS小白用户,以简单易用的LM Studio举例。

下载LM Studio并安装

https://lmstudio.ai/

设置及下载模型

点击界面最右下角的设置图标,

  • App Settings-General-Language-简体中文
  • App Settings-Developer-启用本地 LLM 服务

检查环境安装情况

还是在设置页-Runtime

NVIDIA用户
  • Vulkan llama.cpp
  • CUDA llama.cpp
  • CPU llama.cpp
  • CUDA 12 llama.cpp
  • Harmony
AMD用户
  • Vulkan llama.cpp
  • ROCm llama.cpp
  • CPU llama.cpp
  • Harmony
苹果用户
  • Vulkan llama.cpp
  • Metal llama.cpp
  • MLX llama.cpp
  • CPU llama.cpp
  • Harmony

下载模型

Model Search-搜索框中输入:xiaomi-open-source/Xiaomi-MiMo-VL-Miloco-7B-GGUF
点击右下角Download即可

运行模型并提供API服务

  • 下载完成后点击页面左侧的“开发者”(一个绿色终端图标,位于对话图标下方)
  • 点击页面顶部加载模型
  • 你应该能够看到xiaomi-mimo-vl-miloco-7bREADY状态。
  • 页面顶部有一个Status: Stopped,点击开关,切换到Running
  • 点击Server Settings,打开“在网络中提供服务”。
  • 你将得到一个局域网地址,显示在右侧的Reachable at中,如:http://192.168.50.210:1234。复制它。

四、与Miloco对接

假设你的Docker宿主机IP为192.168.50.123,那么就访问https://192.168.50.123:8000/。首次设置会让你登录账号,登录后有一个callback地址,也填写192.168.50.123:8000

对接VL模型

点击模型管理-云端模型-添加模型:
Base URL输入http://192.168.50.210:1234/v1
API Key随便填
模型ID填xiaomi-mimo-vl-miloco-7b,再点击一下以添加。
完成后在上方“视觉理解大模型”中选择云端:xiaomi-mimo-vl-miloco-7b

对接规划模型

对于许多用户来说,走到这一步的时候,想必你的显存/统一内存已经所剩无几了吧!让我们白嫖一下硅基流动的大模型。

  • 访问https://cloud.siliconflow.cn/,注册并登录。
  • 点击左侧的API密钥,生成一个,复制出来(sk开头的)
  • 还是添加云端模型:
    Base URL输入https://api.siliconflow.cn/v1
    API Key填刚才生成的
    模型ID选Qwen/Qwen3-8B
    完成后在上方“规划大模型”中选择云端:Qwen/Qwen3-8B

回到AI中心,开始你的Miloco之旅吧!

五、一点Tips

  • 对于规划模型,你可以尝试使用更强的大模型,它们调用工具更稳定,比如Kimi K2Minimax M2等。Qwen3-8B的训练时间较早且对齐略有问题,可能不能很好地稳定调用工具。这只是一个便宜的入门之选。
  • 对于VL模型,有条件的同学可以尝试部署全精度版本,使用vLLM提供服务,会获得更棒的体验。
  • 官方文档中推荐的安装方式只是多集成了一个AI Engine,本质上就是对llama.cpp的封装。分离式部署大模型服务更灵活。
  • 吐槽:我曾经想着提个pr来适配更多平台,但发现代码里硬编码了许多CUDA/nvidia相关的东西,蒜鸟蒜鸟。
  • 有疑问可以联系我:[email protected],不保证时效性。

Read more

C++ 异常处理机制:异常捕获、自定义异常与实战应用

C++ 异常处理机制:异常捕获、自定义异常与实战应用

第34篇:C++ 异常处理机制:异常捕获、自定义异常与实战应用 一、学习目标与重点 * 掌握异常处理的核心概念(异常、抛出、捕获、处理)及基本语法 * 理解 try-catch-throw 语句的执行流程,能够正确捕获和处理标准异常 * 学会自定义异常类,满足实际开发中的个性化异常场景需求 * 掌握异常处理的最佳实践,规避常见错误(内存泄漏、异常安全问题) * 理解异常规格说明(C++11前)与 noexcept 关键字的使用场景 * 结合实战案例,提升代码的健壮性和容错能力 💡 核心重点:try-catch 捕获规则、自定义异常的继承设计、异常安全保障、实战场景中的异常处理策略 二、异常处理概述 2.1 什么是异常处理 异常处理是C++中处理程序运行时错误的机制,核心是“将错误检测与错误处理分离”——在程序出错的地方(如除以零、内存分配失败)“抛出”

By Ne0inhk
【C++修炼之路】类与对象实战:实现一个日期类

【C++修炼之路】类与对象实战:实现一个日期类

🏝️专栏: 【C++修炼之路】 🌅主页: f狐o狸x “于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡”  目录 一、日期类的核心功能  二、日期类的定义 三、实现日期类比较大小 四、日期类加减 五、输入输出日期 六、附带功能         经过前面两篇文章的学习,相信聪明的你应该已经初步了解类与对象了,现在我们将一起实现一个日期类,进一步加深我面对类的理解。         在软件开发中,日期和时间的处理无处不在,从日程管理到金融计算,从数据分析到天气预报,日期类的设计都是开发者必须面对的挑战。在本文中,我们将从零开始,一步步实现一个功能完备的日期类。无论你是C++新手,还是想巩固面向对象编程基础,这个项目都会让你收获满满。 一、日期类的核心功能         想象一下:如果你要实现你手机里的日历这个app,它应该有些什么功能呢?         我认为主要功能如下:  日期合法性校验 日期加减(支持天数、月数、年数) 日期差计算

By Ne0inhk
【C++】IO库 && IO流

【C++】IO库 && IO流

📝前言: 这篇文章我们来讲讲IO库 && IO流: 🎬个人简介:努力学习ing 📋个人专栏:C++学习笔记 🎀ZEEKLOG主页 愚润求学 🌄其他专栏:C语言入门基础,python入门基础,python刷题专栏,Linux 文章目录 * 一,IO库 * 二,IO流 * 1. 什么是IO流 * 2. IO流的状态 * 3. IO流的缓冲区 * 4. 标准IO流 * 5. 文件IO流 * 示例1 * 示例2 * 6. string IO流 * 示例1 * 2. 示例2 一,IO库 C语言是面向过程的语言,而C++是面向对象。在C++中,我们的IO也是面向对象的,这个对象也叫做流。对于要输出的目标文件的不同,

By Ne0inhk
【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

请君浏览 * 前言 * 1. C++的发展历史 * 2. 列表初始化:统一对象初始化的优雅方案 * 2.1 从 C++98 到 C++11 的突破 * 2.2 std::initializer_list:容器初始化的 “神器” * 3. 右值引用和移动语义:彻底解决拷贝性能痛点 * 3.1 左值 vs 右值 * 3.2 左值引用 vs 右值引用 * 3.3右值引用的使用场景 * 3.3.1参数匹配 * 3.3.2 类型分类 * 3.3.3 移动构造和移动赋值

By Ne0inhk