첫날 실험 준비

먼저 모델을 실행하고,
실험은 더 오래 이어가세요.

OsxNode M4-16을 막 개통한 실험자를 위한 체크리스트입니다. 먼저 전용 Mac에 연결하고 Python과 MLX를 확인한 다음, 짧은 출력을 생성해 메모리 여유를 살펴보세요. 현재 모델은 M4, 통합 메모리 16GB, SSD 256GB입니다.

처음 연결하기 전에 주문 번호를 준비하고, 만료 전에 결과를 내보내세요. 연결에 성공해도 모든 규모의 모델이 16GB 통합 메모리에 들어가는 것은 아닙니다.

먼저 인도 상태 확인

노드 카드에서 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를 실행한 뒤 추론을 시작하세요. 가상 환경 디렉터리만 옮기지 말고 의존성 목록과 직접 작성한 스크립트도 함께 보관하세요.

메모리 확인

짧은 추론으로 여유 확인

16GB는 CPU, GPU, 시스템이 함께 사용하는 통합 메모리이지 모델이 전부 사용할 수 있는 용량이 아닙니다. 가중치 외에도 컨텍스트 캐시, 런타임, 다른 앱이 메모리를 사용합니다. 파라미터 규모가 같아도 양자화 형식과 컨텍스트 길이에 따라 최대 사용량이 달라질 수 있습니다.

다운로드 전에 경로 확인

모델 파일 크기, 라이선스, 남은 디스크 공간을 먼저 확인하세요. 반복해서 사용할 가중치와 데이터셋은 추가 구매한 디스크에 두는 것이 좋습니다. Finder나 디스크 유틸리티에서 추가 디스크의 실제 마운트 경로를 확인하세요.

SSD 용량을 늘려도 통합 메모리는 16GB 그대로입니다. 추가 디스크를 구매하지 않았다면 기본 디스크의 디렉터리를 사용하고 캐시 크기를 관리하세요. 존재하지 않는 볼륨 이름을 그대로 사용하지 마세요.

로드 중 메모리 압력 확인

‘활성 상태 보기 → 메모리’를 열고 메모리 압력과 스왑 사용량을 함께 확인하세요. 사용하지 않는 GUI 앱을 먼저 종료하고 출력 길이를 제한한 뒤 컨텍스트를 점차 늘리세요. 모델 이름, 양자화 비트 수, 명령 매개변수도 기록하세요.

메모리 압력이 노란색으로 바뀌면 동시 작업을 늘리지 말고 컨텍스트를 줄이거나 더 작은 양자화 모델로 바꾸세요. 페이지 교체가 계속되거나 프로세스가 종료되면 같은 작업을 그대로 다시 실행하지 마세요.

짧은 텍스트부터 생성

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 모델은 이 사이트의 16GB 요금제에서 사용하지 않는 것이 좋습니다. LoRA 미세 조정에는 학습 상태와 활성화값을 위한 메모리도 필요하므로 추론 성공만으로 학습 가능 여부를 판단할 수 없습니다.

입력과 결과

데이터를 보내고 결과를 가져오기

명령 실행에는 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 예시에는 삭제 옵션이 없으며, 소스 디렉터리 끝의 슬래시는 디렉터리 안의 내용을 동기화한다는 뜻입니다.

대용량 파일은 분할 후 검증

네트워크가 불안정하면 하나의 대용량 아카이브를 1024MB 단위로 나눠 각 조각을 업로드할 수 있습니다. 분할은 전송을 위한 방식일 뿐 원본 파일을 압축하거나 필요한 최종 디스크 공간을 줄이지 않습니다.

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 값이 일치하는지 확인한 뒤 압축을 푸세요. 아카이브와 모든 분할 파일을 동시에 보관할 공간도 확보해야 합니다.

장시간 작업은 별도 세션에서 실행

원격 Mac에 tmux를 설치하고 세션을 만든 뒤 그 안에서 추론 명령을 실행하세요. Ctrl+B를 누른 다음 D를 누르면 세션에서 분리되며, 나중에 다시 접속할 수 있습니다.

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

새 세션에서 작업을 시작한 뒤 다시 연결하면 attach를 실행하세요. tmux는 SSH 연결이 끊겨도 작업을 유지할 수 있지만, 인스턴스 종료, 재시작 또는 대여 기간 만료를 넘어 작업을 계속 실행해 주지는 않습니다.

대여 기간 확인

만료 전에 연장하고 파일 내보내기

