대부분의 컴퓨터 비전팀이 풀지 못한 DataOps의 세 가지 난제 Part2

대부분의 컴퓨터 비전팀이 풀지 못한 DataOps의 세 가지 난제 Part2

*본 글은 Superb AI의 James Le가 작성한 ‘Part 2: Three DataOps Challenges That Most Computer Vision Teams Struggle With’의 번역본입니다.

시작하며

최첨단 아키텍처를 구현하고 모델 하이퍼파라미터를 조정하고 손실 함수를 최적화하는 것은 머신러닝의 재미있는 부분입니다. 겉으로는 있어 보이는 작업처럼 보일 수 있지만 상용화를 완료한 모델의 뒤에는 고품질 학습용 데이터셋을 구축하는 라벨러와 데이터 엔지니어가 있습니다.

‍데이터 엔지니어 또는 라벨러가 적은 소규모 팀의 경우 학습용 데이터셋을 쉽게 구축할 수 있습니다. 그들은 모든 데이터셋에 익숙하며 필요한 데이터를 준비하는 데 오랜 시간이 걸리지 않습니다. 그러나 더 큰 조직에서 다루는 데이터의 경우, 한 사람 혹은 팀이 모든 것을 이해하기는 어렵습니다. 컴퓨터 비전 영역에서의 데이터셋 구축은 더욱 어려운데 이미지나 비디오가 전통적인 방식으로 데이터를 저장, 처리 및 분석하지 않기 때문이죠.

지난 번 파트1에서 우리는 (1) 데이터 분석을 위한 DataOps의 개념을 소개했고, (2) 컴퓨터 비전을 위해 DataOps를 사용하는 경우를 논했고, (3) 모든 엔터프라이즈 컴퓨터 비전 시스템을 위한 6가지 DataOps 원칙을 소개드렸습니다. 이번 파트에서는 컴퓨터 비전팀이 처리해야 하는 세 가지 데이터 관련 문제를 훑어보고 이러한 문제를 해결하는 데 필요한 이상적인 DataOps 플랫폼의 구체적인 기능을 알려드리겠습니다.

시작해볼까요?

‍1. 고품질 데이터의 큐레이션

데이터 큐레이션은 특정 분석/예측 작업을 위해 데이터를 검색, 검사 및 샘플링하는 과정입니다. 데이터 관리 문제는 데이터에서 비즈니스 가치를 창출하려는 조직 누구에게도 피할 수 없는 과제입니다. 데이터 관리를 소홀히 하면 "garbage in, garbage out”(입력데이터가 저품질이면 출력데이터의 품질도 높을 수 없다는 뜻)을 겪게 되겠죠. 머신러닝의 맥락에서의 데이터 큐레이션은 향후 재사용을 위한 데이터의 수집, 저장 및 보관하는 작업을 의미합니다.

컴퓨터 비전 영역에서의 데이터 큐레이션은 인사이트를 뽑아내기 위해 ETL 작업을 작성하는 것 외에 어떤 종류의 데이터가 수집되었는지 파악하고 이를 균형 잡힌 고품질 데이터셋으로 큐레이션할 수 있는 효율적인 방법이 없기 때문에 크게 과소평가되고 있습니다. 하지만 제대로 된 데이터 큐레이션을 통해 창출될 수 있는 가치는 엄청납니다. 반면, 이 과정에서 발생한 실수는 향후 낮은 정확도와 높은 비용이라는 큰 대가를 초래합니다.

