AWS 기술 블로그
SK텔레콤의 AWS Inferentia와 AWS Step Functions를 활용한 기계학습(ML) 파이프라인 구축 사례
SK텔레콤은 대한민국 최대 이동통신 회사로, 고객에게 가장 신뢰받는 서비스를 제공하고 있습니다. SK텔레콤은 통신 사업자로서의 역할을 넘어서, 유무선 통신 인프라를 기반으로 하는 초연결 기술에 AI를 더하여 고객을 이롭게 하는 ‘AI Company’로의 비전을 갖고 있습니다. 이제 SK텔레콤은 통신 서비스 뿐만 아니라, 다양한 데이터를 바탕으로 한 AI 기반 서비스로 서비스를 확장하고 있습니다.
SK텔레콤 ML서비스 개발팀 소개
SK텔레콤은 “에이닷“이라는 대화형 AI서비스를 제공하고 있습니다. ML서비스 개발팀은 에이닷에서 사용자의 선호도와 사용 패턴에 따른 개인화된 서비스 제공에 필요한 모델을 개발하고 서비스하는 역할을 담당하고 있습니다. ML서비스 개발팀은 Amazon SageMaker, AWS Step Functions, 그리고 AWS Inferentia를 통해 에이닷의 추천 시스템을 구축하고 있고, 사용자의 서비스 사용 패턴, 위치, 선호도 등을 분석하고 그에 따른 맞춤형 추천을 제공하고 있습니다.
Amazon SageMaker, AWS Step Functions, AWS Inferentia란?
- Amazon SageMaker는 기계 학습 모델을 빠르게 구축, 훈련, 배포할 수 있는 완전 관리형 기계 학습 서비스입니다. SageMaker는 개발자와 데이터 과학자가 기계 학습 모델을 빠르게 구축하고, 데이터 세트를 이용해 모델을 훈련시키며, 이를 실시간으로 예측하는 워크플로우를 쉽게 설정할 수 있게 지원합니다.
- AWS Step Functions는 서버리스 오케스트레이션 서비스로, 개발자가 AWS의 여러 서비스를 연계하여 복잡한 비즈니스 프로세스나 워크플로를 구축하고 실행할 수 있게 합니다. 이 서비스는 마이크로 서비스, 서버리스 애플리케이션, 데이터 및 기계 학습(ML) 파이프라인 등을 위한 다양한 사용 사례를 지원하며, 각 단계의 입력과 출력을 관리하여 코드를 간소화하고 에러를 줄일 수 있습니다.
- AWS Inferentia는 저렴한 비용으로 높은 성능의 추론을 제공하도록 AWS가 특별히 구축한 기계 학습 칩입니다. Inferentia는 GPU 인스턴스 대비 매우 저렴한 비용으로 높은 처리량과 짧은 지연 시간의 추론 성능을 제공하고 있습니다. Inferentia는 Amazon SageMaker, Amazon ECS, Amazon EKS, AWS Batch와 연동해 사용할 수 있으며, 고성능 실시간 추론을 가능하게 하면서도 비용 효율성을 높여줍니다.
SK텔레콤의 MLOps 아키텍처
그림 1. SK텔레콤의 MLOps 아키텍처
SK텔레콤의 MLOps 프로세스는 온프레미스 데이터 센터에서 시작합니다. 데이터 과학자(Data Scientist)는 데이터 센터에서 훈련한 모델을 Amazon S3에 업로드합니다. Amazon S3는 안전하고 확장 가능한 오브젝트 스토리지 서비스로써, 다양한 종류의 데이터를 저장하고 분석할 수 있습니다.
업로드된 모델은 AWS Step Functions를 통해 Amazon SageMaker 파이프라인을 통과합니다. AWS Step Functions는 다양한 AWS 서비스들을 조합하여 빠르고 안정적인 어플리케이션을 구축할 수 있게 도와줍니다. 모델은 SageMaker Pipelines를 거치면서, AWS Inferentia에서 사용할 수 있도록 AWS Neuron SDK를 통해 컴파일됩니다. 이후 컴파일된 모델은 SageMaker Model Registry에 등록되고, ML 모델의 버전 관리와 배포된 모델의 성능추적에 SageMaker Model Registry가 활용됩니다.
마지막으로, 데이터 센터에 위치한 사용자는 Model Registry에 등록되어 있는 모델 리스트를 확인하고 관리합니다. 이런 과정을 통해, 데이터 과학자는 언제든지 효과적으로 모델의 상태를 확인하고 필요한 조치를 취할 수 있으며, 사용자는 SageMaker Endpoint에서 Inferentia 기반의 인스턴스를 통해 실시간 추론을 실행할 수 있습니다. SageMaker Endpoint는 REST API를 통해 실시간 추론을 수행할 수 있는 완전 관리형 서비스입니다. 빌트인 추론 컨테이너로 고가용성, 다중 모델 로딩, A/B 테스트를 위한 인프라 환경(Amazon EC2, 로드밸런서, 오토스케일링, 모델 아티팩트 로딩 등)이 사전에 구축되어 있으므로, 모델을 몇 줄의 코드만으로 프로덕션에 빠르게 배포할 수 있습니다.
이렇게 통합된 MLOps 아키텍처를 통해 SK텔레콤은 빠르고 효과적으로 모델을 배포하고 모니터링하고 있으며, 머신러닝 서비스의 효율성과 신뢰성을 향상시켜 가고 있습니다. 다음으로 Step Functions를 활용한 모델 빌드 및 배포 워크플로우를 좀 더 자세히 살펴보겠습니다.
AWS Step Functions를 활용한 모델 빌드 및 배포 워크플로우
Step Functions는 머신러닝을 포함한 사용자의 워크플로우를 자동화하고 오케스트레이션 할 수 있는 시각적 워크플로우 서비스입니다. 사용자는 SageMaker의 Pipeline 실행 상황을 확인하거나, 모델의 세부 정보를 등록하는 등 다양한 작업을 드래그-앤-드롭 인터페이스를 통해 상태 머신(state machine)으로 쉽게 구성할 수 있습니다.
그림 2. AWS Step Functions를 활용한 모델 빌드 워크플로우
모델 빌드 워크플로우는 데이터 과학자가 S3 버킷에 모델을 업로드하면, 이벤트가 트리거되고 워크플로가 시작됩니다. 워크플로우의 첫번째 단계에서는 모델의 패키지 이름을 가져와 AWS Systems Manager의 Parameter Store에 저장합니다. 이 정보는 이후 모델을 배포하고 추론하는데 사용됩니다.
그림 3. AWS Step Functions를 활용한 모델 배포 워크플로우
모델을 배포하는 워크플로우는 Systems Manager의 Parameter Store에 등록된 엔드포인트 설정을 기반으로 모델을 SageMaker Endpoint에 배포합니다. Step Functions는 이런 배포 과정을 더욱 쉽고 간단히 만들어 줍니다. 만약 필요한 SageMaker Endpoint가 아직 생성되지 않았다면, Step Functions 워크플로우가 자동으로 신규 엔드포인트를 생성합니다. 이후 워크플로우는 모델 배포의 성공 여부를 확인하고 이를 리포트합니다.
AWS Inferentia와 Neuron SDK
그림 4. AWS Inferentia 내부 구조
AWS Inferentia는 딥러닝 모델의 효율적인 추론 환경 구성을 위한 딥러닝 전용 가속 칩으로 1세대 가속기 Inferentia1과 2세대 가속기 Inferentia2가 출시되어 있습니다. 현재(2023/06/13) 서울 리전에서는 Inferentia1 기반의 인스턴스인 Inf1만 사용이 가능하여, SK텔레콤의 워크로드에서는 1세대 가속기 Inferentia1가 사용되었습니다. Inferentia1 가속기는 최대 128 테라플롭스의 연산속도를 지원하는 4개의 뉴런 코어-v1이 내장되어 있습니다. 뉴런 코어 내에는 텐서 엔진, 스칼라 엔진, 벡터 엔진이 자체 내장되어 있으며 행렬 곱셈 및 풀링 (pooling) 을 빠르게 처리할 수 있습니다. 그리고 대용량 온칩 캐시와 DMA (Direct Memory Access) 엔진이 내장된 8GB DRAM 메모리로 구성된 2단계 메모리 계층으로 모델을 캐싱하여 딥러닝 모델 추론을 빠르게 수행합니다. (그림 4. 참조) Inf1 인스턴스는 해당 인스턴스에서 지원하는 딥러닝 모델에 대해 NVIDIA T4 GPU가 탑재된 g4dn 인스턴스보다 빠른 성능을 보이면서, 서울 리전 기준으로 시간당 0.281 USD로 0.647 USD인 g4dn.xlarge 대비 두 배 이상 저렴합니다. 또한 단일 칩에서도 4개의 뉴런 코어들을 활용하여 데이터 병렬화 및 모델 병렬화를 적용함으로써 추론 성능을 더욱 개선할 수 있습니다.
TensorFlow, PyTorch와 같은 기존의 딥러닝 프레임워크에서 훈련된 모델을 Inferentia에서 추론하려면 AWS Neuron SDK (Software Development Kit) 컴파일러로 Inferentia 칩에 최적화된 모델로 컴파일해야 합니다. 컴파일러는 AOT (Ahead Of Time) 컴파일 방식으로 먼저 딥러닝 모델의 계산 그래프를 IR (Intermediate Representation) 로 변환합니다. 이후, 타겟 디바이스와 딥러닝 프레임워크에 따라 메모리 할당, 병렬화, 실행 순서와 같은 최적화를 수행하면서 컴파일을 수행합니다. Neuron 컴파일러 CLI (Command Line Interface) 로 직접 컴파일하거나, Python SDK로 컴파일할 수 있으며, 컴파일된 모델은 NEFF (Neuron Executable File Format) 로 저장됩니다. 컴파일된 모델은 Neuron SDK 런타임을 사용하여 아래와 같이 간단히 추론이 가능합니다.
SK텔레콤의 ML서비스 개발팀에서는 Inf1 인스턴스에서 운영되는 모델을 이용하여 기존 대비 약 70% 정도의 개선된 추론 성능을 확인했으며, 기존 대비 50% 비용으로 최대 3.5배 더 많은 추론 요청을 처리할 수 있게 되었습니다.
마무리
지금까지 SK텔레콤의 데이터 과학자와 ML 엔지니어가 효율적으로 정보를 공유하고 작업할 수 있도록, Amazon SageMaker와 AWS Step Functions 기반 ML 파이프라인을 구축한 사례에 대해 소개드렸습니다. SK텔레콤 ML서비스 개발팀은 ML 파이프라인을 구축하는 과정에서 AWS의 솔루션즈 아키텍트들과 함께 빠르게 기계학습 프로토타입을 만드실 수 있도록 도움을 드리는 프로그램인 AWS RAMP(Rapid Assisted-ML Prototyping) 프로그램에 참여하셨습니다. 마지막으로 고객의 메시지를 통해 AWS는 고객의 비즈니스 가속화를 위해 최선의 노력을 하고 있다는 점을 말씀드리면서 글을 마무리 하겠습니다.
“ML 기반의 서비스 운영은 기존의 서비스 운영보다 고려해야 할 것이 더 많았습니다. ML 모델 개발에 사용되는 다양한 프레임워크를 지원할 수 있어야 했고, ML 모델의 성능을 최대화하고 비용을 최소화하기 위한 인프라를 선택하고 활용할 수 있어야 했습니다. AWS 솔루션즈 아키텍트의 도움으로 SageMaker와 Step Functions를 활용하여 ML 모델의 배포 과정을 자동화하는 MLOps 파이프라인을 구축할 수 있었고, 이를 통해 ML 모델을 빠르고 안전하게 프로덕션 환경으로 배포할 수 있었습니다. 또한 MLOps 파이프라인은 데이터 사이언티스트와 MLOps 엔지니어가 모델 배포를 위해 효율적으로 협업을 할 수 있도록 하였습니다. AWS의 도움에 감사드리며, 앞으로도 AWS의 서비스를 통해 고객에게 최적화된 서비스를 만들어 나가는 것을 기대하고 있습니다.”
– Sungwon Han, MLOps Engineer at SK Telecom.
참고자료
- AWS Neuron: https://thinkwithwp.com/ko/machine-learning/neuron/
- AWS Inferentia 실습 코드: https://github.com/daekeun-ml/aws-inferentia