Самостоятельное руководство · от подключения до запуска

Разберитесь,
как запустить облачный 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

Добавьте self-hosted runner в настройках репозитория или организации Actions и выберите macOS и ARM64. Используйте команды загрузки и регистрации, сгенерированные на этой странице. Не сохраняйте токен регистрации в постоянном скрипте.

  1. 1Зарегистрируйте от имени пользователя сборки

    Зарегистрируйте runner от имени пользователя macOS, который будет выполнять сборки. Убедитесь, что у него есть доступ к каталогу проекта и нужной для сборки связке ключей.

  2. 2Добавьте отдельную метку

    Например, назначьте узлу метку osxflow-m4 и направьте на неё один тестовый workflow, чтобы старый runner не забрал задачу.

  3. 3Сначала проверьте, затем запустите постоянно

    Сначала запустите runner в интерактивном режиме и убедитесь, что workflow проходит. Затем настройте постоянный запуск по инструкции, прилагаемой к 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, чтобы задачи подписи и запись в кэш не мешали друг другу. Проверьте, что PATHпользователя runner, каталог разработчика и окружение Ruby совпадают с теми, что используются при ручном тестировании.

concurrent = 1

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

Здесь показаны только нужные поля файла конфигурации после регистрации, а не полная конфигурация. Сохраните адрес, данные аутентификации и остальные поля, созданные инструментом регистрации. Не заменяйте этим фрагментом весь файл.

Настройте для runner отдельную метку и добавьте в тестовое задание вывод whoami,pwd и xcode-select -p. Если в терминале сборка проходит, а в CI — нет, сначала сравните пользователя, пути и переменные окружения, а не устанавливайте инструменты заново.

Fastlane: храните материалы для подписи отдельно от кода

Импортируйте сертификаты, закрытые ключи и профили подготовки в соответствии с процедурами доступа вашей команды. Не храните их в репозитории с исходным кодом и не выводите пароли расшифровки в журналах Fastlane.

  • Используйте для CI отдельную связку ключей и ограничьте права доступа к файлам. Пользователь сборки должен иметь возможность разблокировать её и читать данные.
  • Передавайте пароли через секретные переменные платформы для размещения кода. Не подставляйте значения напрямую в команды, вывод которых может быть доступен другим.
  • Разместите профиль подготовки согласно требованиям установленной версии Xcode. Выполните минимальную архивную сборку, чтобы проверить совместимость команды, сертификата и конфигурации.
  • После экспорта результата удалите временные файлы подписи. До окончания аренды узла отзовите регистрацию runner и токены доступа, которые больше не используются.

Выделенный физический Mac не заменяет управление доступом к проекту. Пользователь, который может изменять пайплайн выпуска, потенциально может читать данные среды подписи. Проверьте и права доступа к репозиторию.

Сначала проверьте, затем увеличивайте модель

Проведите воспроизводимый эксперимент с MLX

Старшая конфигурация: 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

Передайте модель и запрос, следуя справке для установленной версии. Сначала выполните один запрос, затем постепенно увеличивайте контекст. Следите в Мониторинге системы за давлением на память и использованием файла подкачки; если нагрузка долго остаётся высокой, уменьшите задачу.

Для сравнения экспериментов зафиксируйте запрос, длину генерации и параллелизм. Результаты для разных моделей и способов квантования нельзя напрямую считать различием в производительности узлов.

Не обещаем конкретную скорость и не гарантируем, что модель поместится в память

Храните файлы моделей отдельно от проекта

Если нужно больше места, выберите дополнительный SSD на +2TB при оформлении заказа. Сначала проверьте путь монтирования и доступный объём на узле, затем перенесите веса моделей и кэш загрузок. Не предполагайте, что на всех узлах используется одно и то же имя тома.

Перед переносом остановите задачи, которые читают модель. После копирования проверьте количество и размер файлов, затем измените путь к модели или настройки кэша в инструменте. Убедитесь, что модель загружается, и только потом удаляйте исходную копию.