Mac 단기 대여는 일·주·월·분기 단위로 선불 결제합니다. 만료 전에 연장하지 않으면 자동으로 종료되며 이후 요금은 발생하지 않습니다. 작업과 백업은 콘솔의 만료 시간을 기준으로 계획하세요. 브라우저에 데스크톱이 계속 표시되는지로 대여 상태를 판단하지 마세요.

  1. 01

    실험을 계속하려면 미리 연장

    만료 전에 콘솔에서 해당 구독으로 이동해 이용 가능한 연장 옵션을 확인하고 결제한 뒤 새 만료 시간을 확인하세요. 결제는 USDT-TRC20 또는 Stripe를 통한 Visa / Mastercard / Amex만 지원하며, 모두 USD로 청구됩니다. 실제 이용 가능한 결제 게이트웨이는 콘솔에 표시된 내용을 기준으로 합니다.

  2. 02

    연장하지 않는다면 먼저 백업 확인

    만료 전에 데이터셋, 실험 스크립트, 의존성 목록, 로그, 결과 파일을 내보내고 로컬에서 열리는지 확인하세요. 중요한 아카이브는 체크섬도 확인하세요. 원격 데스크톱에서 나왔다고 결과가 동기화된 것은 아닙니다. 로컬에서 확인할 수 없는 파일은 백업이 완료된 것이 아닙니다.

  3. 03

    서비스 종료는 데이터 보관이 아닙니다

    만료되면 서비스가 중지됩니다. 노드를 회수한 뒤 다음 사용자에게 재할당하기 전에 디스크 초기화와 시스템 재설치가 진행됩니다. 서비스 중지 후 데이터에 접근할 수 있는 보관 기간이나 초기화 후 복구를 보장하지 않습니다. 주문에 별도의 데이터 처리 약정이 명시되어 있다면 해당 주문과 지원 티켓에서 확인한 내용을 따릅니다.

서비스 종료 후 일정 시간 동안 데이터를 보관한다는 일괄 보장은 제공하지 않습니다. 백업 완료 여부를 확인할 수 없다면 대여 기간 중 지원 티켓으로 문의하세요. 만료 후 다시 대여하면 기존 디스크 데이터를 복구할 수 있다고 생각하지 마세요.

인스턴스 정보 이해하기

실험에서 각 용어가 뜻하는 것

용량, 연결 방식, 결제 주기는 서로 다른 항목입니다. 이를 구분해야 문제가 모델 규모, 네트워크 연결, 대여 기간 중 어디에서 비롯됐는지 판단할 수 있습니다.

물리 노드
클라우드 Mac 서비스가 실제로 제공되는 물리 머신의 위치입니다. 연결 정보는 해당 인스턴스 상세 내용을 기준으로 확인하세요.
전용 할당
대여 기간 동안 물리 Mac 한 대는 한 명의 사용자에게만 배정되며, 통합 메모리와 GPU 코어를 다른 사용자와 공유하지 않습니다.
통합 메모리
CPU와 GPU가 함께 사용하는 메모리 풀입니다. 이 서비스는 16GB이며 시스템, 모델, 런타임이 모두 이 메모리를 사용합니다.
VNC
원격 데스크톱을 보고 조작하는 연결 방식입니다. 화면과 입력을 전송하며 SSH 파일 전송을 대체하지 않습니다.
화면 공유
호환되는 클라이언트로 원격 macOS 데스크톱을 조작하는 방식입니다. 연결 주소와 인증 정보는 콘솔에서 확인하세요.
self-hosted runner
사용자가 대여한 머신에 직접 배포하는 CI 실행 프로세스입니다. 대여 기간이 끝나 머신이 종료되면 빌드 작업도 계속 실행할 수 없습니다.
양자화 비트 수
모델 가중치를 표현하는 데 사용하는 비트 수로, 가중치 용량과 출력에 영향을 줍니다. 비트 수를 낮춰도 실행 메모리가 같은 비율로 줄어드는 것은 아닙니다.
메모리 압력
활성 상태 보기에 표시되는 메모리 사용 상태 지표입니다. 노란색으로 바뀌면 남은 용량 숫자만 보지 말고 동시 작업, 컨텍스트 또는 모델 규모를 줄이세요.
문제 상황을 보존

증상에 따라 문제 범위 좁히기

조정하기 전에 오류 내용과 발생 시간을 저장하세요. 원인을 알아보려고 연달아 재시작하지 마세요. 재시작하면 저장하지 않은 실험이 중단될 수 있고 원인 파악에 필요한 상황 정보도 사라집니다.

원격 데스크톱에 연결되지만 화면이 계속 검게 표시됨

