自助指南 · 从连接到运行

找到下一步,
让你的云端 Mac 跑起来。

已拿到节点?先连桌面、改密码,再接入构建或推理任务。还没下单?可以先看操作要求,再决定选哪档。

连接地址与凭据以登录后的实例详情为准。本页不展示可用凭据,也不执行远程操作。

先完成这四件事

从首次登录开始

按下面顺序走。先确认实例和连接信息,再动工具链;不要把连接问题与构建问题混在一起排查。

01

首次登录控制台

用下单时的邮箱进入控制台,按页面提示完成登录或开通账号。进入实例列表后,核对订单对应的机型、节点与计费周期。

支付完成不等于系统已经就绪。先看实例的交付状态;只有实例详情返回连接信息后,再开始连接。找不到订单时,确认当前邮箱与下单邮箱是否一致。

登录查看实例
02

获取 VNC / SSH 凭据

在已就绪实例的详情中查看连接地址、用户名、密码与端口。分别使用页面给出的 VNC 和 SSH 信息,不要默认两种连接一定使用相同端口。

首次 SSH 连接时,核对主机信息后再信任指纹。不要把密码、私钥或带凭据的截图发到公共仓库、聊天群或构建日志。

按平台查看连接步骤
03

检查 Xcode 与命令行工具

先检查当前路径和版本,再决定是否安装。项目需要完整 Xcode 时,只有命令行工具还不够;SDK、模拟器与构建工具版本要和项目要求对应。

xcode-select -p
xcodebuild -version
xcrun --find clang

使用组织批准的安装包安装或切换 Xcode。首次打开后完成组件初始化,再到终端重跑版本检查;切换开发者目录可能需要管理员权限。

检查结果:路径、版本、编译器
04

首登后修改默认密码

在 macOS 用户设置中修改当前用户密码,或在终端运行 passwd 按提示修改。使用独立强密码,不要与代码托管或邮箱共用。

改完后保留当前会话,用第二个连接验证新密码。SSH 改用公钥前,也先验证新会话能登录;没有恢复路径时,不要直接关闭原有认证方式。

先验证新连接,再退出旧会话
把任务交给节点

接入 CI,先跑通一条最小流水线

注册 runner、确认执行用户、验证工具链,这三步先于并发优化。以下操作在你的节点上完成,流水线权限由你的代码托管平台管理。

GitHub Actions:注册 self-hosted runner

在仓库或组织的 Actions 设置中新增自托管 runner,选择 macOS 和 ARM64。下载与注册命令使用该页面当次生成的内容,注册令牌不要写进长期脚本。

  1. 1以构建用户注册

    用实际执行构建的 macOS 用户完成注册。确认它能读取项目目录,并能访问构建所需的钥匙串。

  2. 2加专用标签

    例如给节点设置 osxflow-m4 标签,先将单条测试工作流定向到该标签,避免旧 runner 同时接走任务。

  3. 3验证后再常驻

    先交互启动,确认工作流通过,再按 runner 随附的服务说明设置常驻。重新登录后检查进程和平台侧连接状态。

jobs:
  verify:
    runs-on: [self-hosted, macOS, ARM64, osxflow-m4]
    steps:
      - run: |
          uname -m
          xcodebuild -version
          xcrun --find clang

不要让不受信任的外部提交直接使用持有签名材料的 runner。测试流水线通过后,再迁移发布流程和机密变量。

GitLab Runner:选择 shell executor

使用项目或组设置中创建的 runner 认证信息完成注册,执行器选择 shell。这意味着任务直接在节点用户环境运行,不提供容器级隔离。

先限制并发为 1,避免多个签名任务或缓存写入相互干扰。确认 runner 用户的 PATH、开发者目录和 Ruby 环境,与手动测试时一致。

concurrent = 1

[[runners]]
  executor = "shell"
  shell = "bash"

这只是注册后配置文件的相关字段,不是完整注册配置。保留注册工具生成的地址、认证与其他字段,不要用这段内容覆盖整个文件。

