단위 7 / 11

MLOps 및 배포: 모델을 랩에서 프로덕션으로 이동

이득:

  • 코드-데이터-모델 트리오 및 패키지와 관련된 ML의 특별한 과제를 인식하고 비즈니스 요구에 따라 온라인으로 또는 일괄적으로 모델을 제시하는 능력.
  • 점진적 및 롤백 배포 패턴(섀도우, 카나리아, A/B, 롤백)을 구현하고 각 배포에 테스트된 롤백 계획을 추가하는 기능
  • 평가 임계값 제어 CI/CD 및 모델 레지스트리를 통해 추적 가능한 모델의 데이터-코드-메트릭 링크를 프로덕션에 유지하는 기능

노트북에서 95% 정확도를 달성하는 모델을 얻는 것은 이야기의 절반에 불과합니다. 나머지 절반(종종 어려운 부분)은 해당 모델을 안정적이고 확장 가능하며 유지 관리 가능한 방식으로 실제 사용자에게 제공하는 것입니다. MLOps(기계 학습 운영: ML 모델을 프로덕션에 배치, 운영 및 유지 관리하는 분야)는 소프트웨어 엔지니어링의 DevOps 방식과 ML의 고유한 과제를 결합합니다. 이 단원에서는 모델을 프로덕션으로 이동하는 단계와 인공 지능이 이 프로세스에 어떻게 도움이 되는지 설명합니다.

ML이 일반 소프트웨어와 다른 이유는 무엇입니까?

일반 소프트웨어에서는 동작이 코드에 있습니다. 코드가 변경되지 않으면 동작도 변경되지 않습니다. ML에서 동작은 코드, 데이터, 모델 모두에 따라 달라집니다. 이러한 세 가지 차원은 MLOps의 추가 과제를 만듭니다.

  • 데이터 드리프트: 프로덕션 데이터는 시간이 지남에 따라 훈련 데이터에서 멀어집니다. 모델이 쓸모 없게 됩니다.
  • 코드, 데이터, 모델 세 가지를 모두 버전화해야 합니다.
  • 조용한 실패: 단순히 잘못된 예측을 생성함으로써 모델이 충돌이나 오류 없이 실패할 수 있습니다. 이를 포착하려면 모니터링이 필요합니다.

이것이 바로 "작업 모델"과 "생산 준비 모델" 사이에 큰 차이가 있는 이유입니다.

모델 패키징 및 프리젠테이션

모델을 프로덕션에 적용하는 첫 번째 단계는 모델 파일, 필요한 라이브러리, 전처리 코드 및 버전 정보를 재현 가능한 전체로 함께 패키징하는 것입니다. 컨테이너화(예: Docker: 애플리케이션을 모든 종속성과 함께 격리된 상자에 넣는 것)가 여기서 표준입니다. 이는 "내 컴퓨터에서 작동 중이었습니다"라는 문제를 제거합니다.

모델 제공의 두 가지 기본 패턴:

  • 온라인/실시간(온라인): 모델은 API 뒤에 위치하여 들어오는 모든 요청에 대해 즉각적인 예측을 반환합니다. 낮은 대기 시간이 중요합니다.
  • 배치: 모델은 대규모 데이터 세트를 주기적으로 처리합니다(예: 밤에 모든 고객에 대한 점수 생성). 지연 시간은 중요하지 않으며 효율성이 중요합니다.

어느 것이 옳은지는 비즈니스 요구 사항에 따라 다릅니다. 즉, 온라인으로 즉시 추천을 받을 수 있고, 일괄적으로 월별 위험 점수를 받을 수 있습니다.

팁: "실시간"은 비용이지 기본값은 아닙니다. 결과가 몇 시간 내에 사용된다면 배치는 훨씬 저렴하고 간단합니다. 정말 즉각적인 답변이 필요합니까? 먼저 물어보세요.

안전한 유통 전략

모든 트래픽에 직접 새 모델을 여는 것은 위험합니다. 잘못되면 모두가 영향을 받습니다. 안전한 배포 패턴:

  • 섀도우 배포: 새 모델은 프로덕션 트래픽을 수신하지만 해당 예측은 사용자에게 표시되지 않고 기록만 됩니다. 실제 데이터에서 안전한지 이전 모델과 비교합니다.
  • 카나리아 배포: 새 모델은 먼저 작은 비율의 트래픽(예: 5%)에 출시됩니다. 문제가 없으면 점차적으로 증가시킵니다.
  • A/B 테스트: 실제 사용자에게 두 가지 모델을 병렬로 제시하고 비즈니스 지표(전환, 클릭)를 비교합니다.
  • 롤백: 새 모델이 불량한 것으로 판명되면 신속하게 이전 버전으로 되돌리는 기능입니다. 모든 배포에는 롤백 계획이 있어야 합니다.
