Kakao i Machine Learning::구성::실험/실행

페이지 이동경로

실험

우수한 성능의 기계학습 모델을 만들기 위해서는 데이터세트, 하이퍼파라미터, 피쳐, 알고리즘 등 여러 조건 간의 최적의 조합을 찾아야 합니다. 이를 위해서는 수많은 반복 작업과 시행착오가 필요합니다. 실험은 학습, 추적, 분석, 비교 및 평가 등 반복되는 작업을 손쉽게 수행할 수 있도록 제공하는 것이 목표입니다.

실험(Experiments)은 지정된 스크립트인 실행의 묶음입니다. 실험은 Kakao i Machine Learning 워크스페이스 하위에 포함되며, 실행 정보는 지정한 실험 하위에 저장됩니다.

  • 실험 하위의 실행 간 결과는 텐서보드(TensorBoard)에서 비교 분석할 수 있습니다.

  • 텐서보드를 이용하기 위해서는 실행을 구성하는 학습 스크립트에 메트릭, 지표, 아티팩트 등을 비교할 수 있도록 로그를 남기는 코드를 삽입해야 합니다. 프레임워크에 따른 텐서보드 활용 코드는 PyTorchTensorFlow에서 제공하는 TensorBoard 가이드를 참고하시기 바랍니다.

실험 이름

실험 이름 설정
항목 설명
실험 이름 실험의 이름으로, 워크스페이스 내에서 고유함
- 공백 없이 영어 소문자(a-z), 숫자(0-9), 하이픈(-)만 사용
- 소문자(a-z)로 시작하며, 소문자(a-z) 또는 숫자(0-9)로 끝나야 됨
- 2~63자 입력 가능
실험 설명(선택) 실험 설명이 필요할 경우 입력
- 최대 1,024자 이내로 작성

실행

안내
Python 3.8 ~ 3.10 버전을 지원합니다.

실행(Run)은 기계학습 모델 학습을 위한 스크립트의 단일 작업입니다. 실험은 일반적으로 여러 실행을 포함합니다. Kakao i Machine Learning은 모든 실행을 기록하고, 실험에 아래 정보를 저장합니다.

  • 실행 메타데이터
  • 스크립트에 기록된 메트릭
  • 실험에서 자동으로 수집되거나, 사용자가 명시적으로 업로드한 출력 파일
  • 실행 전 스크립트를 포함한 디렉토리 스냅샷

실행 구성

실행 제출 시 입력하는 정보는 아래와 같습니다.

실험 구성
구분 항목 설명
기본 설정 실험 실행이 속할 실험
- 동일한 실험에 속한 실행들 간의 실행 결과를 자동으로 비교 분석
실행 이름 실행을 구분 짓는 실행 이름
- 영어 소문자(a-z), 숫자(0-9), 하이픈(-)만 사용 가능
- 영어 소문자(a-z)로 시작하며, 소문자(a-z) 또는 숫자(0-9)로 끝나야 됨
- 2~63자 입력 가능
- 워크스페이스 내 다른 실행 이름과 중복 불가
실행 설명(선택) 생성하는 실행을 설명하는 텍스트
- 최대 1,024자 이내로 작성
인스턴스 구성 실행 작업을 수행할 인스턴스 타입
- 워크스페이스마다 사용 가능한 인스턴스의 타입이 다를 수 있음
- 실행은 워크스페이스의 학습용 컴퓨팅 자원 쿼터를 점유하며, 쿼터의 여유가 있을 경우에만 신규 실행을 생성할 수 있음
인스턴스 개수 선택한 인스턴스 타입의 개수
- 워크스페이스 쿼터를 초과할 경우, 실행 생성 불가
- 분산 학습은 2개 이상 선택
이미지 실행 작업을 수행할 인스턴스 타입을 구성할 컨테이너 이미지
- KiML에서 제공하는 기본 이미지 또는 사용자가 미리 구성한 커스텀 이미지를 선택할 수 있음
태그(선택) 실행에 대한 메타 정보를 관리하기 위한 태그
- 키와 값으로 구성되어 있음
- 키의 검증 규칙
* 영어(A-z), 숫자(0-9), 하이픈(-), 밑줄(_)만 사용 가능
* 영어(A-z) 또는 숫자(0-9)로 시작해야 함
* 2~63자 입력 가능
- 값의 검증 규칙
* 영어(A-z), 숫자(0-9), 하이픈(-), 밑줄(_)만 사용 가능
실행 구성 실행 인풋(선택) 실행 작업 수행 시 사용할 데이터세트
- 사용자가 사전에 정의한 데이터세트 선택
- 선택한 데이터세트는 실행을 학습하는 동안 /app/input/dataset/{dataset-name} 경로에 마운트됨
실행 아웃풋 실행 작업의 수행 결과가 저장되는 위치
- 워크스페이스의 default 스토리지에 저장
- 저장 위치: default/experiments/{experiment-id}/runs/{run-name}/outputs
소스 디렉토리 모델을 학습할 소스 코드
- 기본값: pwd
- 콘솔: tar.gz 압축 파일만 업로드 가능 (파일 크기: 최대 100MB)
- 입력 예시
* Linux 또는 Mac 환경: --source-directory ./src
* Windows 환경: --source-directory C:\src
명령어 사용자가 제출한 소스 코드를 실행하기 위한 스크립트 명령어
- 주의: Kakao i Machine Learning 공공 클라우드 환경에서 실행(Run) 제출 시, 스크립트 명령어에 아래 특수문자가 포함될 경우 오류가 발생할 수 있습니다. 스크립트 명령어는 python 또는 torchrun으로 시작해야 합니다.
* &, \, ;, |
환경 변수 사용자가 제출한 소스 코드에서 참조하기 위한 환경 변수
- KiML 시스템에서 자동으로 삽입하는 예약 환경 변수는 사용할 수 없음

