학생 개발자가 DistilBERT, FastAPI, Docker를 활용하여 구축한 실전 독성 분류 API 개발기

🤖 AI 추천

이 글은 AI/ML 모델을 실제 서비스로 배포하고 싶은 학생 개발자, 사이드 프로젝트를 통해 프로덕션 레벨의 API를 구축하려는 개발자, 그리고 경량화된 트랜스포머 모델을 활용한 서비스 개발에 관심 있는 모든 개발자에게 매우 유익합니다. 특히, 제한된 리소스(싱글 PC, 학생 예산)로 실질적인 AI 서비스를 구현하는 과정에서 발생하는 문제 해결 방법과 얻을 수 있는 인사이트가 풍부합니다.

🔖 주요 키워드

학생 개발자가 DistilBERT, FastAPI, Docker를 활용하여 구축한 실전 독성 분류 API 개발기

핵심 기술

학생 개발자가 제한된 예산과 단일 PC 환경에서 DistilBERT, FastAPI, Docker를 활용하여 라이브 및 수익화된 독성 분류 API를 성공적으로 구축하고 배포한 실전 경험을 공유합니다. 이는 엔드투엔드 머신러닝 제품 개발의 현실적인 과정을 보여줍니다.

기술적 세부사항

  • 목표: 단순 "독성/비독성"을 넘어선 미묘한 감성 분류, 16GB VRAM 환경에서의 경량화, 간편한 API 통합, 실제 배포 및 사용 가능성 확보.
  • 시스템 아키텍처: 사용자 요청 -> RapidAPI -> Hugging Face Spaces (Docker/FastAPI) -> DistilBERT 모델 -> JSON 응답의 간결하고 효과적인 파이프라인.
  • 모델: Jigsaw Toxic Comment Classification 데이터셋을 사용하여 멀티레이블 분류를 위해 미세 조정된 DistilBERT 모델 사용.
  • 데이터 불균형 해결: "threat"와 같이 희소한 라벨을 위해 샘플 레벨 가중치 부여 기법을 적용하여 WeightedRandomSampler를 활용한 데이터 로딩.
  • 학습 최적화: Intel Extension for PyTorch (IPEX)를 사용하여 Intel Arc A770 GPU (XPU 백엔드)에서 학습 성능 최적화.
    • 학습 시간: 200 스텝당 약 67초
    • 처리량: 초당 약 356 샘플
    • 메모리 사용량: 16GB VRAM 내에서 안정적으로 작동.
  • API 구현: FastAPI를 사용하여 Pydantic 스키마로 요청 및 응답 유효성 검사.
  • 배포: Docker 컨테이너를 사용하여 Hugging Face Spaces에 배포, RapidAPI를 통해 외부 접근 가능.
  • 성능: 학습 6000 스텝 기준, F1 Macro 0.8757, F1 Weighted 0.9232 달성.

개발 임팩트

본 프로젝트는 학생 개발자가 이론 학습을 넘어 실제 프로덕션 환경에서 AI 서비스를 성공적으로 구축하고 배포할 수 있음을 입증합니다. 제한된 자원으로도 최신 기술 스택을 활용하여 실질적인 가치를 창출하는 방법을 보여주며, 다른 개발자들에게 유사한 프로젝트를 위한 실질적인 가이드라인과 영감을 제공합니다.

커뮤니티 반응

글에는 개발 커뮤니티의 반응에 대한 직접적인 언급은 없으나, 프로젝트의 성격상 실제 서비스 구축 및 배포에 대한 개발자들의 높은 관심과 참여를 유도할 것으로 기대됩니다.

📚 관련 자료