experimental_plan.yaml 작성하기
experimental_plan.yaml에 대한 이해가 어느정도 진행되었다면, 타이타닉 예제 solution을 설치 후 ALO main.py를 실행 시 assets 폴더로 설치되는 각 asset에 대한 이해가 필요합니다. 이러한 asset을 밑바닥부터 만드는 과정을 아래 가이드를 따라 진행해봅니다.
experimental_plan.yaml 작성하기
학습 파이프라인과 추론 파이프라인 제작 과정이 크게 다르지 않기 때문에 아래 experimental_plan.yaml에 대한 내용을 잘 이해한다면 파이프라인 제작이 가능합니다.
ALO 설치가 완료가 된 상태에서 터미널에 'alo example' CLI 명령어를 통해 생성되는 파일 중 experimental_plan.yaml를 사용합니다.
alo example # titanic 예제 생성
vi experimental_plan.yaml ## vim 이외의 다른 파일 편집기를 사용해도 무방합니다.
experimental_plan.yaml 파일은 AI 솔루션의 실행과 관련된 설정 정보를 YAML 형식으로 정리하는 파일입니다. 이 파일은 AI 솔루션의 이름과 버전을 설정하는 것으로 시작하며, 실행 이력 관리, 모델링 관련 설정, 데이터 파이프라인 구성 등을 포함합니다. 아래는 각 섹션에 대한 설명입니다.
AI Solution 정보 (name, version)
control 섹션에서는 실행 이력을 관리하기 위한 설정을 정의합니다. 여기에는 백업 정책과 리소스 사용량 로그 출력 옵션이 포함됩니다. 백업 설정(backup)은 세 가지 방식 중 하나를 선택할 수 있습니다.
실행 이력 관리 (Control)
control 섹션에서는 실행 이력을 관리하기 위한 설정을 정의합니다. 여기에는 백업 정책과 리소스 사용량 로그 출력 옵션이 포함됩니다.
모델링 설정 (Solution)
solution 섹션에서는 모델링을 위한 환경 설정을 정의합니다. 여기에는 필요한 라이브러리 설치, 사용자 정의 함수 설정 등이 포함됩니다.
필요 라이브러리 설치 (pip)
pip 하위에 requirements 필드를 사용하여 코드 실행에 필요한 라이브러리를 명시합니다. 예를 들어, numpy, pandas, scikit-learn 라이브러리를 필요한 버전과 함께 설치할 수 있습니다. requirements: True로 설정할 경우, requirements.txt를 읽어 다운로드할 수 있습니다.
사용자 정의 함수 (function)
function 하위에 사용자 정의 함수를 설정합니다. 각 함수는 def 필드로 모듈과 함수 경로를 지정하고, argument 필드로 함수에 전달할 인자를 설정합니다.
데이터셋 및 파이프라인 설정 (Train, Inference)
마지막으로, train 및 inference 섹션에서는 데이터셋 경로와 함수 실행 순서를 정의합니다.스텝에 다라서 데이터 경로, 결과물의 저장 경로, 함수 실행 순서를 정의합니다.
이처럼 experimental_plan.yaml 파일은 AI 솔루션의 실행 환경, 데이터 처리 파이프라인, 백업 정책 등을 체계적으로 관리하기 위한 중요한 설정 파일입니다. 이를 통해 다양한 실험 설정을 쉽게 변경하고, 일관된 환경에서 AI 솔루션을 실행할 수 있습니다.
## experimental_plan.yaml template
# AI Solution 정보
name: titanic # AI Solution name
version: 1.0.0 # AI Solution version
# Control에서는 실행 이력 관리 설정을 할 수 있습니다. 시스템에 맞게 size, count, day를 설정하면 됩니다.
control:
# 실행 이력 관리
# backup: # Optional) 디스크 사용량 기준 백업 수행
# type: size # Required) 백업 방식(size, count, day)
# value: 5MB # Required)저장 용량. Default 1GB. ex) 1000000000, 1GB, 1MB, 1KB
backup: # Optional) 수행 횟수 기준 백업 수행
type: count # Required) 백업 방식(size, count, day)
value: 5 # Optional) default 1000
# backup: # Optional) 마지막 실행일 기준 기간(일)동안 백업
# type: day # Required) 백업 방식(size, count, day)
# value: 7 # Optional) default: 7일
check_resource: True # Optional) 실행시 사용된 CPU, Memory resource 사용량 로그 출력. Default: False
# 모델링 관련 내용은 Solution 밑에 적으시면 됩니다.
# pip 내의 requirements 밑에 코드 실행에 필요한 라이브러리를 버전을 명시해서 적습니다.
solution:
pip: # Optional) 사용자 정의 함수의 3rd Party libs 를 내려 받기 위한 설정
# requirements: False # Optional) 현재 경로에 존재하는 requirements.txt를 설치하고 싶은 경우 True로 설정
requirements: # Optional) 개별 library를 설치하고자 하는 경우
- numpy==1.26.4
- pandas==1.5.3
- scikit-learn
# - scikit-learn --index-url https://my.local.mirror.com/simple
# credential: # Optional) Credential(train/inferenece의 input, output의 파일이 S3인 경우 공통 적용되는 인증 정보)
# profile_name: aws-profile-name
# function 내의 함수를 정의하고, argument 값을 채워줍니다. 이 과정은 사용자가 작성한 코드와 맵핑됩니다.
function: # Required) 사용자 정의 함수
preprocess: # 함수 이름 -> train.pipeline의 이름으로 사용됨
def: titanic.preprocess # Required) 사용자 모듈에서 실행 대상 함수
train:
def: titanic.train # {python 파일 명}.{함수 명}
argument: # 함수의 args.
x_columns: [ 'Pclass', 'Sex', 'SibSp', 'Parch']
y_column: Survived
inference:
def: titanic.inference # {python 파일 명}.{함수 명}
argument: # 함수의 args.
x_columns: [ 'Pclass', 'Sex', 'SibSp', 'Parch']
# dataset_uri는 현재 이하의 폴더 경로를 적고, artifact_uri는 해당 step의 결과물이 저장되는 위치입니다.
# Inference의 경우 선택적으로 model_uri까지 작성할 수 있습니다.
# 여기서 pipeline을 통해 함수의 실행 순서를 정할 수 있습니다.
train:
dataset_uri: [train_dataset/] # 데이터 폴더, 폴더 리스트 (파일 형식 불가)
# dataset_uri: s3://mellerikat-test/tmp/alo/ # 예제1) S3 key(prefix) 이하 경로 모든 폴더, 파일
artifact_uri: train_artifact/
pipeline: [preprocess, train] # 실행 대상 function 목록
inference:
dataset_uri: inference_dataset/
# model_uri: model_artifacts/n100_depth5.pkl # 이미 학습된 모델을 load
artifact_uri: inference_artifact/ # Optional) pipeline['artifact']['workspace'] 경로 이하에 저장된 파일에 대해 압축 및 업로드 경로 정의. default 경로 이하 inferenece.tar.gz으로 업로드 됨
pipeline: [preprocess, inference]