LLama 2 모델 로컬 실행기: M 시리즈 Mac과 Docker로 구현하는 AI 실험실


최근 메타(Meta)에서 공개한 LLaMA 2 모델은 오픈소스 생태계에 매우 강력한 기회를 제공하고 있습니다. 특히 개인이나 스타트업 개발자도 로컬 환경에서 고성능 언어 모델을 활용할 수 있게 되면서, 머신러닝 실험실을 손쉽게 구성할 수 있는 시대가 열렸다고 볼 수 있습니다. 본 글에서는 MacOS, 특히 M1/M2 칩 기반의 Apple Silicon 환경에서 LLaMA 2 모델을 Docker를 활용하여 실행하는 과정을 전문가 관점에서 상세히 소개합니다.

환경적 제약과 그 대응 전략

MacOS는 NVIDIA GPU를 지원하지 않기 때문에 분산 학습에 주로 사용되는 NCCL 백엔드는 기본적으로 사용할 수 없습니다. 그러나 PyTorch는 Gloo라는 CPU 기반 통신 백엔드를 제공하며, 이 덕분에 Docker 기반으로도 CPU 단일 노드에서 LLama 모델을 테스트할 수 있습니다.

여기서 중요한 점은 모델을 반드시 병렬 학습하지 않더라도 충분히 로컬에서 실행 가능하다는 것입니다. 특히 초기 실험 단계에서는 추론 성능 위주의 테스트만으로도 모델의 활용 가능성을 가늠할 수 있습니다.

환경 구성: Docker 기반 경량 환경 빌드

Apple Silicon 기반의 Mac에서 일반적인 amd64 Docker 이미지를 사용하는 것은 호환성 문제를 일으킬 수 있습니다. 따라서 arm64 기반의 Docker 이미지를 직접 빌드하는 방식을 추천합니다. Python 3.9 slim 이미지를 베이스로 하여 PyTorch와 관련된 패키지를 설치하고, /workspace를 작업 디렉토리로 설정하는 Dockerfile은 다음과 같은 구조로 설계할 수 있습니다.

FROM python:3.9-slim

RUN apt-get update && apt-get install -y \
    build-essential \
    cmake \
    git && \
    pip install --upgrade pip && \
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

WORKDIR /workspace
CMD ["/bin/bash"]

이렇게 구성된 이미지를 빌드하고 실행하면, 로컬에서 LLama 모델과 tokenizer 파일, 실행 스크립트를 동일한 디렉토리에 두고 컨테이너 내부에서 작업할 수 있습니다.

LLama 실행 중 발생 가능한 오류와 해결 전략

실제 모델을 실행하면서 가장 먼저 맞닥뜨리는 문제는 ModuleNotFoundError: No module named 'fire'와 같은 의존성 오류입니다. 이는 Python CLI 프레임워크인 fire가 설치되지 않아서 생기는 문제이며, 단순히 pip install fire로 해결할 수 있습니다. 하지만 그 뒤를 잇는 에러들은 조금 더 복잡합니다.

예를 들어 다음과 같은 에러는 분산처리를 전제로 코드를 실행했기 때문에 발생하는 경우입니다.

RuntimeError: Distributed package doesn't have NCCL built in

이 오류는 PyTorch가 NCCL 백엔드를 사용하려 시도했기 때문에 발생하는데, 앞서 말했듯 Mac에서는 지원되지 않으므로 코드 레벨에서 init_process_group("nccl")init_process_group("gloo")로 바꾸거나, 더 근본적으로는 분산 설정을 비활성화해야 합니다.

추가로, ValueError: environment variable RANK expected, but not set 와 같은 에러는 torch.distributed가 환경 변수 설정을 필요로 하기 때문입니다. 만약 분산 환경이 아닌 단일 노드에서 실행한다면, 다음과 같은 환경 변수를 Docker 실행 시 함께 지정해주는 것이 좋습니다.

-e RANK=0 -e WORLD_SIZE=1 -e MASTER_ADDR=localhost -e MASTER_PORT=12355

이렇게 설정하고 나면 대부분의 분산 초기화 관련 문제는 사라집니다.

실행 성공을 위한 실전 팁

  1. 환경 일치 확인: pip install로 설치한 패키지와 torchrun이 사용하는 Python 인터프리터가 일치해야 합니다. Docker 내에서는 반드시 같은 경로의 Python 환경을 사용하도록 주의해야 합니다.
  2. 모델과 토크나이저 경로 정확하게 지정: 파일 경로가 /workspace/ 내에 있는지, 실제 존재하는지 실행 전에 ls 명령어로 반드시 확인합니다.
  3. 최소 설정 실행: 초기 실험 단계에서는 torchrun 없이 python example_text_completion.py 형식으로 실행해도 무방하며, 이때도 max_seq_len이나 max_batch_size를 작게 설정해 리소스 사용량을 조절하는 것이 좋습니다.
  4. 실행 시간 고려: 로컬 CPU에서 실행하는 경우 추론 속도가 매우 느릴 수 있습니다. 이는 정상이며, 성능 측정보다는 기능 구현 검증에 집중해야 합니다.

마무리

LLaMA 모델을 Apple Silicon 기반 로컬 환경에서 실행하는 것은 처음에는 진입 장벽이 높아 보이지만, 한 단계씩 문제를 해결해 나가면 충분히 실현 가능합니다. 오히려 이러한 과정 자체가 모델 구조, 실행 환경, 분산 처리 메커니즘을 이해하는 좋은 기회가 됩니다.

AI 실험은 이제 클라우드에서만 이루어지는 시대를 지나, 누구나 자기 노트북에서 직접 실험해볼 수 있는 시대로 진입하고 있습니다. 여러분의 맥북도 강력한 언어 모델 연구의 출발점이 될 수 있습니다.

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다