안타깝게도 데이터 큐레이션은 데이터 과학자와 엔지니어가 수행하는 작업 중 가장 시간이 오래 걸리고 가장 지루한 작업입니다. 데이터 큐레이션 작업은 특정 데이터에 대한 모든 상황에 대한 이해를 요구하므로, 종종 상당히 많은 도메인 지식과 상식을 필요로 합니다. 현존하는 솔루션은 끊임없이 변하는 데이터 생태계의 규모, 속도, 다양성 및 정확성을 반영하지 못하는 데다가 주로 학습용 데이터의 상관 관계를 통해 학습하기 때문에 그 범위도 한정되어 있습니다. 그리고 특정 도메인 지식이 적용되는 각 케이스마다 *데이터 무결성 제약조건(data integrity constraints)과 같은 데이터 큐레이션 작업을 적용시키는 것은 가능하지 않을 수 있기 때문에 이보다 나은 대안이 필요합니다.  
(*데이터 무결성 제약조건: 데이터 베이스 내의 데이터의 신뢰를 보장하기 위해 올바른 데이터만 입력되도록 제약을 다는 것)

머신러닝에서 데이터 큐레이션 툴의 역할 (출처: Siasearch)

‍기존 솔루션을 보안하는 대안으로써, 컴퓨터 비전용 DataOps 플랫폼이 데이터 엔지니어 및 머신러닝 엔지니어가 수집한 데이터를 이해하고, 데이터셋 중 중요한 서브셋 데이터 및 엣지 케이스를 식별하여, 모델에 다시 넣을 맞춤형(커스텀) 학습용 데이터셋을 큐레이션할 수 있는 기능이 있어야 합니다. 좀 더 자세히 정리하자면, 플랫폼은 다음을 수행할 수 있어야 합니다.

‍1. 대규모 데이터셋 시각화: 데이터셋의 주요 메트릭, 분포 및 클래스를 형식의 제한 없이 가져올 수 있어야 합니다.

2. 손쉬운 데이터 검색 및 데이터 가져오기: 전체 데이터 웨어하우스 내에서 데이터를 자유자재로 검색, 필터링하며 자세히 살펴볼 수 있도록 플랫폼 기능 사용이 쉬워야 합니다.

3. 다양한 시나리오 큐레이션: 가장 중요한 데이터셋 슬라이스를 식별하도록 하여 이를 이용해 커스텀 학습용 데이터셋을 만들 수 있도록 지원해야 합니다.

4. 매끄러운 통합 지원 : 기존 워크플로우 및 툴과 완벽하게 결합할 수 있도록 기능합니다.

2. 대규모 데이터셋의 라벨링 및 검수


컴퓨터 비전 모델을 학습시키려면 정확하게 라벨링 된 대규모 데이터셋을 지속적으로 투입해야 합니다. 라벨링의 정확도는 필수적인데, 왜냐하면 알고리즘은 정답 데이터(ground-truth)를 통해 학습되고 이 때문에 궁극적으로 라벨의 품질이 모델의 품질을 규정짓게 되는 것이죠.
따라서 데이터 라벨링 프로세스에서 발생하는 오류는 모델 성능에 부정적인 영향을 미칩니다. 라벨링과 품질 보증(QA)과정은 사람에 의해 이루어지기 때문에 이 부분에서 상당한 시간과 자본이 필요합니다.‍

데이터 엔지니어 및 머신러닝 엔지니어 100여 명과 나눈 대화에 따르면, 데이터 라벨링과 검수는 컴퓨터 비전 시스템의 데이터 파이프라인 구축 과정에서 병목현상을 발생시키는 주요한 요인입니다. 설문 조사 및 인터뷰를 알아낸 흥미로운 사실은, 이 병목현상은 새로운 컴퓨터 비전 프로젝트를 막 시작한 팀뿐만 아니라 상용화 수준의 모델을 보유한 성숙한 팀에도 적용된다는 것입니다. ‍

  1. 머신러닝 개발 초기 단계에 있는 기업이나 팀은 AI를 어떻게든 활용하고자 하지만 특정 도메인에 특화되거나 니치한 데이터셋으로 사전 학습된(pre trained) 모델이 없습니다.‍
  2. 상용화된 모델을 보유한 성숙한 팀의 경우, 머신러닝 개발 및 배포 라이프사이클에 정통합니다. 이들은 정교한 사전에 학습된 모델을 보유하고 있으며 모델 정확도를 더욱 높이는 데 주력합니다. 이들은 모델이 어디서 실패했는지를 파악하고 이러한 엣지 케이스를 다루기 위해 데이터셋을 직접 준비합니다. 또 서비스를 이미 출시한 모델을 운영하는 경우, 데이터의 특성은 실시간으로 실제 환경을 반영하기에 시시각각 변화하며, 그에 따라 모델의 정확도가 저하되기에 데이터와 모델 드리프트에 대한 문제도 해결하려고 할 것입니다.

