Подготовка к первому дню экспериментов

Сначала запустите модель,
а затем переходите к долгим экспериментам.

Это руководство для тех, кто только что арендовал OsxNode M4-16: сначала подключитесь к выделенному Mac, проверьте Python и MLX, затем запустите короткую генерацию и оцените запас памяти. Конфигурация: M4, 16 ГБ общей памяти и SSD на 256 ГБ.

Перед подключением подготовьте номер заказа, а до окончания аренды выгрузите результаты. Успешное подключение не означает, что модель любого размера поместится в 16 ГБ общей памяти.

Сначала проверьте выдачу

Откройте macOS через карточку узла

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

  1. 01

    Войдите и проверьте узел

    Войдите в консоль с адресом электронной почты, указанным при заказе. Откройте сведения об инстансе или подписке и проверьте номер заказа, имя узла и дату окончания аренды. Имя узла должно совпадать с выбранным при покупке. Адрес, имя пользователя и порт указаны в сведениях об инстансе.

  2. 02

    Откройте удалённый рабочий стол

    Нажмите «Открыть удалённый рабочий стол» на карточке нужного узла или в его сведениях и войдите в macOS с данными, выданными в консоли. Разрешите странице подключения работать в браузере. Не используйте открытую справочную страницу как точку входа в удалённый рабочий стол.

  3. 03

    Смените временный пароль

    При первом входе смените временный пароль учётной записи в разделе «Системные настройки» → «Пользователи и группы» и сохраните новый пароль в менеджере паролей. Убедитесь, что он работает, прежде чем завершать текущий сеанс. Не отправляйте временный или новый пароль в обращении в поддержку.

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

Зависимости

Изолируйте зависимости перед установкой MLX

Выполняйте команды ниже в приложении «Терминал» на удалённом Mac, а не на своём компьютере. Отдельное виртуальное окружение изолирует пакеты Python для этого эксперимента от других задач. Не устанавливайте пакеты глобально в системный Python.

Проверьте архитектуру и Homebrew

uname -m
command -v brew
brew --version

Ожидаемая архитектура — arm64; две следующие команды должны вывести путь к Homebrew и его версию. Если brew не найден, сначала установите Homebrew по официальной инструкции. Не вставляйте в терминал скрипты установки из непроверенных источников.

Создайте окружение Python для эксперимента

brew install python@3.11
mkdir -p "$HOME/experiments/mlx-first"
cd "$HOME/experiments/mlx-first"
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install mlx mlx-lm
python -c 'import platform; import mlx.core as mx; from importlib.metadata import version; print(platform.machine()); print("mlx", version("mlx")); print("mlx-lm", version("mlx-lm")); print(mx.array([1, 2, 3]) + 1)'

После успешной установки проверочная команда должна вывести arm64, актуальные версии обоих пакетов и массив со значениями [2, 3, 4] . Номера версий меняются со временем, поэтому конкретная строка версии не является единственным признаком успешной установки.

Сохраните зависимости, чтобы восстановить окружение

python --version
python -m pip freeze > requirements.txt
python -m pip check

Если конфликтов зависимостей нет, последняя команда обычно выводит No broken requirements found.. После повторного открытия терминала сначала перейдите в каталог эксперимента и выполните source .venv/bin/activate, а затем запускайте модель. Не переносите только каталог виртуального окружения — сохраните также список зависимостей и собственные скрипты.

Память

Проверьте запас памяти на коротком запуске

Общие 16 ГБ памяти распределяются между CPU, GPU и системой — весь объём не доступен модели. Помимо весов нужны память для кеша контекста, среды выполнения и других приложений. Пиковое потребление может различаться даже у моделей одного размера — в зависимости от квантования и длины контекста.

Проверьте путь перед загрузкой

Сначала проверьте размер файлов модели, условия лицензии и свободное место на диске. Веса и наборы данных, к которым вы будете обращаться регулярно, лучше хранить на дополнительно подключённом диске. Фактический путь к нему проверьте в Finder или «Дисковой утилите».

