sy1214ei 님의 블로그

[MLOps] AutoML (MLJAR) 본문

Subject/[MLOps] ML Operations

[MLOps] AutoML (MLJAR)

sy1214ei 2025. 4. 27. 19:11
- [실습 목표] MLJAR를 이용한 AutoML 프로세스 실습
- [실습 흐름]
  1. 환경 세팅 (Python, MLJAR 설치)
  2. 다양한 모델 학습 및 평가 (UCI Heart Disease 데이터셋 사용)
  3. 결과 해석 및 시각화
- [데이터셋] UCI Heart Disease (새로운 데이터셋!)
- [목적] AutoML이 실제로 어떻게 동작하는지 경험해보기

 

- [환경 요구사항]
  - Python 3.8 이상
  - Ubuntu 20.04 이상
  - HDD 여유공간 10GB 이상

- [AWS 주의사항]
  - t2.micro 사용 시 EBS 볼륨 크기 늘려야 함

- [설치 명령어]
  - pip install mljar-supervised

- [설치 소요 시간]
  - 약 3~5분

- [문제] 기본 AWS EBS 용량(8GB) → AutoML에 부족

- [해결책] EBS 볼륨을 30GB로 확장

- [AWS 무료 정책] 12개월 동안 30GB까지 무료 사용 가능

- [확장 방법]
  1. AWS Console 접속
  2. EC2 → Volumes → 내 볼륨 선택
  3. Modify → 크기 조정

- [주의사항] Volumes 상태가 "in-use"여야 함

########################################################

- [목적] EBS 볼륨이 EC2 인스턴스에 연결되어 있어야 확장 가능

- [확인 방법]
  1. EC2 → Volumes 이동
  2. 볼륨 상태(State)가 "in-use"인지 확인

- [주의사항] "available" 상태 볼륨은 사용 불가

 


- [이유] EBS 볼륨 크기를 늘린 뒤 -> OS 파티션도 확장해야 함

       * EBS: AWS에서 제공하는 '가상 하드디스크' 서비스 (Elastic Block Store) -> EC2 인스턴스에 연결해서 쓰는 가상 SSD/HDD

- [확인 명령어]
  - sudo lsblk (디스크/파티션 확인)

- [확장 명령어]
  - sudo growpart [디스크 이름] [파티션 번호]

- [예시]
  - sudo growpart /dev/xvda 1

- [이유] 파티션 확장 후 파일 시스템도 확장해야 새 공간 사용 가능

- [파일 시스템 타입 확인]
  - 명령어: df -hT

- [파일 시스템 확장 명령어]
  - ext4: sudo resize2fs /dev/xvda1
  - xfs: sudo xfs_growfs -d /

- [스토리지 확장 절차]
  1. AWS Console: 볼륨 크기 변경
  2. EC2: growpart로 파티션 확장
  3. df -hT로 파일 시스템 종류 확인
  4. 파일 시스템 확장 (resize2fs 또는 xfs_growfs)

- [AutoML 실습 흐름]
  1. 데이터 준비 (CSV 읽기, 전처리)
  2. AutoML 설정 (AutoML 객체 생성, 모드 설정)
  3. AutoML 실행 (fit 호출, 다양한 모델 학습)
  4. 최적 모델로 예측 (predict 호출)

- [사용 라이브러리]
  - pandas, mljar-supervised

- [결과]
  - artifacts 폴더에 결과 저장


- [AutoML이 사용하는 알고리즘]
  - Baseline, Linear, Decision Tree, Random Forest, XGBoost, Neural Network
- [AutoML 단계(steps)]
  - simple_algorithms → default_algorithms → ensemble
- [로그 예시]
  - 각 모델의 logloss, 학습시간 기록
- [best model]
  - logloss가 가장 낮은 모델 선택 (예시: Ensemble)
- [logloss란?]
  - 값이 낮을수록 좋은 분류 성능
# Generated Artifacts

- [artifacts란?]
  - AutoML 결과물(모델, 실험 요약, 설정 파일, 그래프 등)
- [다운로드 명령어 예시]
  - pscp -i aws_key.ppk ubuntu@[IP주소]:[서버경로] [내컴퓨터경로]
- [주요 파일 종류]
  - artifacts 폴더 (모델 결과)
  - README.md (실험 요약)
  - *.json, *.npy (설정 및 모델정보 저장)
  - *.png (시각화된 그래프)
- [주의사항]
  - Windows는 pscp, Mac/Linux는 scp 사용
