Kubeflow 하이퍼파라미터 튜닝
하이퍼파라미터 실습 예제를 통해 AutoML 실험을 생성합니다.
지원 도구
| 도구 | 버전 | 설명 |
|---|---|---|
| Katib | 0.15.0 | - 오픈소스 프로젝트로, 하이퍼파라미터 튜닝 기능 지원 - 모델 성능 향상을 위한 다양한 하이퍼파라미터 조합 및 테스트 가능 |
실습 예제를 통해 AutoML 실험 생성
Step 1. 사전 준비
학습 데이터 준비
하이퍼파라미터 튜닝 실습은 MNIST 데이터세트를 활용하여 실습합니다.
아래 실습을 순서대로 수행하면 필요한 데이터세트를 다운로드받을 수 있기 때문에 별도의 다운로드가 필요하지 않습니다.
MNIST 이미지 데이터세트
MNIST 데이터세트란?
- 컴퓨터 비전 분야에서 일반적으로 널리 사용되는 손글씨에서 숫자만을 모은 대규모 데이터세트입니다.
- 0부터 9까지 총 10개의 카테고리와 훈련 데이터 60,000개, 테스트 데이터 10,000개로 총 70,000개의 28x28 픽셀 회색조 이미지로 이루어져 있습니다.
Step 2. 실습 예제로 새로운 실험 생성
-
대시보드에 접속합니다.
-
좌측에 위치한 Experiments (AutoML) 탭을 선택합니다.
-
우측 상단에 위치한 [NEW EXPERIMENT] 버튼을 클릭합니다.
-
Create an Experiment 화면 최하단에 위치한 [Edit and submit YAML] 버튼을 클릭 후, Edit YAML 팝업창에서 하기의 YAML 스크립트 코드 예제를 복사/붙여넣기하고 [CREATE] 버튼을 클릭합니다.
YAML 스크립트 코드 예제 삽입안내아래 예제에서 네임스페이스명과 AutoML 실험명은 따로 입력을 해야 합니다. 네임스페이스명 확인 방법
ex) 네임스페이스명이 kbm-g-namespace9999 이고, AutoML 실험명을 test-AutoML로 설정하고 싶은 경우
namespace: kbm-g-namespace9999
name: test-AutoML실습 예제. YAML 스크립트 코드 예제apiVersion: kubeflow.org/v1beta1
kind: Experiment
metadata:
namespace: {{ 네임스페이스명 }}
name: {{ AutoML 실험명 }}
spec:
objective:
type: maximize
goal: 0.99
objectiveMetricName: accuracy
additionalMetricNames:
- loss
metricsCollectorSpec:
source:
filter:
metricsFormat:
- "{metricName: ([\\w|-]+), metricValue: ((-?\\d+)(\\.\\d+)?)}"
fileSystemPath:
path: "/katib/mnist.log"
kind: File
collector:
kind: File
algorithm:
algorithmName: random
parallelTrialCount: 3
maxTrialCount: 12
maxFailedTrialCount: 3
parameters:
- name: lr
parameterType: double
feasibleSpace:
min: "0.01"
max: "0.03"
- name: momentum
parameterType: double
feasibleSpace:
min: "0.3"
max: "0.7"
trialTemplate:
retain: true
primaryContainerName: training-container
trialParameters:
- name: learningRate
description: Learning rate for the training model
reference: lr
- name: momentum
description: Momentum for the training model
reference: momentum
trialSpec:
apiVersion: batch/v1
kind: Job
spec:
template:
metadata:
annotations:
sidecar.istio.io/inject: 'false'
spec:
containers:
- name: training-container
image: mlops.kr-central-2.kcr.dev/kc-kubeflow-registry/katib-pytorch-mnist-gpu:v0.18.0.kbm.1a
command:
- "python3"
- "/opt/pytorch-mnist/mnist.py"
- "--epochs=1"
- "--log-path=/katib/mnist.log"
- "--lr=${trialParameters.learningRate}"
- "--momentum=${trialParameters.momentum}"
resources:
requests:
cpu: '1'
memory: 2Gi
limits:
cpu: '10'
memory: 20Gi
nvidia.com/gpu: '1'
restartPolicy: Never
Step 3. 생성한 실습 실험 확인
-
Experiments (AutoML) 목록에서 실험이 정상적으로 생성되었는지 확인합니다.
실험 생성완료 확인 -
목록에서 생성한 실험을 클릭하여, 실험의 상세 내용(Experiment detail)을 확인합니다.
Katib에 대한 자세한 설명은 Kubeflow > Katib 공식 문서를 확인해 주세요.