Инструкция для разработчиков

Подготовьте облачный Mac к стабильной работе

Начните не с теории. Сначала сверьте заказ и данные узла, затем настройте доступ, Xcode, CI и среду инференса MLX. В каждом разделе есть порядок проверок, критерии готовности и список диагностических данных для сохранения.

Тип сервиса
Выделенный физический узел
Время запуска
Около 4 минут
Режим работы
Круглосуточно, 365 дней в году
Карточка узла Первичная настройка
4 проверки
01
Заказ и узел Совпадают модель, регион, срок аренды и опции
Проверить
02
Данные доступа Сразу обновите после первого подключения и сохраните
Обновить
03
Инструменты разработки Сверьте версии macOS, Xcode и утилит командной строки
Проверить
04
Сеть и рабочий каталог Проверьте связь, свободное место и права на каталог задач
Готово
Критерий готовности Подключение, сборка и воспроизведение работают
Выберите задачу

Шесть руководств — найдите, что мешает работе

При первом запуске следуйте шагам по порядку. Если проблема возникла в уже настроенной среде, откройте нужный раздел и сохраните вывод команд, время сбоя и сведения о последних изменениях.

Первый запуск

Базовая проверка за четыре минуты

Сверьте заказ, получите данные узла, обновите учётные данные и проверьте версию системы, сеть и состояние диска.

Открыть список настройки
Среда разработки

Зафиксируйте версии Xcode и настройки подписи

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

Проверить среду разработки
CI/CD

Настройте очистку и отслеживание исполнителей

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

Подключить очередь сборки
Инференс MLX

Настройте перезапускаемый сервис инференса

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

Развернуть сервис инференса
Хранилище и сеть

Оцените рабочий набор, затем выберите расширение

Разделите исходный код, кэш зависимостей, модели, артефакты сборки и временные файлы; оцените потребность в SSD и объединении устройств.

Спланировать объём и объединение
Учётная запись и оплата

Создайте обращение, готовое к обработке

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

Подготовить обращение
Первый запуск

Настройка за четыре минуты

Отсчёт начинается после подтверждения заказа. Фактическая готовность отображается в консоли. Если для шага не хватает данных, не переходите к дальнейшей настройке.

  1. 01
    Проверьте заказ Около 45 секунд

    Убедитесь, что модель, регион узла, срок аренды и дополнительные опции соответствуют плану. Базовая конфигурация: M4, 16GB, 256GB; конфигурация с увеличенной памятью: M4 Pro, 64GB, 2TB. При несоответствии остановитесь и создайте обращение.

    • Запишите номер заказа и регион узла.
    • Проверьте, нужны ли расширение хранилища и объединение устройств через Thunderbolt 5.
  2. 02
    Получите данные узла Около 2 минут

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

    • Проверьте, что адрес соответствует региону заказа.
    • Сохраните исходные данные в одобренном командой менеджере учётных данных.
  3. 03
    Обновите данные доступа Около 1 минуты

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

    • Измените исходный пароль и убедитесь, что новые данные доступа работают.
    • Подготовьте ключ для подключения из командной строки и проверьте отпечаток хоста.
  4. 04
    Проверьте систему и сеть Около 15 секунд

    Запишите версии macOS и Xcode, проверьте маршрут по умолчанию, разрешение доменных имён, свободное место на диске и права записи в рабочий каталог. Затем выполните небольшую сборку или запрос инференса и убедитесь, что результат можно проверить.

Среда разработки

Сначала зафиксируйте версии Xcode и параметры подписи

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

Порядок настройки

  1. 01
    Проверьте версию Xcode

    Запишите полную версию и номер сборки. Убедитесь, что доступны требуемые проекту SDK, среды выполнения симулятора и минимальная версия системы.

  2. 02
    Импортируйте сертификаты и профили

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

  3. 03
    Проверьте права связки ключей

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

  4. 04
    Выберите инструменты командной строки

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

  5. 05
    Проверьте первую сборку

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

Непрерывная интеграция

Считайте исполнитель постоянным ресурсом, а не временным каталогом

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

01

Установите собственный исполнитель

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

Критерий готовности: после перезапуска исполнитель автоматически принимает задания
02

Спланируйте рабочие каталоги

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

Критерий готовности: определены владельцы каталогов и правила очистки
03

Ограничьте параллельность

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

Критерий готовности: при пиковой нагрузке не возникает подкачки и нехватки места
04

Сохраняйте данные об ошибках

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

Критерий готовности: другой участник команды может самостоятельно воспроизвести сбой
Границы очистки кэша

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

ИИ и MLX

Сервис инференса должен поддерживать нагрузочное тестирование, мониторинг и восстановление

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

Настройка сервиса MLX Начните с базового теста одного запроса
Apple Silicon
Изоляция среды
Используйте отдельную среду Python для каждого сервиса, фиксируйте версии зависимостей и сохраняйте список установленных пакетов.
Каталог модели
Храните файлы моделей отдельно от исходного кода. Записывайте название модели, формат квантования, контрольную сумму и занимаемый объём.
Адрес прослушивания
По умолчанию используйте только нужные задаче интерфейсы и адреса. Не открывайте отладочные конечные точки для посторонних сетей.
Тест параллельной нагрузки
Последовательно проверьте 1, 2 и 4 одновременных запроса. Запишите задержку до первого токена, общее время, долю ошибок и пиковую память.
Мониторинг памяти
Отслеживайте отдельно память модели, рост контекста и кэш запросов. Не увеличивайте нагрузку, приближаясь к стабильному пределу.
Перезапуск
Укажите команду запуска, рабочий каталог, переменные среды и путь к журналам в конфигурации сервиса; проверьте восстановление после аварийного завершения.
Объём и объединение

