Loading...

텐서플로

2 Contents
최신순

BeeAI 공모전 교육 영상(10) - 딥러닝 모델 서빙(125~133p)

머신러닝과 딥러닝 모델을 실제 서비스에 적용하는 ‘서빙’ 과정은 데이터 분석의 결실을 보는 핵심적인 단계입니다. BeeAI 환경에서는 스파크를 이용해 머신러닝 모델을 만들고, 텐서플로로 딥러닝 모델을 구축하여 GPU 기반으로 서빙하는 실습을 진행할 수 있습니다. 특히 이미지 분류에 널리 쓰이는 텐서플로 인셉션(Inception) 모델을 활용하면 판다나 강아지 같은 사물을 실시간으로 판별하는 시스템을 구축하는 것이 가능합니다. 이는 단순히 모델을 학습시키는 것에 그치지 않고, 실제 환경에서 데이터가 입력되었을 때 즉각적인 결괏값을 반환하는 인프라 구성 능력을 키우는 과정이기도 합니다. BeeAI의 서빙 방식 중 하나인 온디맨드 서빙 엔진은 사용자가 필요할 때마다 요청을 보내고 결과를 받는 구조로 설계되어 있습니다. 이 엔진을 구성할 때는 전용 오퍼레이터와 러너, 그리고 컨트롤러가 유기적으로 작동하며 서비스 환경을 조성합니다. 여기서 가장 중요한 역할을 수행하는 컴포넌트는 ‘러너’인데, 사용자는 러너 설정을 통해 서빙할 모델이 저장된 경로나 포트 번호를 자유롭게 지정할 수 있습니다. 이러한 구조를 통해 복잡한 딥러닝 모델도 REST API 형태의 서비스로 손쉽게 변환되어, 외부 시스템이 보낸 이미지 데이터를 즉각 분류하고 응답할 수 있는 상태가 됩니다. 효율적인 모델 운영을 위해서는 하드웨어 자원, 특히 GPU를 어떻게 활용할지가 중요한 변수가 됩니다. 텐서플로 서빙 러너의 옵션 설정을 통해 특정 GPU 디바이스를 지정하거나 메모리 점유율을 세밀하게 조절할 수 있습니다. 예를 들어 여러 개의 GPU 중 특정 장치만을 사용하도록 설정하거나, 전체 메모리의 일부만 할당하여 자원 낭비를 방지하는 방식입니다. 또한 모델 자동 로드 옵션을 활성화하면 새로운 학습 결과가 생성될 때마다 최신 모델을 자동으로 반영하여 서빙 품질을 유지합니다. 만약 GPU가 없는 환경이라면 시스템이 자동으로 CPU를 활용하도록 구성되어 다양한 인프라에 유연하게 대응합니다. 서빙 환경이 구축되면 시뮬레이터를 통해 실제 데이터가 입력되는 상황을 가정한 테스트를 수행하게 됩니다. 예를 들어 판다나 고양이 이미지가 포함된 데이터 경로를 시뮬레이터에 입력하면, 시스템은 설정된 시간 간격으로 이미지를 쿼리하고 분류 결과를 반환합니다. 사용자는 BeeAI 대시보드와 모니터링 페이지 통해 현재 서빙 중인 서비스의 상태와 고유 URL을 실시간으로 확인할 수 있습니다. 쿼리에 대한 결괏값은 각 항목별 예측 확률 점수로 나타나며, 가장 높은 점수를 얻은 결과를 통해 모델이 실제 사물을 정확하게 인식했는지 판별하고 시스템의 신뢰도를 점검할 수 있습니다. 요청이 올 때만 작동하는 온디맨드 방식과 달리, 끊임없이 유입되는 데이터를 처리해야 하는 환경에서는 스트림 서빙 방식이 훨씬 효과적입니다. 대표적인 사례가 5분 단위로 수집되는 대규모 교통 속도 데이터를 기반으로 미래의 도로 상황을 예측하는 시나리오입니다. 스트림 서빙은 미니 배치 엔진을 활용하여 카프카(Kafka)와 같은 메시지 큐에 쌓이는 데이터를 실시간으로 읽어 들여 처리합니다. 이 과정에서 텐서플로 예측 오퍼레이터가 중심이 되어 지속적으로 유입되는 스트림 데이터에 모델을 적용하고, 그 예측 결과를 다시 카프카(Kafka) 토픽에 저장하거나 파일로 기록하여 실제 서비스에 활용하게 됩니다. 딥러닝 모델이 스트림 데이터를 정확히 이해하기 위해서는 정교한 전처리 파이프라인 구축이 선행되어야 합니다. 교통 예측 모델의 경우, 여러 시간대의 도로별 속도 데이터를 하나로 묶어 입력 벡터로 변환하는 과정이 필수적입니다. 이를 위해 벡터 어셈블 컬럼과 플래튼(Flatten) 오퍼레이터를 사용하여 방대한 양의 개별 속도 정보를 단일 행의 텐서 형태로 재구성하게 됩니다. 이렇게 정제된 데이터가 예측 오퍼레이터로 전달되면 모델은 학습된 패턴을 바탕으로 향후 15분 뒤의 속도를 정확히 계산해 냅니다. 이는 실시간 대용량 데이터를 딥러닝 모델이 인식할 수 있는 형태로 가공하는 파이프라인 설계의 중요성을 보여줍니다. BeeAI 플랫폼은 온디맨드와 스트림이라는 두 가지 서빙 방식을 모두 지원함으로써 기업의 다양한 비즈니스 요구사항에 유연하게 대응합니다. 사용자는 REST API 기반의 즉각적인 응답이 필요한 간단한 서비스부터, 대규모 실시간 데이터 분석이 요구되는 복잡한 서비스까지 폭넓게 구현할 수 있습니다. 특히 복잡한 GPU 설정이나 전처리 파이프라인 구성을 시각적인 워크플로를 통해 관리할 수 있다는 점은 모델 운영의 생산성을 크게 높여주는 장점입니다. 이러한 서빙 기술의 고도화는 단순한 데이터 분석을 넘어, 실제 세상을 변화시키는 실질적인 인공지능 서비스를 완성하는 핵심적인 동력이 됩니다.

