ML 파이프라인

프로덕션 ML에서는 단일 모델을 빌드하고 배포하는 것이 목표가 아닙니다. 목표는 시간이 지남에 따라 모델을 개발, 테스트, 배포하기 위한 자동화된 파이프라인을 구축하는 것입니다. 왜냐하면 세상이 변화함에 따라 데이터의 추세가 바뀌어 프로덕션의 모델이 오래됩니다. 모델이 장기적으로 고품질 예측을 계속 제공하려면 최신 데이터로 재학습해야 합니다. 즉, 오래된 모델을 최신 모델로 대체할 방법이 필요합니다.

파이프라인이 없으면 오래된 모델을 교체하는 과정에서 오류가 발생하기 쉽습니다. 예를 들어 모델이 잘못된 예측을 제공하기 시작하면 누군가 새 데이터를 수동으로 수집하고 처리하여 새 모델을 학습시키고 품질을 검증한 다음 최종적으로 배포해야 합니다. ML 파이프라인은 이러한 반복적인 프로세스를 많이 자동화하여 모델 관리 및 유지보수를 더 효율적이고 안정적으로 만듭니다.

파이프라인 빌드

ML 파이프라인은 모델 빌드 및 배포 단계를 잘 정의된 작업으로 정리합니다. 파이프라인에는 예측을 제공하거나 모델을 업데이트하는 두 가지 기능 중 하나가 있습니다.

예측 제공

서빙 파이프라인은 예측을 제공합니다. 모델을 실제 환경에 노출하여 사용자가 액세스할 수 있도록 합니다. 예를 들어 사용자가 예측(내일 날씨, 공항까지 이동하는 데 걸리는 시간, 추천 동영상 목록 등)을 원하는 경우 서비스 파이프라인은 사용자의 데이터를 수신하고 처리하여 예측을 한 다음 사용자에게 전달합니다.

모델 업데이트

모델은 프로덕션에 적용된 후 거의 즉시 오래된 상태가 되는 경향이 있습니다. 기본적으로 오래된 정보를 사용하여 예측하는 것입니다. 학습 데이터 세트는 하루 전 또는 경우에 따라 한 시간 전의 세계 상태를 캡처했습니다. 세상이 변했습니다. 사용자가 더 많은 동영상을 시청하여 새로운 추천 목록이 필요합니다. 비로 인해 교통이 정체되어 사용자가 도착 시간의 업데이트된 추정치가 필요합니다. 인기 있는 트렌드로 인해 소매업체에서 특정 상품의 업데이트된 재고 예측을 요청합니다.

일반적으로 팀은 프로덕션 모델이 오래되기 훨씬 전에 새 모델을 학습시킵니다. 일부 팀은 지속적 학습 및 배포 주기에서 매일 새 모델을 학습시키고 배포합니다. 새 모델을 학습시키는 것은 프로덕션 모델이 오래되기 훨씬 전에 이루어져야 합니다.

다음 파이프라인은 함께 작동하여 새 모델을 학습시킵니다.

  • 데이터 파이프라인 데이터 파이프라인은 사용자 데이터를 처리하여 학습 및 테스트 데이터 세트를 만듭니다.
  • 학습 파이프라인 학습 파이프라인은 데이터 파이프라인의 새로운 학습 데이터 세트를 사용하여 모델을 학습시킵니다.
  • 검증 파이프라인 검증 파이프라인은 데이터 파이프라인에서 생성된 테스트 데이터 세트를 사용하여 학습된 모델을 프로덕션 모델과 비교하여 검증합니다.

그림 4는 각 ML 파이프라인의 입력과 출력을 보여줍니다.

ML 파이프라인

입력과 출력을 보여주는 ML 파이프라인 서빙 파이프라인은 사용자 입력을 가져와 예측을 제공합니다. 데이터 파이프라인은 애플리케이션 데이터 로그를 처리하여 학습 및 검증 파이프라인이 새 모델을 학습시키고 검증하는 데 사용하는 학습 및 테스트 데이터 세트를 만듭니다.

그림 4. ML 파이프라인은 모델을 개발하고 유지관리하는 여러 프로세스를 자동화합니다. 각 파이프라인에는 입력과 출력이 표시됩니다.

