최근 맥북프로 M5 Max 제품을 구매하게 되면서
(사실 m4 max 128gb로 주문했는데 아시죠 애플에서 업그레이드 해준거 뉴스 참조 https://v.daum.net/v/20260307060232887 )
요즘 로컬에서 거대 언어 모델(LLM)을 돌려보는 재미에 푹 빠져있습니다. 제 메인 장비는 128GB 램을 탑재한 M5 Max 맥북이고, 서브로 32GB 램의 M1 Max 맥북을 가지고 있는데요.
문득 이런 생각이 들었습니다. “이 두 대의 맥북 램을 하나로 합치면 총 160GB인데, 이걸로 기업급 거대 모델(Llama 3 70B 이상)을 돌릴 수 있지 않을까?”
결론부터 말씀드리면, 애플 실리콘과 썬더볼트 4, 그리고 오픈소스 프레임워크인 Exo를 이용해 완벽하게 성공했습니다. 하지만 그 과정에서 만난 macOS의 악명 높은 컴파일러 에러와 네트워크 충돌 등 험난했던 삽질의 기록과 완벽한 해결책을 공유합니다.
🛠️ 1단계: 하드웨어 연결 및 네트워크 세팅
두 맥북을 하나로 묶으려면 데이터가 빛의 속도로 오가야 합니다. Wi-Fi로는 절대 불가능하고, 썬더볼트 4 케이블(40Gbps) 로 두 기기를 직접 연결해야 합니다.
- 물리적 연결: M5 Max와 M1 Max를 썬더볼트 4 케이블로 직접 연결합니다.
- Thunderbolt 브리지 활성화:
- 양쪽 맥북 모두
시스템 설정>네트워크로 이동하여 **’Thunderbolt Bridge’**를 활성화합니다.
- 양쪽 맥북 모두
- 고정 IP 할당 (핵심):
- 메인 맥북(M5): TCP/IP 설정에서 IPv4를 ‘수동’으로 변경하고 IP 주소를
10.0.0.1, 서브넷 마스크를255.255.255.0으로 설정합니다. - 서브 맥북(M1): 동일하게 진입하여 IP 주소를
10.0.0.2로 설정합니다.
- 메인 맥북(M5): TCP/IP 설정에서 IPv4를 ‘수동’으로 변경하고 IP 주소를
- 서비스 순서 변경: 트래픽이 느린 Wi-Fi로 새어나가지 않도록, 네트워크 서비스 순서에서 Thunderbolt Bridge를 맨 위로 올려줍니다.
💥 2단계: 끝없는 에러, 그리고 Exo 설치 (Xcode 컴파일러 버그 해결)
Exo는 파이썬 기반으로 작동하며, 애플의 MLX 프레임워크를 직접 빌드합니다. 여기서 대부분의 Mac 유저들이 Metal 컴파일러 에러를 만나게 됩니다.
제가 겪었던 에러는 cannot execute tool 'metal' due to missing Metal Toolchain 이었습니다. 하라는 대로 툴체인을 다운받아도 경로가 꼬여서 계속 실패하더군요. 이 악명 높은 애플 버그를 단번에 뚫는 방법입니다.
양쪽 맥북 터미널에서 다음 명령어들을 순서대로 실행하세요.
Bash
# 1. 꼬여버린 Xcode 경로 초기화
sudo xcode-select -r
# 2. Command Line Tools 재설치 (팝업창이 뜨면 반드시 '설치' 클릭)
xcode-select --install
# 3. 올바른 경로 수동 지정
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
# 4. 컴파일러 정상 작동 확인 (아래 명령어를 쳤을 때 'no input files'라고 뜨면 성공!)
xcrun metal
컴파일러가 고쳐졌다면, 최신 파이썬 패키지 매니저인 uv를 통해 Exo를 설치하고 실행합니다.
Bash
# uv 설치 (Homebrew 이용)
brew install uv
# Exo 실행
uv run exo
👻 3단계: 내 128GB 램이 0B로 뜬다고?! (Macmon 버그 해결)
드디어 uv run exo가 성공해서 http://localhost:52415 대시보드에 접속했는데… 이게 웬일? 내 소중한 128GB 램이 0B / 0GB로 뜨는 겁니다.
이건 Exo가 하드웨어 센서 정보를 읽어오기 위해 사용하는 macmon이라는 모듈이 권한 문제나 칩셋 호환성 문제로 뻗어버려서 발생하는 현상입니다.
(m5 max 맥북 프로 16인치 제품이 새로운 제품이라 그런거인지 동작이 안되었네요.)
해결책은 아주 간단합니다. 원흉을 지워버리고 관리자 권한으로 켜면 됩니다.
- 실행 중인 Exo 터미널 창을
Ctrl + C로 종료합니다. - 양쪽 맥북에서
macmon을 삭제합니다.Bashbrew uninstall macmon - **관리자 권한(sudo)**으로 캐시를 비우고 다시 실행합니다.Bash
uv cache clean sudo uv run exo
이제 대시보드에 두 대의 맥북이 나란히 연결된 모습과 함께 **160GB(128GB + 32GB)**의 영롱한 메모리 풀이 나타납니다!
💡 꿀팁: RDMA 및 네트워크 사이클 경고 무시하기 대시보드에 썬더볼트 브리지 사이클(Cycle) 경고나 RDMA(썬더볼트 5 전용) 경고가 노란색으로 뜰 수 있습니다. M1 Max는 썬더볼트 4 규격이라 RDMA를 지원하지 않으므로, 이 경고창들은 가볍게
X를 눌러 무시해 주시면 됩니다. (썬더볼트 4 대역폭만으로도 통신은 충분히 빠릅니다!)(두 기기 모두 썬더볼트5를 지원하는 기기라면 꼭 키십쇼)
실행 화면
m5 max
![[로컬llm, 로컬 AI] 맥북 M5 Max(128GB) + M1 Max(32GB) 영혼 끌어모아 Exo 클러스터 구축하기 (총 160GB 램!) 1 Screenshot 2026 03 17 at 12.46.16 PM scaled](https://jrdrew.xyz/wp-content/uploads/Screenshot-2026-03-17-at-12.46.16 PM-scaled.png)
m1 max에서의 화면
![[로컬llm, 로컬 AI] 맥북 M5 Max(128GB) + M1 Max(32GB) 영혼 끌어모아 Exo 클러스터 구축하기 (총 160GB 램!) 2 Screenshot 2026 03 17 at 12.46.20 scaled](https://jrdrew.xyz/wp-content/uploads/Screenshot-2026-03-17-at-12.46.20-scaled.png)
모델은 코딩에 좋다는 MiniMax M2.5 4비트 양자화 된 mlx모델로 돌려 보았습니다.
(m5 max 128기가 단일로는 안돌아가더라고요 근데 m1 max까지 연결하니 잘돌아갑니다)
🚀 4단계: VS Code (Roo Code) 연동하여 코딩 비서로 활용하기
단순히 모델을 띄우는 것에서 끝나면 아쉽겠죠? 저는 이 거대한 160GB 로컬 클러스터를 **VS Code의 AI 코딩 어시스턴트(Roo Code, 구 Cline)**에 연결했습니다.
Exo는 대시보드가 켜지는 순간, 백그라운드에서 OpenAI 호환 API 서버를 자동으로 열어줍니다.
[VS Code 연동 설정법]
- API Provider:
OpenAI Compatible - Base URL:
http://localhost:52415/v1(반드시 끝에 /v1을 붙여야 합니다) - API Key:
exo(아무 글자나 넣어도 무방) - Model ID:
qwen2.5-coder-32b-instruct또는llama-3.3-70b-instruct
대시보드에서 70B급 코딩 특화 모델을 ‘Run’ 한 뒤, VS Code에서 코딩을 지시해 보세요. 메인 맥북과 서브 맥북이 썬더볼트를 타고 메모리와 연산을 분산하며 미친 듯이 코드를 짜주는 마법을 경험할 수 있습니다!
🎯 마무리
128GB와 32GB, 서로 다른 두 대의 애플 실리콘 맥북을 썬더볼트로 묶어 160GB의 거대한 단일 AI 서버를 만들어 보았습니다.
중간에 macOS의 보안 및 컴파일러 문제로 삽질을 좀 했지만, 세팅을 끝내고 나니 API 비용 걱정 없이 오프라인에서 최고 수준의 거대 모델을 마음껏 쓸 수 있다는 점이 너무나도 매력적입니다.
책상 서랍에 잠자고 있는 구형 애플 실리콘 맥북이 있다면, 메인 장비와 썬더볼트로 연결해 여러분만의 로컬 AI 슈퍼컴퓨터를 구축해 보시길 강력히 추천합니다!