1. 로컬환경의 K8s에 Kubeflow와 MLflow 설치 - Kubeflow와 MLflow

2024. 2. 25. 23:51·MLOps

먼저 Kubeflow는 이름에서도 유추할 수 있듯이 쿠버네티스 환경에서 동작하는 ML Platform이다. 쿠버네티스 환경이 필요하다. 로컬에 구축한 뒤 Kubeflow와 MLFlow를 설치해 보자.

1. 로컬 환경에 Kubernetes 설치

이를 위한 단계가 정말 간단한데, Docker Desktop을 설치하고 Kubernetes를 활성화해주면 된다.

  • Mac 환경에 설치
  • Windows 환경에 설치

실행한 뒤 아래와 같은 단계만 수행하면 된다.

  • 설정 -> Kubernetes -> Enable Kubernetes -> Apply & restart

    왼쪽 아래에 쿠버네티스 이모지와 함께 초록색으로 표시되면 성공적으로 설치된 것이다.

2. Kubeflow 설치

먼저, Kubeflow를 설치하기 위해선 다음과 같은 리소스가 필요하다.

  • 최소 8GB의 RAM
  • 4개 이상의 vCPU
    쿠버네티스에 설치할 것이기 때문에 Docker-Destkop에서 Resources 설정을 해줘야 한다.

    여유가 되는 만큼 설정하자. 최소는 조건에 충족되지 않는다면 GCP의 GKE를 무료로 구축하면 된다.

Kubeflow는 다양한 배포판이 존재한다. 그중 Kubernetes에 직접 Manifest를 배포해서 설치하고자 한다. 아래 내용은 https://github.com/kubeflow/manifests 의 내용이다.

먼저 패키지 관리자인 kubectl와 kustomize을 설치해야 한다.

brew install kubectl
brew install kustomize

이제 Kubeflow를 설치하자.

git clone https://github.com/kubeflow/manifests
cd manifests
while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done

kubeflow를 구성하는 컴포넌트가 많고 각 컴포넌트 간의 의존성도 있어서 시간이 좀 걸리는데, 5~10분 정도 기다리면 정상 설치가 될 것이다. Kubeflow UI에 접속해 보자.

kubectl port-forward svc/istio-ingressgateway -n istio-system 8888:80

이제 http://localhost:8080/ 에 들어가면 된다.

  • email: user@example.com
  • password: 12341234

3. MLflow 설치

이 포스팅의 마지막으로 MLflow를 설치해 보자.

mlflow는 기본적으로 두 가지 성격의 저장소가 필요하다

  • DB (metadata 저장)
  • Storage (Artifact 저장)

DB를 위해선 일반적으로 PostgreSQL을 사용하고, 아티팩트를 저장하기 위해 S3를 사용한다. Kubeflow는 기본적으로 저장소로 MinIO를 사용하기에 여기에 mlflow용 버킷을 만들고 사용할 수 있다.

MLFlow를 위한 Minio bucket 생성

Kubeflow를 위해 이미 설치된 minio 서비스에 접속해서 버킷을 생성하자.

kubectl port-forward -n kubeflow svc/minio-service 9000:9000

http://localhost:9000/ 에 접속한 뒤 아래 계정으로 로그인하면 된다.

  • Access Key: minio
  • Secret Key: minio123

이후 mlflow라는 이름으로 버킷을 생성하자.

mlflow를 위한 artifact 저장소가 준비되었다. 이제 postgresql이 필요한데, 이는 mlflow를 설치할 Helm 차트에서 설치를 제공해서 따로 수행하지 않으려 한다.
MLflow 설치

kubectl create ns mlflow

kubectl create -n mlflow secret generic mlflow-secret \
    --from-literal=AWS_ACCESS_KEY_ID=minio \
    --from-literal=AWS_SECRET_ACCESS_KEY='minio123'

helm repo add bitnami https://charts.bitnami.com/bitnami
helm upgrade --install mlflow bitnami/mlflow -n mlflow --version 0.10.3 \
--set minio.enabled=false \
--set externalS3.host=minio-service.kubeflow \
--set externalS3.port=9000 \
--set externalS3.existingSecret=mlflow-secret \
--set externalS3.existingSecretAccessKeyIDKey="AWS_ACCESS_KEY_ID" \
--set externalS3.existingSecretKeySecretKey="AWS_SECRET_ACCESS_KEY" \
--set externalS3.bucket="mlflow" \
--set externalS3.protocol=http

위 명령어로 설치가 잘 끝났다면 http://localhost 에 접속하고 로그인하면 아래와 같은 화면이 나와야 한다.

  • username: user
  • password: kubectl get secret --namespace mlflow mlflow-tracking -o jsonpath="{.data.admin-password }" | base64 -d

 

 

'MLOps' 카테고리의 다른 글
  • BigQueryML 튜토리얼 따라하기
  • 1.1. Kubeflow 대시보드 내에 MLFlow 임베딩하기
  • 0. 개요 - Kubeflow와 MLflow
  • MLflow로 Model LifeCycle 관리
ssuwani
ssuwani
  • ssuwani
    Oops!!
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    gcp
    mlflow
    태그2
    fluentbit
    Airflow
    consumer
    FastAPI
    Prometheus
    datadrift
    asyncronous
    Kafka
    Github Actions
    Docker
    BentoML
    redis
    LangChain
    Kubeflow
    LLM
    RDD
    태그1
    producer
    Spark
    auto tagging
    Kubernetes
    evidently ai
    Confluent Cloud
    Schema Registry
    MLOps
    Python
    topic
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssuwani
1. 로컬환경의 K8s에 Kubeflow와 MLflow 설치 - Kubeflow와 MLflow
상단으로

티스토리툴바