Ollama 모델을 Fly Machines 간 공유하는 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

- DevOps 엔지니어, AI 앱 개발자, 클라우드 인프라 관리자

- 난이도: 중간~고급 (Docker, Fly.io, JuiceFS, Tigris 사용 경험 필요)

핵심 요약

  • JuiceFS + Tigris를 통해 Fly Machines 간 모델 공유 가능
  • fly.toml 수정과 Dockerfile 재구성으로 데이터 볼륨 지속성 확보
  • juicefs formatmount 명령어로 메타데이터/데이터 저장소 연동
  • 모델 다운로드 시간 단축 및 Ollama 레지스트리의 제한 회피

섹션별 세부 요약

1. Fly.io에서 Ollama 배포 준비

  • GPU 가속을 위한 a100-40gb VM 크기 설정
  • fly.tomlmounts 섹션 추가: ~/.ollama 디렉토리 볼륨 지속성 확보
  • fly ips release 명령어로 API 접근 제한 (private network만 허용)

2. JuiceFS 및 Tigris 설정

  • 메타데이터 DB: Supabase Postgres, 데이터 저장소: Tigris 사용
  • fly ext supabase createstorage create 명령어로 외부 서비스 연결
  • AWS S3 엔드포인트 URL, 액세스 키 등 환경 변수 설정

3. Docker 이미지 재구성

  • 기존 [build] 섹션 삭제 후 ollama/ollama:latest 이미지 사용
  • juicefs_cache 볼륨 마운트 경로 변경: /var/jfsCache
  • Dockerfile에 JuiceFS 설치 및 setup.sh 스크립트 추가

4. `setup.sh` 스크립트 동작 방식

  • juicefs format 명령어로 메타데이터/데이터 저장소 초기화
  • juicefs mount/root/.ollama에 저장소 마운트 (I/O 성능 최적화)
  • ollama serve 명령어로 Ollama 서버 실행

결론

  • JuiceFS + Tigris 조합으로 Fly Machines 간 모델 공유 성공
  • 모델 다운로드 시간 감소 및 Ollama 레지스트리의 대역폭 제한 회피 가능
  • fly deploy 실행 후 fly vol delete로 불필요한 볼륨 정리 권장