Выбирайте хранилище по рабочему набору, а не по названию проекта

Сначала оцените пиковый объём исходного кода, зависимостей, моделей, артефактов сборки, журналов и временных файлов, затем предусмотрите запас для очистки и отката. Базовый объём SSD зависит от выбранной модели.

ArmMesh M4

Базовый SSD на 256GB

Подходит для проверки кода, обычного кэша зависимостей, сборки одного проекта и краткосрочных задач выпуска. Для крупных моделей, нескольких сред выполнения Xcode или большого объёма видеоматериалов сначала оцените пиковое использование.

ArmMesh M4 Pro

Базовый SSD на 2TB

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

Стоимость хранилища и опций объединения Thunderbolt 5 указана в долларах США
Опция В день В неделю В месяц В квартал Когда подходит
+1TB SSD $2.4 $6.4 $11.9 $32.4 Для кэша зависимостей, архивов сборок или моделей среднего размера, превышающих базовый объём.
+2TB SSD $4.8 $12.8 $23.8 $64.8 Для крупных моделей, долгого хранения артефактов или рабочих процессов с аудио- и видеоматериалами.
Объединение Thunderbolt 5, за устройство $1.2 $3.2 $5.9 $16 Перед объединением устройств спланируйте разделение задач, синхронизацию данных, восстановление после сбоев и сбор результатов.

Пять проверок перед объединением устройств

  • Можно ли разделить задачу на независимые единицы, которые можно повторить при сбое?
  • Есть ли единый источник входных данных и не будут ли несколько устройств одновременно записывать в них?
  • Можно ли обеспечить одинаковые версии моделей, зависимостей и инструментов?
  • Можно ли безопасно перенести задачу с неисправного узла, не создавая повторных результатов?
  • Есть ли единые правила именования, проверки и сбора итоговых артефактов?
Диагностика

Сначала сузьте круг причин, затем меняйте настройки

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

Не удаётся подключиться

Проверьте всё — от локальной сети до состояния узла

  1. Убедитесь, что локальная сеть работает и прокси-сервер или брандмауэр не блокирует подключение.
  2. Ещё раз сверьте адрес узла, порт и отпечаток хоста.
  3. Проверьте, обновлены ли учётные данные и не скопировались ли вместе с ними пробелы.
  4. Проверьте состояние узла в консоли, затем запишите версию клиента и полный текст ошибки.
Низкая скорость

Разделите задержку, пропускную способность и нагрузку узла

  1. Повторите тест в одной и той же сети, исключив колебания беспроводного соединения.
  2. Сравните задержку при работе и скорость передачи файлов — это разные показатели.
  3. Проверьте, не расходуют ли ресурсы сборка, синхронизация или инференс.
  4. Запишите местоположение, регион узла, время и результаты нескольких тестов.
Сбой сборки

Определите, связана ли проблема с кодом или средой

  1. Зафиксируйте версию коммита и повторите ту же команду сборки.
  2. Запишите версии Xcode, SDK, зависимостей и инструментов командной строки.
  3. Проверьте материалы подписи, права связки ключей и рабочего каталога.
  4. Удалите временные артефакты текущего проекта и повторите попытку. Не удаляйте всё содержимое диска.
Недостаточно места на диске

Найдите, что занимает место, и только потом расширяйте хранилище

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

Сравните размер запросов с пиковым расходом памяти

  1. Определите, на каком этапе произошёл сбой: запуск, загрузка модели или обработка запроса.
  2. Проверьте, изменились ли формат модели, длина контекста или число одновременных запросов.
  3. Изучите показатели памяти и диска, а также журнал сервиса перед завершением.
  4. Восстановите базовые показатели на одном запросе и затем постепенно увеличивайте нагрузку.
Учётные данные не работают

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

  1. Проверьте, используется интерактивная или автоматизированная учётная запись.
  2. Уточните, менялись ли недавно пароль, ключ или список участников с доступом.
  3. Удалите старые учётные данные из скриптов и кэша, затем проверьте новые.
  4. Если источник изменений неизвестен, создайте обращение через консоль.
Обращение в поддержку

Укажите данные, необходимые для диагностики обращения

По техническим вопросам создавайте обращения через консоль, чтобы привязать их к заказу и узлу. Если войти в консоль не удаётся, напишите на support@armmesh.com.

Подготовьте шесть пунктов

01 Номер заказа

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

02 Регион узла

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

03 Версия macOS

Укажите полную версию и номер сборки. Для проблем со сборкой также добавьте версии Xcode и инструментов командной строки.

04 Время сбоя

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

05 Шаги воспроизведения

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

06 Журнал без конфиденциальных данных

Сохраните временные метки, коды ошибок и контекст, удалив пароли, ключи, токены, материалы для подписи и секретные данные проекта.

Далее

Сначала выберите физический узел, затем проверьте его по списку

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