매우 일반적인 수준에서 파이프라인이 프로덕션에서 최신 모델을 유지하는 방법은 다음과 같습니다.

  1. 먼저 모델이 프로덕션에 배치되고 서빙 파이프라인이 예측을 제공하기 시작합니다.

  2. 데이터 파이프라인은 즉시 데이터를 수집하여 새로운 학습 및 테스트 데이터 세트를 생성합니다.

  3. 일정 또는 트리거에 따라 학습 및 검증 파이프라인은 데이터 파이프라인에서 생성된 데이터 세트를 사용하여 새 모델을 학습시키고 검증합니다.

  4. 검증 파이프라인에서 새 모델이 프로덕션 모델보다 나쁘지 않다고 확인되면 새 모델이 배포됩니다.

  5. 이 프로세스는 계속 반복됩니다.

모델 비활성 및 학습 빈도

거의 모든 모델이 오래됩니다. 일부 모델은 다른 모델보다 더 빨리 오래됩니다. 예를 들어 옷을 추천하는 모델은 소비자 선호도가 자주 바뀌는 것으로 유명하기 때문에 일반적으로 빠르게 오래됩니다. 반면 꽃을 식별하는 모델은 오래되지 않을 수 있습니다. 꽃의 식별 특성은 안정적으로 유지됩니다.

대부분의 모델은 프로덕션에 배치된 직후에 오래되기 시작합니다. 데이터의 특성을 반영하는 학습 빈도를 설정하는 것이 좋습니다. 데이터가 동적인 경우 자주 학습하세요. 덜 역동적인 경우 자주 학습하지 않아도 됩니다.

모델이 오래되기 전에 학습시키세요. 조기 학습은 데이터 또는 학습 파이프라인이 실패하거나 모델 품질이 좋지 않은 경우와 같은 잠재적인 문제를 해결할 수 있는 버퍼를 제공합니다.

매일 새 모델을 학습시키고 배포하는 것이 좋습니다. 일일 빌드 및 출시 프로세스가 있는 일반 소프트웨어 프로젝트와 마찬가지로 학습 및 검증을 위한 ML 파이프라인은 매일 실행하는 것이 가장 좋습니다.

이해도 확인

다음 모델 중 오래되어 최신 데이터로 학습된 모델로 지속적으로 교체해야 하는 모델은 무엇인가요? 해당하는 항목을 모두 선택해 주세요.
스팸 예측
정답입니다. 이러한 모델은 새로운 스팸 전술과 같은 여러 요인에 따라 지속적으로 변화하는 데이터를 사용합니다. 따라서 끊임없이 변화하는 트렌드에 대응하기 위해 지속적으로 업데이트해야 합니다.
옷 추천
정답입니다. 이러한 모델은 소비자 선호도와 같은 여러 요인에 따라 지속적으로 변화하는 데이터를 사용합니다. 따라서 끊임없이 변화하는 트렌드에 대응하기 위해 지속적으로 업데이트해야 합니다.
조류 종을 분류합니다.
새 종은 시간이 지나도 변하지 않습니다.
거래가 사기인지 예측
정답입니다. 이러한 모델은 새로운 사기 전술과 같은 여러 요인에 따라 지속적으로 변화하는 데이터를 사용합니다. 따라서 끊임없이 변화하는 트렌드에 대응하기 위해 지속적으로 업데이트해야 합니다.

제공 파이프라인

제공 파이프라인은 온라인 또는 오프라인의 두 가지 방법 중 하나로 예측을 생성하고 제공합니다.

  • 온라인 예측. 온라인 예측은 일반적으로 온라인 서버에 요청을 전송하고 예측을 반환하여 실시간으로 이루어집니다. 예를 들어 사용자가 예측을 원하는 경우 사용자의 데이터가 모델로 전송되고 모델은 예측을 반환합니다.

  • 오프라인 예측 오프라인 예측은 사전 계산되고 캐시됩니다. 예측을 제공하기 위해 앱은 데이터베이스에서 캐시된 예측을 찾아 반환합니다. 예를 들어 구독 기반 서비스는 구독자의 앱 제거율을 예측할 수 있습니다. 모델은 모든 구독자의 이탈 가능성을 예측하고 이를 캐시합니다. 앱에 예측이 필요한 경우(예: 이탈할 가능성이 있는 사용자에게 인센티브를 제공하기 위해) 미리 계산된 예측을 조회하기만 하면 됩니다.

그림 5는 온라인 및 오프라인 예측이 생성되고 제공되는 방식을 보여줍니다.

온라인 및 오프라인 예측

예측은 실시간으로 제공되거나 조회할 수 있도록 일괄 처리되고 캐시될 수 있습니다.

그림 5. 온라인 예측은 실시간으로 예측을 제공합니다. 오프라인 예측은 캐시되고 게재 시간에 조회됩니다.

예측 후처리

