hardwares

mac exo cluster 구성기

cookis 2026. 5. 13. 14:31

mac에서 lmstudio 또는 ollama 등으로 '로컬' llm 을 구동할 수 있음
apple silicon 은 unified memory을 채택하고 있기 때문에, 고대역폭 메로리로 llm 구동에 조금 더 도움이 됨
lmstudio 설치 + 모델만 다운로드 하는 것으로 '손쉽게' 로컬 llm 을 구동할 수 있음 (딸-각)
로컬 llm의 연속(지속)성이 부족으로 클라우드 모델에 비해 필요성을 못느꼈지만, mac을 활용한 클러스터 구성에 흥미를 느껴 테스트 해봄

exo cluster
mac 을 한 대이상 연결해서 (Thunderbolt는 스위치가 없기 때문에 최대 4대까지 mesh 구조) 메모리를 확장, 대규모 모델을 구동할 수 있음
macos 26.2 이후에는 Thnderbolt5 (TB5) 네트워크 위에 RDMA 프로토콜이 지원되기 시작함
mac mini 또는 macbook pro 폼팩터와 관련 없이 cpu 는 pro, 일반 두 종류의 cpu가 있는데, TB5는 Pro CPU에서만 지원함
클러스터 구성을 염두했으면 반드시 Pro cpu가 필요함 (10GbE로 연결하려면 없어도 됨)
 
구성 준비 
macos 26.x+ (최신 버전),  xcode, nix, exo 이렇게 필요함
클러스터는 반드시 동일한 버전을 구성해야함을 알고 있지만, macos 26.2가 싫어서, 한 대의 버전을 Sequia (15.7)로 테스트 했다가 실패했음
사용한 기기는 맥북프로 M1 Pro 16gb , M4 24gb 2개, RMDA(TB5)를 지원하지 않기 때문에 TB4(TCP/IP) 로 연결했음
TB4 케이블을 연결하면 '네트워크' 탭에서 ip를 지정할 수 있고, 노드 간ip 통신 (ping)을 할 수 있으면 준비 완료임
TB4 케이블을 쌍으로 연결하면, 어느 한쪽이 배터리를 충전 + 나머지가 방전이 진행 되기 때문에, 별도의 전원(magsafe)연결이 필요함

구성
exo는 nix를 통해서 설치하는 것이 권장사항이고(RTFM) homebrew로 설치하려고 했다가, 같은 이름의 다른 패키지를 설치해서 혼동이 있었음
nix 및 기본 설정은 수동으로 했는데, 한 대 이상의 설정을 여러번 해야하기 때문에 mac 에서도 ansible을 이용해서 환경을 맞출 수 있음
exo를 실행하면 네트워크에 연결된 다른 node를 등록하며, 먼저 실행된 node가 마스터, 나중에 참가한 node가 Worker 노드로 구성됨
exo에서 다운로드 받을 수 있는 모델들은 apple mlx기반으로 변환 된 모델들임 (pip3 install mlx mlx-lm)
llm 모델을 모든 node에서 다운로드 하기 때문에, 시간이 node 수만큼 더 소요 됨 (노드끼리 복사하는 기능은 왜 없냐...)

테스트
16GB + 24GB 총 40GB의 크기지만, 실제로는 os 등에서 사용되는 기본 메모리 사용량 때문에, 실제는 그렇게 크지 않음
어떻게든 구동 된다고 하더라도, 대화(컨텍스트)가 길어지면 메모리 부족으로 터지는 경우도 잦음
M1 의 성능이 M4 에 비해 상대적으로 낮게 때문에, 오히려 M4 단독에 비해 성능이 떨어지는 사례도 있을 수 있음 (+TCP/IP 오버헤드)
클러스터의 구성 가능 여부 (POC) 를 목적으로 했기 때문에 성능은 보지 않았지만, 가능하면 장비도 동일하게 맞추기를 권장함
샤딩 정책이 node간 성능차이가 있었기 때문에 pipeline으로 선택(roundrobin), rdma환경에서는 tensor를 선택할 것
뭔가 실패한다거나 문제가 발생 하면 로컬 콘솔에서 오류 확인 가능(Insuffcient Memory 등)

mac
AMD AI MAX+ 395나 nVidia DGX Spark  클론 모델(GB10)들에 비해 mac 장비가 접근성이 낮은게 장점이었는데
최근에는 대용량 메모리 제품들이 단종되고 수요를 못 따라가는 현상이 생겨서, 과연 mac 제품이 경제적인가 다시 한 번 생각하데 됨 (그돈씨)

결론 및 요약
- exo 클러스터 구성하려면 TB5가 포함된 Pro 제품군을 구매할 것