머신러닝팀이 학습용 데이터셋을 만드는 데 얼마나 많은 시간이 걸리는지 더 잘 이해하기위해 Superb AI의 경험을 기반으로 대략적인 계산을 해보겠습니다.

  • 한 명의 라벨러가 바운딩 상자 모양의 라벨링을 하는 작업은 일반적으로 약 2~5초 정도 걸립니다.
  • 이미지당 약 10개의 객체를 포함하는 100,000개의 이미지 데이터셋을 라벨링하는 작업에는 약 600-1,500명의 인력이 필요됩니다.
  • 라벨을 확인하고 검수하는 시간을 추가하면 더 많은 시간과 비용이 소요됩니다.

또한 PoC가 성공적이어서 모델을 실제 비즈니스로 배포한다고 가정해 보겠습니다. 프로젝트가 진행됨에 따라 지속해서 더 많은 데이터를 수집하고 라벨링하여 모델 성능을 향상시켜야 합니다. 이때, Brute-force식 (가능한 모든 경우의 수를 계산하여 원하는 것을 얻어내는 방법을 의미하며 여기서는 모든 데이터를 라벨링 하는 경우를 의미합니다)으로 라벨링을 진행하면 라벨링 비용은 생성된 라벨 수에 비례하여 선형적으로 증가합니다. 더욱 심각한 것은 모델 성능을 개선해나가는 과정에서 필요한 데이터와 비용은 기하급수적으로 늘어난다는 점입니다. 하지만 안타깝게도 라벨링 수가 증가해도 모델의 성능은 정체되는 때가 옵니다. 즉, 모델 성능을 개선하기 위한 데이터의 한계 편익(재화를 추가함에 따라 얻게 되는 이익)은 감소합니다.

커스텀 오토 라벨링 과정

‍컴퓨터 비전을 위한 효과적인 DataOps 플랫폼은 라벨링과 라벨링 검수라는, 비용이 많이 드는 두 문제를 해결할 수 있어야 합니다. 슈퍼브에이아이는 대량의 데이터셋을 단시간에 라벨링하는 커스텀 오토라벨링(Custom Auto-Label)이라는 강력한 기능을 통해 이러한 문제를 해결합니다. Suite 플랫폼 내의 커스텀 오토 라벨링과 불확실성 추정(Uncertainty Estimation) 그리고 데이터 관리 기능을 종합적으로 사용했을 때, 팀은 어려운 라벨 작업을 즉각적으로 추려낼 수 있으며,검수를 위한 액티브 러닝 워크플로우를 구축하며, 데이터셋을 손쉽게 전달할 수 있습니다. 그리고 이를 액티브러닝 워크플로우에 연결함으로써 하나의 플랫폼 위에서 라벨링부터 검수까지 간단하고 빠르게 데이터셋을 완성시킬 수 있는 것이죠.

저희의 고객은, 고객이 원하는 학습한 모델을 가지고 신속하게 라벨링을 완료해서 모델을 만들 수 있다는 엄청난 이점을 경험했습니다. 비용적 부담을 덜어주는 것 외에도 모델 배포시간을 단축시키는 문제는 프로젝트를 순조롭게 시작하고 모델의 신속한 최적화를 위해서 매우 중요해지고 있습니다.

3. 데이터 드리프트라는 개념에 대하여


