Airflow와 Git, DVC를 활용하여 배치 서비스 운영 및 데이터 버전 컨트롤

데이터 버전 컨트롤

2022-08-16 03:06

2,021 views

안녕하세요, 플러스제로 엔지니어팀입니다.

이번에 소개드릴 내용은 저희 플러스제로에서 운영중인 서비스와 관련해서 Airflow와 DVC를 통한 데이터 버전관리를 소개드리려 합니다.



DVC

[https://dvc.org/]

DVC는 “Data Version Control”의 줄임말로써, Git과 함께 사용하는 데이터 버전 관리 툴입니다.

저희는 데이터의 버전을 DVC를 통해서 Google Cloud Storage를 리모트 스토리지로 사용하고 있습니다.

저희가 어떻게 DVC를 사용하는지 소개드리에 앞서서 도입 배경을 먼저 설명 드리겠습니다.

이전 MLOPs 시리즈 1편에서 에서 소개드렸던것 처럼 자연어 데이터는 NoSQL에 저장을 하고 있습니다. 그러나 최근 도메인의 추가로 인해서 패션부문과 화장품부문에 대해서 각각의 데이터 처리가 필요하게 되었습니다. 데이터의 수집은 Airflow의 스케줄러를 통해서 31일마다 데이터가 수집되고, 처리하여 Google Cloud Bigquery에 도메인별로 데이터를 저장해야 하는 프로세스를 수립하였습니다.

dvc-1



추가적으로 수집되는 데이터를 활용하여 자연어 모델 (NLP Model)의 재학습을 진행하는 프로세스를 함께 가져감으로써 학습을 위한 데이터와 도메인별 데이터를 각각 관리해야하는 필요성이 생겼습니다.

이런 문제를 좀더 효율적으로 해결하기 위해 초기에는 Config를 통해서 관리를 하였으나, 도메인 내에서도 사용해야하는 데이터가 변경되는 상황이 있어서 Git Branch로 데이터를 관리 할 수 있는 DVC를 적용하기로 하였습니다.



dvc-2


물론 데이터를 처리하기 위해서는 각 작업이 종료된 이후에 NoSQL에서 데이터를 가져오는 쿼리를 함께 포함하여 버전 관리를 진행하도록 하였습니다.

데이터 관리와 리포지토리 관리를 위한 전체적인 Git Branch의 관리는 다음과 같은 프로세스를 가지도록 해보았습니다.

dvc-3



Tag는 NLP모델을 실행하기 이전에 Git Tag를 사용하여 표시합니다.


<Airflow 작업으로 추가되는 Git File>

dvc-4


파일 목록의 .dvc는 DVC를 통해 추적 / 관리 되는 데이터파일입니다.

NLP모델의 예측 결과를 DVC를 통해 저장하고, 해당 파일을 트래킹하기 위한 .dvc파일의 내용은 다음과 같습니다.

dvc-5

Git에는 해당 .dvc 파일이 저장되며, 실제 .dvc에 해당하는 파일은 레포지토리 설정시 연결해둔 Google Cloud Storage로 저장됩니다.

DVC와 GCS의 연결에 대한 자세한 방법은 아래를 참고해 주세요.

DVC Blog

Medium Blog

DVC를 통해 생성된 링크를 커밋하고 푸시를 하면, 동일하게 DVC도 푸시를 하면, 해당 Branch의 데이터는 Git을 통해 버전관리가 됩니다. 만일 어느 기점을 기준으로 데이터를 원복하려면, 생성된 Tag를 통해 데이터의 복원이 가능하도록 하였습니다.

추가로 데이터를 NoSQL데이터 베이스에서 가져올때 사용한 Identifier는 데이터를 수집한 날짜를 기준으로 쿼리문을 작성하도록 하였습니다.

마지막으로 사용중인 레포지토리의 태그명을 끝으로 이번 소개를 마치도록 하겠습니다.

dvc-6


감사합니다.



다음글 - Recommendation System
이전글 - Pytorch-TPU-WandB