给 runner 配置专用标签,并让测试任务输出 whoami、pwd 和 xcode-select -p。如果终端能构建而 CI 失败,优先比较用户、路径和环境变量,而不是重复安装工具。

Fastlane:把签名材料与代码分开

证书、私钥和描述文件按你的团队授权流程导入。不要把它们放进源代码仓库,也不要在 Fastlane 输出中打印解密口令。

  • 为 CI 使用独立钥匙串,限制文件访问权限;构建用户必须能解锁并读取它。
  • 通过代码托管平台的机密变量传递口令,避免将值直接拼进可回显的命令。
  • 描述文件按当前 Xcode 版本要求放置,用一次最小归档验证团队、证书与配置是否匹配。
  • 导出产物后清理临时签名文件。节点租期结束前,撤销不再使用的 runner 注册和访问令牌。

独享物理机不代替项目权限管理。能够修改发布流水线的人,也可能通过任务读取签名环境,仓库权限要一起审查。

先验证,再加大模型

用 MLX 做一次可重复的推理实验

Flow M4 Pro 的配置是 M4 Pro / 64GB / 2TB。统一内存由系统和任务共同使用,64GB 不等于全部可以交给模型;权重、上下文和运行缓存都要留预算。

隔离 Python 环境

先确认 Python 使用 ARM64 架构,再为每个实验创建虚拟环境。不要把不同模型项目的依赖混装进系统环境。

python3 -c "import platform; print(platform.machine())"
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install mlx-lm
python -m pip freeze > requirements.lock.txt

保存依赖清单、Python 版本与模型版本。复现实验时,先按相同环境安装,再比较输出和资源占用。

目标:独立环境、可复现依赖

从小模型和短上下文起步

选择你有权使用的 MLX 兼容量化模型,先阅读模型说明。记录量化位宽、上下文长度和生成长度,不要只比较模型文件大小。

python -m mlx_lm.generate --help

根据已安装版本的帮助传入模型与提示词。先完成单次推理,再逐步增加上下文;用活动监视器观察内存压力和交换空间,压力持续上升就减小任务。

比较实验时固定提示词、生成长度与并发。不同模型和量化方式的结果不能直接当作节点性能差异。

不预设吞吐,也不承诺模型必定装下

让模型文件与项目分开存

需要更多容量时,可在下单配置中选择 +2TB SSD。先在节点上确认实际挂载路径和可用容量,再将模型权重与下载缓存迁入,不能假设所有节点使用同一个卷名。

迁移前停止正在读取模型的任务,完成复制后核对文件数量与大小,再修改工具的模型路径或缓存配置。先验证一次加载成功,再删除原副本。

扩展存储不等于备份。把模型版本、配置和关键结果另存到你控制的位置,避免仅保留在租用节点上。

查看存储扩展与价格
先对齐说法

八个常见术语,一次说清

下单、连接和工单都沿用这些定义。描述问题时使用同一套词,可以更快区分机器、连接协议和计费设置。

物理节点
承载你这份租用服务的实际 Mac 设备,而不是远程桌面客户端。使用场景:提交工单时带上实例详情里的节点编号,避免只说“那台机器”。
独享
租期内整台设备归你的任务使用,CPU、GPU 与统一内存不与其他租户共享。使用场景:安排构建并发时,仍需管理自己多个任务之间的资源竞争。
非虚拟机
你使用的是物理 Mac 上的原生 macOS 环境,不是共享宿主机里的虚拟化实例。使用场景:核对项目所需的 Apple Silicon 工具链与 macOS 版本。
VNC
传输桌面画面和键鼠输入的一种远程访问协议,适合图形界面操作。使用场景:首次打开 Xcode、修改系统设置或检查活动监视器。
屏幕共享
macOS 提供的远程桌面连接能力,可按实例提供的信息连接节点。使用场景:从本地 Mac 的访达“连接服务器”进入远程图形桌面。
self-hosted runner
由你注册和管理、在自己的节点上执行流水线任务的工作进程。使用场景:让发布流水线通过专用标签选择这台云端 Mac。
计费周期
下单时选择的按天、周、月或季预付单位,与单个构建任务的运行时长不同。使用场景:发版任务结束后仍要关注订单到期时间,数据提前导出。
Thunderbolt 5 并联
按每台计价的多机协作附加项,不会自动把多台设备变成一块统一内存。使用场景:计划多节点任务时,先确认应用是否支持对应的分布式执行方式。
一次只改一个变量

