MLflow 및 PyTorch — 최첨단 AI가 MLOps와 만나는 곳
PyTorch는 PyTorch 1.0의 도입 이후 빠른 속도로 발전하여 연구부터 생산까지 워크플로우가 가속화되었습니다. 연구의 모멘텀을 살펴보면, paperswithcode.com/trends,에서 볼 수 있듯이, 우리는 연구 커뮤니티가 PyTorch를 선택 도구로 채택했음을 알 수 있다. 반대로 Lyft Level 5, Microsoft, AstraZeneca 등 전 세계의 기업 및 프로덕션 사용자는 PyTorch를 규모에 맞게 구축함으로써 실질적인 제품 가치를 실현하고 있습니다. MLOps와 머신 러닝의 엔드 투 엔드 라이프사이클 관리는 이러한 커뮤니티 간의 중요한 가교이며, PyTorch와 MLOps에서 개발된 최첨단 AI의 결합은 제품에 최첨단 연구의 영향을 가져올 강력한 힘이다.
오늘은 PyTorch를 통한 ML 흐름 사용에 대한 엔드 투 엔드 지원을 지원하기 위한 수많은 기술적 기여를 발표합니다. 여기에는 PyTorch Lightning을 통한 자동 로깅, 새로운 배포 플러그인을 통한 TorchServe 통합, Hugging Face Transformers를 대상으로 하는 샘플 엔드 투 엔드 워크플로우가 포함됩니다. Databricks/MLflow 핵심 유지 관리자와 Facebook 내 PyTorch 핵심 개발 팀의 기술 팀 구성원들이 공동으로 수행한 이 작업은 시작에 불과합니다. 우리는 앞으로 몇 달 안에 더 많은 기술적 기여가 있을 것으로 예상한다.
MLOps의 부상
위키백과에 따라 MLOps는 다음과 같이 정의된다.
머신러닝(machine learning)과 오퍼레이션(operations)의 합성어로, 데이터 과학자와 운영 전문가 간의 협업과 커뮤니케이션을 통해 운영 ML(또는 딥러닝) 라이프사이클을 관리하는 것을 의미한다.
MLOps는 사용자가 모델 개발, A/B 테스트, 지속적인 통합/제공, 모니터링 등을 포함한 라이프사이클의 다양한 단계에서 모델을 관리하는 방법을 포함한다. AI 리서치 붐의 초기 단계였던 지난 10년 동안, 어느 정도의 규모로 운영하지 않는 한, 이것들은 일반적으로 지역 사회의 관심사가 아니었습니다. ML의 확산과 관련 제품 영향이 감지되고 있는 가운데, MLOps의 주제는 전면과 중심이며 커뮤니티는 활발하고 높은 참여도를 보이고 있다. 그러나, 연구부터 생산까지의 패러다임을 보다 광범위하게 이용 가능하게 하기 위해 다루어야 할 과제가 있고 여전히 해야 할 일이 있다.
우리가 관찰한 몇 가지 과제는 다음과 같습니다.
도구 체인 다양성: ML의 워크플로우는 데이터 준비 및 분석, 모델 교육, 최적화, 배포 등에 걸쳐 있습니다. 도구를 위한 공간은 ML 자체와 마찬가지로 단편화되고 진화하고 있습니다.
실험 추적은 어렵습니다. ML 모델을 개발하는 데 내재된 것은 실험 과정이다. 확장적으로, 특정 제품 요구 사항을 충족하는 모델을 개발하려면 훈련된 매개 변수, 코드 버전, 데이터 및 모델의 조합이 필요할 수 있습니다.
재현성은 찾기 어렵다: ML 시스템 내의 변수와 무작위성 출처를 감안할 때 결과를 재현하기 어렵다. 일반적으로 동일한 코드를 다시 작동시키는 것, 문제를 디버깅하는 것, 또는 재현 가능한 워크플로우를 공유하는 것 등은 여전히 어려운 과제입니다.
구축은 여전히 쉽지 않습니다. 생산 환경은 장치 추론에 대한 배치 및 스트리밍 추론을 포함하여 단편적이고 다양하며 일반적으로 낮은 위험 방식으로 배포하는 표준 방법은 없다.
지속적인 반복 프로세스: 기존 소프트웨어 개발과 달리 ML 모델을 구축하고 관리하는 것은 지속적인 반복 프로세스입니다. 정확도와 같은 메트릭을 최적화하려면 지속적인 실험이 필요하다. 모델은 데이터, 사용자 행동의 변화로 인해 시간이 지남에 따라 표류할 수 있으며, 시간이 지남에 따라 좋은 결과를 얻기 위해서는 전반적으로 지속적인 훈련/재훈련/피드백 루프가 필요하다.
클라우드 독립성: 관리형 서비스는 훌륭하지만 몇 가지 단점도 있습니다. 여기에는 사용자 정의, 유연성 및 공급업체의 제약이 포함될 수 있습니다. 제품이 규모에 도달하기 시작하면 이러한 요인의 중요성은 점점 더 커집니다.
MLflow + PyTorch =🧡
PyTorch용 프로덕션 플랫폼에 대한 엔드 투 엔드 탐색을 가능하게 하는 첫 번째 단계로, 우리는 MLflow 커뮤니티와 협력하여 프로젝트를 더욱 긴밀하게 통합했습니다. 여기에는 자동 로깅(명시적인 로그 문이 필요 없는 로그 메트릭, 매개 변수 및 모델) 지원 추가와 성능 모델 추론을 지원하는 배포 플러그인을 제공하는 TorchServe 모델의 통합이 포함되었습니다. 모든 것을 하나로 묶기 위해, 우리는 또한 사용자가 시작할 때 활용할 수 있는 Hugging Face Transformers를 기반으로 하는 엔드 투 엔드 NLP 워크플로우를 제공하고 있다.
또한 파이썬이 없는 프로세스에서 배포를 위해 모델을 직렬화하고 최적화하는 방법인 TorchScript와 더 크고 빠른 모델 개발을 지원하는 분산 교육도 사용할 수 있다. 다음 섹션에서는 각 영역에 대한 몇 가지 세부 사항을 살펴보겠습니다.
자동 로깅
자동 로그 기능을 사용하면 ML 모델 빌더가 ML 흐름에서 PyTorch 모델의 매개 변수와 메트릭을 자동으로 기록하고 추적할 수 있습니다. 우리는 PyTorch Lightning을 교육 루프로 사용하여 MLflow 실험의 핵심 모델 메트릭 로깅 및 추적에 대한 모범 사례를 기반으로 자동 로깅 지원을 추가했다. 자동 로그 기능은 최적화 도구 이름, 학습 속도, 훈련 손실, 유효성 검사 손실, 정확도와 같은 메트릭, 모델 등의 매개 변수를 아티팩트 및 체크포인트 형태로 자동으로 기록합니다. 조기 정지를 사용하면 모델 체크포인트, 조기 정지 매개 변수 및 메트릭도 기록됩니다. 또한 사용자는 F1 점수와 같은 사용자 지정 메트릭을 유연하게 기록할 수 있습니다.
모델 아티팩트
이제 NLP 모델의 어휘 파일과 같은 추가 모델 아티팩트를 저장할 수 있는 기능을 사용하여 PyTorch 모델을 eager 모드와 TorchScript 모드 모두에서 저장하고 로드할 수 있다.
TorchScript는 ML 응용 프로그램과 프로덕션 모델 서비스에 권장되는 것에 최적화된 파이썬 언어의 정적 하위 집합이다. 모델을 프로덕션 준비하기 위한 최적화 단계의 일부로 모델을 TorchScript 형식으로 변환한 다음 프로덕션 환경에 배포합니다. 이제 MLflow를 사용하여 TorchScripted 모델을 저장하고 로드할 수 있습니다.
모든 아티팩트는 MLflow ML 모델 번들의 일부로 저장되므로 모델이 MLflow 모델 레지스트리에서 개발, 스테이징에서 프로덕션 단계로 이동할 때 모델의 다양한 단계를 쉽게 관리할 수 있다.
TorchServe를 통한 배포
MLflow TorchServe 플러그인을 통해 사용자는 모델 제공까지 완전한 MLOps 라이프사이클을 얻을 수 있습니다.
TorchServe는 다중 모델 서비스, 모델 버전 관리, A/B 테스트, 모델 메트릭을 지원하여 규모에 맞게 PyTorch 모델의 배포를 가속화하는 PyTorch 모델 서비스 라이브러리이다. 객체 감지 및 텍스트 분류와 같은 일반적인 사용 사례에 대한 기본 핸들러와 신속하게 시작할 수 있는 모델 동물원이 함께 제공됩니다.
명령줄 인터페이스 또는 python API를 사용하여 배포를 생성하고 관리하고 이에 대한 추론을 실행할 수 있습니다. TorchServe의 로컬 및 원격 설치는 모두 플러그인을 통해 지원되므로 개발 라이프사이클의 다양한 단계에 적합한 워크플로우를 가질 수 있습니다.
재현 가능한 런을 위한 ML 프로젝트
모든 샘플은 누구나 쉽게 재현 가능한 실행을 시작할 수 있도록 친숙한 ML Project 패키지와 함께 제공됩니다.
분산 교육
분산 교육이 필요한 대형 모델에 대해서도 동일한 익숙한 흐름을 사용할 수 있습니다. PyTorch Distributed Data Parallel 교육을 사용하기 위한 전체 워크플로우가 제공되어 팀을 쉽게 시작할 수 있습니다.
PyTorch용 MLOps 워크플로우 + MLflow + TorchServe
이 모든 것을 종합하면, 전체 MLflow MLops 라이프사이클 관리를 사용하여 PyTorch 모델을 구축하고 TorchServe 플러그인에 배포하기 위한 MLops의 전체 워크플로는 다음과 같습니다.
그 다음에 뭐?
가까운 장래에 다음과 관련된 새로운 기능 및 예를 살펴보십시오.
-
NLP, 컴퓨터 비전을 위한 엔드 투 엔드 워크플로우
-
하이퍼 파라미터 최적화 지원
-
캡텀을 이용한 프로그래밍 해석 가능성
-
기능 저장소 지원