Loading...

파이프라인구축

2 Contents
최신순

BeeAI 공모전 교육 영상(09) - 머신러닝 모델 서빙(122~124p)

머신러닝 모델의 학습이 완료된 후에는 이를 실제 서비스에 활용하는 서빙 단계가 필수적입니다. 이번 과정에서는 Apache Spark를 기반으로 구축된 모델을 실시간 스트림 환경에서 서빙하는 실습을 진행합니다. 전체 구조는 데이터를 생성하는 시뮬레이션 엔진, 예측을 수행하는 핵심 엔진, 그리고 결과를 검증하고 저장하는 밸리데이터 엔진으로 구성됩니다. 특히 중간 단계의 엔진은 학습된 모델을 로딩하고 유입되는 스트림 데이터를 처리하여 예측값을 산출하는 중추적인 역할을 담당하게 되며, 이는 전체 시스템의 성능을 결정짓는 핵심적인 요소가 됩니다. 실시간으로 입력되는 온도 데이터는 JSON 형식의 스트링으로 주입되며, 이를 모델이 이해할 수 있는 형태로 변환하는 과정이 필요합니다. 먼저 Column Select 오퍼레이터를 통해 처리 대상 컬럼을 지정하고, Min-Max 스케일링을 적용하여 데이터의 범위를 정규화합니다. 이후 Transpose 오퍼레이터를 사용하여 여러 개의 온도 데이터를 하나의 행으로 재구성하는데, 이는 AutoML로 학습된 모델이 데이터를 효과적으로 받아들여 예측을 수행할 수 있도록 하기 위함입니다. 이러한 전처리 과정은 데이터의 편향을 줄이고 예측의 정확도를 높이는 데 기여하는 중요한 단계라고 할 수 있습니다. 전처리가 완료된 데이터는 Spark ML Stream Predictor 오퍼레이터로 전달됩니다. 이 단계에서 미리 학습된 모델이 활성화되어 실시간 예측 쿼리를 수행하고 결과값을 도출합니다. 모델에서 출력된 예측값은 다시 한번 Min-Max 스케일링 오퍼레이터를 통해 역산 과정을 거칩니다. 이는 0과 1 사이로 압축되었던 결과값을 실제 온도 단위로 복원하여 사용자가 직관적으로 이해할 수 있는 의미 있는 수치로 만드는 작업입니다. 최종적으로 복원된 예측 데이터는 다음 프로세스로 전달되기 위해 대기하며, 실시간 모델 서비스의 완결성을 높여주는 역할을 수행합니다. 예측된 결과는 Kafka 라이터를 통해 지정된 토픽에 저장되며, 이후 세 번째 엔진인 File 라이터는 Kafka에 쌓인 데이터를 일정 주기로 읽어와 CSV 파일 형식으로 저장합니다. 저장된 파일에는 타임스탬프와 예측 라벨 컬럼이 포함되어 있어, 데이터가 시간에 따라 어떻게 변화하는지 상세히 추적할 수 있게 해줍니다. 이러한 파이프라인 구성은 실시간 데이터를 영구적인 저장소에 기록함과 동시에 사후 분석을 가능하게 만드는 기반이 됩니다. 또한 Kafka를 활용함으로써 데이터 전송의 유연성을 확보하고 대규모 트래픽 상황에서도 시스템이 안정적으로 작동할 수 있는 구조를 완성합니다. 시스템 운영의 편의성을 위해 제공되는 엔진 진행 상황 보기 기능을 활용하면, 저장된 예측 데이터를 시각화된 그래프 형태로 확인할 수 있습니다. 시간의 흐름을 X축으로, 예측된 온도 값을 Y축으로 설정하여 데이터의 주기성과 변동 추이를 한눈에 파악하는 것이 가능합니다. 스트림 서빙 예제는 사용자가 직접 종료하기 전까지 연속적으로 실행되며, 실시간으로 변화하는 온도 지표를 통해 모델의 서빙 성능을 실시간으로 모니터링할 수 있습니다. 이러한 시각화 도구는 복잡한 수치 데이터를 직관적인 정보로 변환해 주며, 향후 더 복잡한 딥러닝 모델 서빙으로 나아가기 위한 기술적 토대가 됩니다.

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

BeeAI 공모전 교육 영상(05) - Python 사용자 정의 함수를 활용한 데이터 처리하기(96~103p)

