파이프라인 오케스트레이션
앞서 설명한 머신러닝 파이프라인의 모든 컴포넌트가 올바른 순서로 실행되도록 조정해야 할 필요가 있다. 각 컴포넌트는 실행되기 전에 해당 컴포넌트의 실행에 필요한 모든 입력값이 준비되어야 한다. 이러한 단계 조정에는 아파치 빔(Apache Beam), 아파치 에어플로(Apache Airflow), 쿠버네티스(Kubernetes) 인프라용 쿠브플로(Kubeflow) 파이프라인 등의 도구가 사용된다.
데이터 파이프라인 도구가 머신러닝 파이프라인 단계를 조정하는 동안, 텐서플로우 ML 메타데이터스토어(MetadataStore)와 같은 파이프라인 아티팩트(Artifact) 저장소는 개별 프로세스의 산출물을 저장한다.
1) 파이프라인 오케스트레이션의 필요성
2015년, 구글 머신러닝 엔지니어 팀은 '머신러닝 시스템의 숨겨진 기술적 부채 (Hidden Technical Debt in Machine Learning Systems)'라는 논문에서, 머신러닝 프로젝트가 실패하는 주요 원인으로 커스텀 코드를 꼽았다. 당시 대부분의 프로젝트는 머신러닝 파이프라인 단계를 연결할 때 커스텀 코드를 사용했는데, 이는 프로젝트 간의 연결을 어렵게 하였다. 논문 내에서 이러한 커스텀 코드를 글루 코드(Glue code)라고 했는데, 이러한 코드는 불안정하며 커스텀 스크립트가 특정 사례 이상으로 확장되지 않는다고 주장했다.
시간이 지나면서 아파치 빔, 아파치 에어플로, 쿠브플로 파이프라인 등 머신러닝 파이프라인 작업을 관리하고 표준화된 오케스트레이션과 작업 간 글루 코드를 추상화할 수 있는 도구가 개발되었다. 물론 이러한 도구들을 처음 도입할 때는 쿠버네티스 등의 머신러닝 인프라를 추가로 설정해야 된다는 점 등 번거로움이 있을 수 있다. 하지만 제대로 적용한다면 시간을 투자한 것 그 이상의 성과를 얻을 수 있을 것이라고 장담한다.
표준화된 머신러닝 파이프라인을 채택하지 않으면, 언젠가 데이터 사이언스팀은 프로젝트별 각기 다른 설정과 제멋대로인 로그 파일 위치, 개인 성향에 따른 디버깅 방법 등에 의한 온갖 문제를 직면하게 될 것이고, 상당히 복잡하고 머리 아픈 업무가 추가될 것이기 때문이다.
2) 방향 비순환 그래프
아파치 빔, 아파치 에어플로, 쿠브플로 파이프라인과 같은 파이프라인 도구는 작업 종속성의 그래프 표현을 사용해 작업 흐름을 관리한다.
파이프라인은 태스크의 의존성에 따라 실행 경로가 명확하게 계산되는 방향성을 가진다. 방향 비순환 그래프(Directed Acyclic Graph, DAG)는 모든 의존성이 완전히 계산되지 않은 상태에서 일부 작업이 먼저 시작되는 것을 방지한다. 예를 들어, 모델 학습 전에 데이터의 전처리가 반드시 선행되어야 한다는 점을 고려하여 방향 비순환 그래프로 설정하면 전처리 단계가 완료되기 전 학습 프로세스가 실행되는 것을 방지할 수 있다.
따라서 파이프라인 그래프는 위와 같은 방향 비순환적으로 만들어져야 하며, 파이프라인이 끝없이 실행되어 워크플로우가 완료되지 않는 상황을 방지하기 위해 이전에 완료된 태스크에 그래프가 연결되는 상황을 피해야 한다.
이러한 방향성과 비순환성이라는 특징을 가진 방향 비순환 그래프는 대부분의 워크플로우 툴이 가지고 있는 핵심 개념 중 하나이다.
'MLOps' 카테고리의 다른 글
TFX 컴포넌트 개요 (0) | 2021.12.11 |
---|---|
TFX - 텐서플로우 익스텐디드 (0) | 2021.12.08 |
머신러닝 파이프라인 단계 (0) | 2021.12.03 |
머신러닝 파이프라인의 필요성 (0) | 2021.12.01 |
MLOps: 머신러닝 파이프라인이란 (0) | 2021.11.30 |
댓글