Home
Login

6단계: AI 프로젝트 실전 및 생산 배포

머신러닝과 소프트웨어 엔지니어링을 결합하여 실험에서부터 프로덕션 배포까지 전체 프로세스를 가르치는 포괄적인 머신러닝 엔지니어링 과정입니다.

MLOpsMachineLearningProductionMLGitHubTextFreeEnglish

Made With ML 프로젝트 상세 소개

프로젝트 개요

Made With ML은 Goku Mohandas가 만든 오픈 소스 프로젝트로, 머신러닝과 소프트웨어 엔지니어링을 결합하여 생산 수준의 머신러닝 애플리케이션을 설계, 개발, 배포 및 반복하는 방법을 가르치는 데 중점을 둡니다. 이 프로젝트는 이미 GitHub에서 40,000명 이상의 개발자가 관심을 갖는 최고의 머신러닝 저장소 중 하나가 되었습니다.

프로젝트 목표 및 특징

핵심 이념

이 과정은 실험 단계(설계 + 개발)에서 생산 단계(배포 + 반복)에 이르기까지 반복적인 방식으로 신뢰할 수 있는 생산 시스템을 점진적으로 구축합니다.

주요 특징

  1. 💡 제1원리: 코드에 직접 들어가기 전에 각 머신러닝 개념에 대한 제1원리 이해를 구축합니다.
  2. 💻 모범 사례: 머신러닝 모델을 개발하고 배포할 때 소프트웨어 엔지니어링 모범 사례를 구현합니다.
  3. 📈 확장성: 새로운 언어를 배우지 않고도 Python에서 머신러닝 작업 부하(데이터, 훈련, 튜닝, 서비스)를 쉽게 확장할 수 있습니다.
  4. ⚙️ MLOps: MLOps 구성 요소(추적, 테스트, 서비스, 오케스트레이션 등)를 연결하여 엔드 투 엔드 머신러닝 시스템을 구축합니다.
  5. 🚀 개발에서 생산: 코드 또는 인프라 관리를 변경하지 않고도 개발에서 생산으로 빠르고 안정적으로 전환하는 방법을 배웁니다.
  6. 🐙 CI/CD: 모듈 방식으로 더 나은 모델을 지속적으로 훈련하고 배포하기 위한 성숙한 CI/CD 워크플로우를 만드는 방법을 배웁니다.

대상 청중

이 프로젝트는 다양한 유형의 학습자를 대상으로 합니다.

  • 👩💻 모든 개발자: 소프트웨어/인프라 엔지니어이든 데이터 과학자이든 머신러닝은 제품 개발의 핵심 부분이 되고 있습니다.
  • 👩🎓 대학 졸업생: 업계에서 요구하는 실용적인 기술을 배우고 대학 과정과 업계 기대 사이의 격차를 해소합니다.
  • 👩💼 제품/리더십: 머신러닝 기반의 놀랍고 신뢰할 수 있는 제품을 구축하기 위해 기술 기반을 구축하고자 합니다.

프로젝트 구조 및 내용

코드 구조

프로젝트의 핵심 코드는 다음과 같은 Python 스크립트로 리팩터링되었습니다.

madewithml
├── config.py
├── data.py
├── evaluate.py
├── models.py
├── predict.py
├── serve.py
├── train.py
├── tune.py
└── utils.py

주요 워크플로우

1. 환경 설정

프로젝트는 다양한 배포 환경을 지원합니다.

  • 로컬 환경: 개인 노트북을 클러스터로 사용
  • Anyscale 플랫폼: Anyscale Workspace를 사용하여 클라우드에서 개발
  • 기타 플랫폼: AWS, GCP, Kubernetes, 로컬 배포 등 지원
2. 데이터 및 모델 훈련
export EXPERIMENT_NAME="llm"
export DATASET_LOC="https://raw.githubusercontent.com/GokuMohandas/Made-With-ML/main/datasets/dataset.csv"
export TRAIN_LOOP_CONFIG='{"dropout_p": 0.5, "lr": 1e-4, "lr_factor": 0.8, "lr_patience": 3}'
python madewithml/train.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--train-loop-config "$TRAIN_LOOP_CONFIG" \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/training_results.json
3. 모델 튜닝
python madewithml/tune.py \
--experiment-name "$EXPERIMENT_NAME" \
--dataset-loc "$DATASET_LOC" \
--initial-params "$INITIAL_PARAMS" \
--num-runs 2 \
--num-workers 1 \
--cpu-per-worker 3 \
--gpu-per-worker 1 \
--num-epochs 10 \
--batch-size 256 \
--results-fp results/tuning_results.json
4. 모델 평가
export RUN_ID=$(python madewithml/predict.py get-best-run-id --experiment-name $EXPERIMENT_NAME --metric val_loss --mode ASC)
python madewithml/evaluate.py \
--run-id $RUN_ID \
--dataset-loc $HOLDOUT_LOC \
--results-fp results/evaluation_results.json
5. 모델 예측
python madewithml/predict.py predict \
--run-id $RUN_ID \
--title "Transfer learning with transformers" \
--description "Using transformers for transfer learning on text classification tasks."
6. 모델 서비스
python madewithml/serve.py --run_id $RUN_ID