주의: 롤백 계획이 없는 배포는 완료되지 않습니다. 몇 분 내에 이전 버전으로 되돌릴 수 있으므로 새 모델이 생산 중에 예기치 않게 작동할 때 사용자를 보호할 수 있습니다. 배포하기 전에 이를 테스트하십시오.

약한 접근 / 강력한 접근

약함: "모델은 테스트 결과가 좋았고 실제로 출시되었으며 모든 사람에게 공개되었습니다."

Güçlü: "모델을 컨테이너화하고 버전으로 레이블을 지정했습니다. 먼저 프로덕션 트래픽이 있는 섀도우 모드에서 3일 동안 실행하여 이전 모델과 예측을 비교했습니다. 편차는 허용될 수 있었습니다. 그런 다음 5% 카나리아로 열고 처리량 측정항목과 대기 시간을 모니터링했습니다. 문제가 없으면 점차적으로 100%로 늘렸습니다. 사전에 롤백 명령을 테스트했습니다."

차이점: 강력한 접근 방식은 점진적이고 측정 가능하며 되돌릴 수 있습니다. 위험은 모든 단계에서 제한됩니다.

CI/CD 및 자동화

ML의 CI/CD(지속적 통합/지속적 배포: 코드 변경 사항을 자동으로 테스트하고 릴리스하는 파이프라인)는 코드뿐만 아니라 데이터 및 모델 단계도 다룹니다. 좋은 ML CI/CD 파이프라인: 코드가 변경될 때 테스트를 실행하고, 데이터 검증을 수행하고, 필요한 경우 모델을 다시 훈련하고, 평가 임계값을 확인하고, 임계값이 유지되는 경우에만 배포를 진행합니다. "훈련은 자동이고 배포는 임계값 기반"이라는 원칙은 잘못된 모델이 프로덕션에 조용히 유출되는 것을 방지합니다.

AI는 구성 파일(YAML) 초안 작성, 테스트 케이스, 배포 스크립트 작성 등 파이프라인을 설정할 때 매우 유용합니다. 그러나 배포 임계값(게시된 값을 초과하는 측정항목)과 롤백 정책은 사용자가 결정합니다. 이는 비즈니스 위험 결정입니다.

재현성 인프라

프로덕션에서 모델의 동작을 재현하기 위해 모델 레지스트리: 어떤 모델이 어떤 데이터와 코드로 훈련되었는지, 어떤 측정항목을 받았는지 유지하는 기록입니다. 각 프로덕션 모델에 대해 학습 데이터 버전, 코드 버전(git commit), 하이퍼파라미터, 평가 점수, 배포 날짜 등을 추적할 수 있어야 합니다. 문제가 발생했을 때 "이 예측은 어떤 모델이, 어떤 데이터로 만들어졌는가?"라는 질문에 답할 수 있어야 합니다. 몇 분 안에. 이 내용은 11단원에서 자세히 설명하겠습니다.

세 개의 미니 케이스

사례 1 - 섀도우 분포로 인해 발생한 문제입니다. 추천 모델이 테스트에서 이전 모델을 능가했습니다. 섀도우 모드에서 프로덕션 트래픽으로 실행하면 특정 사용자 세그먼트(신규 사용자)에 대해 매우 낮은 권장 사항이 생성되는 것으로 나타났습니다. 테스트 데이터는 이 세그먼트를 과소 대표했습니다. 모델이 사용자에게 표시되지 않고 수정되었습니다. 직접 열면 새로운 사용자 경험이 중단됩니다.

사례 2 - 취소할 수 없는 배포. 한 팀은 롤백 계획 없이 모든 트래픽에 새로운 가격 모델을 출시했습니다. 이 모델은 예기치 않게 일부 제품의 가격을 매우 저렴하게 책정했습니다. 프로세스가 준비되지 않았기 때문에 이전 버전으로 되돌리는 데 몇 시간이 걸렸습니다. 심각한 수입 손실이 발생했습니다. 이후에는 모든 배포에 필수 롤백 테스트가 추가되었습니다.

사례 3 - 자동 데이터 드리프트. 몇 달간 오류 없이 사기 패턴이 나타났습니다. 그러나 사기꾼의 전술이 바뀌었고(데이터 표류) 모델의 재현율이 소리 없이 떨어졌습니다. 감시가 없었기 때문에 아무도 눈치 채지 못했습니다. 예측 분포 모니터링 패널이 구축되자 드리프트가 조기에 가시화되었습니다. 모니터링은 8단원에서 다루겠습니다.

