Loading...

스트림서빙

3 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)
한국전자통신연구원
  • 융합
  • 공학·기술

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

인공지능 개발 프로세스에서 학습된 모델을 실제 서비스에 적용하는 방식은 크게 온디맨드 서빙과 스트림 서빙으로 구분됩니다. 온디맨드 서빙은 모델이 항상 활성화된 상태로 대기하다가 사용자가 필요할 때 질의를 던져 즉각적인 응답을 받는 구조입니다. BeeAI 환경에서는 텐서플로우 서빙 오퍼레이터와 러너를 활용하여 이러한 실습을 진행할 수 있습니다. 딥러닝 시각 지능 모델을 통해 동물의 종류를 판단하는 예제처럼, 사용자는 로컬 파일 시스템에 저장된 모델 경로와 포트 정보를 설정하여 REST API 형태의 서비스를 손쉽게 생성하고 관리할 수 있습니다. 생성된 온디맨드 서비스는 시스템 대시보드를 통해 실시간으로 상태를 확인할 수 있으며, 포스트맨과 같은 외부 도구를 활용해 모델의 성능을 직접 테스트하는 과정이 수반됩니다. 예를 들어 인셉션 V3 모델이 작동 중인 특정 포트로 이미지를 바이너리 형태로 전송하면, 모델은 사전에 정의된 시그니처 이름을 인식하여 분석 결과를 반환합니다. 이 과정에서 콘텐츠 타입과 URL 주소를 정확히 명시하는 것이 중요하며, 이를 통해 학습된 딥러닝 모델이 실제 서비스 환경에서 사용자의 요청에 어떻게 반응하고 결과를 도출하는지 명확하게 검증할 수 있습니다. 실시간으로 끊임없이 유입되는 대량의 데이터를 처리해야 하는 환경에서는 스트림 서빙 방식이 핵심적인 역할을 수행합니다. 이는 카프카와 같은 메시지 브로커를 통해 들어오는 데이터 흐름을 실시간으로 분석하고 예측치를 산출하는 방식입니다. 교통 정보 예측 시스템을 예로 들면, 5분 단위로 수집되는 도로의 평균 속도 데이터를 스트림 리더로 읽어 들여 파이프라인에서 즉시 처리합니다. 스트림 서빙은 데이터 전처리와 예측 단계가 지연 없이 연결되어야 하므로, 전용 엔진을 통해 데이터의 흐름을 제어하고 결과값을 다시 라이터를 통해 송출하는 일련의 과정으로 구성됩니다. 스트림 서빙 구현 시에는 스파크에서 처리되는 데이터 프레임 형태를 텐서플로우 연산에 적합한 벡터 형태로 변환하는 기술적 절차가 필수적입니다. 이를 위해 벡터 어셈블러나 플래튼 오퍼레이터를 사용하여 분산된 데이터를 하나의 행렬이나 통합된 벡터로 가공합니다. 이후 텐서플로우 프레딕트 오퍼레이터가 최신 모델을 호출하여 실시간 예측을 수행하게 됩니다. 이러한 정교한 데이터 변환 단계들은 결과적으로 15분 뒤의 교통 정체 상황을 예측하는 것과 같은 고도화된 인공지능 서비스를 실현 가능하게 만들며 서비스의 완성도를 높여줍니다. 단순한 단일 모델 배포를 넘어 여러 개의 모델을 유기적으로 결합하여 서비스하는 융합 서빙 기술은 더욱 복잡한 지능형 시스템을 구축하는 데 사용됩니다. 온디맨드 파이프 서빙 엔진을 활용하면 개별적으로 운영되는 여러 REST API를 통합 관리하는 상위 계층의 API를 설계할 수 있습니다. 여러 모델을 융합한다는 개념이 생소할 수 있으나, 실제로는 각기 다른 전문 기능을 가진 모델들을 효율적으로 배치하고 사용자 요청의 성격에 따라 최적의 모델을 호출하는 구조를 의미합니다. 이는 대규모 AI 서비스에서 확장성과 운영 효율성을 동시에 확보하는 전략입니다. 융합 서빙의 대표적인 적용 사례는 주제 분류 모델과 분야별 전문 응답 모델이 결합된 지능형 챗봇 시스템입니다. 사용자가 질문을 입력하면 먼저 주제 분류 모델이 질문의 의도를 분석하여 특정 인덱스 값을 반환하고, 라우팅 맵 오퍼레이터는 이 값에 따라 일상 대화 모델이나 여행 전문 모델 중 가장 적합한 곳으로 질의를 전달합니다. 이러한 계층적 구조 덕분에 시스템은 각 분야에 특화된 모델의 성능을 극대화하여 정교한 답변을 제공할 수 있습니다. 융합 서빙은 개별 모델의 한계를 보완하고 사용자의 복합적인 요구사항을 유연하게 해결하는 핵심 장치입니다. 성공적인 서빙 프로세스 구현을 위해서는 파이썬 코드를 도커 이미지로 변환하여 API화하는 도커라이즈 기능이 필수적으로 뒷받침되어야 합니다. 개발자는 복잡한 인프라 설정에 대한 고민 없이 베이스 코드와 필요 라이브러리를 명시하는 것만으로 전처리 로직이나 사용자 정의 함수를 REST API로 빠르게 전환할 수 있습니다. 이러한 기술적 유연성은 텍스트, 이미지, 오디오 등 다양한 데이터 형태를 모두 수용하며 BeeAI 플랫폼 내에서 AI 모델의 생애 주기를 통합 관리할 수 있게 돕습니다. 결국 정교한 서빙 전략은 고도화된 AI 모델의 가치를 실제 사용자 서비스로 연결하는 가교가 됩니다.

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