실험 추적

프로젝트는 MLflow를 사용하여 실험 추적 및 모델 관리를 수행합니다.

export MODEL_REGISTRY=$(python -c "from madewithml import config; print(config.MODEL_REGISTRY)")
mlflow server -h 0.0.0.0 -p 8080 --backend-store-uri $MODEL_REGISTRY

테스트 프레임워크

프로젝트에는 포괄적인 테스트 스위트가 포함되어 있습니다.

# 코드 테스트
python3 -m pytest tests/code --verbose --disable-warnings

# 데이터 테스트
pytest --dataset-loc=$DATASET_LOC tests/data --verbose --disable-warnings

# 모델 테스트
pytest --run-id=$RUN_ID tests/model --verbose --disable-warnings

# 커버리지 테스트
python3 -m pytest tests/code --cov madewithml --cov-report html --disable-warnings

생산 배포

Anyscale 배포

프로젝트는 완전한 Anyscale 배포 솔루션을 제공합니다.

  1. 클러스터 환경 구성:
export CLUSTER_ENV_NAME="madewithml-cluster-env"
anyscale cluster-env build deploy/cluster_env.yaml --name $CLUSTER_ENV_NAME
  1. 계산 구성:
export CLUSTER_COMPUTE_NAME="madewithml-cluster-compute-g5.4xlarge"
anyscale cluster-compute create deploy/cluster_compute.yaml --name $CLUSTER_COMPUTE_NAME
  1. 작업 제출:
anyscale job submit deploy/jobs/workloads.yaml
  1. 서비스 배포:
anyscale service rollout -f deploy/services/serve_model.yaml

CI/CD 프로세스

프로젝트는 GitHub Actions를 통합하여 자동 배포를 구현합니다.

  1. 워크플로우 트리거: PR 생성 시 워크로드 워크플로우 트리거
  2. 모델 훈련 및 평가: 훈련 및 평가 자동 실행
  3. 결과 피드백: PR에 훈련 및 평가 결과 직접 표시
  4. 자동 배포: 주 브랜치에 병합 후 자동으로 생산 환경에 배포

핵심 학습 요점

기술 스택

  • Python: 핵심 프로그래밍 언어
  • Ray: 분산 컴퓨팅 프레임워크
  • MLflow: 실험 추적 및 모델 관리
  • Transformers: 딥러닝 모델
  • FastAPI: API 서비스 프레임워크
  • pytest: 테스트 프레임워크
  • GitHub Actions: CI/CD 플랫폼

머신러닝 엔지니어링 모범 사례

  1. 코드 구성: 모듈화된 프로젝트 구조
  2. 실험 관리: 체계적인 실험 추적
  3. 버전 관리: 코드 및 모델의 버전 관리
  4. 테스트 전략: 포괄적인 테스트 커버리지
  5. 배포 자동화: CI/CD 프로세스 통합
  6. 모니터링 및 유지 관리: 생산 환경의 지속적인 모니터링

프로젝트 가치

머신러닝은 독립적인 산업이 아니라 특정 유형의 사람에게만 국한되지 않는 강력한 데이터 사고 방식입니다. 이 프로젝트는 기본 개념에서 생산 배포에 이르기까지 완전한 학습 경로를 제공하여 학습자가 현대 머신러닝 엔지니어링의 모든 기술을 습득하도록 돕습니다.

학습 자료

지속적인 개선

프로젝트는 지속적인 개선의 중요성을 강조하며, CI/CD 워크플로우가 구축됨에 따라 모델을 지속적으로 개선하고 스케줄링 실행(cron), 데이터 파이프라인, 드리프트 감지 모니터링, 온라인 평가 등으로 쉽게 확장하는 데 집중할 수 있습니다.

이 프로젝트는 머신러닝 실무자에게 개념 이해에서 생산 배포에 이르기까지 전체 프로세스를 포괄하는 포괄적이고 실용적인 학습 리소스를 제공하며, 현대 MLOps를 배우는 데 훌륭한 리소스입니다.