본문 바로가기
회고

AI 모델 학습부터 MLOps 운영까지: 직접 개발한 프로젝트 회고

by kkodecaffeine 2025. 5. 25.

시작하며;

감회가 좀 새롭다. 관련 글을 쓸때마다 "언젠가 실 서비스에 적용해보면 재밌겠다..!" 로 마무리했는데, 그 날이 진짜 왔다. 아니 해냈다.
 
2025년 4월 14일 오전, 그동안 학습하고 실험해온 AI 기반 프로토타입을 실제 운영 중인 서비스 환경에 성공적으로 적용했다. 단순한 모델 개발에 그치지 않고, 의료 데이터를 입력으로 받아 AI 가 자동으로 분석한 결과를 실시간으로 제공하는 End-To-End 파이프라인을 직접 설계하고 구축했다.
 
AI 추론은 GPU 없이 CPU 만을 활용하는 AWS ECS 환경에서 수행되며, 결과는 API 형태로 앱 서비스에 전달된다. ECS 기반의 인프라를 선택했다. 이유는 안정적인 확장성과 배포 용이성을 제공하며, 서비스 운영에 필요한 빠른 응답 속도와 효율적인 리소스 활용을 고려했기 때문이다.
 
이 프로젝트는 단순한 기술 시연에 그치지 않고, 실제 서비스 환경에서 안정적으로 동작할 수 있도록 정확도와 신뢰성을 확보하는 데 중점을 두었다. 특히, AI 분석 결과가 사용자 결제 행동에 긍정적인 영향을 줄 수 있도록 설계했으며, 이는 곧 서비스의 전환율 향상과 매출 증대라는 실질적인 비즈니스 성과로 이어지도록 했다.
 
아래는 전체적인 파이프라인이다. Image classification serverFace segmentation server 에 대한 개발과 배포 등을 모두 직접 구현했다. 추가로 모델 선정과 학습 방법 등도 직접 고민했고 최적화했다.

파이프라인
전체 파이프이프라인


그래서 뭐가 달라졌는데?;

기존의 흐름에서는 사용자가 앱 화면 내 초음파 영상에서 직접 스크롤하며, 잘 나온 입체 초음파 이미지를 찾아야 했다. 이 과정은 특히 산모에게 부담이 컸다. 영상 전체를 일일이 탐색해야 했고, 마음에 드는 장면을 발견한 뒤에도 얼굴 위치를 프레임에 맞춰 조정하고, 크롭 가이드를 따라 이미지를 잘라내는 등 여러 단계를 수작업으로 진행해야 했다. 이후에도 다시 한 번 결과물을 확인하고 최종적으로 결제 페이지에 도달해야 했기 때문에, 전체 플로우는 총 6단계에 이르렀고, 중간에 포기하거나 이탈하는 사용자도 적지 않았다.
 
반면, 개선된 구조에서는 이러한 수고를 사용자 대신 AI 가 맡는다. AI 가 영상에서 고품질 이미지를 자동으로 분류하고, 가장 적합한 장면을 미리 추천함으로써, 사용자는 스크롤도, 프레임 조정도, 크롭도 하지 않아도 된다. 진입과 온보딩 이후에는 단순히 자동 추천된 이미지 중 하나를 선택하기만 하면 결제 페이지로 바로 이동할 수 있고, 전체 흐름은 2단계로 대폭 간소화되었다.
 
이처럼 사용자의 부담을 줄이고 선택 과정을 자동화한 덕분에, 전체 사용자 경험은 훨씬 더 직관적이고 빠르게 개선되었고, 중도 이탈률 역시 감소하는 긍정적인 효과가 나타났다.
 
특히 주목할 점은, 개선된 구조가 마케팅, 프로모션, 푸시 알림 등 외부 유입 요소 없이도 기존과 동일한 수준의 결제 전환율을 안정적으로 유지하고 있다는 것이다. 현재 B2C 채널에서는 별도의 영업 활동 없이 자연 유입에만 의존하고 있는 상황이며, 내부적으로는 리소스를 다른 서비스에 더 집중하고 있음에도 불구하고, 자동화된 플로우만으로도 일정 수준 이상의 성과를 꾸준히 유지하고 있다.
 

개선 전개선 후
기존 6단계에서 2단계로 개선

 
분류 모델이 추천해준 이미지를 사용자가 클릭한 수는 계속해서 상승 중이다. 참고로 이미지 분류 서버 배포는 4월 14일이다.

amplitude

파란색 : 기존 방식 / 사용자가 직접 영상 내 입체 초음파를 찾아서 프레임을 선택하는 방식 (초록색도 기존 방식)
보라색 : 개선 방식 / AI 모델이 영상 내 이미지를 분류하여 분류된 입체 초음파를 사용자가 단순 선택하는 방식


