LINE의 이미지 모더레이션에 멀티모달 LLM을 적용한 과정
LY가 일 수백만~수천만 장 유입되는 이미지 모더레이션 API를 ONNX FP16 → 전통 ML+멀티모달 LLM 하이브리드 → vLLM 옵션 튜닝 순서로 최적화, 처리량 4.3배·정책 7개 클래스 정밀도 +1~+16%p
요약
LY Corporation이 사내 모니터링 플랫폼에 일 수백만수천만 장이 유입되는 이미지 콘텐츠 모더레이션 API를 구축. 같은 LLM에 모두 보내면 비용·지연이 안 맞아, 가벼운 분류기를 1차로 두고 모호한 케이스에만 멀티모달 LLM을 부르는 하이브리드 + vLLM 옵션 튜닝 + 단일 비전 모델을 OCR·CLIP·LLM 복합 판별 구조로 분리하는 길을 택함. 처리량은 PyTorch FP32 baseline 대비 ONNX FP16에서 4.3배(217 img/sec), 복합 판별 구조에서 7개 클래스 정밀도 +1+16%p.
내용
이미지 모더레이션은 텍스트와 달리 명시적 문법 구조가 없고, 같은 객체도 맥락·문화권·이미지 내 텍스트 결합에 따라 의미가 달라짐. 밈·합성·일부 가림 등 우회 변형이 생성형 AI로 더 정교해지는 추세까지 겹쳐, 정확도뿐 아니라 지연·비용까지 동시에 충족해야 하는 영역.
LY 팀이 직면한 우선순위 세 가지:
- 정확도 + 처리 속도 동시 확보
- 객체 인식 한 번으로 끝나지 않는 행위·의도까지 판별하는 모델 구조
- 국가·서비스별로 빠르게 달라지는 정책 요구에 모델 재학습 없이 대응하는 구조
전통 단일 비전 엔드 투 엔드 모델은 명확한 시각 패턴(흡연 장면 등)에는 효과적이었지만, '담배 판매 행위 탐지'처럼 가격 표기·판매 문구·연락처·구매 유도가 결합된 정책 위반은 못 풀었던 게 출발점.
해결 / 접근
1. 정확도 + 처리 속도 동시 확보 — 3단 최적화
1단계: 전통 ML 모델 추론 효율화
PyTorch 기반 사전학습 모델 → ONNX 변환 → FP16 적용.
| 모델 형식 | 정밀도 | 지연(ms) | 처리량(img/sec) | 개선 |
|---|---|---|---|---|
| PyTorch | FP32 | 19.8 | 51 | baseline |
| ONNX | FP32 | 8.9 | 112 | 2.2배 |
| ONNX | FP16 | 4.6 | 217 | 4.3배 |
2단계: 전통 ML + 멀티모달 LLM 하이브리드
전통 분류 모델이 1차 필터로 명확한 케이스를 빠르게 처리, 모호한 케이스만 멀티모달 LLM으로 라우팅. 실제 데이터 분포 분석 결과 90% 이상이 1차에서 충분히 판단 가능. 멀티모달 LLM은 전통 모델 대비 처리량이 100배 이상 낮아, 전부 LLM에 보내면 GPU 비용이 폭증.
3단계: vLLM 프레임워크 튜닝
이미지 모더레이션 워크로드의 특성 — 이미지는 매번 새로 들어오지만 텍스트 프롬프트는 고정 패턴 반복, 입력이 출력보다 길고 길이 예측 가능. 적용한 옵션:
enable_prefix_caching: 동일 프리픽스 KV 캐시 재사용 → prefill 연산 절감max_model_len: 입력+출력 상한을 실제 필요 범위로 제한 → KV 캐시 과할당 방지max_num_seqs: 동시 처리 요청 상한 — 처리량과 지연 안정성 트레이드오프 조정max_num_batched_tokens: 한 단계에서 처리하는 토큰 예산. prefill 중심 워크로드에 맞춰 크게 설정
2. 행위·의도 판별 — 복합 판별 구조 (Hybrid Decision Model)
기존 단일 비전 모델 한계:
- 국가별 규제·서비스별 기준·예외를 한 출력 공간에 욱여넣어 클래스 구조 비대화 → 모델이 콘텐츠 속성이 아니라 정책 조합 자체를 학습하는 형태로 변질
- 이미지 내 텍스트 단서를 체계적으로 통합 못 함
전환:
- OCR API로 이미지 내 텍스트 추출 → 정책 위반 행위·의도 판별 단서로 사용
- 시각 정보 + 텍스트 단서를 멀티모달 LLM에 함께 입력해 맥락·의도까지 추론
결과 — 7개 클래스 정밀도 변화 (baseline 대비):
| 클래스 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 개선 | +16%p | +11%p | +7%p | +1%p | +4%p | +7%p | +6%p |
3. 정책 변화 대응 — 결과/정책 분리 + 재학습 최소화
판단 결과 ↔ 정책 로직 분리
모델은 콘텐츠 속성값만 추정 (sexy_score, violence_score, tobacco_presence_score, commercial_intent_score, id_card_presence_score 등). 정책 로직이 그 점수를 받아 차단·경고·연령 제한을 결정.
같은 tobacco_presence_score=0.8 콘텐츠에 대해:
- A 국가 청소년 서비스 → 즉시 차단
- B 국가 성인 커뮤니티 → 허용
- C 서비스 → 광고 목적일 때만 제한
→ 정책 변화는 정책 로직만 손대고 모델 재학습 없이 흡수.
재학습 비용 최소화
- 강력한 사전학습 비전 인코더를 공통 백본으로 두고 그 위에 선형 분류기를 얹는 구조 → 클래스 변경 시 백본 재학습 없이 분류기만 재학습, 신규 클래스 추가 시 기존 피처 공간 유지하며 헤드만 확장
- CLIP 기반 모델로 클래스 설명 문장만 프롬프트로 넣어 제로샷으로 신규 개념 정의 → 데이터 수집·재학습 없이 클래스 추가/변경
- 멀티모달 LLM은 프롬프트·판단 기준 조정만으로 출력 갱신, 기존 분류기 결과를 보완·재판단
결과 / 참고
- 처리량: ONNX FP16에서 217 img/sec (PyTorch FP32 51 img/sec 대비 4.3배)
- 정밀도: 복합 판별 구조 적용으로 7개 클래스에서 +1%p ~ +16%p
- 데이터 분포: 90% 이상이 1차 필터(전통 ML)에서 처리 가능, 멀티모달 LLM 호출은 모호 케이스로 한정
- 탐지 범위: 성인·폭력·불쾌 콘텐츠 + 신분증 등 PII 포함 이미지·SNS 캡처 등 정책 관리 대상 폭넓게 커버
- 향후 방향: 사용자 업로드 모더레이션을 넘어 LLM 입출력 가드레일 영역까지 확장
- 출처: LY Corporation Tech Blog