tl;dr 오늘 우리는 오랫동안 기다려온 Metaflow용 GUI를 오픈소싱합니다 . Metaflow GUI는 실시간으로 자신의 워크 플로우를 모니터링 실험을 추적하고, 모든 실행 된 작업에 대한 상세한 로그와 결과를 볼 수 데이터 과학자를 할 수 있습니다. GUI는 플러그인으로 확장할 수 있어 커뮤니티에서 다른 시스템과의 통합, 맞춤형 시각화를 구축하고 Metaflow의 향후 기능을 뷰에 직접 포함할 수 있습니다.

 

GUI를 사용하여 오래 실행된 작업 찾기

Metaflow는 4년 전에 Netflix에서 개발을 시작 했으며 2019년에 오픈 소스로 제공한 데이터 과학용 풀 스택 프레임워크입니다 . 이를 통해 데이터 과학자는 ML 워크플로를 정의하고, 로컬에서 테스트하고, 클라우드로 확장하고, 관용적인 Python 코드로 프로덕션에 배포할 수 있습니다. 오픈 소싱 이후 Metaflow 커뮤니티는 빠르게 성장하고 있습니다. 이제 거의 4800개의 별을 가진 Netflix의 GitHub 계정에서 7번째로 별표가 많은 활성 프로젝트입니다 . Netflix 외부에서 Metaflow는 생물 정보학에서 부동산에 이르기까지 다양한 산업 분야에 걸쳐 수백 개의 회사에서 프로덕션에서 기계 학습을 지원하는 데 사용됩니다.

Metaflow는 처음부터 명령줄 중심 도구였습니다. 이를 통해 데이터 과학자는 관용적 Python으로 복잡한 기계 학습 응용 프로그램을 쉽게 표현하고, 로컬에서 테스트하거나, 클라우드에서 확장할 수 있습니다. 이 모든 작업은 선호하는 IDE 및 터미널을 사용합니다. 우리 의 자유와 책임 문화에 따라 Metaflow는 데이터 과학자에게 올바른 모델링 접근 방식을 선택하고, 데이터와 기능을 유연하게 처리하고, 워크플로를 쉽게 구성할 수 있는 자유를 부여하는 동시에 결과 프로젝트가 생산 인프라에서 책임감 있고 강력하게 실행되도록 합니다.

Metaflow에서 실행되는 프로젝트의 수와 중요성이 증가함에 따라(그 중 일부는 우리 비즈니스의 핵심 임) ML 플랫폼 팀은 점점 더 많은 지원 요청을 받기 시작했습니다. 종종 질문은 "내 흐름을 실행하는 데 왜 그렇게 오랜 시간이 걸리는지 이해하는 데 도움을 줄 수 있습니까?" 또는 "어젯밤에 실패한 모델에 대한 로그를 어떻게 찾을 수 있습니까?"라는 성격이었습니다. 기술적으로 Metaflow는 사용자가 모든 세부 사항을 검사할 수 있는 Python API  제공합니다 . 몇 달 동안 상황을 관찰한 후 우리는 사용자의 증가하는 요구를 해결할 수 있는 새로운 사용자 인터페이스의 종류를 이해하기 시작했습니다.

Metaflow GUI 요구 사항

Metaflow는 설계된 인간 중심 시스템 입니다. 우리는 Python API와 CLI를 전체 사용자 인터페이스 및 사용자 경험의 필수적인 부분으로 생각하며, 처음부터 프로덕션 준비 ML 프로젝트를 더 쉽게 구축하는 데 중점을 둡니다. 우리의 접근 방식에서 Python 코드는 ML 모델 및 워크플로와 같은 복잡한 비즈니스 논리를 표현하기 위해 표현력이 뛰어나고 생산적인 사용자 인터페이스를 제공합니다. 동시에 CLI를 통해 사용자는 특정 명령을 빠르게 실행하고 일반적인 작업을 자동화할 수도 있습니다. 이와 같이 복잡한 실제 개발 작업의 경우 그래픽 사용자 인터페이스에서 동일한 수준의 생산성을 달성하기 어려울 것입니다.

그러나 텍스트 UI는 검색 가능성과 시스템 상태에 대한 전체적인 이해와 관련하여 상당히 부족합니다. 우리가 듣는 질문은 이러한 격차를 반영했습니다. 사용자  Metaflow 프로젝트에서 무슨 일이 일어나고 있는지 아주 간단하게 파악할 수 있는 사용자 인터페이스가 부족했습니다 .

