재난 대응을 위한 머신러닝 활용: afetharita 프로젝트
2023년 2월 6일 남동부 터키를 강타한 지진 이후, 자원봉사자 그룹은 afetharita (재난 지도)라는 애플리케이션을 개발했습니다. 이 애플리케이션은 구조팀이 비구조화된 소셜 미디어 게시물을 실행 가능한 데이터로 변환하여 생존자를 찾는 데 도움을 주도록 설계되었습니다. 이 작업은 Hugging Face 생태계를 활용해 극한의 시간 제약 속에서 프로토타입을 만들고, 협업하며, 생명을 구하는 머신러닝 도구를 배포했습니다.
소셜 미디어에서 생존자 정보 추출
자원봉사자들은 스크린샷과 트윗을 이름, 전화번호, 주소 등 구조화된 데이터로 변환하는 파이프라인을 구축했으며, 이를 당국에 제공했습니다.
OCR 및 정보 추출
문자 메시지와 트윗의 스크린샷을 처리하기 위해 팀은 광학 문자 인식(OCR)을 위해 easyocr를, 사용자 인터페이스를 위해 Gradio를 사용한 애플리케이션을 구현했습니다. 추출된 텍스트는 미세 조정된 트랜스포머 기반 명명된 엔터티 인식(NER) 모델을 사용해 주요 개인 정보를 식별하도록 파싱되었습니다.
주소 추출 및 지오코딩
텍스트 기반 구조 요청을 위해 팀은 토큰 분류를 위한 기본 모델로 bert-base-turkish-cased를 사용한 주소 추출 모델을 개발했습니다. 워크플로는 다음과 같이 작동했습니다:
- Extraction: NER 모델이 원시 트윗에서 주소를 추출했습니다.
- Geocoding: 추출된 주소는 경도와 위도를 얻기 위해 지오코딩 API에 전송되었습니다.
- Visualization: 지리 위치 데이터가 프론트엔드 지도에 표시되어 구조팀을 안내했습니다.
DevOps 부담을 최소화하기 위해 팀은 모델 서빙에 Hugging Face Inference API를 사용했으며, 이를 통해 수동 Docker 이미지 생성 및 클라우드 인스턴스 배포가 필요 없게 되었습니다.
생존자 요구 의도 분류
특정 요구 사항(예: 쉼터, 음식, 물류 등)을 식별하기 위해 팀은 여러 접근 방식을 실험했습니다:
- Zero-Shot and Few-Shot Learning: 초기 테스트에서는
xlm-roberta-large-xnli와convbert-base-turkish-mc4-cased-allnli_tr와 같은 오픈소스 NLI 모델을 사용했습니다. NLI 모델은 후보 라벨 추론을 가능하게 하고 모델이 라벨을 '창조'하는 위험을 피할 수 있어 초기에는 생성 모델보다 선호되었습니다. - Fine-Tuning: 팀은 결국 BERT 모델을 미세 조정했으며,
bert-base-turkish-uncased와bert-base-turkish-128k-cased가bert-base-turkish-cased보다 성능이 우수함을 발견했습니다. - Optimization: 클래스 불균형으로 인해 팀은 거짓 음성을 제거하는 데 우선순위를 두고 재현율과 F1 점수에 집중했습니다. 또한 특정 메타데이터 태그(
deprem-clf-v1)를 사용해 모델을 벤치마크하고 라벨별 최적 임계값을 결정하기 위해 Hugging Face Space를 만들었습니다.
능동 학습 및 LLM
NER 모델을 정제하기 위해 팀은 Argilla와 Gradio를 사용해 사용자가 출력 결과를 올바름, 오류, 모호함으로 표시할 수 있는 크라우드소싱 라벨링 인터페이스를 만들었습니다. 또한 별도의 팀은 프롬프트 엔지니어링을 통해 생성 모델을 사용해 세부 요구 사항을 자유 텍스트로 추출했으며, LLM을 활용한 few-shot 프롬프트가 새로운 라벨링 데이터 없이도 급격한 데이터 드리프트에 적응하는 데 매우 효과적임을 확인했습니다.
손상 평가를 위한 원격 감지
전기와 안정적인 모바일 네트워크가 부족한 상황을 극복하기 위해 자원봉사자들은 위성 영상을 사용해 건물 및 인프라 손상을 평가했습니다.
위성 데이터 수집 및 처리
이미지는 Planet Labs, Maxar, 그리고 Copernicus Open Access Hub에서 수집되었습니다. 학습을 용이하게 하기 위해 1080x1080 위성 이미지를 640x640 조각으로 잘랐습니다.
모델 배포
팀은 건물 탐지와 의미론적 분할을 위해 여러 모델을 미세 조정했습니다:
- Object Detection: 건물 탐지를 위해 YOLOv5, YOLOv8, 그리고 EfficientNet을 사용했습니다.
- Semantic Segmentation: 건물의 의미론적 분할을 위해
SegFormer모델을 사용했습니다.
이 애플리케이션들은 Hugging Face Spaces로 배포되었습니다. Co-One과 같은 기업과 협업하여 no damage, destroyed, damaged, damaged facility, undamaged facility 라벨을 포함한 상세한 주석 작업을 진행했으며, 향후 전 세계 재난 대응을 위한 방대한 오픈소스 데이터셋을 공개하는 것을 목표로 했습니다.
MLOps 및 협업 인프라
배포 속도는 Hugging Face Hub와 그 통합 생태계 덕분에 가능했습니다:
- Collaboration: 조직 계정을 통해 자원봉사자들이 풀 리퀘스트로 협업할 수 있었습니다.
- CI/CD: CI 봇이 일시적인 환경을 제공해 Hugging Face Spaces에서 풀 리퀘스트 변경 사항을 미리 볼 수 있게 했습니다.
- Infrastructure: Hugging Face는 GPU 지원과 추가 Inference API 복제본을 제공해 높은 트래픽에서도 애플리케이션이 견고하게 유지되고 다운타임을 방지했습니다.