실행 특이사항

  • Training Job을 지원합니다.
  • 실행을 제출할 때, 지정한 실행 이름이 없는 경우는 제출 시간으로 실행 이름이 생성됩니다.
  • 실행 제출 시 입력하는 스크립트 명령어는 Python 또는 torchRun만 실행됩니다.
  • TensorBoard를 이용하여 같은 실행 지표를 시각화하거나, 실험에 포함된 실행 간에 비교를 할 수 있습니다.
  • 실행을 다른 실험으로 옮길 수 없습니다.
  • 실행을 모델로 등록할 수 있습니다. 단, 학습이 완료된 실행만 모델로 등록할 수 없습니다.
  • 실행 제출 시 빌드가 완료된 Succeeded 또는 Registered 상태의 커스텀 이미지만 선택할 수 있습니다.
  • 8A100-64-IB은 분산 학습 전용 인스턴스 타입입니다. 인스턴스 개수는 2개 이상으로 선택한 후 생성이 가능합니다.
  • 실행이 잡(Job)을 수행할 때, 컨테이너 프로세스는 UID 1000번 사용자 계정으로 실행됩니다. UID 1000번은 일반 사용자 권한입니다.
  • 데이터세트는 등록한 스토리지 디렉토리를 마운트합니다. 해당 디렉토리의 스토리지 권한은 read-only 입니다.
  • 학습 결과는 실행 결과를 별도로 저장할 경우 /app/outputs 경로에 저장됩니다. 해당 디렉토리의 스토리지 권한은 read, write 입니다.

주의

  • 실행 생성 시, 소스코드 제출을 위한 압축파일 유형은 tar.gz 가능합니다. zip 또는 tar 압축파일은 준비 중입니다.
  • 실행 생성 시, 워크스페이스 학습용 컴퓨팅 자원 쿼터 내에서 인스턴스 구성을 선택할 수 있습니다. 잔여 워크스페이스 쿼터가 있는 경우에만 신규 실행을 생성/제출할 수 있습니다.
  • 실행 생성 후, 인스턴스 구성(타입과 개수)을 변경할 수 없습니다.
  • Initializing, Running, Pending 상태의 실행(Run)은 워크스페이스 쿼터를 점유합니다.

실행 상태값

실행 상태값
상태 설명
Pending 실행 생성 요청 직후 상태
Initializing 실행의 Job이 생성되기 전 준비 상태
Running 요청한 Job이 진행 중인 상태
Completed 요청한 Job이 완료된 상태
Stopping 요청한 Job이 완료되기 전에 취소 요청하여 취소 중인 상태
Stopped 요청한 Job이 완료되기 전에 취소한 상태
Failed 실행이 정상적으로 완료되기 않은 상태
Issued Kakao i Machine Learning에서 일시적으로 오류가 발생한 상태
ImagePullBackOff Docker Image 방식으로 커스텀 이미지를 생성한 경우, Docker Image를 정상적으로 불러오지 못하는 상태
- 주기적으로 이미지 불러오기를 시도하며, 재시도하는 과정에서 Initializing 상태로 변경됨
- 비공개 레지스트리에 저장된 Docker Image일 경우, ID/Secret 정보 입력 필수
- 학습용 쿼터는 회수되지 않음

실행 이름

실행 이름 설정
항목 설명
실행 이름 실행의 이름으로, 실험 내에서 고유해야 함
- 공백 없이 영어 소문자(a-z), 숫자(0-9), 하이픈(-)만 사용
- 영어 소문자(a-z)로 시작하며, 소문자(a-z) 또는 숫자(0-9)로 끝나야 됨
- 2~63자 입력 가능
실행 설명(선택) 실행 설명이 필요할 경우 입력
- 최대 1,024자 이내로 작성

실행 복사

기존에 생성한 실행과 동일한 정보의 실행을 다시 만들 수 있습니다. 실행을 복사한 후 일부 정보를 수정하여 재학습을 요청할 수 있습니다. 복사한 실행 이름은 copy-of-{원본 실행 이름}으로 자동 생성되며, 변경 가능합니다

안내

  • KiML CLI 명령어로 실행 복사하는 기능은 추후 지원할 예정입니다.
  • 소스 코드 파일은 재업로드가 필요합니다.

실행 모니터링

