비디오 비가시 워터마킹을 GPU 없이 프로덕션에 올린 방법
Meta가 ML 기반 비디오 워터마킹을 GPU에서 CPU로 옮겨, E2E 레이턴시는 GPU 대비 5% 이내로 유지하면서 운영 효율을 높인 사례.
요약
Meta가 ML 기반 비디오 워터마킹을 GPU에서 CPU로 옮겨, E2E 레이턴시는 GPU 대비 5% 이내로 유지하면서 운영 효율을 높임. 비트레이트 증가(BD-Rate 20%)는 프레임 선별 기법으로 억제, 자동 화질 지표가 못 잡는 아티팩트는 크라우드소싱 수동 검수로 보정해 4지표(레이턴시·탐지 정확도·화질·BD-Rate)를 동시 충족.
내용
비가시 워터마킹은 픽셀 값·오디오 파형·LLM 토큰을 사람 눈·귀에 안 잡히게 미세 조정해 출처 식별 신호를 심는 기법. 메타데이터 태그와 달리 트랜스코딩·편집을 거쳐도 살아남는다. AI 생성 영상 판별, 최초 업로더 식별, 촬영 장비 추적 등 콘텐츠 출처(content provenance) 용도로 사용.
VideoSeal 같은 ML 기반 최신 기법은 소셜 미디어 환경의 변형에도 견디지만, 프레임 단위로 추론을 돌려야 해 연산량이 큼. 메타가 보유한 GPU는 LLM·디퓨전 모델 학습·추론에 특화돼 영상 트랜스코딩(인코딩·디코딩) 지원이 부분적이거나 없음. FFmpeg + 커스텀 필터로 구성된 기존 영상 처리 파이프라인의 유연성을 포기할 수 없다는 제약 위에서 이 워터마킹을 어떻게 스케일에 올릴지가 시작점.
해결 / 접근
GPU 시도에서 드러난 병목
- 데이터 전송: 고해상도 프레임을 CPU↔GPU 사이로 왕복시키며 스레드·메모리 최적화가 막힘
- 추론 레이턴시: 같은 호스트의 여러 GPU에서 병렬 처리 시 추론 시간이 급증
- 모델 로딩: 모델 자체는 작지만 FFmpeg 구조상 warm-up된 사전 로딩 모델을 못 씀 → 로딩이 전체 처리 시간의 큰 비중
GPU에 영상 인코더가 없어 결국 프레임이 CPU로 되돌아와 SW 인코딩 → 저복잡도 ML 파이프라인에서 SW 인코더가 큰 병목.
CPU 전환 + 스레딩 튜닝
- 초기 CPU 벤치마크는 GPU 대비 E2E 2배 이상 느림
- 인코더·디코더·PyTorch 스레딩 파라미터, 필터의 샘플링 파라미터 튜닝
- 단일 프로세스 기준 GPU 대비 E2E 5% 이내, FFmpeg 프로세스 병렬 실행 시 레이턴시 증가 없음
- 분산 부하 테스트(요청률 점증)로 동일 장비 풀에서 GPU 대비 운영 효율이 더 좋음을 확인
BD-Rate 절감 — 프레임 선별 워터마킹
- 초기 구현은 BD-Rate 20% 회귀 (워터마크 영상 시청에 더 많은 대역폭 필요)
- 모든 프레임 대신 선별된 프레임에만 워터마크를 임베딩 → BD-Rate 영향 대폭 감소 + 화질 향상, 비트 탐지 정확도는 거의 유지
화질 회귀 보정 — 수동 검수 루프
- VMAF·SSIM 점수가 높아도 눈에 보이는 아티팩트가 발생
- 커스텀 후처리 + 크라우드소싱 수동 검수로 임베딩 설정 반복 조정
- 사람 시각 기준으로 튜닝하면서 비트 정확도를 같이 모니터링
결과 / 참고
- 4지표(레이턴시·탐지 정확도·화질·BD-Rate) 모두 프로덕션 기준 충족, 스케일러블 워터마킹 시스템 배포 완료
- E2E 레이턴시 GPU 대비 5% 이내, 병렬 실행 시 추가 증가 없음
- BD-Rate 회귀: 20% → 프레임 선별 기법으로 대폭 축소
- VMAF·SSIM은 비가시 워터마킹의 아티팩트 검출에 부적합 — 프로그램 가능한 화질 지표 연구 필요로 명시
- 추후 방향: 모델 파라미터·전처리·후처리·인코더 설정 튜닝으로 정밀도와 카피 디텍션 리콜 추가 개선, "필터 블록"으로 다양한 영상 파이프라인에 끼워 쓰는 형태 지향
- 출처: Meta Engineering 블로그, 관련 모델 VideoSeal