Дополнительное место на SSD не увеличивает объём общей памяти — 16 ГБ. Если дополнительный диск не приобретён, используйте основной диск и следите за размером кеша. Не копируйте вслепую имя тома, которого у вас нет.

Следите за нагрузкой при загрузке

Откройте «Мониторинг системы» → «Память» и наблюдайте за уровнем нагрузки на память и использованием свопа. Сначала закройте ненужные графические приложения и ограничьте длину вывода, затем постепенно увеличивайте контекст. Запишите название модели, разрядность квантования и параметры команды.

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

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

cd "$HOME/experiments/mlx-first"
source .venv/bin/activate
export HF_HOME="$HOME/model-cache"
mkdir -p "$HF_HOME"
df -h "$HF_HOME"
python -m mlx_lm.generate \
  --model mlx-community/Qwen2.5-3B-Instruct-4bit \
  --prompt "Объясни объединённую память в трёх предложениях." \
  --max-tokens 128

При первом запуске команда загрузит указанную модель. При успехе она выведет сгенерированный текст, а в некоторых версиях — и статистику генерации. Пример не гарантирует время загрузки или скорость в tokens/s. Если используете дополнительный диск, задайте для HF_HOME существующий каталог на нём с правом записи и сохраняйте тот же путь в последующих сеансах.

Для начала проверьте модель 3B с квантованием 4-bit или 7B 4-bit с коротким контекстом и только потом увеличивайте нагрузку. Модели 13B и больше с квантованием 8-bit не рекомендуются для конфигурации 16 ГБ. Для дообучения LoRA потребуется дополнительная память для состояний обучения и активаций: успешный запуск генерации не означает, что дообучение тоже будет работать.

Данные и результаты

Передайте данные на Mac, а результаты — обратно

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

Укажите параметры подключения в локальном терминале

read -r -p "SSH user: " REMOTE_USER
read -r -p "SSH host: " REMOTE_HOST
read -r -p "SSH port: " SSH_PORT
ssh -p "$SSH_PORT" "$REMOTE_USER@$REMOTE_HOST" \
  'mkdir -p ~/experiments/data ~/experiments/results'
scp -P "$SSH_PORT" ./dataset.jsonl \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/data/"
rsync -avP -e "ssh -p $SSH_PORT" ./data/ \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/data/"
rsync -avP -e "ssh -p $SSH_PORT" \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/results/" ./results/

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

Разбейте большие файлы на части и проверьте их

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

shasum -a 256 dataset.tar
split -b 1024m dataset.tar dataset.part-
cat dataset.part-* > dataset-restored.tar
shasum -a 256 dataset-restored.tar

Разбивайте архив на исходном устройстве, а объединяйте на целевом. Прежде чем распаковывать, убедитесь, что значения SHA-256 совпадают. Если архив и все его части хранятся одновременно, предусмотрите место для обеих копий.

Запустите долгую задачу в отдельном сеансе

Установите tmux на удалённом Mac и создайте сеанс для команды генерации. Нажмите Ctrl+B, затем D, чтобы отсоединиться от сеанса. Позже к нему можно подключиться снова.

brew install tmux
tmux new -s mlx
tmux attach -t mlx

Сначала запустите задачу в новом сеансе, а после повторного подключения выполните attach. tmux помогает пережить разрыв SSH-соединения, но не сохраняет работу при выключении или перезапуске инстанса и по окончании аренды.

Аренда

Продлите аренду и выгрузите файлы до её окончания

Аренда Mac доступна с предоплатой за день, неделю, месяц или квартал. Если не продлить её до окончания, Mac выключится автоматически, без последующих начислений. Планируйте задачи и резервное копирование по сроку, указанному в консоли, а не по тому, отображается ли рабочий стол в браузере.

  1. 01

    Продлите аренду заранее, если продолжаете эксперименты

    До окончания аренды откройте нужную подписку в консоли, проверьте доступные варианты продления и внесите платёж. Затем убедитесь, что срок аренды обновился. Оплатить можно только USDT-TRC20 или картами Visa / Mastercard / Amex через Stripe; все суммы указаны в долларах США. Доступные платёжные шлюзы уточняйте в консоли.

  2. 02

    Не продлеваете? Сначала проверьте резервную копию

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

  3. 03

    Выключение не означает хранение данных

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

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