Netflix는 관찰 가능성 을 위한 혁신적인 도구를 개발한 오랜 역사를 가지고 있습니다. 따라서 새로운 GUI에 대한 요구 사항을 지정하기 시작했을 때 다른 사용 사례를 위해 구축된 이전 GUI의 경험과 Metaflow의 실제 사용자 스토리를 활용할 수 있었습니다. 사용자. 우리는 Metaflow 경험의 특정 격차에 초점을 맞춰 GUI 범위를 엄격하게 지정하고 싶었습니다.

  1. GUI는 사용자가 어떤 흐름과 작업이 실행 되고 있고 그 안에서 무슨 일이 일어나고 있는지  수 있도록 해야 합니다. 특히, Metaflow API 또는 CLI의 기능을 보완하기 위해 GUI로 교체하고 싶지 않았습니다. 이는 GUI가 읽기 전용 임을 의미합니다. 코드 작성 및 실행 시작과 같은 모든 작업은 이전과 같이 사용자의 IDE 및 터미널에서 발생해야 합니다. 또한 완전히 별개의 문제 영역인 모델 모니터링 GUI를 아직 구축할 필요가 없었습니다.
  2. GUI는 전문 데이터 과학자를 대상으로 합니다. 데모와 프리젠테이션을 위한 멋진 GUI 대신, 우리는 데이터 과학의 도구 체인에 완벽하게 맞는 신중하게 고려된 사용자 워크플로를 갖춘 진지한 생산성 도구를 원했습니다. 이를 위해서는 작은 세부 사항에 주의가 필요합니다. 예를 들어 사용자는 GUI의 모든 보기에 대한 링크를 복사하고 예를 들어 Slack에서 공유하여 손쉬운 협업 및 지원(또는 Metaflow Slack 봇 과 통합)을 할 수 있어야 합니다. 그리고 CLI, GUI 및 노트북 사이를 탐색하기 위한 자연스러운 어포던스가 있어야 합니다.
  3. GUI는 확장 가능하고 신속 해야 합니다 . 수백만 개의 실행으로 구성된 기존 저장소를 처리해야 하며, 그 중 일부는 딸꾹질 없이 수만 개의 작업을 포함해야 합니다. Netflix 규모에서 작동하는 다른 GUI에 대한 경험에 따르면 이것은 사소한 요구 사항이 아닙니다. 확장성은 처음부터 설계에 적용되어야 합니다. 느린 GUI는 나중에 디버그하고 수정하기 어렵고 생산성에 상당히 부정적인 영향을 미칠 수 있습니다.
  4. GUI는 다른 GUI와 잘 통합 되어야 합니다 . 최신 ML 스택은 데이터 웨어하우스, 컴퓨팅 계층, 모델 제공 시스템, 특히 노트북과 같은 많은 독립 시스템으로 구성됩니다. Metaflow GUI에서 관심 있는 실행 및 작업을 찾고 작업별 보기를 사용하여 추가 정보를 위해 다른 GUI로 이동할 수 있어야 합니다. 우리의 도구 환경은 지속적으로 발전하고 있으므로 GUI 자체에서 이러한 링크와 보기를 하드코딩하고 싶지 않았습니다. 대신 Metaflow의 통합 친화적인 정신에 따라 관련 정보를 GUI에 플러그인으로 포함하고자 합니다.
  5. 마지막으로 GUI 의 운영 오버헤드  최소화하고 싶었습니다 . 특히 GUI가 Metaflow 실행에 영향을 주어서는 안 됩니다. GUI 백엔드는 선택적으로 기존 Metaflow 메타데이터 서비스와 나란히 배치되어 저장된 상태에 대한 읽기 전용 실시간 보기를 제공하는 간단한 서비스여야 합니다. 프론트엔드 쪽은 쉽게 확장 가능하고 유지 관리가 가능해야 하며, 이는 우리가 최신 React 앱을 원했음을 시사합니다.

Metaflow용 GUI 모니터링

ML 플랫폼 팀의 프론트엔드 리소스가 제한적 이었으므로 구현을 돕기 위해 Codemate  연락했습니다 . 소프트웨어 엔지니어링 프로젝트에서 종종 발생하는 것처럼 프로젝트가 완료되는 데 예상보다 오래 걸렸습니다. 대부분 고도로 분산된 환경에서 수천 개의 동시 개체를 실시간으로 추적하고 시각화하는 문제가 놀라울 정도로 사소하지 않은 문제이기 때문입니다. . 수없이 반복한 끝에 마침내 우리는 결과에 매우 만족했으며 현재 몇 달 동안 프로덕션에 사용하고 있습니다.

GUI를 열면 다양한 방식으로 그룹화하고 필터링할 수 있는 현재 및 과거의 모든 흐름 및 실행에 대한 개요가 표시됩니다.

흐름별로 그룹화된 실행

실험 추적에 이 보기를 사용할 수 있습니다 . Metaflow는 모든 실행을 자동으로 기록하므로 데이터 과학자는 이 보기를 사용하여 모든 작업을 추적할 수 있습니다. 당연히 사용자별로 보기를 그룹화할 수 있습니다. 또한 실행에 태그를 지정하고 태그별로 보기를 필터링하여 실험의 특정 하위 집합에 집중할 수 있습니다.