BeeAI 공모전 교육 영상(10) - 딥러닝 모델 서빙(125~133p)
한국전자통신연구원
  • 융합
  • 공학·기술

BeeAI 활용 교육 영상(08) - [4단계] BeeAI에서 모델 서빙하기(1)

머신러닝 모델을 실제 서비스에 적용하는 서빙 방식은 크게 온디맨드 서빙과 스트림 서빙으로 구분됩니다. 온디맨드 서빙은 마이크로서비스 아키텍처 환경에서 필요한 시점에 쿼리를 던져 예측 결과를 받는 방식인 반면, 스트림 서빙은 입력되는 데이터를 연속적으로 처리하여 실시간으로 예측 결과를 내보냅니다. 실무에서는 실시간 데이터 흐름을 다루기 위해 스트림 투 스트림 엔진을 활용하며, 이는 데이터의 입력부터 예측, 결과 전송까지의 전 과정을 끊김 없이 수행하는 데 최적화되어 있습니다. 플랫폼을 활용한 스트림 서빙 워크플로에서는 HTTP 서버 리더가 특정 포트를 통해 외부 데이터를 수신하는 것으로 시작됩니다. 수신된 온도 스트림 데이터는 전처리 과정을 거쳐 예측 오퍼레이터로 전달되며, 여기서 학습된 머신러닝 모델이 실시간 예측을 수행합니다. 최종 결과는 Kafka 토픽으로 전송되어 다른 시스템에서 활용될 수 있게 구성됩니다. 이러한 구조는 Zookeeper나 Bootstrap 서버 설정과 연동되어 분산 환경에서도 안정적인 데이터 처리를 가능하게 합니다. 정확한 예측을 위해서는 정교한 데이터 전처리가 필수적입니다. 입력된 온도 데이터는 먼저 특정 범위로 변환되는 Min-Max 스케일링을 거치며, 이 과정에서 현실적으로 불가능한 이상치 데이터는 제거됩니다. 또한 Transpose 오퍼레이터를 통해 과거의 데이터들을 모아 가로 형태로 재구성함으로써 모델이 분석하기 적합한 형태로 가공합니다. 예측이 완료된 이후에는 다시 원래의 수치 범주로 역변환하는 과정을 거쳐 사용자가 직관적으로 이해할 수 있는 최종 예측값을 산출하게 됩니다. 딥러닝 모델의 저장 방식인 Checkpoint는 본래 학습 중 오류가 발생했을 때 마지막 지점부터 재개하기 위한 용도로 사용됩니다. 하지만 실제 서빙 환경에서는 변수 값이 고정된 추론 전용 모델이 필요하므로, 그래프 정보와 배열 값을 결합하여 상수화하는 과정이 수반됩니다. TensorFlow Serving에서 공식적으로 권장하는 SavedModel 형식은 그래프 정보와 변수 데이터를 포함하며, 학습용 메타 그래프를 제외한 핵심 추론 로직만을 남겨 효율적인 서비스 배포를 지원합니다. SavedModel의 핵심 요소는 입력과 출력의 규격을 정의하는 시그니처입니다. 어떤 형태의 데이터를 받아들여 무엇을 내보낼지를 명확히 명시해야 모델 서버가 이를 정확히 인식하고 처리할 수 있습니다. TensorFlow 코드를 작성할 때 추론에 필요한 함수만을 모듈화하고 시그니처를 등록하면, 복잡한 트레이닝 그래프를 제거한 경량화된 모델을 생성할 수 있습니다. 이는 모델의 용량을 줄일 뿐만 아니라 서빙 시 발생할 수 있는 리소스 낭비를 최소화하는 데 기여합니다. 모델 서버는 저장소에 새롭게 올라오는 모델을 실시간으로 감시하며 버전 관리 정책에 따라 서비스를 갱신합니다. 가용성을 중시하는 정책에서는 서비스 중단 없이 신구 모델을 교체하는 방식을 취하며, 리소스가 제한적인 경우에는 기존 모델을 내린 후 신규 모델을 올리는 방식을 선택합니다. 또한 GPU 메모리 점유 방식을 설정하거나 특정 포트를 지정하여 모델을 로딩하는 등, 운영 환경의 특성에 맞춰 유동적으로 리소스를 관리할 수 있는 다양한 옵션이 제공됩니다. 기존에 잘 학습된 Pre-trained 모델을 활용하는 전이 학습은 개발 시간을 획기적으로 단축하는 방법입니다. Checkpoint나 Protocol Buffer 파일로부터 모델을 불러와 구조를 수정하고 자신만의 시그니처를 결합하면 새로운 SavedModel을 생성할 수 있습니다. 생성된 모델의 입력 형태나 Rank 등의 시그니처 정보는 CLI 도구를 통해 검증할 수 있으며, 이를 통해 예측 형식의 정확성을 확인합니다. 이러한 체계적인 검증 과정은 복잡한 시퀀스 데이터나 이미지 데이터를 다루는 모델의 신뢰성을 높여줍니다.

BeeAI 활용 교육 영상(08) - [4단계] BeeAI에서 모델 서빙하기(1)
한국전자통신연구원
  • 융합
  • 공학·기술