m1 맥미니로 deepseek 구동시키기
M1 Mac 여러 대를 썬더볼트 케이블을 이용해 클러스터로 구성하고 딥시크(DeepSeek)를 구동하는 방법을 설명해 줄게.
1. 썬더볼트를 이용한 M1 Mac 클러스터 개념
M1 Mac은 일반적인 x86 서버와 달리 본격적인 클러스터링 기능을 제공하지 않지만, 썬더볼트 3/4 포트를 활용한 고속 네트워킹이 가능해 MPI(Multi-Processing Interface) 기반의 분산 학습을 수행할 수 있어.
썬더볼트를 이용한 클러스터 연결 방식:
• Thunderbolt-to-Ethernet 브릿지: 썬더볼트 케이블을 이용해 각 M1 Mac을 연결하고, macOS의 네트워크 설정에서 Ethernet Bridge를 통해 하나의 네트워크로 묶을 수 있음.
• IP-over-Thunderbolt: macOS에서는 Thunderbolt Bridge를 사용하여 고속 네트워크 연결이 가능하며, 일반적인 TCP/IP 네트워크처럼 활용할 수 있음.
2. 클러스터 구성 방법
(1) 하드웨어 준비
• M1 Mac 여러 대 (최소 2대 이상)
• Thunderbolt 3/4 케이블 (각 기기를 연결할 수 있도록 충분한 개수)
• 네트워크 라우터 또는 하나의 메인 Mac을 통한 브릿지 설정
(2) Thunderbolt 네트워크 구성
1. Thunderbolt 케이블로 모든 Mac을 연결
• 한 대의 Mac을 중심으로 데이지 체인 방식으로 연결
• 또는 모든 기기를 하나의 Thunderbolt Dock에 연결
2. IP-over-Thunderbolt 활성화
• 각 Mac에서 **“시스템 설정” → “네트워크”**로 이동
• “Thunderbolt Bridge” 네트워크 인터페이스 추가
• 각 Mac에 고정 IP(예: 192.168.10.x 대역) 설정
3. SSH 연결 테스트
• 클러스터를 구성하려면 각 Mac이 서로 SSH로 접근할 수 있어야 함
• ssh-keygen을 이용해 SSH 키를 생성하고 노드 간 암호 없이 SSH 접속이 가능하도록 설정
3. 소프트웨어 설정
딥러닝 모델인 DeepSeek을 구동하려면 분산 학습을 위한 설정이 필요함.
(1) Python 환경 및 PyTorch 설치
• brew install python
• pip install torch torchvision torchaudio
• M1에서 최적화된 PyTorch를 설치 (pip install torch –pre torch torchvision torchaudio –index-url https://download.pytorch.org/whl/nightly/cpu)
(2) DeepSeek 모델 다운로드 및 실행
DeepSeek 모델을 사용하려면 Hugging Face 모델을 가져와야 함:git clone https://github.com/DeepSeek-AI/DeepSeek-LLM.git cd DeepSeek-LLM pip install -r requirements.txt
(모델 체크포인트 다운로드 필요)
(3) MPI(Multi-Processing Interface) 설정
M1 Mac 클러스터에서는 OpenMPI 또는 Ray를 사용할 수 있음.brew install open-mpi
MPI 실행 예제:mpirun -np 4 --hostfile hosts.txt python train.py
혹은 Ray 사용:pip install ray ray start --head
각 워커 노드에서:ray start --address=192.168.10.1:6379
4. 최적화 및 관리
1. 로드 밸런싱: mpirun을 사용할 경우 프로세스 분배를 조절해야 함
2. 메모리 공유: M1 Mac은 RAM이 통합되어 있어 대규모 모델 학습 시 적절한 메모리 관리 필요
3. Docker 활용 가능: Apple Silicon용 Docker 컨테이너를 사용하여 배포 가능 (docker pull deepseek/llm)
5. 결론
썬더볼트 기반 네트워크를 통해 M1 Mac 클러스터를 구성하면, 고속 데이터 전송을 활용해 분산 학습이 가능함. 하지만 GPU 가속이 어려우므로 CPU 기반 최적화가 필요하며, OpenMPI 또는 Ray를 활용하여 딥러닝 워크로드를 효율적으로 분산해야 함.