특정 실행을 클릭하면 타임라인에 모든 작업이 표시됩니다.

실행에 대한 타임라인 보기

타임라인 보기는 성능 병목 현상, 작업 런타임 배포 및 실패한 작업을 찾는 데 매우 유용합니다. 상단에서 상태, 시작 시간, 매개변수 등과 같은 실행의 전역 속성을 볼 수 있습니다. 특정 작업을 클릭하면 자세한 내용을 볼 수 있습니다.

작업 보기

이 작업 보기는 작업에서 생성된 로그, 해당 결과 및 선택적으로 작업과 관련된 다른 시스템에 대한 링크를 표시합니다. 예를 들어 작업이 모델을 제공하는 플랫폼에 모델을 배포한 경우 보기에는 마이크로서비스를 모니터링하는 데 사용되는 UI에 대한 링크가 포함될 수 있습니다.

요구 사항에 지정된 대로 GUI는 Metaflow CLI와 잘 작동해야 합니다. 이를 용이하게 하기 위해 상단 표시줄에는 사용자가 경로 사양, 즉 CLI 출력에 눈에 띄게 표시되는 Metaflow 유니버스의 모든 개체에 대한 경로를 복사하여 붙여넣을 수 있는 탐색 구성 요소가 포함되어 있습니다 . 이러한 방식으로 사용자는 CLI에서 GUI로 쉽게 이동하여 실행 및 작업을 자세히 관찰할 수 있습니다.

CLI는 훌륭하지만 흐름을 시각화하는 것은 어렵습니다. 각 흐름은 방향성 비순환 그래프(DAG)로 표시될 수 있으므로 GUI는 흐름을 시각화하는 훨씬 더 나은 방법을 제공합니다. DAG 보기는 흐름의 모든 단계와 이러한 단계가 어떻게 관련되어 있는지 보여줍니다. 각 단계에는 개발자 의견이 있을 수 있습니다. 현재 상태를 나타내기 위해 색상이 지정됩니다. 분할 단계는 음영 상자로 그룹화되고 foreach에 참여한 단계는 이중 음영 상자로 그룹화됩니다. 단계를 클릭하면 작업 보기로 이동합니다.

DAG 보기

다른 조직의 사용자에게는 직접 지원되지 않는 몇 가지 특별한 사용 사례가 있을 수 있습니다. Metaflow GUI는 플러그인 API를 통해 확장할 수 있습니다 . 예를 들어 Netflix에는 Titus 라는 컨테이너 오케스트레이션 플랫폼이 있습니다. 사용자는 Titus를 활용하여 확장 또는 확장하도록 작업을 구성할 수 있습니다. 오류가 발생하면 사용자는 자세한 정보를 위해 Titus 컨테이너에 액세스해야 하며 작업 보기 내에서 간단한 플러그인이 추가 문제 해결을 위한 링크를 제공합니다.

작업 수준 플러그인 예시

집에서 해보세요!

Metaflow GUI에 대한 사용자 스토리와 요구 사항은 Netflix에만 국한되지 않습니다. Metaflow 커뮤니티의 많은 회사들이 과거에 Metaflow용 GUI를 요청했습니다. 번성하는 커뮤니티를 지원하고 GUI에 타사 기여를 초대하기 위해 오늘 Metaflow용 모니터링 GUI를 공개합니다!

여기에서 GUI를 배포하는 방법에 대한 자세한 지침을 찾을 수 있습니다 . GUI를 배포하기 전에 작동 중인 GUI를 보고 싶다면 전 동료가 설립한 새로운 스타트 업인 Outerbounds 가 GUI의 공개 데모 인스턴스를 배포 했습니다 . Outerbounds는 또한 GUI 관련 문제에 대한 지원을 찾고 개선을 위한 피드백과 아이디어를 공유할 수 있는 Metaflow 사용자 의 활성 Slack 커뮤니티  호스팅 합니다 .

새로운 GUI를 통해 데이터 과학자는 더 이상 눈을 멀게 할 필요가 없습니다. 플랫폼 팀에 지원을 요청하는 대신 자체적으로 워크플로 상태를 쉽게 확인할 수 있습니다. Netflix 외부의 Metaflow 사용자도 GUI가 똑같이 유용하다는 것을 알게 되며 회사는 새로운 플러그인으로 GUI를 개선하는 창의적인 방법을 찾을 수 있기를 바랍니다 .

개발 프로세스와 GUI에 대한 동기에 대한 자세한 내용 은 GUI 출시 모임의 이 녹화를 시청할 수 있습니다 .

 

https://netflixtechblog.com/open-sourcing-a-monitoring-gui-for-metaflow-75ff465f0d60

 

Open-Sourcing a Monitoring GUI for Metaflow

Netflix’s ML Platform has made a new addition to Open Source

netflixtechblog.com

 

+ Recent posts