Дополнительное хранилище — не резервная копия. Сохраните версии моделей, конфигурации и важные результаты в другом месте под вашим контролем, чтобы они не оставались только на арендованном узле.

Посмотреть варианты расширения хранилища и цены
Договоримся о терминах

Восемь распространённых терминов — кратко и ясно

Эти определения пригодятся при заказе, подключении и обращении в поддержку. Используйте одни и те же слова при описании проблемы — так проще отличить устройство от протокола подключения и параметров оплаты.

Физический узел
Физический Mac, на котором работает ваша арендованная услуга, а не клиент удалённого рабочего стола.Когда создаёте обращение, укажите номер узла из сведений об экземпляре, а не пишите просто «та машина».
Выделенный доступ
В течение срока аренды всё устройство используется для ваших задач: CPU, GPU и унифицированная память не делятся с другими клиентами.При настройке параллельных сборок всё равно учитывайте конкуренцию за ресурсы между вашими задачами.
Без виртуальной машины
Вы работаете в нативной среде macOS на физическом Mac, а не в виртуальном экземпляре на общем хосте.Проверьте, что версии macOS и инструментария Apple Silicon соответствуют требованиям проекта.
VNC
Протокол удалённого доступа, передающий изображение рабочего стола и ввод с клавиатуры и мыши; подходит для работы с графическим интерфейсом.Он пригодится при первом запуске Xcode, изменении системных настроек или проверке Мониторинга системы.
Общий экран
Возможность удалённого подключения к рабочему столу в macOS. Подключайтесь к узлу, используя данные из сведений об экземпляре.В Finder на локальном 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"

Сначала приостановите сборку, затем удалите кэш, который можно восстановить. Не удаляйте целиком связки ключей, материалы для подписи, исходные файлы проекта или единственную копию модели. После очистки кэша при следующей сборке содержимое обычно создаётся заново — учтите это при планировании выпуска.

Для постоянно растущих весов моделей и результатов сборки лучше заранее выделить отдельное место. Доступны дополнительные SSD на +1TB и +2TB. Если нужно изменить существующий заказ, сначала уточните порядок действий в обращении через консоль. Не рассчитывайте, что после расширения хранилища проект перенесётся автоматически.

Посмотреть дополнительные варианты SSD
Разберитесь не только с действиями, но и с причинами

Продолжить чтение технических статей

Эта страница отвечает на вопрос «что делать дальше». Подробные статьи о сборках, выборе оборудования и защите данных собраны в каталоге технических материалов. Названия, описания и даты публикации смотрите в самом каталоге.

Передайте специалистам всю нужную информацию

Проблема не решена? Приложите к обращению три пункта

Если вы уже оформили заказ, сначала войдите в консоль и создайте обращение — так его можно связать с экземпляром. Не отправляйте пароли, закрытые ключи, полный номер карты или снимки экрана с учётными данными.

  1. 01Что именно затронуто

    Укажите номер узла, номер заказа и примерные дату и время возникновения проблемы вместе с часовым поясом. По вопросам оплаты предоставляйте только идентификатор транзакции, но не данные для аутентификации.

  2. 02Как воспроизвести проблему

    Опишите, что вы сделали, какого результата ожидали и что увидели. Для проблем с подключением укажите клиент и его версию, для проблем со сборкой — версии инструментов.

  3. 03Что уже проверено

    Приложите текст ошибки без конфиденциальных данных. Укажите, доступен ли графический рабочий стол или SSH, а также есть ли задачи, выполнение которых нельзя прерывать.

Не нужно описывать всё заново —
сразу приложите результаты проверок.

Создайте в консоли обращение, связанное с экземпляром. Если вы выбираете услугу до заказа, хотите связаться по электронной почте или у вас вопрос по счёту, сначала ознакомьтесь с информацией о контактах.