2026/07/11

M4 MacStudio Max 64GB + M4 MacBookPro Max 64 두대를 하나의 128GB 고성능 AI 서버로 활용하기

[Sovereign AI] M4 Max Mac Studio + MacBook Pro로 구축한 128GB 초고속 분산 AI 클러스터 결산 및 삽질기

안녕하세요! 최근 Apple이 WWDC에서 공개한 오픈소스 저수준 집합 통신 라이브러리인 JACCL(Jack and Angelos' Collective Communication Library) 백엔드와 macOS의 Thunderbolt RDMA 기술을 활용하여, 제가 보유한 두 대의 M4 Max 기기를 하나의 거대한 128GB AI 연산 머신으로 묶는 프로젝트를 진행했습니다.

NVIDIA의 데이터센터 인프라(NVLink/InfiniBand) 부럽지 않게, 방구석에서 썬더볼트 케이블 하나로 텐서 병렬(Tensor Parallel) 처리를 완수하기까지의 전체 세팅 과정, 성능 측정 결과, 그리고 눈물겨운 시행착오를 아주 디테일하게 기록해 둡니다.

※ 본 포스팅은 macOS 26.2 이상 환경을 기준으로 작성되었습니다.

1. 💻 하드웨어 구성 환경 및 물리 인프라

흔히 구성하는 메인보드 분할형 PC 클러스터와 달리, 애플 실리콘의 Unified Memory 구조 덕분에 두 기기를 묶는 순간 메모리 대역폭이 깎이지 않고 그대로 보존되는 대칭형 고성능 클러스터가 완성됩니다.

  • 마스터 노드 (홈서버): Mac Studio (M4 Max / 16코어 CPU / 40코어 GPU / 64GB Unified Memory)
  • 워커 노드 (물팟스): MacBook Pro 14 (M4 Max / 16코어 CPU / 40코어 GPU / 64GB Unified Memory)
  • 연결 인터페이스: 별도의 스위칭 허브 없이 Thunderbolt 케이블을 포트 대 포트로 1:1 직접 연결 (P2P Mesh Topology)
  • 클러스터 통합 스펙:128GB 통합 메모리 확보 (실질 GPU 할당 가능 메모리 약 110GB 내외)

2. 🛠️ 실전 구축 프로세스 4단계

[Step 1] macOS 복구 모드에서 RDMA 보안 게이트 해제

macOS 레벨에서 CPU 개입 없이 커널을 우회해 다른 기기의 메모리에 직접 접근하는 RDMA(Remote Direct Memory Access)를 허용해야 합니다. 두 기기를 각각 완전히 종료한 뒤 전원 버튼을 길게 눌러 복구 모드(Recovery Mode)로 진입합니다.

# 상단 메뉴 [유틸리티] -> [터미널]을 선택하고 아래 명령어 입력 후 재부팅
rdma_ctl enable

정상적으로 재부팅되었다면 일반 터미널에서 ibv_devices 명령을 실행해 봅니다. apple_thunderbolt_0와 같은 인터페이스명이 출력되면 하드웨어 준비는 끝난 것입니다.

[Step 2] 1:1 독립 서브넷 및 고정 IP 할당 (가장 중요)

macOS의 가상 네트워크인 'Thunderbolt 브릿지'가 켜져 있으면 JACCL이 개별 물리 포트의 RDMA 주소를 인식하지 못하는 치명적인 문제가 있습니다. 시스템 설정 -> 네트워크에서 Thunderbolt 브릿지를 비활성화(또는 삭제)한 뒤, 연결된 단일 썬더볼트 포트에 각각 수동 IP를 매핑합니다.

  • 맥 스튜디오 (홈서버): IP 192.168.10.1 / 서브넷 마스크 255.255.255.0
  • 맥북 프로 (물팟스): IP 192.168.10.2 / 서브넷 마스크 255.255.255.0

설정 후 맥 스튜디오에서 ping 192.168.10.2가 단일 자릿수 ms 이하의 극도로 낮은 지연 시간으로 가는지 테스트합니다.

[Step 3] SSH 무암호 인증 및 파이썬 환경 동기화

다행히 두 기기의 로컬 계정명이 mulpats로 완전히 일치하여 경로 지정이 무척 수월했습니다. 맥 스튜디오에서 SSH 키를 생성하여 맥북 프로로 밀어 넣어줍니다.

ssh-keygen -t rsa -b 4096
ssh-copy-id mulpats@192.168.10.2

이후 두 Mac 모두 가상환경(또는 로컬 환경)에 완벽히 동일한 버전의 라이브러리를 빌드합니다.

pip install mlx mlx-lm

추가로, 구동하려는 모델(예: Llama-3-70B) 파일을 두 기기의 완전히 일치하는 절대 경로(/Users/mulpats/models/...)에 똑같이 저장해 주어야 연산 노드가 꼬이지 않습니다.

[Step 4] 클러스터 설정 파일 (cluster_hosts.json) 작성

MLX 분산 컴파일러가 인식할 수 있도록 홈 디렉토리에 다음과 같이 링/메시 토폴로지용 JSON 파일을 생성했습니다.

{
  "version": 1,
  "nodes": [
    { "hostname": "192.168.10.1", "user": "mulpats", "port": 22, "rdma_device": "apple_thunderbolt_0" },
    { "hostname": "192.168.10.2", "user": "mulpats", "port": 22, "rdma_device": "apple_thunderbolt_0" }
  ]
}

3. ⚠️ 눈물 없인 볼 수 없는 시행착오 (Troubleshooting)

해외 포럼과 깃허브 이슈를 샅샅이 뒤져가며 해결한 핵심 에러 3가지를 정리합니다. 이 글을 보시는 분들은 부디 한 번에 성공하시길 바랍니다.

발생한 에러 현상 원인 분석 해결 방법 (Fix)
JACCL RTR errno 22 (EINVAL) 또는 노드 감지 실패 macOS 기본 기능인 'Thunderbolt 브릿지' 가상 어댑터가 활성화되어 있어 JACCL이 개별 인터페이스의 물리 고유 RDMA 주소를 찾지 못함. 시스템 설정 -> 네트워크 메뉴 하단에서 가상 'Thunderbolt 브릿지' 서비스를 과감히 삭제하고 1:1 다이렉트 수동 IP 할당으로 우회.
mlx.launch 실행 직후 아무 반응 없이 무한 프리징 mlx.launch 스크립트가 SSH를 통해 상대 노드에 처음 접근할 때, 호스트 키 확인(Are you sure you want to continue connecting (yes/no)?) 팝업 프롬프트 단계에서 입력 처리를 못 해 멈춤. 클러스터 가동 전, 맥 스튜디오에서 ssh mulpats@192.168.10.2 명령어로 원격 노드에 수동으로 최초 1회 직접 접속하여 Known_hosts 인증을 마쳐둠.
분산 처리 중 비정상적인 전송 딜레이 및 연산 속도 저하 NVIDIA의 NCCL 환경과 달리 GPU 연산 컨텍스트와 CPU-RDMA 버퍼 간의 컨텍스트 스위칭 동기화가 밀려 병목 현상 발생. 런처 실행 시 인라인 환경 변수로 애플 실리콘 최적화 옵션인 MLX_METAL_FAST_SYNCH=1 플래그를 반드시 강제 주입해 줌.

4. 🚀 대망의 최종 실행 및 성능 측정 결과

모든 트러블슈팅을 마치고 마스터 노드 터미널에서 JACCL 백엔드를 지정해 대형 양자화 모델인 Llama-3-70B-Instruct-4bit를 실행했습니다.

mlx.launch --backend jaccl --hostfile cluster_hosts.json --env MLX_METAL_FAST_SYNCH=1 \
python -m mlx_lm.generate \
--model /Users/mulpats/models/Meta-Llama-3-70B-Instruct-4bit \
--prompt "M4 Max 클러스터 구동을 축하하는 아주 멋진 기술 블로그 아웃트로 문장을 작성해줘." \
--max-tokens 256

📈 벤치마크 스코어 및 체감 성능

  • 수치적 결과: 단일 64GB 맥에서는 OOM(메모리 부족) 에러를 뿜으며 터지던 70B 모델이, 클러스터링 후 초당 약 22 ~ 26 토큰(Tokens per Second) 수준의 부드럽고 쾌적한 속도로 추론을 성공했습니다!
  • 네트워크 대역폭 확인: 추론 연산이 수행되는 동안 썬더볼트 대역폭은 실측 50 ~ 60 Gbps 수준을 꾸준히 유지했으며, 지연 시간은 마이크로초(μs) 단위를 유지해 병목을 거의 느낄 수 없었습니다.
  • 소음 및 발열: 풀 로드 상태에서도 고성능 PC나 GPU 워크스테이션처럼 이륙하는 팬 소음 없이, 아주 고요하고 정숙한 상태(정말 기분 좋은 맥 스튜디오 특유의 미미한 바람 소리 정도)로 작업이 완수되는 점이 대단히 만족스럽습니다.

💡 글을 마치며: 방구석 Sovereign AI의 가능성

수백, 수천만 원을 호가하는 NVIDIA의 H100/A100 클라우드 인프라를 매달 구독하지 않고도, 내가 가진 Apple Silicon 장비들을 정품 케이블 하나로 묶어 로컬에서 나만의 독립된 소형 AI 데이터센터를 소유할 수 있다는 사실이 온몸으로 체감되는 프로젝트였습니다.

M4 Max 칩셋의 강력한 전성비와 메모리 아키텍처, 그리고 Apple 개발진들이 칼을 갈고 만든 JACCL 라이브러리의 파괴력을 제대로 맛보았네요. 다음번에는 추론을 넘어 LoRA 분산 파인튜닝(Fine-Tuning) 학습까지 도전해 보고 그 결과를 공유하겠습니다. 궁금한 점이 있으시다면 댓글로 편하게 남겨주세요!


맥 두대 장비값만 천만원이 넘어간다는 사실... ㅡㅡ;

댓글 없음:

댓글 쓰기

SK하이닉스 ADR 상장 이후 한국 증시 급락의 원인 분석

분류: 증시분석 SK하이닉스 ADR 상장 이후 한국 증시 급락의 원인 분석 지난 7월 10일, SK하이닉스가 미국 나스닥에 미국주식예탁증서(ADR)를 상장했다. 공모가 149달러로 상장한 하이닉스 ADR은 첫 거래일인 13일 기준 약 168달...