← 모든 글

Procurement NLP

공고명 NLP API · Macro-F1 0.9639 · 세부분야 F1 0.90 · CPU 약 50ms

Built with RoBERTa-large · LoRA · SBERT · UMAP · HDBSCAN · ONNX Runtime INT8 · FastAPI

RoBERTa LoRA 입찰가능성 teacher에서 ontology discovery, Max-Sim 약라벨, multiclass student와 INT8 ONNX CPU serving으로 이어지는 약지도학습 NLP 파이프라인
도메인 표현, ontology, weak supervision과 배포를 연결한 전체 경로

WHY

실시간으로 들어오는 공고를 담당 부서에 곧바로 연결하려면 공고명만으로 입찰 가능 여부와 세부 분야를 판단해야 했습니다. 하지만 하천·소방·정보통신 같은 세부분야 라벨은 거의 없었고 운영 환경에는 추론용 GPU도 없었습니다. 모든 공고를 수작업으로 라벨링하지 않고 도메인 분류체계를 만들며, 두 가지 판단을 CPU에서 빠르게 제공하는 pipeline이 필요했습니다.

입찰가능성 Macro-F1 0.9639

Accuracy 96.4%

세부분야 F1 0.90

Weakly supervised multiclass model

CPU 배포 약 50ms

Static INT8 ONNX · 약 330MB

HOW

부족한 라벨에서 CPU 서빙 가능한 분류체계까지

Teacher의 도메인 표현을 분류에만 쓰지 않고 ontology discovery와 업무 카테고리 supervision의 출발점으로 사용했습니다.

  1. 01 입찰가능성 teacher

    KLUE RoBERTa-large를 LoRA, focal loss, R-Drop과 FGM으로 fine-tuning합니다.

  2. 02 Ontology discovery

    1024차원 CLS 표현을 UMAP·HDBSCAN으로 묶고 사람이 cluster를 검토합니다.

  3. 03 Weak labels

    Hard-rule override와 SBERT 0.9·domain RoBERTa 0.1 Max-Sim confidence를 결합합니다.

  4. 04 Multiclass student

    동적으로 만든 label set에서 class-weighted LoRA model을 학습합니다.

  5. 05 INT8 batch serving

    Adapter를 merge하고 static ONNX quantization 후 두 모델을 FastAPI에서 병렬 실행합니다.

RESULT

입찰가능성 평가

접근Macro-F1Accuracy
LLM few-shot0.35154.0%
Fine-tuned RoBERTa + LoRA0.963996.4%
RAFT0.35053.8%
Three-agent path0.963996.4%

모든 행은 같은 500건 binary evaluation set을 사용했습니다.

500건 입찰가능성 평가에서 fine-tuned RoBERTa classifier가 Macro-F1 0.9639와 Accuracy 96.4%를 기록한 비교 막대그래프
500건 입찰가능성 평가 · Macro-F1과 Accuracy

기여

  • 업무 카테고리 supervision을 위한 representation-to-ontology와 Max-Sim weak-label path를 설계했습니다.
  • Binary·multiclass LoRA classifier를 학습하고 static INT8 ONNX로 변환해 FastAPI batch endpoint에 병렬 추론을 연결했습니다.

관련 자료

Source code 전처리, 학습, ontology discovery, weak labeling, quantization과 serving