常见故障,按这个顺序排查

先记录原始报错,再动配置。保留一个已连接会话;不要为了测试,直接关闭你唯一可用的访问方式。

VNC 已连接,但只有黑屏

先确认实例详情显示系统已就绪,再核对 VNC 地址和端口。断开后只保留一个客户端重试,并尝试降低分辨率或关闭自适应画质,区分客户端显示问题与节点会话问题。

若 SSH 仍可连接,不要立即重启正在执行任务的节点。记录客户端名称、版本、黑屏出现前的操作,以及 SSH 是否可用;提交工单时附不含凭据的截图。

查看各平台的桌面连接方法
SSH 被拒,先看哪一类错误?

Connection refused 优先检查地址、端口与服务状态;连接超时先检查本地网络、代理和访问限制;Permission denied 则优先检查用户名与认证方式,不要把认证失败当成网络故障。

调试时可使用 ssh -v 查看连接阶段。不要公开完整调试日志;分享前遮去地址、用户名、密钥路径和认证相关内容。使用私钥时,核对文件权限与服务器端公钥是否对应。

如果仍能进入图形桌面,先从系统设置检查远程登录状态。无法判断时,带上错误原文、节点编号和所用端口提交工单,不要连续修改多项认证设置。

Xcode 下载或安装很慢

先区分正在下载、校验还是解压。观察网络流量、CPU 和磁盘活动:网络暂时安静但磁盘仍忙,不一定是下载中断。不要重复启动多个相同安装任务。

确认目标盘同时能容纳安装包、解压内容与项目缓存。需要固定版本时,使用组织批准的安装包并校验完整性;安装后重跑 xcodebuild -version,确认 CI 与图形界面使用的是同一版本。

工单中说明 Xcode 版本、当前阶段、剩余空间和是否通过代理访问,避免只写“很慢”。

磁盘空间不足,先清缓存还是加容量?

先查看卷容量,再定位大目录。下面命令只读取容量,不会删除文件;大型用户目录的统计可能需要一些时间。

df -h
du -sh "$HOME/Library/Developer/Xcode/DerivedData"
du -sh "$HOME/Library/Caches"

暂停构建后再处理可重建缓存。不要整目录删除钥匙串、签名材料、项目源文件或唯一的模型副本。清缓存后首次构建通常需要重新生成内容,把这段时间算进发版安排。

持续增长的模型权重和构建产物更适合独立规划容量。可查看 +1TB SSD 与 +2TB SSD 加购项;现有订单需要调整时,先在控制台工单确认处理方式,不要假设加购后项目会自动迁移。

查看 SSD 附加项
操作之外,再看判断依据

继续读技术文章

本页解决“下一步怎么做”。构建实践、设备选型与数据保护的长篇说明,统一在技术文章目录查看;文章标题、摘要与发布日期以目录中的实际内容为准。

把问题交接清楚

仍未解决?带上这三项再发工单

已购用户优先登录控制台提交工单,便于关联实例。不要提交密码、私钥、完整卡号或含凭据的截图。

  1. 01定位对象

    节点编号、订单号,以及问题发生的大致时间和时区。涉及支付时,只提供交易识别信息,不提供认证材料。

  2. 02复现过程

    你执行了什么、预期结果是什么、实际看到什么。连接问题附客户端和版本,构建问题附工具链版本。

  3. 03已做检查

    贴出脱敏后的错误原文,说明图形桌面或 SSH 哪一个仍可用,以及是否有不能中断的运行任务。

不用重述一遍,
把检查结果一起发来。

在控制台提交与实例关联的工单。售前选型、邮箱联系或账单问题,也可以先看联系说明。