본문 바로가기 대메뉴 바로가기

테크니컬 스토리

아이티마야의 새로운 기술 뉴스를 만나보세요.
Docker swarm으로 mlflow를 쉽게 구성해 보자.
등록일
2024.01.02
첨부파일
docker swarm 구성 장점.
Docker swarm으로 mlflow를 쉽게 구성해 보자.
  • Mlflow의 주요 특징 및 용어
  • MLflow는 오픈 소스 머신 러닝 라이프사이클 관리 도구로, 모델 훈련, 추적, 협업, 그리고 모델 배포를 간단하게 관리할 수 있게 해 줍니다. MLflow는 모델 훈련 코드, 파라미터, 메트릭, 모델 아티팩트 등을 추적하며, 실험과 버전을 관리합니다.
  • 1.Tracking:모델 훈련의 메트릭, 파라미터 등을 추적하고, 여러 실험을 생성하고 비교할 수 있는 기능을 제공합니다.
  • 2.Projects:모델 코드를 패키징하고 다양한 환경에서 쉽게 재현할 수 있도록 하는 프로젝트 관리 기능이 있습니다.
  • 3.Registry:모델 버전을 추적하고 모델 레지스트리에서 모델을 저장, 검색, 배포할 수 있습니다.
  • 4.Flavors:모델 아티팩트를 저장하고 로드하는 다양한 형식과 환경에 대한 지원을 제공합니다.
  • [Docker Swarm을 사용하여 MLflow를 구성했을 때 장점]
  • 1.쉬운 배포:Docker Swarm은 Docker의 일부로 제공되며, 단일 명령어로 클러스터를 설정하고 서비스를 배포할 수 있습니다. 초기 구성이 상대적으로 간단하며, 단일 호스트에서 멀티노드 클러스터까지 쉽게 확장할 수 있습니다.
  • 2.통합성:Docker Swarm은 Docker 컨테이너 기반으로 동작하기 때문에 기존에 Docker를 사용하는 환경에서 쉽게 도입할 수 있습니다. 도커 컨테이너는 환경에 관계없이 일관되게 동작합니다.
  • 3.클러스터 관리:Docker Swarm은 클러스터 관리를 위한 간단한 명령어를 제공하며, 클러스터에서 서비스를 확장하고 관리하기가 상대적으로 쉽습니다.
  • 4.역할 분리:MLflow는 모델 라이프사이클 관리에 중점을 둡니다. 따라서 각 도구가 자신의 역할을 수행하면서 역할을 분리할 수 있습니다.
  • 5.모델 훈련과 배포:MLflow는 모델 훈련 코드를 관리하고 모델 버전을 추적하며, 편리하게 모델을 관리하고 배포할 수 있습니다.
  • 6.스케일 다운 및 자동 복구:Docker Swarm은 서비스의 인스턴스 수를 쉽게 조절할 수 있습니다. 따라서 MLflow 서비스의 부하에 따라 스케일을 업 또는 다운하고 필요한 경우 자동으로 복구할 수 있습니다.
  • 결론적으로, Docker Swarm을 사용하여 MLflow를 구성하면 쉽고 빠르게 시작할 수 있으며, 간단한 환경에서는 효과적일 수 있습니다. 그러나 기능의 확장성과 더 복잡한 워크 로드를 다루기 위해서는 Kubernetes와 같은 더 강력한 오케스트레이션 도구를 고려해 볼 수 있습니다.
  • (1)Docker swarm으로 Mlflow 구성 방법

저의 구성 환경입니다.[master, node1, node2]

  • OS: Ubuntu22.04[VM]
  • CPU: 4core
  • MEMORY: 10GB
  • DISK: 50GB

1: Docker 및 Docker Swarm 설치

  • docker 설치
  • # sudo apt update
  • # sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  • # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • # sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
  • # sudo apt update
  • # apt-cache policy docker-ce
  • # sudo apt install docker-ce
  • # sudo systemctl status docker
  • docker-compose 설치
  • # sudo apt-get install jq
  • # VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
  • DESTINATION=/usr/bin/docker-compose
  • # sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
  • # sudo chmod 755 $DESTINATION
  • # which docker-compose
  • # sudo apt install docker-compose
  • Docker Swarm 초기화 (마스터 노드에서만 실행)
  • # sudo docker swarm init
  • 나머지 노드 Join
  • docker swarm join --token SWMTKN-1-2c7c3b4ph7mgqo6ewwl867qqvz5m7asc0jx5mxm0awa5cojxbs-2j9llq4ti57vlqvfeb6eqo0gv 192.168.0.111:2377
  • node확인 방법 [마스터 노드에서 확인 가능합니다]
  • # sudo docker node ls

아래 이미지와 같이 나온다면 완료 입니다.

2. MLflow 서비스 생성:

  • MLflow Docker 이미지 가져오기
  • - docker file을 아래와 같이 작성하여 이미지를 빌드해 줍니다.
  • # sudo mkdir docker
  • # cd docker
  • # sudo vi Dockerfile
  • FROM python:3.8
  • RUN pip install mlflow
  • EXPOSE 5000
  • CMD ["mlflow", "ui", "--host", "0.0.0.0"]
  • # sudo docker build -t mlflow-server:latest .
  • MLflow 서비스 생성
  • # sudo vi mllfow-stack.yml
  • version: \'3.8\'
  • services:
  • mlflow:
  • image: mlflow-server:latest
  • deploy:
  • replicas: 1
  • ports:
  • - "5000:5000"
  • volumes:
  • - mlflow-data:/mlflow
  • volumes:
  • mlflow-data:
  • MLflow 실행
  • # sudo docker stack deploy -c mlflow-stack.yml flow-stack
  • MLflow 확인방법
  • # sudo docker stack list
  • AME SERVICES
  • flow-stack 1
  • # sudo docker stack ps flow-stack
  • ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
  • tqfyevzwdpww flow-stack_mlflow.1 mlflow-server:latest master Running Running 37 seconds ago
  • 이제 mlflow는 Docker Swarm에서 실행 중입니다. 웹 브라우저에서 http://<노드-IP>:5000로 이동하여 MLflow 웹 UI에 액세스할 수 있습니다.
PLEASE WAIT WHILE LOADING...