让开发、构建与推理留在同一台云端 Mac
VMKeep 提供持续运行的 Apple Silicon 独享物理机,非虚拟机。团队可以固定芯片、内存与工具链,把 MLX 推理、移动端构建和远程协作从临时环境变成可复用的执行路径。
- 3 条
- 开发、构建、推理路径
- 3 档
- 固定 Apple Silicon 配置
- 5 个
- 可订购节点或机房
先判断任务需要什么,再决定是否长期占用节点
适合迁入云端 Mac 的任务通常具备三个特征:依赖 macOS 或 Apple Silicon、运行时间跨越本地工作时段、需要固定环境复现结果。若任务只需短时本地验证,现有设备可能已经足够。
把工作区留在远端
通过 SSH 进行命令行开发和自动化,通过 VNC 使用 macOS 图形界面。代码、依赖和本地服务持续保留,不必每天重新搭建环境。
- 输入
- 仓库、依赖锁文件、开发工具
- 运行
- 交互式开发、调试、短期协作
- 产出
- 提交记录、测试结果、可复用工作区
把流水线交给固定机器
将 runner、Xcode、CocoaPods、Node.js 与依赖缓存放在同一台物理节点上,让每次构建沿相同目录、版本和权限边界执行。
- 输入
- 源码、构建参数、已授权签名材料
- 运行
- 测试、打包、归档、失败重试
- 产出
- 日志、测试报告、可追溯构建产物
固定模型评测的硬件基线
在明确的芯片和内存配置上运行 MLX,记录模型量化版本、峰值内存、首字延迟与持续吞吐,避免不同成员设备造成结果漂移。
- 输入
- 模型权重、量化参数、评测集
- 运行
- 推理服务、批量评测、日志采集
- 产出
- API、基准数据、配置选择依据
从模型文件到可调用接口,先走通最短验证链路
第一次部署不必先搭复杂编排。先在节点本机确认模型能加载、请求能返回、内存没有持续攀升,再开放给受控调用方。这样可以把模型兼容问题和网络问题分开定位。
-
01
准备模型与校验信息
记录模型来源、版本、量化方式、上下文长度和文件校验值。模型目录与服务代码分开,便于替换量化版本而不改启动逻辑。
-
02
建立独立运行环境
固定 Python 与 MLX 相关依赖版本,将安装清单写入仓库。先执行单次命令行推理,确认分词器、权重格式和内存需求。
-
03
启动本机监听服务
服务先监听本机地址,加入健康检查、请求超时和结构化日志。使用固定提示词验证返回结构,再观察首字延迟和峰值内存。
-
04
接入应用调用
确认本机请求稳定后,再按团队网络策略开放访问范围。调用方保留超时、重试和请求标识,服务端记录模型版本与推理参数。
curl -X POST http://127.0.0.1:8080/infer \
-H "Content-Type: application/json" \
-d '{
"prompt": "Summarize build log",
"max_tokens": 128
}'
- 先观察
- 模型加载是否完成、进程内存是否稳定
- 再记录
- 首字延迟、总耗时、输出 token 数
- 最后开放
- 监听范围、访问控制、调用方超时
固定硬件与输入条件,评测数据才可以横向比较
不要只记录一个吞吐数字。模型版本、量化方式、上下文长度、并发数和预热轮次都会改变结果。团队应先冻结测试条件,再决定更换模型或升级配置。
一轮可复查的评测应保留什么
- 硬件基线:芯片、内存、系统版本与可用磁盘。
- 模型基线:模型版本、量化格式、上下文长度与批次大小。
- 运行基线:预热次数、并发数、提示词集合与停止条件。
- 结果基线:峰值内存、首字延迟、持续吞吐、错误与退出原因。
| 记录项 | 固定条件 | 用途 |
|---|---|---|
| 量化版本 | 同一模型与上下文长度 | 比较精度、内存和速度之间的取舍 |
| 峰值内存 | 相同输入与并发数 | 判断配置是否留有稳定运行余量 |
| 首字延迟 | 相同预热状态 | 评估交互式请求的等待时间 |
| 持续吞吐 | 相同输出长度 | 评估长输出和批处理任务表现 |
| 失败记录 | 保留请求标识与日志 | 区分模型、内存、服务和调用问题 |
把持续构建拆成六个可检查的交付点
固定物理节点的价值不只是“能运行 Xcode”,而是让源码、依赖、测试、签名操作和归档位置具有明确边界。失败时可以沿执行顺序定位,而不是重新猜测环境差异。
-
01
拉取代码
使用受限凭据读取指定仓库,锁定分支、提交和子模块状态。
-
02
恢复依赖
按锁文件安装依赖,缓存目录按项目和版本隔离,避免旧缓存污染。
-
03
执行构建
明确 workspace、scheme、configuration 与 destination,保存完整命令。
-
04
运行测试
分开记录单元测试、界面测试和失败用例,保留机器可读报告。
-
05
处理签名
限制签名材料读取范围,不把证书原文和敏感凭据写入构建日志。
-
06
归档产物
按提交与任务编号保存归档、日志和测试报告,并设置清理策略。
先确认失败阶段,再决定重跑测试、重建依赖或重新归档。对缓存失效、网络失败和代码失败采用不同重试策略。
JavaScript 依赖与原生工程需要同一份版本记录
React Native 构建横跨 Node.js、包管理器、CocoaPods 和 Xcode。只锁 JavaScript 包版本不够,Ruby、Pods、Xcode 工程设置和构建命令也应进入可复现清单。
从依赖安装到自动化发布,沿同一工作目录推进
固定运行时与包管理器版本,缓存按锁文件指纹区分。
记录 Pods 状态、scheme、构建配置和目标设备。
将提交编号、构建任务和产物目录建立关联。
缓存边界
JavaScript 包缓存、Pods 缓存和 Xcode 派生数据分别管理。缓存命中可以提速,但不应覆盖版本不一致的问题。
建议记录:锁文件摘要、Pods 状态、Xcode 版本发布边界
自动化脚本只读取执行所需的凭据。日志中隐藏敏感内容,构建结束后按团队策略清理临时文件。
建议保留:提交号、任务号、产物校验值SSH 处理自动化,VNC 处理需要图形界面的操作
两种连接方式可以服务同一台独享物理机,但用途不同。首次连接后应更新密码、配置 SSH 密钥,并限制凭据分发范围。连接信息与实际可用状态以控制台实时返回为准。
适合命令行与自动任务
- 仓库操作、依赖安装与服务启动
- runner 管理、日志查询与进程检查
- 端口转发和受控 API 验证
适合 macOS 图形界面
- Xcode 工程设置和模拟器交互
- 需要窗口操作的调试与检查
- 远程演示和短期团队协作
适合跨地区协作与临时扩容
- 按成员职责分发最小必要权限
- 成员离开项目后及时撤销密钥
- 租期结束前导出数据并清理凭据
多台节点按队列分工,不把所有任务塞进同一台机器
团队可以让不同物理节点承担不同 runner、模型实验或构建队列。每台节点独立记录任务范围、环境版本和产物目录,故障定位与容量规划会比共享一套混合环境更直接。
依赖恢复、测试与归档进入固定构建目录。
隔离 JavaScript、Pods 和 Xcode 派生数据缓存。
固定芯片、内存、模型版本和输入条件。
按内存余量和任务持续时间选择配置
三档均为 Apple Silicon 独享物理机、非虚拟机。轻量验证先控制成本,持续流水线优先考虑缓存与并发,高内存推理则先核对模型加载后的峰值占用。
VMKeep M4 Core
M4 · 16GB · 256GB
适合单项目开发、轻量 iOS 构建、MLX 环境验证和小规模模型兼容测试。存储较紧时应提前规划缓存与产物清理。
VMKeep M4 Plus
M4 · 24GB · 512GB
适合常驻 runner、中型项目依赖缓存、React Native 持续打包,以及需要更多内存余量的 MLX 推理实验。
VMKeep M4 Pro
M4 Pro · 64GB · 2TB
适合高内存 MLX 推理、较大模型量化对比、并行实验和高负载构建队列。应按真实模型与并发参数先完成验证。
三档机型在上述五个节点均列入可订购目录,实际可用状态以控制台实时返回为准。