ML-Ops: 머신 러닝 모델 운영, 엔드 투 엔드

ML-Ops: 머신 러닝 모델 운영, 엔드 투 엔드

머신 러닝 모델을 구축한다는 것은 무엇을 의미합니까?

머신 러닝(ML) 커뮤니티가 계속 성장함에 따라 우리는 모델을 더 잘 배치하고 서비스하기를 원한다. ML 배포는 모든 소프트웨어 응용 프로그램의 배포 라이프사이클에서 일반적인 문제에 직면하며, ML 관련 추가 문제 세트(+)를 더한다. 특정 사용 사례에 대한 머신 러닝을 구축하기 위해 데이터 수집, 기능 엔지니어링, 모델링 빌딩, 모델 평가를 수행한다. 이 ML 모델의 프로토타입을 확보하면 서비스 인프라 및 모니터링이 포함된 생산에 투입할 수 있습니다. 위에서 언급한 바와 같이 ML 파이프라인은 전체 프로세스를 효과적으로 자동화하여 시간이 지남에 따라 예측에 정확하게 대응하고 확장 가능성을 가져야 한다. 코드 버그, 시스템 오류, 인적 오류, 로그 누락 등은 이 프로세스에서 명명해야 할 몇 가지 오류입니다. 예: 매주 다른 장르의 새로운 영화가 개봉되기 때문에 추천 시스템은 이 새로운 정보와 신호를 포착하기 위해 정기적으로 재교육을 받아야 합니다. 요점은, 우리가 실제로 얼마나 자주 보존해야 하는지, 그리고 새로운 것이 들어오는지를 확실히 해야 한다는 것입니다. 그것은 포착되어야 합니다. 이러한 노력을 인식하고, 우선 순위를 매기고, 보상을 하는 것은 성공적인 ML 라이프사이클의 건강한 상태를 위해 중요하다. MLOps의 목표는 ML 애플리케이션의 개발과 생산 사이의 격차를 줄이고 ML 프로젝트가 더 나은 품질, 신뢰성 및 유지보수를 가질 수 있도록 돕는 것이다.

배움은 반복적인 과정이다. 인간은 일정 기간 동안 일정한 정밀도가 달성될 때까지 여러 번 시도하고 실패하는 것을 포함하는 새로운 기술을 배운다. 마찬가지로, 머신 러닝은 데이터를 사전 처리하는 것부터 시작하여 성능을 향상시키기 위해 반복적으로 작업하는 단순한 기준 모델부터 시작하는 반복 프로세스이기도 합니다. 테스트 단계를 지나 생산에 투입될 준비가 된 모델이 있으면 배포 제약 조건(도구 최종화, 메트릭 선택, 코드 기반 설정 등)을 점검해야 합니다. ML 모델이 사용자에게 일정한 정밀도로 지속적으로 통찰력을 제공할 때만 조직에 도움이 된다는 점을 이해하는 것이 중요합니다. 따라서 이 구축 라이프사이클을 계획하는 것이 매우 중요합니다. 복잡성은 아직 끝나지 않았습니다. 일단 구축되면 시스템이 잘못될 수 있는 부분을 계획하고 확인할 수 있는 “감사 프레임워크”도 필요합니다. 여기에는 편견에 대한 점검이 포함될 수 있습니다.

ML 모델 구축 시 당면 과제:

CACE: 무엇이든 바꾸면 모든 것이 바뀝니다.

ML 파이프라인은 많은 작은 구성 요소(데이터 유효성 검사, 기능 선택, 모델링, 유효성 검사)로 구성됩니다. 이러한 모든 구성 요소는 서로 독립적으로 작업을 수행하지만 이전 단계의 입력에 따라 특정 작업을 수행합니다. 한 구성 요소에서 무언가를 변경하면 전체 파이프라인의 성능이 변경됩니다. 예를 들어, 초 매개 변수나 입력 데이터 또는 샘플링 방법의 변경은 모델의 성능을 변화시킬 것이며 이러한 변경으로 매우 다른 예측을 얻을 가능성이 있다.

데이터 이동:

데이터는 ML 모델의 핵심입니다. 데이터는 ML 파이프라인이 어떻게 동작해야 하는지 정의하며 데이터 분포의 변화는 때때로 우리가 가장 보기 어려운 것 중 하나이다. 우리는 역동적인 환경에 살고 있기 때문에, 데이터의 배포는 시간이 지남에 따라 변합니다. 예를 들어, 시간이 지남에 따라 입력 데이터에 새로운 기능이 추가되면, 우리는 이러한 신호를 캡처하도록 모델을 훈련시켜야 한다.

개념 드리프트:

시간이 지남에 따라 입력 데이터와 출력 데이터 간의 관계 변화입니다. 이는 일반적으로 데이터 생성 프로세스 자체가 시간이 지남에 따라 변경되었을 때 발생합니다. 예. 대유행 이후 인간의 정상적인 행동이 변했기 때문에 대유행 이후 신용카드 사기 탐지 모델에 많은 문제가 있었다.

모델 성능 저하:

