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

핵심 기술
학생 개발자가 제한된 예산과 단일 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 서비스를 성공적으로 구축하고 배포할 수 있음을 입증합니다. 제한된 자원으로도 최신 기술 스택을 활용하여 실질적인 가치를 창출하는 방법을 보여주며, 다른 개발자들에게 유사한 프로젝트를 위한 실질적인 가이드라인과 영감을 제공합니다.
커뮤니티 반응
글에는 개발 커뮤니티의 반응에 대한 직접적인 언급은 없으나, 프로젝트의 성격상 실제 서비스 구축 및 배포에 대한 개발자들의 높은 관심과 참여를 유도할 것으로 기대됩니다.
📚 관련 자료
distilbert-base-uncased-finetuned-sst-2-english
DistilBERT 모델을 활용한 자연어 처리 태스크의 예시를 제공하며, 이는 본문에서 사용된 DistilBERT 모델의 기반이 되는 아키텍처 및 활용법에 대한 이해를 도울 수 있습니다.
관련도: 90%
tiangolo/fastapi
FastAPI 프레임워크의 공식 GitHub 저장소로, 고성능 웹 API 구축에 필요한 모든 정보, 예제 코드, 문서 등을 제공합니다. 본문에서 언급된 FastAPI 기반 API 구현의 핵심 소스입니다.
관련도: 95%
docker-library/python
Python 애플리케이션을 Docker 컨테이너로 패키징하고 배포하는 데 필요한 공식 Docker 이미지를 제공합니다. 본문에서 사용된 Docker 기반 배포 방식에 대한 기술적인 이해를 도울 수 있습니다.
관련도: 85%