컴퓨터 비전 시스템은 과거 특정 순간에 포착된 시각 데이터를 기반으로 실시간 데이터를 받아들이기 때문에 두 데이터의 간극에서 오는 한계에 대한 어려움을 겪고 있습니다. 출력 데이터를 예측하는 데 사용되는 입력 데이터의 매핑 함수(개별 원소를 특정 함수에 일대일 대응시키는 과정을 의미)가 고정될 것이라고 가정하기 마련인데 실제로 시각 데이터는 시간에 따라 변화하며 일정하지 않은 동적인 분포 양상을 보입니다. 이 현상을 데이터 드리프트 즉 데이터가 표류하는 현상이라고 합니다. 이 경우 과거 데이터로 학습해서 얻어낸 예측은 더 이상 유효하지 않을 수 있으며 시간이 지남에 따라 모델의 성능이 감소하기 시작합니다. 점점 더 많은 머신러닝 애플리케이션이 데이터를 실시간으로 스트리밍하는 트렌드를 따르고 있기에 이러한 데이터 드리프트로 인한 모델 성능 저하의 위험성은 도드라지고 있습니다.


데이터 드리프트를 초래하는 다양한 원인은 다음과 같습니다.

  • 업스트림 프로세스 변경 - 유저 행동의 변화 또는 비즈니스 KPI의 변경
  • 데이터 품질 문제 - 웹 트래픽 증가로 인해 시스템이 다운되는 경우
  • 자연스러운 데이터의 변화 - 계절 및 시간에 따른 데이터의 변화
  • *공변량 이동 - 피쳐값 간의 관계의 변화
    (*공변량 : 종속 변수에 대하여 독립변수와 기타 잡음인자가 공유하는 변량)

나이 값의 분포도 변화 (출처 : Evidently AI)

학계에서는 데이터 드리프트는 저차원 정형 데이터 분석 영역에서 활발히 연구됩니다. 널리 사용되는 기법은 Kalman 필터링으로, 시간에 따라 관측되는 통계적인 노이즈나 기타 부정확한 요소를 포함한 일련의 측정치를 사용합니다. 각각 다른 시간 구간의 변수에 따른 결합 확률 분포(joint probability distribution)를 추정함으로써 (흔히 잡음이 섞였다고 표현합니다) 변수의 추정치를 산출하는 방식인데, 이는 단일 측정 값에만 근거하는 것보다 더 정확한 값을 얻어낼 수 있습니다. 하지만 이미지나 비디오와 같은 고차원의 비정형 데이터에서의 드리프트 현상은 Kalman 필터링 방법으로는 해결할 수 없습니다.

데이터 분포의 변화가 발생하는 위치를 알아낼 수 있는 컴퓨터 비전용 DataOps 플랫폼은 라벨링의 양을 줄이는 데에도 도움이 될 수 있습니다. 위에서 설명한 것처럼 라벨링이 완료된 데이터를 구축하는 것은 매우 비싸기 때문에 이는 플랫폼의 큰 장점이죠. 구체적으로 이 플랫폼은 다음을 수행할 수 있어야 합니다.

‍1. 데이터 드리프트가 발생하는 시점을 감지하여 배포된 머신러닝 모델을 운영하는 도중에 발생할 수 있는 컨셉드리프트에 대해 머신러닝 엔지니어에게 알림을 보냅니다.

2. 드리프트가 발생하는 위치와 이유에 대한 분석을 제공합니다. 드리프트에 대한 간단한 수치 측정으로는 충분하지 않습니다. 데이터 분포 및 시간에 따른 분포 추이변경에 대한 분석이 추가적으로 제공할 수 있어야합니다. 이는 최근에 각광받는 모델 관찰가능성이라는 개념과 관련이 있습니다. (이와 관련해서는 DataOps Part1을 참고해주세요)

3. 드리프트 극복 및 성능 향상: Drift adaptation(적응)이라고도 하며, 이는 모델을 새 데이터에 적응시켜 이전 모델의 일부를 이상적으로 재사용하는 것을 의미합니다.

결론