모델은 일반적으로 시간이 지남에 따라 진화되는 코드와 데이터의 결과입니다. 데이터가 이동하면 모델의 성능이 저하되지만(정상적인) 일반적으로 완전히 재교육되어 시간이 많이 걸리거나 첫 번째 모델의 출력에 작동하는 이전 모델 위에 새 모델이 쌓입니다. 이 프로세스는 다중 스태킹, 중복 작업 및 비용 증가로 이어질 수 있습니다.

데이터 중심 VS 모델 중심 접근 방식:

ML 성능을 개선하기 위한 접근법은 데이터 중심 접근 방식(모델을 고정하고 데이터 품질을 개선함)과 모델 중심 접근 방식(데이터를 고정하고 모델을 반복적으로 개선함) 두 가지가 있다. 때때로 예측을 하기 위해 데이터에서 복잡한 신호를 선택하기 위해 복잡한 딥 러닝 모델이 필요하기 때문에 이 두 접근 방식 사이에는 트레이드오프가 있다고 생각합니다. 하지만 좋은 품질의 데이터가 없다면, 가장 복잡한 모델도 매우 효율적이지 않을 것입니다. 이 두 접근 방식 사이의 균형을 파악하는 것이 중요하다.

중간 데이터 스토리지:

큰 기계 학습 파이프라인이 생성되면 각 구성 요소는 이전 구성 요소의 출력에 따라 달라지는데, 여기서 데이터는 공유되고 중간 공간에 저장되어야 한다. 이 단계에서는 데이터가 구성 요소 간에 효율적으로 전송되는 방식으로 파이프라인을 구성하는 것이 중요합니다.

피드백 루프:

교육 데이터 세트가 현재 사용되는 모델의 출력에 영향을 받지 않도록 하는 것이 중요하다. 이 경우 모델은 자체 편향에서 학습하고 있으며 아마도 이를 적용할 것이기 때문이다. ML 모델이 항상 환경에 대해 학습하고 예측과 함께 정확한지 확인하려면 모델에 대한 새로운 예를 계속 제공해야 한다.

모범 사례:

모듈식 설계:

모듈식 구성 요소로 머신 러닝 파이프라인을 구축하면 테스트 및 재현이 용이합니다. 이러한 구성 요소는 ML 파이프라인의 조각을 빌드하기 위해 라이브러리의 형태로 존재할 수 있습니다. 예: 데이터 로드, 기능 선택 및 엔지니어링, 교육 모델 및 검증을 위한 구성 요소. Transfer Learning- 한 모델에서 다음 버전으로 학습을 만듭니다.

지속적인 실험, 학습 및 배포:

ML 파이프라인이 동적 환경에서 작동하기 때문에 데이터와 모델은 시간이 지남에 따라 지속적으로 변화합니다. ML 파이프라인은 예측의 정확성을 유지하기 위해 지속적인 변경과 업그레이드에 적응할 수 있어야 한다. 위에서 언급한 바와 같이 입력 데이터 세트에 기능이 추가되는 것과 같은 작은 변경도 전체 파이프라인이 파손되어 재교육이 필요할 수 있다. ML 파이프라인은 자동화되는 것이 더 좋습니다. 파이프라인이 변경을 감지하면 트리거가 자동 재교육을 예약합니다. ML 파이프라인은 반복적인 실험이 필요하다(예: A/B 테스트) 및 새로운 데이터를 사용한 모델 스크래치/재교육의 생성은 시간이 지남에 따라 동적 환경에 지속적으로 관련됩니다.

성능 모니터링:

ML 파이프라인의 동작 변화를 감지하기 위해 모델의 성능과 편향, 공정성 등과 같은 다른 동작을 모니터링해야 한다. ML 파이프라인은 항상 성능 저하 및 드리프트의 위험이 있습니다. “통계 프로세스 제어”를 사용하여 성능의 변경/편차를 감지할 수 있습니다. 인간은 성능 모니터링의 매우 중요한 측면인 요약된 방식으로 시각에서 정보를 유추하고 이해하는 데 정말 능숙하다.

버전 제어:

버전 제어는 소프트웨어 엔지니어링 내 진화에 매우 중요한 기둥이었고 마찬가지로 시간에 따른 ML 파이프라인의 변화를 추적하는 데 매우 중요하고 효과적이다. 필요한 경우 다른 버전의 모델 간에 쉽게 전환할 수 있습니다.

로깅:

중간 데이터 파일을 작성하면 기계 학습 실험의 성능을 정량적으로 비교 및 추적하는 데 도움이 된다. 여기에는 여러 메트릭 로그 파일이 포함될 수 있으므로 개선 사항을 추적하고 데이터/개념 표류를 쉽게 감지할 수 있습니다.

인간 루프:

AI 모델은 제대로 된 점검 없이는 완전히 신뢰할 수 없다. 파이프라인의 훈련 및 테스트 단계를 위한 루프에 있는 사람은 항상 더 많은 자신감을 가지고 더 나은 결과를 제공할 수 있다. 인간과 기계 학습의 결합은 더 효과적인 학습 주기를 만든다. 인간과 기계 사이의 적절한 상호작용을 통해 파이프라인의 성능을 높일 수 있다.