"모델표준화와 모델 레지스트리로 ML옵스 효율 높인다”

네이버 데뷰 2020 AI스위트팀 유승현 TL

컴퓨팅입력 :2020/11/26 09:37

“모델표준화와 모델 레지스트리를 활용하면 보다 쉽게 AI모델을 서빙하고, 자원을 효율적으로 활용해 성능을 높일 수 있다”

네이버 AI스위트팀의 유승현 TL은 25일부터 3일간 진행하는 네이버 개발자 컨퍼런스 '데뷰2020'에서 딥러닝 모델을 더 쉽게 배포하고 컴퓨팅 자원을 효율적으로 사용할 수 있는 방법에 대해 소개했다.

유승현 TL은 “AI연구자가 모델 개발을 완료한 후 배포하는 과정에서 어려움을 겪는 경우가 많다”며 “이는 AI모델을 만드는 연구자와 모델을 활용한 서비스를 제공하는 엔지니어가 사용하는 기술과 활용 방식이 다르기 때문”이라고 설명했다.

네이버 AI스위트팀 유승현 TL(이미지=네이버 데뷰2020)

이어서 유승현 TL은 서빙의 어려움을 해결하기 위한 방안으로 모델 표준화를 제시했다. 모델 표준화는 모바일 및 임베디드 시스템을 포함한 다양한 런타임에서 쉽게 모델을 배포 및 실행할 수 있도록 파일 형식으로 표준화하는 것을 말한다.

표준화를 통해 AI연구자는 서빙을 신경 쓰지 않고 AI모델을 연구만 할 수 있다. 엔지니어 역시 AI 이론을 다루지 않아도 해당 모델을 활용 가능하다.

네이버는 세이브드모델(savedModel), 파이토치용 ONNX, 그리고 엔비디아에서 선보이는 텐서RT 플랜파일(TensorRT plan file) 등을 활용한 모델 표준화를 지원한다.

ML플로우 모델은 아직 지원하지 않는다. 사용하기 위해선 추가 코드가 필요하다. 지원하지 않는 이유는 활용하기 위해 요구되는 내용이 많아 우선순위에서 밀렸기 때문이다.

유승현 TL은 ML옵스를 보다 편하게 할 수 있는 도구로 모델 레지스트리를 소개했다. 모델 레지스트리는 AI모델과 부가 정보를 저장하는 일종의 DB다.

유 TL은 “모델 레지스트리는 단순한 DB라 복잡한 기술이 요구되진 않지만 활용 방식에 따라 유용하게 사용할 수 있다”며 “우리는 AI연구자와 엔지니어를 이어주는 도구 역할로 사용하고 있다”고 설명했다.

네이버는 실제 모델 파일은 HDFS에 저장하고, 메타데이터와 모델 레지스트리는 DB에 저장해 활용한다.

AI연구자는 모델 레지스트리에 모델ID와 모델의 실체 위치가 표시된 URI, 사용자 설명 및 개발자 정보, 하이퍼 파라미터 등 추후에 활용할 수 있는 AI모델 관련 자료를 저장하면 된다.

엔지니어는 모델 레지스트리에 저장된 데이터를 그대로 활용해 서빙 등 여러 작업에 활용할 수 있다.

모델 레지스트리는 오라클과 마이SQL의 RDB나 몽고DB의 레디스 같은 키벨류 DB로 제작할 수 있다. 간단한 메타데이터를 저장하는 것이라 저장 방식은 큰 영향을 미치지 않기 때문이다.

네이버는 ML메타데이터를 활용해 제작했다. ML메타데이터(MLMD)는 텐서플로 익스텐드에서 사용하는 메타데이터를 기록하고 관측하기 위한 라이브러리다.

ML메타데이터를 선택한 이유는 기계학습(ML) 과정에서 AI 모델이 어떻게 생성되고, 어디에서 쓰이고 있는지 자연스럽게 표현할 수 있을 것으로 판단했기 때문이다.

유승현 TL은 모델 레지스트리를 활용하는 방안으로 현재 네이버에서도 구현 작업 중인 모델 밸리데이션(validation)을 소개했다.

모델 밸리데이션은 모델을 배포하거나 변경한 후, 추론(inference) 결과에 이상이 발생하지 않도록 검증하는 기능이다.

네이버 AI스위트팀은 밸리데이션 사용과정에서 AI연구자와 엔지니어에게 추가 업무나 학습 과정이 발생하지 않는 것을 목표로 했다. 이를 위해 서비스 중인 모델과 스테이지 단계의 모델 사이에 밸리데이션을 구성해 두 모델에 동시에 같은 서비스 데이터가 입력되고, 즉시 차이점을 확인할 수 있는 구조를 구축했다.

이를 통해 AI연구자와 엔지니어는 추가 작업 없이 출력결과 비교 만으로 모델 전환 및 배포 여부를 결정할 수 있다.

유승현 TL은 자원최적화를 위한 장비성능 테스트 방안도 소개했다.

유 TL은 “트래픽이 얼마나 들어올지 예측하지 못해 자원낭비가 심각한 경우가 많으며, 일부는 GPU 사용률이 1%가 안되는 경우도 종종 있다”며 “이러한 문제는 추론 작업에 사용하는 CPU, GPU 등 장비 사양을 모른 채 학습과정에서 쓰던 사양을 그대로 사용해 발생하는 경우가 대부분”이라며 자원최적화의 중요성을 강조했다.

장비 성능 테스트는 테스터에서 추론 서버를 실행시킨 후 퍼포먼스 클라이언트 테스트를 열어 CPU, GPU, 메모리 등 시스템 자원 장비의 부하를 서서히 증가시키며 변화에 따른 처리량과 대기시간 측정하면 된다.

CPU의 경우 보다 세밀한 테스트가 필요하다. 모델이 다양하고, 개수에 따라 효율성도 달라지기 때문이다.

유승현 TL은 “사전에 이런 데이터를 확보하면, 요구사항에 맞춰 최적화된 장비를 선택해 얼만큼의 인퍼런스 서버를 실행할 것인지 결정할 수 있다”며 “다만 모든 테스트는 자원이 남을 때 우선순위를 낮춰서 실시하고 있다”고 말했다.

보나 더 자원최적화를 위한 멀티프로세스서비스(MPS)도 소개됐다. MPS는 한 프로세스 당 GPU의 사용량을 절반 또는 4분의 1 정도로 제한해 여러 프로세스가 함께 사용하면서 성능 저하를 최소화하는 기술이다.

다만 메모리 사용은 제한할 수 없다. 네이버는 이에 GPU메모리 사용량이 넘치면 알림을 통해 담당자에게 알리는 기능을 추가했다.

관련기사

오토스케일은 부하에 따라 자동으로 실행하는 컨테이너 개수를 늘리거나 줄이는 기능이다. 부하에 맞춰 자동으로 자원을 활용할 수 있는 만큼 트래픽 예측에 실패하더라도 자원 낭비를 줄일 수 있다.

다만 오토스케일은 CPU, GPU, 메모리 등 장비 사용률을 기반으로 설정한다. 제대로 활용하기 위해선 사전에 성능 테스트를 실시해 모니터링 결과를 확인하는 것이 중요하다.