일반적으로 예측은 전송되기 전에 후처리됩니다. 예를 들어 유해하거나 편향된 콘텐츠를 삭제하기 위해 예측이 후처리될 수 있습니다. 분류 결과는 모델의 원시 출력을 표시하는 대신 예를 들어 더 공신력 있는 콘텐츠를 강화하거나, 다양한 결과를 표시하거나, 특정 결과 (예: 클릭베이트)를 강등하거나, 법적 이유로 결과를 삭제하기 위해결과를 재정렬하는 프로세스를 거칩니다.

그림 6은 서빙 파이프라인과 예측 제공에 관련된 일반적인 작업을 보여줍니다.

후처리 예측

서빙 파이프라인은 일반적으로 예측을 후처리합니다.

그림 6. 예측을 제공하는 데 필요한 일반적인 작업을 보여주는 서빙 파이프라인

특성 엔지니어링 단계는 일반적으로 모델 내에 빌드되며 별도의 독립형 프로세스가 아닙니다. 제공 파이프라인의 데이터 처리 코드는 데이터 파이프라인이 학습 및 테스트 데이터 세트를 만드는 데 사용하는 데이터 처리 코드와 거의 동일한 경우가 많습니다.

애셋 및 메타데이터 스토리지

서빙 파이프라인에는 모델 예측과 가능한 경우 정답을 로깅하는 저장소가 포함되어야 합니다.

모델 예측을 로깅하면 모델의 품질을 모니터링할 수 있습니다. 예측을 집계하면 모델의 일반적인 품질을 모니터링하고 품질이 저하되기 시작하는지 확인할 수 있습니다. 일반적으로 프로덕션 모델의 예측은 학습 데이터 세트의 라벨과 평균이 동일해야 합니다. 자세한 내용은 예측 편향을 참고하세요.

정답 캡처

경우에 따라 그라운드 트루스는 훨씬 나중에야 사용할 수 있게 됩니다. 예를 들어 날씨 앱에서 6주 후의 날씨를 예측하는 경우 6주 동안은 실제 날씨를 알 수 없습니다.

가능한 경우 앱에 의견 메커니즘을 추가하여 사용자가 그라운드 트루스를 신고하도록 합니다. 사용자가 받은편지함에서 스팸 폴더로 메일을 이동하면 메일 앱이 사용자 의견을 암시적으로 캡처할 수 있습니다. 하지만 이 기능은 사용자가 메일을 올바르게 분류한 경우에만 작동합니다. 사용자가 스팸임을 알고 열지 않기 때문에 스팸을 받은편지함에 그대로 두면 학습 데이터가 부정확해집니다. 해당 메일이 '스팸'으로 표시되어야 하는데 '스팸 아님'으로 표시됩니다. 즉, 항상 그라운드 트루스를 포착하고 기록하는 방법을 찾아야 하지만 피드백 메커니즘에 있을 수 있는 단점을 인식해야 합니다.

그림 7은 사용자에게 제공되고 저장소에 로깅되는 예측을 보여줍니다.

예측 로깅

서빙 파이프라인은 모델의 오래됨을 모니터링하기 위해 예측을 로깅해야 합니다.

그림 7. 모델 품질을 모니터링하기 위해 예측을 로깅합니다.

데이터 파이프라인

데이터 파이프라인은 애플리케이션 데이터에서 학습 및 테스트 데이터 세트를 생성합니다. 그런 다음 학습 및 검증 파이프라인에서 데이터 세트를 사용하여 새 모델을 학습시키고 검증합니다.

데이터 파이프라인은 원래 모델을 학습시키는 데 사용된 것과 동일한 특징과 라벨을 사용하지만 최신 정보가 포함된 학습 및 테스트 데이터 세트를 만듭니다. 예를 들어 지도 앱은 수백만 명의 사용자에 대한 최근 이동 시간과 날씨와 같은 기타 관련 데이터로부터 학습 및 테스트 데이터 세트를 생성합니다.

동영상 추천 앱은 사용자가 추천 목록에서 클릭한 동영상 (클릭하지 않은 동영상 포함)과 시청 기록과 같은 기타 관련 데이터가 포함된 학습 및 테스트 데이터 세트를 생성합니다.

그림 8은 애플리케이션 데이터를 사용하여 학습 및 테스트 데이터 세트를 생성하는 데이터 파이프라인을 보여줍니다.

데이터 파이프라인

데이터 파이프라인은 학습 및 테스트 데이터 세트를 생성합니다.

그림 8. 데이터 파이프라인은 애플리케이션 데이터를 처리하여 학습 및 검증 파이프라인용 데이터 세트를 만듭니다.

데이터 수집 및 처리