복사 가능한 템플릿

이 모델에 대한 배포 계획 초안을 작성합니다. 모델: [무엇을 하는지], 사용법: [온라인 또는 배치?] 다음을 포함해야 합니다:1) 패키징(컨테이너, 버전 관리)2) 증분 배포 전략(섀도우/카나리아/A-B) 및 이유3) 추적할 지표(비즈니스 + 기술 + 대기 시간)4) 롤백 계획 및 테스트 방법5) 배포 임계값(어떤 지표가 어떤 값을 초과해야 하는지)

이 ML CI/CD 파이프라인을 확인하십시오. 1) 데이터 유효성 검사가 라인에 있습니까?2) 평가 임계값을 유지하지 않고 배포를 진행할 수 있습니까(그렇지 않아야 합니까?3) 롤백이 자동입니까?4) 데이터+코드+메트릭이 모델 레지스트리에서 추적됩니까?Pline 구성: [config]

이 모델에 온라인 또는 일괄 프레젠테이션이 적합한지 결정하는 데 도움을 주세요. 결과가 얼마나 오랫동안 사용될 것인가: [순간/분/시간/일]예상 요청량: [숫자]지연 제약이 있습니까: [ms]비용과 복잡성 측면에서 어떤 것을 추천하시겠습니까? 그리고 그 이유는 무엇입니까?

이 모델에 대한 롤백 절차를 작성하십시오.- 성능 저하를 유발하는 측정항목/임계값은 무엇입니까?- 롤백 단계는 무엇입니까?- 롤백(대상)에 걸리는 시간은 얼마입니까?- 생산 전에 이 절차를 어떻게 테스트합니까?

프리젠테이션 패턴 테이블

기준

온라인(실시간)

배치

지연

심각(ms)

중요하지 않은

사용법

즉각적인 응답이 필요합니다

주기적인 점수

비용

높다

낮음

복잡성

높다

낮음

실시간 추천, 사기

월별 위험 점수

일반적인 실수

  • 회수 계획 없이 배포합니다. 잘못된 모델이 전체 사용자에게 영향을 미칩니다.
  • 100% 트래픽으로 직접 개방됩니다. 시차적 분포로 위험을 제한합니다.
  • 모니터링을 설정하지 않았습니다. 모델은 오류 없이 자동으로 오류를 생성합니다.
  • 중복된 실시간 프레젠테이션. 일괄 처리로 충분하지만 비용과 복잡성이 증가합니다.
  • 모델-데이터-코드 버전을 연결하지 않습니다. 문제를 재현할 수 없습니다.
  • 배포 임계값이 없는 자동 릴리스입니다. 나쁜 모델은 조용히 들어옵니다.

요약하면

모델을 프로덕션으로 이동하는 것은 모델을 교육하는 것보다 다르며 종종 더 어려운 엔지니어링 작업입니다. ML은 코드-데이터-모델 트리오, 즉 패키징 및 버전 관리, 비즈니스 요구 사항에 맞는 제공 패턴(온라인/배치), 점진적이고 가역적인 배포, 임계값 제어 CI/CD 및 모델 등록에 의존하기 때문에 추가 규율이 필요합니다. 인공 지능은 이 인프라의 코드 및 구성을 생성하는 데 강력한 도움이 됩니다. 그러나 배포 기준점, 환수 정책 및 위험 결정은 귀하의 몫입니다. 롤백 계획이 없는 배포는 완료되지 않습니다.

응용과제

모델을 컨테이너화(Docker)하고 버전에 레이블을 지정합니다. 비즈니스 요구 사항에 따라 온라인 또는 일괄 제공 여부를 결정하고 타당성을 작성하십시오. 단계별 배포 계획(섀도우 또는 카나리아)과 테스트된 롤백 절차를 문서화합니다. 모델 레지스트리에 데이터 버전, 코드 커밋, 평가 점수를 기록하세요.

체크리스트

  • [ ] 모델이 패키지화되고 버전이 지정됩니다(컨테이너 + 레이블).
  • [ ] 프레젠테이션 패턴(온라인/배치)은 비즈니스 요구에 따라 선택되었습니다.
  • [ ] 단계적 배포 전략(섀도우/카나리아)이 구현되었습니다.
  • [ ] 롤백 절차가 작성되고 테스트되었습니다.
  • [ ] 평가 임계값이 충족되기 전에는 CI/CD 배포가 진행되지 않습니다.
  • [ ] 모델 레지스트리는 데이터+코드+메트릭 링크를 보유합니다.