ML 도입 플레이북은(는) 무엇을 하나요?
이 스킬은 기존 소프트웨어 엔지니어링 프로젝트에 머신러닝 모델을 구현하기 위한 적응형 방법론을 제공합니다. 전통적인 SWE와 MLOps 사이의 간극을 메워 ML을 어떻게 연구하고, 분리하고, 학습시키고, 통합할지 구조화합니다.
활성화 시점
- 사용자가 기존 코드베이스에 "ML 추가" 또는 "알고리즘 추가"를 요청할 때
- 비-ML 애플리케이션에 새로운 모델(예: 추천, 분류, 예측) 통합을 계획할 때
- 에이전트가 ML 구성 요소를 적응형으로 구축, 학습, 배포하기 위한 워크플로우를 구조화할 때
1단계: 문제 프레이밍 및 타당성 검토
모델 코드를 작성하기 전에 "왜"와 "어떻게"를 확립합니다.
- 휴리스틱 체크: 사용자에게 간단한 휴리스틱(예: 정규식, 규칙 기반 정렬)으로 문제를 더 빠르게 해결할 수 있는지 물어보세요. 그렇다면 거기서 시작하세요.
- 메트릭 정의: ML 모델이 개선하려는 비즈니스 메트릭(예: 클릭률, 지연 시간 감소)을 정의합니다.
- 실수 예산: "나쁜" 예측이 무엇인지 정의하고 시스템이 이를 어떻게 처리해야 하는지 정의합니다.
2단계: 데이터 준비
데이터가 깨끗하고 접근 가능하지 않으면 ML은 무용지물입니다.
- 데이터 소스 감사: 학습 데이터가 어디에 있는지 식별합니다. 실시간 데이터베이스, 정적 CSV, API인가요?
- 데이터 계약: 입력 데이터의 스키마를 설정합니다. 어떤 특징이 필요한가요? 특징이 누락되면 어떻게 되나요?
- 누수 방지: 사용자가 제안한 데이터 분할이 실수로 미래 정보를 학습 세트로 유출하지 않는지 확인합니다(예: 시계열 데이터의 시간 순서 분할).
3단계: 아키텍처 통합 및 분리
모델 추론을 핵심 비즈니스 로직에 긴밀하게 결합하지 마세요.
- API 경계: 모델을 API 엔드포인트(예:
fastapi-patterns또는django-patterns사용) 또는 전용 서비스 클래스 뒤에 배치할 것을 제안합니다. - 폴백 메커니즘: 기본 상태를 설계합니다. 모델 응답이 너무 오래 걸리거나 오류가 발생하면 시스템이 하드코딩된 규칙으로 정상적으로 폴백해야 합니다.
- 기능 플래그: 새 ML 추론 호출을 기능 플래그로 감싸서 안전하게 롤아웃(또는 롤백)할 수 있도록 합니다.
4단계: 모델 구현 및 학습
재현성과 반복을 위해 코드를 구조화합니다.
- 간단하게 시작: 먼저 베이스라인 모델(예: 간단한 scikit-learn Logistic Regression 또는 기본적인 PyTorch 선형 레이어)을 구축합니다.
- 재현성:
pytorch-patterns또는 유사한 모범 사례를 적용합니다: 랜덤 시드 고정, 코드를 디바이스에 독립적으로 만들기, 텐서/배열 형태를 명시적으로 문서화. - 자동화된 증거: 데이터 변환 및 추론 스키마에 대한 테스트를 요구합니다. 베이스라인과 비교하는 평가 스크립트 없이 모델을 수락하지 마세요.
5단계: MLOps 핸드오프
베이스라인 모델이 통합되면 지속적인 운영에 초점을 전환합니다.
mle-workflow참조: 사용자를 실험 추적, 모델 레지스트리, 드리프트 탐지 설정으로 안내합니다.- CI/CD: 향후 커밋이 모델 성능을 저하시키지 않도록 기존 CI 파이프라인에 모델 평가 단계를 추가합니다.
에이전트 반복 워크플로우
이 플레이북을 통해 사용자를 도울 때 에이전트는 다음을 수행해야 합니다:
- 아키텍처를 제안하기 전에 명확한 질문을 하여 1단계를 완료합니다.
- 2단계에서 사용자 승인을 위해 데이터 계약을 초안합니다.
- 학습 루프를 작성하기 전에 3단계에서 분리 인터페이스(API/서비스)를 작성합니다.
- 4단계에서 모델을 학습하고 아티팩트를 저장하는 재현 가능한 스크립트를 제공합니다.