Skip to main content

Kubeflow MIG 인스턴스로 병렬 학습 모델 구현

카카오클라우드 Kubeflow MIG(Multi-Instance GPU) 인스턴스와 Training Operator를 활용한 병렬 학습 모델 구현 방식을 소개합니다.

기본 정보

시작하기 전에

이 튜토리얼은 MIG(Multi-Instance GPU) 설정을 통해 다수의 GPU 자원을 활용하여 Kubeflow 노트북과 파이프라인에서 병렬 학습 모델을 구현하는 방법을 안내합니다. 이 과정을 통해 사용자는 효율적인 리소스 관리와 더 빠른 학습 시간을 경험할 수 있으며, 병렬 처리를 통한 모델 학습 방법을 학습할 수 있습니다.

시나리오 소개

이 시나리오는 Fashion MNIST 데이터셋을 사용하여, Kubeflow 환경에서 MIG 기능Training Operator를 활용한 병렬 학습 모델 구현 프로세스를 단계별로 설명합니다. 이 시나리오의 주요 내용은 다음과 같습니다.

  • MIG 설정을 통한 GPU 자원 최적화
  • Kubeflow에서 Training Operator를 사용한 분산 학습 환경 구성
  • Fashion MNIST 데이터셋을 활용한 예측 모델 학습
  • 모델 학습의 효율성 향상과 리소스 관리

지원 도구

도구버전설명지원 프레임워크
Training Operatorv1-e1434f6- 모델 학습 도구로 다양한 딥러닝 프레임워크에 대한 분산 학습 지원
- 복수 GPU 자원에 대한 빠른 모델 학습 제공
- TensorFlow
- PyTorch
- Apache MXNet
- XGBoost
- Message passing interface(MPI)
안내

Training Operators에 대한 자세한 설명은 Kubeflow > Training Operators 공식 문서를 확인해 주세요.

사전 작업

1. 학습 데이터 준비

본 실습은 Fashion MNIST 데이터세트를 활용합니다. 이는 컴퓨터 비전 분야에서 새로운 알고리즘을 시험하는 데 일반적으로 사용되는 벤치마크 데이터셋 중 하나로, MNIST와 유사하지만 Fashion MNIST는 의류 카테고리(운동화, 셔츠, 샌들 등)에 속하는 작은 이미지로 구성됩니다. 데이터셋은 10개의 카테고리와 70,000개의 28x28 픽셀 회색조 이미지로 이루어져 있으며, 실습을 진행하면서 자동으로 다운로드 받게 됩니다.

이미지. Fashion MNIST 데이터세트 Fashion MNIST 데이터세트

2. Kubeflow 환경 준비

Kubeflow에서 Training Operator를 사용하기 전에, 실습에 적합한 MIG 설정과 노드 풀 사양을 확인합니다. Kubeflow 환경이 준비되지 않았다면, Kubeflow를 이용한 Jupyter Notebook 환경 구성 문서를 참고하여 GPU 파이프라인 노드풀이 설정된 Kubeflow 환경을 생성하세요.

필요 최소 사양

  • 노드 풀 최소 사양: vCPU 4개 이상, Memory 8GB 이상
  • MIG 설정 최소 사양: 1g.10gb 인스턴스 3대 이상
  • GPU 파이프라인 노드풀 설정

작업 순서

Kubeflow를 활용한 병렬 학습 모델을 구현하는 구체적인 실습 단계는 다음과 같습니다.

Step 1. 실습을 위한 노트북 생성하기

안내
  • 노트북 생성하기에 대한 자세한 설명은 노트북 사용 문서를 확인해 주세요.
  • 해당 실습은 노트북 자원 내에서 학습을 수행하지 않고, 클라이언트 요청을 통해 Training Job을 수행하기 때문에 CPU 이미지 기반의 노트북을 사용합니다.
  • 노트북 사용의 목적에 따라 CPU 또는 GPU 이미지 기반의 노트북을 생성하시기 바랍니다.

이 시나리오는 모델 학습에 CPU 인스턴스 유형을 사용하는 예시입니다.

  1. Kubeflow 대시보드에 접속하여 Notebooks 탭을 클릭한 후, [New Notebook] 버튼을 클릭합니다.

  2. New Notebook 화면에서 필요한 정보를 입력하고 [LAUNCH] 버튼을 클릭하여 CPU 이미지 기반의 노트북 인스턴스를 생성합니다.

    caution

    Requested CPUsRequested memory in Gi의 값은 Affinity Config에서 선택한 노드 풀의 vCPU(개)와 Memory(GB)보다 작아야 합니다.

    항목구분설명
    NameNameKubeflow 대시보드에서 노트북 인스턴스 식별에 사용
    Namespace노트북 인스턴스를 생성할 Kubernetes 네임스페이스
    Docker ImageImagemlops-pipelines/jupyter-pyspark-pytorch:v1.0.1.py36
    - Docker 이미지 지정
    CPU / RAMRequested CPUs2
    - CPU 코어의 수이며, 노트북 인스턴스가 사용할 CPU 자원의 양 지정
    Requested memory in Gi6
    - 메모리 자원의 단위(GiB)이며 노트북 인스턴스가 사용할 메모리 자원의 양 지정
    GPUsNumber of GPUsNone
    - 노트북 인스턴스에서 사용할 GPU 자원
    Affinity / TolerationsAffinity Config노트북이 생성될 CPU 노드 풀 선택
    - 노트북 인스턴스 실행할 노드 지정
    Tolerations GroupNone
    - 특정 노드의 테인트(taint) 허용 설정

    이미지. CPU 이미지 기반의 노트북 생성하기 CPU 이미지 기반의 노트북 생성하기

Step 2. Fashion MNIST 분류 모델을 위한 TrainingJob 생성하기

Kubeflow의 Training Operator를 활용하여 Fashion MNIST 데이터셋 기반의 분류 모델 학습을 위한 TrainingJob을 생성합니다. TrainingJob을 사용하여 Fashion MNIST 데이터셋으로 모델 학습을 수행합니다.

  1. 실습을 위한 fashionmnist_pytorch_parallel_train_with_tj.ipynb 데이터를 다운로드합니다.

  2. 다운로드 후 생성한 노트북 인스턴스에 접속하여 파일을 브라우저에 업로드합니다.

    이미지. 주피터 노트북 콘솔에 파일 브라우저 업로드하기 주피터 노트북 콘솔에 파일 브라우저 업로드하기

  3. 업로드가 완료되면 우측 화면 영역에 실습 내용을 확인할 수 있습니다.

    이미지. 예제 파일 업로드 완료 예제 파일 업로드 완료

  4. 예제 내용을 확인하고 모델 학습을 실습합니다.

Step 3. MIG 인스턴스 현황 확인하기

카카오클라우드 콘솔을 통해 MIG 인스턴스의 사용 현황을 확인합니다. 병렬 학습 작업으로 인한 GPU 자원 분배와 사용량을 모니터링하며, 자원 활용의 효율성을 검토합니다.

  1. 카카오클라우드 콘솔에서 Kubeflow 메뉴를 선택합니다.

  2. Kubeflow 탭에서 정보를 확인할 Kubeflow를 선택합니다.

  3. GPU 현황 탭에서 실습에 활용한 MIG 인스턴스가 사용중인 현황을 확인합니다.

    이미지. GPU 현황 탭 GPU 현황 탭