- peter482431
데이터라벨링 전체 시간의 53%를 줄이는 방법
데이터라벨링은 AI 훈련을 위해 필수적으로 거쳐야하는 작업인데요
초기의 AI 업계에서는 이러한 작업을 모두 수작업으로 진행하였고 수작업 인력들을 효율적으로 관리하는 분야, DataOps, sudo-labeling등 데이터 라벨링의 고통을 해결하기 위해 여러 기술들이 발표되었습니다.
오늘은 강화학습 기법과 컴퓨팅 파워를 줄여주는 휴리스틱 알고리즘을 사용하여 대용량의 데이터셋 가공시간을 53% 줄여준 ComPrehensive and Efficient Data Labeling via Adaptive Model Scheduling
논문을 리뷰해 보겠습니다.
문제 정의

이 5가지의 데이터 셋의 공통점은 일정 task만 수행하기위한 AI를 훈련하기 위해 라벨링되었습니다.
데이터 시장에서는 다양한 task를 수행할 수 있는 데이터셋이 비싸게팔리고 있고 인기가 많다고 합니다. 연구 팀은 위 사진의 빈공간을 모두 파란색으로 채우고 싶었습니다만
하지만, 해당 실험을 진행하기위해 MSCOCO 2017, Places365, MirFlickr25에서 394,170개의 이미지를 6개의 task로 분류하고 수십, 수백개의 label을 분류하는 작업은 수작업으로 진행하기에 비용이 너무 많이들었습니다. Semi-Auto-labeling 기술을 활용하려고 해도 multimodal 신경망을 단일 모델로 만드는 것은 정확도도 떨어질뿐더러 컴퓨팅 자원이 너무 많이 소요되기 때문에 단가가 안 맞았다고 합니다.


해당 논문에서는 여러 미리 훈련된 최적화된 모델들을 Q-value 기반의 강화학습으로 스케줄링하여 라벨을 잘 찾을 수 있는 여러 모델의 집합을 이용하는 것인데 업계에서 부정적으로 보고 있는 방식입니다.
평가 함수

S = 여러 모델들을 전체 모델 집합에서 뽑아온 것 입니다. 나중에 agent가 뽑아옵니다.
d = 데이터
(S, d) = 데이터를 넣었을 때 모델들의 처리 속도입니다. 이것이 최대가 되도록 하는 것이 목적입니다.
컴퓨팅 파워에 제약을 주기위해 deadline을 걸었습니다.
처리속도는 당연히 음수로 내려가지는 않습니다.
핵심 아이디어

솔직히, 논문을 읽는 내내 반신반의 하면서 읽었던것 같습니다.(이게 된다고?)
여러 모델들의 집합M에서 어떤 모델세트인 S를 뽑아와 전체 데이터셋(해당 논문에서는 약 40만장)을 라벨링 할수 있을까? 심지어 Q-Value Network는 눈 역할을하는 컨볼루션 레이어도 존재하지 않습니다. 리워드 함수는 다음과같이 정의됩니다.

보통의 Q-value 신경망과는 조금 다른 리워드를 사용하는데요
리워드를 1점이아니라 맞춘 값 + 1 을적용하는 이유는 모든 데이터의 라벨이 하나가 아니기 때문에 적용하였다고 합니다.
객체가 5개인데 4개만 잡았을경우는 5점
face landmark의 경우 68개의 포인트를 모두 잡아야하는데 1개만 잡았다면? 2점
로그를 적용한 이유는 모델의 job이 다르기 때문에 일정 job을 수행하는 모델의 reward만 폭발적으로 증가하는 것을 막기 위해서라고 합니다.
예를들어, 객체를 하나만 잡는 바운딩박스 모델과 포인트 68개를 잡는 모델에 로그가 없다면
각 2점과 69점을 얻어 바운딩박스 모델이 도태될 수 있습니다.
Agent를 훈련시키기 위해 사용한 알고리즘은 DQN, DDQN, Dueling DQN, Deep SARSA를 사용했다고 합니다. 그리고 나중에 Optimal로 소개될 모델은 greedy 방식을 사용해 exploration을 걸어주었네요
컴퓨팅 파워에 제약을 주는 공식(deadline 정하기)

1번 알고리즘은 쉽게 말해 전체 모델집합(M)에서 뽑은 모델 세트(S)가 데이터 하나하나를 처리하는데 드는 시간을 계산해 가장 처리가 빠른 m 값을 모아서 deadline에서 빼주고 더 짧아진 deadline을 계속 줄이는 방식을 채택합니다. 이 방식은 GPU가 여러개일 때를 고려하지 못해 문제가 있다고 하네요
2번 알고리즘은
그리하여 여러 GPU의 메모리를 고려하여 수정된 알고리즘으로 여러 GPU 모델의 메모리까지 고려하여 Deadline을 줄이도록 S를 닥달합니다.
실험

과연 업계에서 부정적인 방법을 통해 Semi-Auto-labeling을 진행한 결과는 어떻게 될까요?
10개의 Task와 총 1104개의 라벨을 맞출 수 있는 모델세트 M을 준비합니다.
그리고 전체 데이터셋의 20%를 이용해 모델세트에 있는 M을 모조리 훈련시킵니다. 나머지 80%의 데이터셋은 agent가 해결할거라고 하네요
하드웨어 세팅은 다음과 같습니다.

그리고 유명 데이터셋을 해당방식으로 작업하면 다음과 같은 결과가 도출되게 됩니다.


이게 된다고? 직접 검증해보아야겠지만 압도적인 수치를 보여줍니다.

GPU 자원측면에서도 좋은결과를 얻은 모습입니다.
결론

일반 단일 모델로 대규모, 범용 데이터셋을 처리하는것보다 DRL 구조를 이용하여 데이터셋 가공을 하면 자원도 훨씬 적게들고 시간을 절약할 수 있었다고 합니다.
Recall 100% 기준 53%의 시간을 절약 Recall 80%기준 70%의 시간을 절약
하지만, 논문 내에 모델 집합 M의 개수가 몇 개인지, S에 사용된 모델을 훈련시킨 자원의 양은 얼마나 들지는 추가로 검증이 필요할 것 같습니다. M과 S의 개수가 많아질수록 더 많은 자원을 소비할 수 도 있을것 같습니다. 긍정적 측면에서는 오픈소스를 모델이 많기 때문에 해당 모델을 활용한다면 라벨링 시간을 충분히 줄일 수 있을것으로 보이구요 강화학습으로 이런것도 되는구나를 보여주는 좋은 연구였던것 같습니다.
MLOps에 편입하기엔 자원적으로 무리가 많이 갈 것같으나 조금만 더 보완한다면 좋은 방법이 될 수 있을것 같습니다.