데이터는 머신러닝 시스템의 성능, 공정성, 견고성 및 확장성에 영향을 미치는 모든 머신러닝 워크플로우의 가장 중요한 구성요소 임에도, 전통적으로 학계와 산업계에서 소홀히 다뤄졌습니다. 이 작업에는 여러 사람(데이터를 수집하는 사람, 데이터 라벨러, 데이터 엔지니어 등)이 필요하고 여러 팀(비즈니스, 운영, 법률, 엔지니어링 등)이 참여할 수 있습니다.

구글은 최근 암 탐지, 산사태 감지, 대출 할당 등 중요한 머신러닝 영역에서 일하는 전 세계 머신러닝 실무자들의 당면 과제와 데이터 cascade현상(데이터 품질을 과소평가하는 문제가 심화되어 결과에 부정적인 영향을 미치는 현상)을 설명하는 논문을 발표했습니다. 특히 이 논문에서는 데이터 cascade 문제를 해결하는 몇 가지 방법을 제안합니다. 그 중 두 가지는 다음과 같습니다.

  1. 첫번째는 머신러닝 시스템을 설계할 때 데이터의 중요성에 대해 이야기하도록 장려하고 발전시키는 것입니다. 우리가 모델 적합성에 대한 중요성에 대해 많이 이야기해서 잘 알고 있듯이 말이죠. 여기에는 현상학적 충실도(데이터가 현상을 얼마나 정확하고 포괄적으로 나타내는지), 데이터의 유효성(데이터에 담긴 것들을 얼마나 잘 설명할 수 있는지)등을 반영한 표준 메트릭을 개발하고, 그러한 메트릭을 자주 사용하는 것을 포함합니다.
  2. 두번째는 데이터 작업에 대한 보상시스템을 개발하는 것입니다. 컨퍼런스에서 데이터에 대한 경험담 발표를 적극 장려하고 환영하거나, 데이터셋 유지 보수 작업이나, 조직내에서 데이터와 관련된 작업(데이터 수집, 라벨링링, 정제 또는 유지 보수)을 하는 직원에게 보상을 주는 등은 데이터를 덜 중요한 것이라고 치부하게 되는 관행을 바꾸는 데 효과를 보일 것입니다.


데이터 cascade. 각각의 색은 다른 데이터 cascade를 나타낸다. (출처: Google blog)

DataOps 플랫폼은 머신러닝 시스템에서 사용되는 "좋은" 학습용 데이터셋을 제공하는 데 도움을 줄 수 있습니다. "좋은" 데이터셋은 어떻게 구축할 수 있냐고요? 라벨링을 위해 가치있는 샘플들을 큐레이팅하는 것으로, 또 라벨링 워크플로우를 가속화함으로써 도울 수 있습니다. 그리고 마지막으로 데이터의 변경 사항을 관찰하고, 거기서 그치는 게 아니라 그 변경에 대한 원인을 분석하여 적절한 조치를 취하는 것으로 DataOps가 겪는 어려움을 해결하는 데 도움을 줄 수 있죠. 이번 블로그 게시물에서는 이 세 가지 포인트에 대해 머신러닝 데이터 플랫폼이 어떻게 도움을 줄 수 있는지 자세히 다루어봤습니다.

데이터와 관련한 작업에 대해 보상체계를 구축하기 위해서는 적절한 DataOps 팀을 구성해야 합니다. 이 팀의 목표는 모든 머신러닝 작업에서 제품이 달성하고자 하는 바를 포괄적이고 정확하게 반영하는 데이터셋을 만드는 것입니다. 안타깝게도 지금 현재로서는 참고할만한 playbook이나 모범 사례는 없지만 DataOps for Computer Vision 시리즈의 파트 3에서 이상적인 DataOps 팀을 구성하는 핵심 인력과 귀중한 데이터 작업을 활용하는 데 필요한 조직 구조에 대해 자세히 다루어 도움을 드릴 수 있도록 하겠습니다.