# 추가 설명

- [artifacts 폴더]
  - AutoML 실행(automl.fit) 시 자동 생성
  - 모델, 실험 결과, 그래프, 설정 파일 저장
  - 실험 재현과 결과 분석을 쉽게 만들어줌
# Artifacts Analysis: General Performance

- [README.md]
  - 실험 결과 텍스트 요약 파일
  - 모델별 성능 비교 및 베스트 모델 기록
- [ldb_performance.png]
  - 모델 성능을 시각화한 그래프
  - X축: 모델 이름, Y축: 성능 지표(logloss 등)
- [확인 포인트]
  - 베스트 모델 찾기
  - 성능 격차 분석
- [Tip]
  - 기본 지표: logloss (설정 변경 가능)
# Artifacts Analysis: General Performance

- [Correlation Heatmap]
  - Feature 간 상관관계 시각화
  - 1에 가까움: 강한 양의 상관관계
  - -1에 가까움: 강한 음의 상관관계
- [Feature Importance]
  - 모델이 예측에 의존한 Feature들의 중요도 표시
  - 중요도가 높은 Feature를 우선 활용
- [Tip]
  - Feature Importance는 모델마다 다를 수 있음
  - 상관관계 높은 Feature는 중복 제거 고려 가능

바로 위 코드블럭의 참고 이미지

# Note: You Can Generate Web-Style Summary

- [웹 스타일 요약 리포트 생성]
  - 한 줄 명령어: automl.report()
  - 결과물: README.html
  
- [장점]
  - 텍스트보다 보기 쉬운 웹 페이지 형식
  - 그래프/테이블을 통합하여 시각적으로 분석 가능
  - 문서화 및 제출용으로 사용 가능
  
- [Tip]
  - 학습이 끝난 artifacts 폴더 기반으로 HTML 리포트 자동 생성

 

# Artifacts Analysis: Individual Models

- [개별 모델 분석]
  - 각 모델 학습 결과를 artifacts 폴더에서 개별 분석
  
- [예시]
  - 베스트 모델: Linear + Default XGBoost + Default Neural Network (앙상블)
  
- [artifacts 폴더 구조]
  - 각 모델별 디렉토리에 설정 정보, 평가 지표, feature importance 저장
- [앙상블 모델]
  - 여러 모델을 조합하여 최종 결과 도출
# Let's Test with Your Taste: Change modes

- [AutoML 모드]
  - 실험 목표에 따라 Explain / Perform / Compete 모드를 선택

- [모드별 특징]
  - Explain: 빠르고 설명 가능한 모델
  - Perform: 실용성 좋은 모델
  - Compete: 최고 성능 모델 (시간 오래 걸림)

- [Tip]
  - Compete 모드는 24시간 이상 소요될 수 있음 (주의)

 

# Let's Test with Your Taste: Change Config

- [Config 변경]
  - Mode 선택과 별개로 세부 설정 가능

- [설정 항목 예시]
  - algorithms: 사용할 알고리즘 선택
  - hyperparameter_search: 튜닝 방법 선택 (random/grid search)
  - validation_strategy: 데이터 검증 방식 설정 (ex: kfold)

- [예시 코드]
  - AutoML(algorithms=["Random Forest"], hyperparameter_search="random", validation_strategy={"validation_type": "kfold", "k_folds": 5})

- [Tip]
  - 공식 문서(supervised.mljar.com/api)에서 더 많은 설정 가능

#############################################################

# Config 설정 예시 코드

automl = AutoML(
	mode='Explain',
    algorithms=["Random Forest"],
    train_ensemble=False,
    stack_models=False,
    eval_metric='f1'
    validation_strategy={
    	"validation_type': 'kfold',
        "k_folds": 5,
        "shuffle": True,
        "stratify": True,
        "random_seed": 123
    },
    explain_level=0
)
# Summary

- [Week 7 Lab 요약]
  - AutoML(MLJAR)로 머신러닝 실험 자동화
  - 환경 세팅 → 모델 학습 → 결과 분석

- [AutoML 장점]
  - 빠른 실험 속도
  - 높은 재현성
  - 유연한 모드/세팅
  - 다양한 모드로 목표 설정 가능 (Explain / Perform / Compete)

- [실험 후 분석]
  - artifacts 폴더 활용 (README, 그래프, feature 분석)

- [Tip]
  - 실험 반복하면서 성능 개선 방향 스스로 찾아야 함