데이터 파이프라인에서 데이터를 수집하고 처리하는 작업은 솔루션이 실행 가능하다고 판단한 실험 단계와 다를 수 있습니다.

  • 데이터 수집 실험 중에 데이터를 수집하려면 일반적으로 저장된 데이터에 액세스해야 합니다. 데이터 파이프라인의 경우 스트리밍 로그 데이터에 액세스하기 위해 데이터를 수집하려면 승인을 받아야 할 수 있습니다.

    의료 이미지와 같은 인간 라벨 데이터가 필요한 경우 데이터를 수집하고 업데이트하는 프로세스도 필요합니다.

  • 데이터 처리 실험 중에 적절한 기능은 실험 데이터 세트를 스크랩하고 결합하고 샘플링하여 얻었습니다. 데이터 파이프라인의 경우 동일한 기능을 생성하려면 완전히 다른 프로세스가 필요할 수 있습니다. 하지만 실험 단계의 데이터 변환을 복제하여 동일한 수학 연산을 특징과 라벨에 적용해야 합니다.

애셋 및 메타데이터 스토리지

학습 및 테스트 데이터 세트를 저장, 버전 관리, 관리하는 프로세스가 필요합니다. 버전 관리 저장소는 다음과 같은 이점을 제공합니다.

  • 재현성. 모델 학습 환경을 다시 만들고 표준화하며 다양한 모델 간의 예측 품질을 비교합니다.

  • 규정 준수. 감사 가능성 및 투명성을 위한 규정 준수 요구사항을 준수합니다.

  • 보관. 데이터를 저장할 기간에 대한 데이터 보관 값을 설정합니다.

  • 액세스 관리 세분화된 권한을 통해 데이터에 액세스할 수 있는 사용자를 관리합니다.

  • 데이터 무결성. 시간이 지남에 따라 데이터 세트의 변경사항을 추적하고 이해하여 데이터 또는 모델의 문제를 더 쉽게 진단할 수 있습니다.

  • 검색 가능성. 다른 사용자가 데이터 세트와 기능을 쉽게 찾을 수 있도록 합니다. 그러면 다른 팀에서 자신의 목적에 유용한지 판단할 수 있습니다.

데이터 문서화

적절한 문서를 통해 다른 사용자가 데이터의 유형, 소스, 크기, 기타 필수 메타데이터와 같은 주요 정보를 이해할 수 있습니다. 대부분의 경우 설계 문서 에 데이터를 문서화하면 충분합니다. 데이터를 공유하거나 게시할 계획이라면 데이터 카드 를 사용하여 정보를 구성하세요. 데이터 카드를 사용하면 다른 사용자가 데이터 세트를 더 쉽게 찾고 이해할 수 있습니다.

학습 및 검증 파이프라인

학습 및 검증 파이프라인은 프로덕션 모델이 오래되기 전에 이를 대체할 새 모델을 생성합니다. 새 모델을 지속적으로 학습시키고 검증하면 항상 최적의 모델이 프로덕션에 있게 됩니다.

학습 파이프라인은 학습 데이터 세트에서 새 모델을 생성하고 검증 파이프라인은 테스트 데이터 세트를 사용하여 새 모델의 품질을 프로덕션의 모델과 비교합니다.

그림 9에서는 학습 데이터 세트를 사용하여 새 모델을 학습시키는 학습 파이프라인을 보여줍니다.

학습 파이프라인

학습 파이프라인은 최신 데이터로 새 모델을 학습시킵니다.

그림 9. 학습 파이프라인은 최신 학습 데이터 세트를 사용하여 새 모델을 학습시킵니다.

모델이 학습된 후 검증 파이프라인은 테스트 데이터 세트를 사용하여 프로덕션 모델의 품질을 학습된 모델과 비교합니다.

일반적으로 학습된 모델이 프로덕션 모델보다 크게 나쁘지 않으면 학습된 모델이 프로덕션에 배포됩니다. 학습된 모델이 더 나쁘면 모니터링 인프라에서 알림을 생성해야 합니다. 예측 품질이 낮은 학습된 모델은 데이터 또는 검증 파이프라인에 문제가 있을 수 있음을 나타냅니다. 이 접근 방식은 최신 데이터로 학습된 최상의 모델이 항상 프로덕션에 있도록 합니다.

애셋 및 메타데이터 스토리지