실행 상세 정보에서 실행 및 파드 단위로 컴퓨팅 자원 사용량을 실시간으로 조회할 수 있습니다.

  • GPU, GPU Memory Utilization
  • vCPU, vCPU Memory Utilization
  • Power Consumption
  • Network I/O Bandwith

실행 로그

실행 작업 로그를 표준 출력(stdout), 표준 오류(stderr) 방식으로 제공합니다.

  • 최대 20MB 크기의 로그를 조회할 수 있습니다. 저장 용량 초과 시, 과거 데이터부터 로그가 삭제됩니다.
  • 학습 시 요청한 로그의 양이 많을 경우 로그 짤림 현상이 발생할 수 있습니다. 출력할 로그의 크기를 45MB 이하 수준으로 권장드립니다.

예약 환경 변수

실행(Run)을 수행하기 위해 생성되는 Node(노드)에는 다음과 같은 전용 환경 변수가 정의됩니다. 예약 환경 변수를 설정하여 분산 학습을 실행할 수 있습니다.

전용 환경 변수
프레임워크 항목 설명 예시 값
PyTorch GPU_COUNT 학습 진행 시 각 인스턴스(노드)에 할당된 GPU의 개수 4
RANK 분산 학습이 진행 중인 각 인스턴스(노드)의 순서 번호 0
WORLD_SIZE 학습에 할당된 인스턴스(노드)의 개수
- num_replica와 동일한 값을 가짐
2
MASTER_ADDR 분산 학습을 진행하는 마스터 노드의 주소 101.18.10.225
MASTER_PORT 분산 학습을 진행하는 마스터 노드의 포트 8000
TensorFlow TF_CONFIG 분산 학습 진행 시 각 워커의 주소와 역할 등을 정의한 JSON 문자열

실행 상세 방법

실행 아웃풋을 저장하는 방법은 다음과 같습니다.

실행 아웃풋 저장

학습한 모델을 저장하기 위해서는 실행 소스코드에 저장 위치를 /app/ouputs으로 지정해야 합니다. 학습이 완료된 아웃풋은 default 스토리지의 /outputs 경로에 저장됩니다.

코드예제실행 아웃풋 저장

# model save 예제 코드
model.save('/app/outputs')

TensorBoard 이용 방법

TensorBoard에서 실행 학습 결과를 조회하기 위해서는 소스코드에 TensorBoard 로그를 /app/outputs/logs 디렉토리에 저장해야 합니다.

코드예제TensorBoard 로그 저장을 위한 Python 코드

og_dir = os.path.join(args.output_dir, "logs")
log_dir = os.path.join(args.output_dir, "logs")

코드예제TensorBoard 로그 저장을 위한 실행(Run) 스크립트

"python -u mnist.py --data_dir /app/input/dataset/$DATASET --output_dir /app/outputs"

소스코드 디렉토리 지정

CLI에서 --source-directory 파라미터를 지정하지 않고 실행을 제출할 경우, 기본값은 현재 위치 pwd 입니다. 해당 경로에 있는 모든 파일 또는 폴더를 업로드하기 때문에 파일 개수가 많거나 큰 용량의 파일이 있을 경우, 오류가 발생할 수 있습니다.
학습할 소스코드 파일이 있는 폴더(예: src 폴더)를 생성 후, 해당 경로로 이동하거나 소스 디렉토리 위치를 지정하여 실행을 제출하는 것을 권장합니다.

  1. src 폴더를 생성합니다.

  2. src 폴더에 학습할 소스코드(예: train.py)를 이동합니다.

  3. kiml run submit 명령어 실행하여 실행을 제출합니다.

    a. ~/source 경로로 이동 후 kiml run submit 명령어를 실행합니다.

    b. --source-directory 파라미터를 입력하여 src 폴더 경로를 지정합니다.

    • Linux 또는 Mac 환경 : --source-directory ./src
    • Windows 환경 : --source-directory C:\src

실행 학습 결과 조회 및 다운로드

실행 학습 결과는 자동으로 저장되지 않습니다. 소스코드에 실행 학습 결과가 /app/outputs 경로에 저장하도록 지정해야 합니다. 저장된 학습 결과는 스토리지( default/experiments/{실험 고유 ID}/runs/{실행 이름}/outputs)에서 조회 및 다운로드할 수 있습니다.

실행 학습 결과 조회 및 다운로드 방법
방법 상세 방법
콘솔 1. 실험 > 실행 > 아웃풋 탭에서 저장 경로 확인
2. 콘솔 스토리지 메뉴에 접속 후 default 선택
3. 스토리지 정보 > [파일 브라우저] 탭 선택
4. 1번에서 확인한 경로로 이동
5. outputs 폴더 우측 [더보기] 아이콘 클릭
6. 파일/폴더 다운로드 메뉴 선택
CLI 1. kiml login 명령어 실행하여 CLI 로그인
2. kiml run desec 명령어를 실행하여 아웃풋 저장 경로 확인
3. KiML data download 명령어를 실행하여 스토리지에 저장된 아웃풋 파일 다운로드 가능
  예) kiml data download default/experiments/{experiment 고유 ID}/runs/{run 이름}/outputs
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 documentation@kakaoenterprise.com 으로 제보해주세요.