Work

LLM 파인튜닝으로 의료기기 등급 분류기 시도

An early experiment fine-tuning a local LLM for medical device risk classification

약 70% 정확도의 의료기기 등급 분류기. FDA 허가 등급을 예측하는 챗봇을 목표로 llama 계열 LLM을 한 학기 동안 단독으로 파인튜닝한 졸업 프로젝트. RAG가 자리 잡기 전, 한국어 자료가 거의 없던 시점.

RAG가 자리 잡기 전, Llama 파인튜닝으로 의료기기 등급 분류의 한계를 직접 확인

문제

융합의과학과 커리큘럼에 한 학기 동안 디지털헬스케어 프로젝트를 직접 세워 완성하고 발표하는 수업이 있었다. 팀 과제로 시작했지만 다른 주제들이 자리를 잡지 못해, 결국 내가 사이드 프로젝트로 따로 만지고 있던 LLM 실험을 본 수업의 주제로 끌어와 단독으로 진행했다. 모델 선정에서 데이터·학습·UI까지 한 사람이 처음부터 끝까지 끌고 가는 구조였다.

만들어보고 싶었던 것은, FDA 의료기기 허가 전에 위해도 등급을 미리 예측해 알려주는 챗봇이었다. 의료기기는 위해도에 따라 허가 등급이 달라지고, 그 등급이 다시 허가 소요 시간을 좌우한다 — 만든 사람이 사전에 위해도 카테고리를 가늠할 수 있으면 실무적 가치가 있겠다고 봤다.

제약

  • 시기는 2023년. ChatGPT가 막 등장한 직후였고, llama가 처음 공개된 무렵 — RAG와 같은 보조 방법론은 자리 잡기 전이었다
  • 한국어 자료는 거의 전무했다. fine-tuning이라는 용어는 있어도 실제로 어떻게 하는가에 대한 한국어 정보는 거의 없었다
  • 모델 선정, 데이터 수집, instruction 데이터셋 작성, GPU 서버 환경 세팅, 디렉토리에 파일 올리는 일까지 — 익숙한 게 거의 없는 상태에서 한 사람이 처음부터 끝까지

내가 처음 본 핵심

위해도 등급을 예측하는 일은 판단보다 허가 문서 텍스트에 깔린 패턴의 분류에 가깝다. 일관된 형식의 FDA 문서가 충분히 쌓여 있으면 — 즉 학습용 데이터셋으로 가공할 만한 원천이 있으면 — 당시 알려진 방법(instruction fine-tuning)으로 풀어볼 수 있는 형태의 문제였다.

내가 한 선택

  • 모델: 당시 막 공개된 llama, alpaca 계열을 후보로 두고 우바부가(oobabooga) 기반으로 로컬 환경부터 띄웠다
  • 데이터: FDA의 의료기기 허가 문서에서 등급과 본문을 함께 수집해 instruction 구조의 학습 데이터셋으로 정리했다
  • 인프라: 클라우드 GPU 서버를 대여해 파인튜닝을 돌렸다. 디렉토리 구조부터 파일 업로드, 학습 스크립트까지 처음부터 익혀가며
  • 정보 채널: 한국어로는 거의 검색되지 않아 Reddit과 GitHub 이슈를 직접 뒤졌다

결과

분류 정확도 약 70% 수준의 모델을 만들어 수업의 마지막 발표로 마무리했다. 그 뒤로 더 끌고 가지 않았다 — 당시 방법론으로 의료 영역에서 신뢰 가능한 분류기를 만드는 데 한계가 분명했다. instruction fine-tuning은 그럴듯한 대답에 강한 반면 정확한 카테고리 판단에 약했고, 사실 정확성이 중요한 의료 등급 판정엔 그대로 쓰기 어려웠다.

이 사례가 보여주는 것

이 프로젝트의 가치는 만들어낸 모델의 성능이 아니라, 해보지 않으면 알 수 없는 한계를 손으로 만져본 데 있다. instruction fine-tuning이 어디까지 작동하고 어디서 멈추는지, RAG 같은 보조 방법이 왜 필요해졌는지, 의료처럼 사실 정확성이 요구되는 도메인에서 LLM을 그대로 쓰는 일이 왜 어려운지 — 이 모든 것이 책으로 읽은 지식이 아니라 직접 부딪혀 얻은 감각이 됐다.

이 시기의 시행착오가 이후 병원에서 LLM 도입을 다룰 때 무엇이 가능하고 무엇이 아직 어려운가에 대한 균형 감각으로 남았다.