파이썬 UDF를 활용한 데이터 처리는 BeeAI 플랫폼의 핵심적인 기능 중 하나입니다. 이번 과정에서는 사용자가 직접 파이썬으로 구현한 로직을 도커 이미지로 변환하고, 이를 REST API 형태로 통합하여 실시간 데이터를 처리하는 실습을 진행합니다. 이 방식은 복잡한 데이터 전처리나 특수한 연산이 필요할 때 매우 유용하며, 플랫폼에서 제공하는 다섯 가지 엔진 유형 중 마지막인 '온디맨드 익스터널 서빙 엔진'을 통해 구현됩니다. 온디맨드 익스터널 서빙 엔진을 사용하려면 먼저 '파이 모듈 러너'를 설정해야 합니다. 사용자는 파이썬 코드가 저장된 폴더 경로를 지정하고, 생성될 도커 이미지의 이름과 REST API 통신에 사용할 포트 번호를 입력합니다. 이때 이미지 이름은 도커의 규약에 따라 영문 소문자만 사용해야 하며 특수문자 사용은 지양해야 합니다. 이렇게 설정된 정보는 플랫폼 내에서 자동으로 컨테이너화되어 데이터 파이프라인의 일원이 될 준비를 마칩니다. 엔진을 통해 생성된 REST API는 외부 데이터와의 통로 역할을 수행합니다. 데이터 파이프라인 상에서 처리하고자 하는 데이터를 해당 API로 전송하면, 도커 인스턴스 내부에서 사용자가 작성한 파이썬 코드가 실행되어 결과값을 반환합니다. 기본적으로 문자열 기반의 데이터가 송수신되는데, 이미지나 오디오 같은 멀티미디어 데이터의 경우 Base64 인코딩을 통해 문자열로 변환하여 처리하는 방식을 주로 사용하게 됩니다. 성공적인 배포를 위해서는 몇 가지 코딩 규약을 준수해야 합니다. 파이썬 모듈화를 위한 __init__.py 파일이 반드시 존재해야 하며, 실제 로직은 base.py 파일 내에 메인 함수 형태로 구현되어야 합니다. 또한, 코드 작성에 사용된 외부 라이브러리들은 requirements.txt 파일에 명시해야만 도커 이미지가 생성될 때 해당 패키지들이 자동으로 설치됩니다. 이러한 폴더 구조를 갖추어야만 시스템이 코드를 인식하고 서빙 환경을 구축할 수 있습니다. 이미지 회전과 같은 시각적 데이터 처리는 파이썬 UDF의 장점이 잘 드러나는 사례입니다. 스파크나 하둡 기반의 일반적인 배치 처리로는 복잡할 수 있는 작업을 파이썬의 Pillow 라이브러리를 활용하면 단 몇 줄의 코드로 구현할 수 있습니다. 입력된 이미지 바이트 스트림을 이미지 객체로 변환하고 90도 회전시킨 뒤 다시 결과값을 내보내는 로직을 온디맨드 익스터널 서빙 엔진에 탑재하면 강력한 커스텀 오퍼레이터가 완성됩니다. 실습에서는 JSON 문자열을 처리하는 시뮬레이션도 함께 진행합니다. 특정 키값을 추출하여 연산을 수행하고 결과를 반환하는 엔진을 구동하면, BeeAI 대시보드에서 실시간으로 생성된 서비스 상태를 확인할 수 있습니다. 시뮬레이터 엔진이 1초 간격으로 데이터를 REST API에 전송하면, 도커 컨테이너 내부에서 처리된 결과값이 즉각적으로 반환됩니다. 이는 데이터가 수집되고 저장되는 과정 사이에 사용자 정의 로직이 어떻게 유기적으로 개입하는지를 잘 보여줍니다. 안정적인 데이터 처리를 위해서는 시스템 환경 구성도 중요합니다. 특히 여러 개의 엔진을 동시에 구동하여 엔드투엔드 워크북을 실행할 때는 최소 8코어 이상의 CPU와 16GB 이상의 메모리가 권장됩니다. 파이썬 UDF 처리까지 포함된 복합적인 파이프라인은 자원 소모가 크기 때문입니다. 이러한 기초적인 데이터 처리 기법들을 숙지하고 나면, 다음 단계인 머신러닝 모델 학습과 GPU를 활용한 가속 서빙 단계로 원활하게 넘어갈 수 있습니다.

BeeAI 공모전 교육 영상(05) - Python 사용자 정의 함수를 활용한 데이터 처리하기(96~103p)
한국전자통신연구원ETRI 클래스
  • 공학·기술