시행착오 - 추론 시간;

현재 서비스에는 하루 평균 최소 8,000건에서 많게는 10,000건 이상의 초음파 영상이 업로드되고 있다. 진료가 몰리는 오전 시간 대에는 분당 최대 55개에서 60개까지 업로드되는 상황이다. 업로드되는 영상의 길이는 제각각이며, 1시간이 넘는 장시간 영상도 적지 않아, 서버 입장에서는 추론 처리량과 속도가 중요한 기술적 과제였다.
 
특히 이미지 분류 서버를 구축하고 서비스를 배포하던 초기에는 추론 속도를 얼마나 줄이느냐가 가장 시급한 과제였다. 이미지 분류 과정이 지연되면, 앞서 개선한 결제 퍼널의 효과 자체가 무의미해지기 때문이다. 사용자가 빠르게 이미지를 확인하고 결제로 이어지는 흐름을 끊기지 않게 유지하려면, AI 추론 결과가 즉시 제공되어야 했다.
 
따라서 1시간이 넘는 장시간 영상조차도 수 초 내외로 빠르게 추론을 완료하는 것이 핵심이었고, 이를 온전히 충족시킴으로써 사용자 경험과 시스템 효율성 모두를 동시에 확보할 수 있었다. 수 초 내외로 빠르게 추론해야 한다는 것은 순전히 내가 스스로에게 부여한 기술적 목표이자 집착에 가까운 원칙이었다.


해결 과정 - ONNX;

PyTorch의 .pth 모델을 .onnx 형식으로 변환한 결과, 추론 속도가 눈에 띄게 향상되었고, CPU 및 메모리 사용률 또한 크게 감소했다. 변환된 .onnx 모델을 통해 각 프레임의 클래스를 빠르게 예측할 수 있었으며, 프레임 데이터는 shared memory 를 활용해 효율적으로 전달했다.
 
FFmpeg 를 활용해 멀티스레딩 방식으로 프레임을 추출한 뒤, SharedMemoryManager 를 이용해 프로세스 간 복사 없이 데이터를 공유함으로써 불필요한 메모리 낭비를 최소화했다. 이후 추출된 프레임은 배치 단위로 나누어 ProcessPoolExecutor 를 통해 병렬로 분류 작업을 수행하여 전체 처리 성능을 크게 향상시켰다.
 
이처럼 추론 속도와 안정성이 확보되면서, 이제는 분류 이후의 후처리나 기타 활용 방안 등 다양한 확장 작업에 집중할 수 있는 기반이 마련되었다. 서비스의 확장성과 고도화 측면에서도 매우 중요한 전환점이라 할 수 있다.


회고;

이번 프로젝트는 모델 선정부터 학습, 추론 파이프라인 구성, 데이터 서빙까지 AI 기반 서비스의 전 과정을 직접 설계하고 구현해본 소중한 경험이었다. 단순한 기술 개발을 넘어서, 실제 운영 서비스에 이 기술을 녹여내고 사용자에게 실질적인 가치를 제공할 수 있었다는 점에서 매우 뜻깊었다.
 
학습 모델 구조를 고민하는 초기 단계부터, 하루 수천, 수만 건에 달하는 초음파 영상을 안정적으로 처리할 수 있는 인프라를 구축하고, 이를 운영 환경에 녹이는 전 과정에 주도적으로 참여했다. 그렇게 완성된 시스템이 실제 사용자에게 제공되고 있다는 사실은 개발자로서 큰 성취감을 느끼게 했다.
 
다만 프로젝트를 진행하는 도중, 회사의 서비스 방향과 정책이 바뀌면서 아쉬움도 있었다. 내부적으로는 여러 차례 시연과 자료 공유를 통해 기술적 의의와 가능성을 전달해왔지만, 최근 다른 미팅을 통해 알게 된 바로는 최상위 의사결정자들은 이 프로젝트가 어떻게 설계되었고 왜 진행되었는지를 정확히 인지하지 못하고 있었다. 게다가 내부 전략 변경과 맞물리며, 해당 기능에 대한 마케팅이나 외부 활용은 전혀 이루어지지 못한 상황이다.
 
그럼에도 불구하고, 기술적으로 완성도 높은 구조를 직접 설계하고 실서비스에 안정적으로 적용할 수 있었던 경험은 매우 값졌고, 이후 어떤 프로젝트를 맡더라도 큰 자산이 될 거라 확신한다.


return;

2025.02.22 - [이미지 처리] - 초음파 영상 분류, BPD 만으로는 부족했다

2025.03.22 - [딥러닝] - Hard Negative Mining: 모델이 틀린 데이터를 다시 학습시키는 방법
2025.02.06 - [딥러닝] - ResNet18 로 초음파 영상 똑똑하게 분석하기