머신러닝에서 파이프라인이란 무엇일까?

내가 생각하는 파이프라인

머신러닝은 수많은 과정이 집약된 시스템이다.

이 시스템은 한번 실행하면 끝나는게 아니다.

모델은 제작 된 후 수치, 하이퍼 파라미터 수정을 통해 모델의 최적화를 진행한다.

앞서 말한 것과 같이 이 과정은 수많은 과정을 다시 해야한다는 리스크를 가지고 있다.

이 과정을 편하게, 자동화 하기위해 파이프라인이라는 개념이 적립되었다.

정리하자면

반복적이 수치 수정이 필수적인 머신러닝에서 모델 제작 과정을 연결해주는 일련의 과정을 칭하는 용어


DeepFaceLab

졸업 논문을 작성하기 위해

논문 “DeepFaceLab: Integrated, flexible and extensible face-swapping framework.”을 읽던 중

논문에 “Convenience DFL strives to make the usage of its pipeline, including data loader and processing, model training, and post-processing, as easy and productive as possible. …“의 문장을 읽게 된다. 짧게 요약하면, 쉬운 파이프라인을 사용할 수 있도록 노력했다. 정도인데 파이프라인이 왜 중요하고 무엇일까?


파이프라인, PipeLine

핸즈온 머신러닝 [3]

데이터 처리 컴포넌트(Component)들이 연속되어 있는 것을 데이터 파이프라인(pipeline)이라고 합니다. 머신러닝 시스템은 데이터를 조작하고 변환할 일이 많아 파이프라인을 사용하는 일이 매우 흔합니다.

보통 컴포넌트들은 비동기적으로 동작합니다. 각 컴포넌트는 많은 데이터를 추출해 처리하고 그 결과를 다른 데이터 저장소로 보냅니다. 그러면 일정 시간 후 파이프라인의 다음 컴포넌트가 그 데이터를 추출해 자신의 출력 결과를 만듭니다. 각 컴포넌트는 완전히 독립적입니다. 즉, 컴포넌트 사이의 인터페이스는 데이터 저장소뿐입니다. 이는 (데이터 흐름도 덕분에) 시스템을 이해하기 쉽게 만들고, 각 팀은 각자의 컴포넌트에 집중할 수 있습니다. 한 컴포넌트가 다운되더라도 하위 컴포넌트는 문제가 생긴 컴포넌트의 마지막 출력을 사용해 (적어도 한동안은) 평상시와 같이 계속 동작할 수 있습니다. 그래서 시스템이 매우 견고해집니다. 한편 모니터링이 적절히 되지 않으면 고장 난 컴포넌트를 한동안 모를 수 있습니다. 데이터가 만 들어진지 오래 되면 전체 시스템의 성능이 떨어집니다.


실무에서 느낀 파이프라인 [4]

실제로 토이프로젝트를 하며 느낀점을 써주신 이수진님의 블로그도 도움이 되어 옮겨보았다.

저는 처음 머신러닝과 딥러닝을 공부할 때 가장 많이 노력하고, 집중해서 보았던 부분은 바로 ‘모델의 성능’이었습니다.

예를 들어 머신러닝 모델의 정확도(accuracy)나 f1-score 등의 점수가 가장 중요한 줄 알았습니다. 캐글(kaggle)과 같은 대회에서도 실제로 저런 모델의 metric이 중요하니까요. 그래서 이 모델의 성능만 올리면 머신러닝 프로젝트는 다 끝나는 줄 알았습니다.

하지만, 현실은 그렇지 않았습니다. 지인들과 토이 프로젝트를 해보면서, 그리고 실무로 해보면서 느꼈던 것은 머신러닝, 딥러닝의 성능보다 더 중요한 것이 있다는 것을 알게 되었습니다. 바로 파이프라인의 중요성이었습니다.

머신러닝 프로젝트에 위와 같은 다양한 과정이 있습니다. 위 과정은 굉장히 단순하게 표현한 것입니다. 실제로는 좀 더 복잡한 과정이 들어가게 됩니다.

정리하자면 머신러닝 프로젝트에서 machine learning model의 정확도 등의 metrics도 중요하지만, 위와 같은 일련의 과정을 전부 관리해야 하는데, 저 일련의 과정이 Machine learning pipeline입니다. (혹은 machine learning data workflow라고도 불리는 것 같더라구요)

그리고 저 과정을 최대한 쉽게 관리하고, 자동화 할 수 있는 것이 매우 중요합니다. 왜나햐면, 이러한 복잡성 때문에 반복되는 업무가 생기기 마련이고 데이터 분석, 모델 개발 및 학습에 집중해야 할 때에 불필요한 시간 소모가 굉장히 크기 때문입니다.


참고문헌

1) “DeepFaceLab” Github DeepFaceLab. https://github.com/iperov/DeepFaceLab

2) Ivan Petrov, Daiheng Gao, Nikolay Chervoniy, Kunlin Liu, Sugasa Marangonda, Chris Ume, Jian Jiang et al (2021). “DeepFaceLab: Integrated, flexible and extensible face-swapping framework.” (영어) arXiv:2005.05535

3) 오렐리앙 제롱 (Aurelien Geron), Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow 핸즈온 머신러닝 2판, 박해선, 오라일리, 한빛미디어(주)(2021년 5판), 71p

4) 이수진, 2020.03.29. 14:41, 머신러닝 파이프라인이란? - ML Pipeline에 대하여, https://lsjsj92.tistory.com/579