모델과 메타데이터는 버전이 지정된 저장소에 저장하여 모델 배포를 정리하고 추적해야 합니다. 모델 저장소는 다음과 같은 이점을 제공합니다.

  • 추적 및 평가 프로덕션 환경에서 모델을 추적하고 평가 및 예측 품질 측정항목을 파악합니다.

  • 모델 출시 절차 모델을 간편하게 검토, 승인, 출시 또는 롤백할 수 있습니다.

  • 재현성 및 디버깅. 배포 전반에서 모델의 데이터 세트와 종속 항목을 추적하여 모델 결과를 재현하고 문제를 더 효과적으로 디버그합니다.

  • 검색 가능성. 다른 사용자가 내 모델을 쉽게 찾을 수 있도록 합니다. 그러면 다른 팀에서 모델 (또는 모델의 일부)을 자체 목적으로 사용할 수 있는지 확인할 수 있습니다.

그림 10은 모델 저장소에 저장된 검증된 모델을 보여줍니다.

모델 저장소

버전이 지정된 저장소에 모델 저장

그림 10. 검증된 모델은 추적 및 검색 가능성을 위해 모델 저장소에 저장됩니다.

모델 카드 를 사용하여 모델의 목적, 아키텍처, 하드웨어 요구사항, 평가 측정항목 등 모델에 관한 주요 정보를 문서화하고 공유하세요.

이해도 확인

버전이 지정된 저장소를 사용하여 예측, 데이터 세트, 모델을 저장하는 주요 이유는 무엇인가요? 해당하는 항목을 모두 선택해 주세요.
문제 재현 및 디버그
정답입니다. 버전이 지정된 저장소에 애셋을 저장하는 것은 문제를 진단하고 디버깅하는 데 매우 중요합니다.
모델 품질 모니터링
정답입니다. 버전이 지정된 저장소에 애셋을 저장하는 것은 모델 품질을 모니터링하는 데 매우 중요합니다.
컴퓨팅 할당량 줄이기

파이프라인 빌드의 문제점

파이프라인을 빌드할 때 다음과 같은 문제가 발생할 수 있습니다.

  • 필요한 데이터에 액세스하기 데이터 액세스에는 액세스가 필요한 이유를 설명해야 할 수 있습니다. 예를 들어 데이터가 어떻게 사용되는지 설명하고 개인 식별 정보 (PII) 문제가 어떻게 해결되는지 명확히 해야 할 수 있습니다. 모델이 특정 종류의 데이터에 액세스하여 더 나은 예측을 수행하는 방법을 보여주는 개념 증명을 제시할 수 있어야 합니다.

  • 올바른 기능 사용 실험 단계에서 사용된 기능을 실시간 데이터에서 사용할 수 없는 경우도 있습니다. 따라서 실험할 때는 프로덕션에서 동일한 기능을 사용할 수 있는지 확인하세요.

  • 데이터가 수집되고 표시되는 방식 이해 데이터가 수집된 방법, 수집한 사람, 수집 방법 (기타 문제 포함)을 파악하는 데는 시간과 노력이 필요합니다. 데이터를 철저히 이해하는 것이 중요합니다. 프로덕션에 사용될 수 있는 모델을 학습시키는 데 확신이 없는 데이터를 사용하지 마세요.

  • 노력, 비용, 모델 품질 간의 균형 이해 데이터 파이프라인에 새로운 기능을 통합하려면 많은 노력이 필요할 수 있습니다. 하지만 추가 기능이 모델의 품질을 약간만 개선할 수도 있습니다. 새 기능을 쉽게 추가할 수 있는 경우도 있습니다. 하지만 기능을 가져오고 저장하는 리소스가 매우 비쌀 수 있습니다.

  • 컴퓨팅 리소스 가져오기 재학습에 TPU가 필요한 경우 필요한 할당량을 확보하기 어려울 수 있습니다. 또한 TPU 관리는 복잡합니다. 예를 들어 모델이나 데이터의 일부를 여러 TPU 칩에 분할하여 TPU용으로 특별히 설계해야 할 수 있습니다.

  • 적절한 골든 데이터 세트 찾기 데이터가 자주 변경되는 경우 일관되고 정확한 라벨이 지정된 골든 데이터 세트를 얻기가 어려울 수 있습니다.

실험 중에 이러한 유형의 문제를 포착하면 시간을 절약할 수 있습니다. 예를 들어 최고의 기능과 모델을 개발했는데 프로덕션에서 사용할 수 없다는 것을 알게 되면 안 됩니다. 따라서 솔루션이 프로덕션 환경의 제약 조건 내에서 작동하는지 최대한 빨리 확인하세요. 파이프라인 단계에서 극복할 수 없는 문제가 발견되어 실험 단계로 돌아가야 하는 것보다 솔루션이 작동하는지 확인하는 데 시간을 쓰는 것이 좋습니다.