2021년 11월 30일 화요일

ML 모델 도입을 위한 SageMaker의 효율성

머신러닝이 많은 영역에 도입되기 시작하면서, 머신러닝 모델을 효율적으로 개발하고 운용하는 것이 중요한 요소로 대두되고 있다. 머신러닝 모델을 개발하고 배포하는 과정은 다음과 같다.

머신러닝 모델 관리1
  1. 데이터 수집 / 가공 / 검증
  2. 모델 선정(혹은 설계) 및 학습
  3. 모델 검증 및 평가
  4. 배포 및 관리

위와 같은 과정은 각 단계마다 많은 시간과 비용이 발생하며, 모든 단계를 수행하고 모델을 배포했더라도 일반적으로 위 과정을 계속해서 반복하게 된다.

Amazon SageMaker는 각각의 역할에서 제품의 특성에 의존하지 않는 공통적인 부분에 대한 부담을 줄여줌으로써, 개발자와 데이터 사이언티스트 모두가 쉽게 머신러닝 모델을 개발하고 배포할 수 있게 하고자 하는 완전관리형 서비스이다. 데이터 사이언티스트는 데이터 준비부터 모델 배포까지 CI/CD를 고려하여 개발하기가 쉽지 않고, 개발자는 머신러닝 모델을 최적화하기 쉽지 않다. 이러한 부분을 고려하여 전체 시스템에서 머신러닝 모델 개발에 필요한 부분들을 나누어 효율적으로 개발할 수 있도록 돕는 시스템이 SageMaker이다.

AI를 전문적으로 하는 팀들은 자체 코드 기반을 구축하는 경향이 있기 때문에, 작은 규모이거나 AI 도입을 고려하는 팀에서 SageMaker를 검토하는 것이 다수일 것이다. 특히 아직은 특정 영역(예를 들어, 영상, 음성, 자연어 등)에서 전문적인 경험을 갖춘 머신러닝(특히 딥러닝) 전문가를 영입하는 것이 쉽지 않다.

전문적인 인력을 갖춘 팀에서 SageMaker를 이용한다면, ML 모델을 포함한 전체 시스템은 직접 개발하고, CI/CD가 가능하도록 ML 파이프라인을 구축하는 용도로만 채택할 것이다. 하지만 이러한 수준을 갖추기 위해서는 많은 시간과 비용이 들고, ML 도입을 이제 막 고려하는 수준의 기업에서는 선뜻 결정하기가 어려울 것이다. 이 글에서는 개발자만으로 구성되거나 일반적인 데이터 사이언티스트를 포함한 팀(목표로 하는 도메인의 전문적인 경력을 갖춘 ML 전문가가 없는)에서 SageMaker를 이용하여 AI(딥러닝 모델)를 직접 설계 및 구현하지 않고도 효율적으로 도입 할 수 있는지 초점을 맞춘다. 그림과 같이 SageMaker는 다양한 기능을 제공하고 있으며, 목적에 맞추어 모델을 설계(선택)하고 학습하는 단계는 Build와 Train & tune 에 해당한다.

전문적인 ML 기술을 갖고 있지 않은 팀에서 ML 모델을 효율적으로 개발하는 가장 분명한 방법은 관련 분야의 공개되어 있는 모델을 도입해서 보유한 데이터에 튜닝하는 것이다. 이를 위해서는 모델에 대한 접근성이 높아야 하며 3가지 방법이 있다. 1) 직접 솔루션을 제공하는 방식, 2) 유저들이 솔루션을 공유 가능한 공간을 제공하는 방식, 3) 이미 공유되고 있는 오픈소스를 SageMaker에서 쉽게 활용 가능하도록 연결하는 방식이다.

1번 방식은 아마존이 직접 테스트하고 SageMaker를 위해 검증된 솔루션들을 제공한다는 강점이 있다. 하지만 딥러닝 기술은 최신 성능이 수시로 갱신 되는 등 매우 빠르게 연구 및 공개되고 있으며, 다양한 도메인을 확장해 나가고 있다. 따라서, SageMaker를 제공하는 아마존이 그 모든 솔루션을 제공하는 것은 불가능하다. 실제로 SageMaker에서는 PCA, k-NN 등 전통적인 알고리즘과 기초적인 딥러닝 모델 솔루션만 일부 제공하고 있다.

SageMaker의 built-in 알고리즘2

이러한 한계를 극복하고자 SageMaker에서는 2번 방식으로써 MarketPlace에서 사용자들이 모델을 공유 가능하도록 했다. MarketPlace에서 활발하게 ML 솔루션들이 공유된다면 아마존에서 미처 제공하지 못한 여러 솔루션을 적용해볼 수 있고, 이는 SageMaker의 목적에 부합하며 강력한 플랫폼으로써 자리 잡도록 할 수 있다 . 하지만 별점 3점 이상 라이브러리가 불과 5개로 매우 비활성화 되어있는 상태이다. 딥러닝 오픈소스가 매우 다양하게 깃허브에 업로드 되어있는 것을 생각하면 상당히 아쉬운 점이다.

아마존은 이 부분을 보완하기 위해 최근(작년 말)에 JumpStart라는 새로운 기능을 추가함으로써 3번 방식을 채택했다. 이 기능은 Tensorflow Hub3와 Pytorch Hub4의 모델을 도입하고 간편하게 튜닝 할 수 있도록 한다. Tensorflow Hub와 Pytorch Hub는 각각 Tensorflow와 Pytorch로 구현된 딥러닝 모델들을 다양하게 활용할 수 있도록 공유되는 공식적으로 인정 받은 공간이다. 아직은 기능이 제공되기 시작한 지 얼마되지 않아 활용 사례 등이 부족한 면이 있지만 이 기능을 중심으로 확장해나가면 AI 기술을 초기에 도입하는 입장에서는 SageMaker의 활용도가 상당히 높아질 것으로 예상된다. 예를 들면, 아직 모델이 제공되고 있지는 않지만 영어로 학습된 페이스북의 음성 표현 모델인 Wav2Vec5을 MarketPlace 혹은 JumpStart에서 간편하게 도입하고, 보유한 데이터셋에 미세 조정함으로써 한국어 음성인식기 등으로 배포하는 등의 응용이 매우 쉽게 가능할 수 있다.

SageMaker의 기능

아직까지는 SageMaker의 목표처럼 모든 개발자 혹은 데이터 사이언티스트가 효과적인 머신러닝 개발을 할 수 있다기보다는 서비스 개발을 위한 팀이 구성되었을 때, MLOps를 고려한 머신러닝 모델 개발과 시스템 구축에 소요되는 시간과 비용을 절약할 수 있다는 수준으로 보인다. 하지만 빠른 속도로 ML 개발에 필요한 실용적인 기능들을 업데이트해가는 점을 보면 이른 시일 내에 AI 전문 기업에 직접적으로 솔루션을 의뢰하지 않더라도 AI를 도입하는 것이 가능할 것으로 보인다.

  1. SageMaker
  2. SageMaker Built-in algorithms
  3. Tensorflow Hub
  4. Pytorch Hub
  5. Wav2Vec

    Related Posts

    AI가 게임 개발을 도울 수 있을까
    디지털 휴먼과 게임 속 AI의 미래
    클라우드 서비스와 오픈소스 라이선싱

    Leave a Reply