브라우저 연결이 완전히 설정되지 않았거나 데스크톱 세션 상태에 문제가 있거나 현재 노드에 접근할 수 없을 수 있습니다. 검은 화면만으로 머신이 종료됐다고 단정할 수는 없습니다.

  1. 콘솔에서 인스턴스 상태와 만료 시간을 확인해 해당 주문의 대여 기간이 남아 있는지 확인하세요.
  2. 현재 연결 페이지를 닫고 같은 인스턴스 상세 정보에서 데스크톱을 다시 여세요. 페이지 연결을 차단할 수 있는 브라우저 확장 프로그램은 잠시 비활성화한 뒤 다시 시도하세요.
  3. SSH를 설정했다면 SSH로 머신에 접속할 수 있는지 확인하세요. 테스트를 위해 네트워크 설정을 반복해서 변경하지 마세요.
  4. 여전히 접속할 수 없다면 검은 화면이 나타난 시간, 브라우저 버전, SSH 접속 가능 여부를 기록해 지원 티켓으로 제출하세요. 저장되지 않은 작업이 있다면 먼저 알리고 전원 조작은 하지 마세요.
입력한 기호와 키보드 키가 다르게 표시됨

로컬 입력기, 원격 macOS 입력 소스, 클라이언트의 키 매핑이 서로 다르면 기호가 잘못 입력될 수 있습니다. 이 경우 보통 인스턴스를 새로 개통할 필요는 없습니다.

  1. 원격 일반 텍스트 편집기에서 문자, 숫자, 기호를 먼저 테스트하세요. 비밀번호 입력란에서 임의로 추측하지 마세요.
  2. 원격 메뉴 막대의 입력 소스를 확인하고 시스템 설정에서 키보드 및 입력기 설정을 점검하세요.
  3. 단축키가 맞지 않으면 연결 클라이언트의 키 매핑을 확인하고 Command, Option, Control의 대응 관계를 살펴보세요.
  4. 문제를 제출할 때 ‘어떤 키를 눌렀고 무엇이 표시됐는지’를 적으세요. 실제 비밀번호나 개인 키를 테스트 문구로 보내지 마세요.
모델 로드 중 Killed가 표시되거나 프로세스가 종료됨

메모리 부족이 원인일 수 있지만 디스크 공간, 모델 파일의 무결성, 의존성 오류도 확인해야 합니다. 종료 메시지 한 줄만으로는 전체 로그를 대신할 수 없습니다.

  1. 전체 명령, 오류 메시지의 마지막 부분, 모델 이름, 양자화 비트 수, 컨텍스트 설정을 보관하세요.
  2. 활성 상태 보기에서 메모리 압력과 스왑 사용량을 확인하세요. 다른 작업을 종료하고 출력이 짧은 더 작은 모델로 테스트하세요.
  3. 다음 명령으로 df -h 캐시가 저장된 디스크를 확인하고 공간 부족으로 다운로드가 중단되지 않았는지 살펴보세요.
  4. 활성화된 가상 환경에서 다음 명령을 실행하세요. python -m pip check를 실행하세요. 작은 모델도 실패한다면 오류 내용과 환경 버전을 함께 지원 티켓으로 제출하세요.
재현 가능한 문제 보고

지원 티켓에 이 네 가지 정보를 첨부하세요

이미 이용 중인 인스턴스의 문제는 주문과 연결하기 쉽도록 로그인 후 콘솔에서 지원 티켓을 제출하세요. 구매 전 상담이나 로그인할 수 없는 경우에는 문의 페이지에서 이메일 문의 방법을 확인할 수 있습니다. 고객 지원 이메일은 support@osxnode.com입니다.

주문 및 노드

주문 번호, 노드 이름, 현재 인스턴스 상태를 적으세요. 연장이나 결제 문제라면 결제 방법과 결제 상태도 추가하세요. 전체 카드 번호, 로그인 비밀번호, SSH 개인 키는 보내지 마세요.

시간 및 시간대

문제가 시작된 시간, 지속 여부, 사용 중인 시간대를 적으세요. ‘방금’이라고만 쓰지 마세요. 가용성 관련 요청이라면 해당 기간 내에 중단된 시간대와 노드 이름을 함께 제출하세요.

작업 및 오류

실행 전 조건, 재현 단계, 예상 결과, 실제 결과를 설명하세요. MLX 문제라면 모델 ID, 양자화 비트 수, 실행 명령, 의존성 버전을 첨부하고 경로에서 민감한 정보는 삭제하세요.

확인한 항목

브라우저 재연결, SSH 연결 상태, 메모리 압력, 디스크 공간 등의 확인 결과를 나열하세요. 실행 중인 작업이나 아직 백업하지 않은 작업이 있는지도 분명히 밝혀 불필요한 중단을 피하세요.

막힌 단계의 기록을 함께 보내주세요.

지원 티켓에 인스턴스, 시간, 오류 정보를 연결해 제출하세요. 모델이 16GB에 적합한지 확실하지 않다면 모델 규모와 양자화 비트 수를 알려주고 먼저 상담할 수 있습니다.