[mlflow] 2. mlflow docker

Sun·2024년 4월 28일

mlops

목록 보기
2/3

1편에 이어서 mlflow를 gcp에 셋업을 해보겠습니다.
1편에서 멈췄던 이유는 gcp 상에서 자원들을 생성했지만, 정작 mlflow 앱은 구현이 안되었기 때문입니다.

mlflow 프로젝트 로컬환경에 구현

찾아보니 해당 페이지 프로젝트를 구현한 github repository를 발견했습니다. 그리하여 해당 레포의 내용을 일단 로컬환경에 완전히 똑같이 구현했습니다. 이유는 저의 이번 목표는 mlflow 앱을 gcp상에 구현하는 것이지, mlflow 내용물들을 잘 작성하는 것이 아니기 때문입니다.

레포 이미지

위 깃헙 레포지토리 주소

  • 아래와 같이 해당 레포지토리의 내용을 거의 똑같이 구성했습니다. 다만 Makefile은 안넣고, 나머지 requirements는 제 로컬 venv에 있는 내용을 가져왔습니다.

Container Registry(Artifact Registry)

  • 먼저 gcp에 artifact registry에 가서 레포지토리를 생성해줘야합니다.
    레포지토리 생성

  • 간단하게 이름하고 리전 정도만 설정해줍니다. 아래 구글 문서가 잘되어있으니 한번 참조해보세요.
    레지스트리 레포지토리 생성 구글 문서

  • 자 여기에다가 이미지를 푸쉬할겁니다.
    레포지토리

  • 그럼 다시 로컬 환경으로 돌아가서 맨 처음 문서의 내용으로 돌아갑니다. 아래의 커맨드를 차례로 실행하면 됩니다.

export GCP_PROJECT=my_project_id
gcloud auth configure-docker
docker build -t mlflow-gcp:latest .
# 수정 2024-05-04 맥북 m1 이상인 경우 아래 커멘드 사용
docker build --platform linux/amd64 -t mlflow-gcp:latest .
  • 해당 과정 중 도커 이미지 빌드 과정에서 저는 로컬에서 파이썬 3.10으로 작업했기에 몇몇 dependency들이 버전이 안맞아 설치가 안되어 dockerfile 안에 파이썬 이미지를 python:3.9-slim 으로 바꾸어 해결해주었습니다.
  • 그리하여 아래와 같이 도커이미지가 빌드 되었습니다.

도커이미지 빌드

  • 또한 이미지 tag을 바꿔주라는데 첨엔 왜그런지 몰랐는데, gcp artifact registry에 푸쉬할때 아래 형식으로 바꾸어줘야 함을 알았네요.
docker tag mlflow-gcp:latest asia-northeast3-docker.pkg.dev/project_id/name_of_repository/image_name:tag

artifact registry push and pull image 구글 문서

  • 그다음에 이미지를 푸쉬를 해줍니다.
docker push asia-northeast3-docker.pkg.dev/project_id/name_of_repository/mlflow-gcp:latest

에러메세지

  • 앗 오류가 났습니다. 인증을 해줘야한다고 하네요.
  • push and pull image 구글문서에서 하라는 대로 authenticate 하는 방법중 맨 첨 방법을 선택합니다.
    인증
  • 그러면 아래와 같이 정상적으로 푸쉬가 되어 레포지토리에 이미지가 올라간 걸 확인할 수 있습니다.

이미지 푸쉬 성공

포스트를 마치며

  • 도커로 이미지 빌드하고 레지스트리에 올리는 과정이 상당히 어려운 과정이었습니다. 구글 문서 보고 하나하나 해결해 나가다 보니 다행히도 레지스트리에 올릴수는 있었습니다.
  • 역시 도커는 어렵다고 생각되며, 그래도 docker compose를 사용하여 다른 db나 storage를 구성하지는 않기에 그렇게 힘든 과정은 아니었던것 같습니다.

다음시간에는 cloud run으로 앱을 배포하는 내용으로 돌아오겠습니다.
부족한 글 읽어주셔서 감사합니다.

0개의 댓글