Сведения об инстансе

Что означают эти термины в работе

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

Физический узел
Регион, где находится физическая машина, предоставляющая услугу облачного Mac. Параметры подключения смотрите в сведениях о соответствующем инстансе.
Выделенный
На срок аренды физический Mac назначается одному клиенту. Общую память и ядра GPU не используют другие клиенты.
Общая память
Общий пул памяти для CPU и GPU. На этом сервисе доступно 16 ГБ; память используют система, модель и среда выполнения.
VNC
Способ подключения для просмотра и управления удалённым рабочим столом. Передаёт изображение и команды ввода, но не заменяет SSH для передачи файлов.
Общий экран
Способ управления удалённым рабочим столом macOS через совместимый клиент. Адрес для подключения и данные входа доступны в консоли.
self-hosted runner
Процесс CI, который пользователь самостоятельно устанавливает на арендованной машине. После выключения машины по окончании аренды задачи сборки выполняться не смогут.
Разрядность квантования
Количество бит, используемых для представления весов модели. Влияет на размер весов и качество результатов. Снижение разрядности не означает, что потребление памяти уменьшится в той же пропорции.
Нагрузка на память
Показатель использования памяти в «Мониторинге системы». Если он переходит в жёлтую зону, сократите число параллельных задач, контекст или размер модели. Не ориентируйтесь только на число свободных гигабайт.
Сохраните данные для диагностики

Определите причину по симптомам

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

Удалённый рабочий стол подключился, но экран чёрный

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

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

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

  1. Проверьте буквы, цифры и символы в обычном текстовом редакторе на удалённом Mac. Не подбирайте их в поле пароля.
  2. Проверьте источник ввода в меню удалённого Mac и настройки клавиатуры и способов ввода в системных настройках.
  3. Если не работают сочетания клавиш, проверьте их раскладку в клиенте подключения, особенно соответствие клавиш Command, Option и Control.
  4. В обращении в поддержку укажите: «что нажал» и «что появилось». Не отправляйте настоящий пароль или закрытый ключ для проверки.
При загрузке модели появляется Killed или процесс завершается

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

  1. Сохраните полную команду, конец сообщения об ошибке, название модели, разрядность квантования и настройки контекста.
  2. Проверьте нагрузку на память и использование свопа в «Мониторинге системы». Закройте другие приложения и проверьте работу с коротким выводом и моделью меньшего размера.
  3. Выполните df -h для проверки диска с кешем и убедитесь, что загрузка не прервалась из-за нехватки места.
  4. В активированном виртуальном окружении выполните python -m pip check. Если не работает даже небольшая модель, приложите к обращению текст ошибки и версии компонентов среды.
Помогите воспроизвести проблему

Одно обращение — четыре вида сведений

По вопросам уже активного инстанса отправьте обращение через консоль после входа — так его можно связать с заказом. Если вы ещё выбираете конфигурацию или не можете войти, найдите адрес электронной почты на странице контактов. Адрес службы поддержки: support@osxnode.com.

Заказ и узел

Укажите номер заказа, имя узла и текущее состояние инстанса. По вопросам продления или оплаты добавьте способ оплаты и её статус. Не сообщайте полный номер карты, пароль от учётной записи или закрытый SSH-ключ.

Время и часовой пояс

Укажите, когда началась проблема, продолжается ли она сейчас и какой часовой пояс вы используете. Вместо «недавно» приведите точное время. Если запрашиваете компенсацию за недоступность, укажите период недоступности и имя узла в рамках текущего расчётного периода.

Действия и ошибки

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

Что уже проверили

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

Укажите, на каком шаге возникла проблема, и приложите его результат.

В обращении укажите инстанс, время и текст ошибки. Если не уверены, подойдёт ли модель для 16 ГБ, сообщите её размер и разрядность квантования — мы поможем разобраться.