본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 16. 09:20

HuggingFace Build Small Hackathon: 나의 첫 번째 헬스 스프린트

요약

HuggingFace의 Build Small Hackathon을 통해 개발된 헬스케어 앱 'Heartline'을 소개합니다. 소규모 언어 모델과 오디오 분류기를 활용하여 혈압 데이터와 심장 소리를 분석하고, 의사를 위한 임상 요약을 생성합니다.

핵심 포인트

  • 32B 미만 소규모 모델을 활용한 헬스케어 앱 구축 사례
  • 오디오 스펙트로그램 분석을 통한 4가지 심장 상태 분류
  • 개인정보 보호를 위해 합성 데이터(Synthetic Data) 활용
  • MiniCPM 모델을 이용한 맞춤형 임상 요약 생성

제1장: 왜 작게 만드는가 (Why Build Small)

헬스케어(Health Space) 분야에서 무언가를 만드는 것은 제가 항상 두려워하던 일이었습니다. 데이터 보호, 무시무시한 HIPAA 법률, 그리고 그에 따른 처벌은 그저 만들기, 만들기, 만들기를 좋아하는 저 같은 사람에게는 악몽처럼 들렸습니다.

하지만 Build Small Hackathon은 이 분야에서 무언가를 만들고 테스트해 볼 수 있는 딱 맞는 이벤트처럼 보였습니다. 파라미터(params) 32b 미만의 모델을 사용하여 앱을 구축하고 이를 Gradio Space로 게시해야 한다는 단 하나의 규칙 때문이었습니다. 저는 실제 사용자가 사용할 수 있는 무언가를 만들어야 하는 'Backyard AI' 트랙을 선택했습니다. 최근 제 주변 사람 중 한 명이 심장 질환을 앓게 되었고, 의사로부터 혈압과 심박수를 모니터링하라는 권고를 받았습니다. 저는 결국 우리가 심장 전문의(Cardiologist)를 찾아가야 할 수도 있다는 것을 알았고, 만약을 대비해 그들이 전체적인 상황을 파악할 수 있기를 원했습니다.

주요 사용 사례(Main use case)는 다음 의사에게 깨끗한 시작점을 제공하는 것이었습니다. 대기실에서 지난 6개월간의 측정값을 기억에 의존해 재구성하려 애쓰는 대신, 첫 진료 시 전달할 수 있는 임상 요약(Clinical summary)을 제공하는 것입니다. 또한, 측정값이 무언가를 놓치고 있을 경우를 대비해, 휴대폰을 사용하여 심장 박동을 포착하고 서맥(Brachachardia), 빈맥(Tachachardia), 심방세동(Afib), 심실 조기 수축(PVC)과 같은 상태를 대략적으로 감지하고 싶었으며, 이에 대해서는 나중에 설명하겠습니다.

내가 만든 것
의사에게 전달할 임상 요약 생성 앱인 Heartline을 구축했습니다. 이 앱은 두 가지 입력을 받습니다. 혈압계(BP cuff) 측정값이 있다면 이를 입력받고(제가 이 앱을 만든 대상은 혈압계를 가지고 있습니다), 휴대폰을 통한 심장 소리 오디오 녹음본을 입력받습니다. 앱은 오디오를 스펙트로그램 (spectrogram)으로 변환하여 4가지 방식의 분류(서맥 (bradycardia), 빈맥 (tachycardia), 심방세동 (Afib), 심실 조기 수축 (PVC))를 수행합니다.

모든 사람이 집에 혈압계를 가지고 있지는 않다는 점을 고려했습니다. 사실 그 점이 프로젝트의 범위를 더 넓히게 만들었습니다. 휴대폰만 있는 경우라면, 오디오가 모든 부담을 짊어져야 합니다. 즉, 서맥, 빈맥, 심방세동, 심실 조기 수축 등 모든 것을 처리해야 합니다. 따라서 앱은 두 가지 방식으로 작동합니다. 혈압계가 있다면 측정값을 기록하여 모델이 더 많은 데이터를 활용할 수 있게 하고, 혈압계가 없다면 오디오만으로도 유의미한 결과를 얻을 수 있습니다. 임상 요약은 실제로 사용 가능한 데이터가 무엇인지에 따라 반영됩니다.

학습 데이터는 합성 데이터 (synthetic data)였습니다. 모든 건강 관련 법규를 고려했을 때, 누군가의 실제 건강 정보를 모델에 입력할 수는 없었기 때문입니다. 저는 AHA 가이드라인을 바탕으로 현실적인 혈압 기록 시나리오를 생성하였고, 오디오 분류기는 일반적인 PhysioNet 심장음 녹음 데이터를 사용하여 학습시켰습니다. 여기에 iPhone 마이크 노이즈를 섞어 4가지 클래스 각각의 신호를 추가했습니다. 왜냐하면 제가 이 앱을 만든 대상에게 실제로 작동하려면, 병원이 아닌 주방에서 가슴에 휴대폰을 대고 사용하는 상황에서도 작동해야 했기 때문입니다. 모델은 4가지 클래스 분류에서 0.95라는 인상적인 AUROC를 달성할 수 있었습니다.

언어 모델은 1B 파라미터 규모의 파인튜닝 (finetuned)된 OpenBMB MiniCPM을 사용했습니다. 이 모델의 유일한 임무는 혈압 기록과 오디오 분류기 출력값을 받아, 심장 전문의가 진료 시작 시점에 실제로 읽고 싶어 할 만한 내용을 작성하는 것이었습니다. 생성된 데이터는 다시 한번 합성 데이터였으며, teacher model인 deepseek:v4-pro를 사용하여 SOAP 노트의 객관적 (objective) 섹션을 바탕으로 구성되었습니다. 이를 통해 의사에게 임상적 근거를 갖춘 객관적인 미니 요약처럼 들리도록 만들었습니다.

제4장: 완전한 프라이버시를 보장하는 HIPAA 준수 — 나의 배포 이야기.

이것은 wllama와 WebGPU를 통해 실행되며, spectrogram (스펙트로그램) 모델은 ONNX를 통해 구동됩니다.

제가 배운 주요 사항은 양질의 데이터 구성에 기반한 파인튜닝 (Finetuning) 방법, spectrogram (스펙트로그램) 및 오디오 분석, 그리고 완전히 로컬(Local) 모델이 필요하다는 점이었습니다.

여기 Space 링크가 있습니다: https://huggingface.co/spaces/build-small-hackathon

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0