Netflix/대규모 언어 모델

3 개의 포스트

netflix5분 읽기큐레이션 요약

GenRec: 넷플릭스에서 LLM 네이티브 추천을 향하여

Netflix의 GenRec은 사용자 이력과 콘텐츠 메타데이터를 자연어로 표현하고, Netflix에 맞게 후처리 학습한 LLM을 추천 랭커로 활용하는 시스템이다. 기존의 대규모 수작업 피처와 특화 아키텍처 의존도를 줄이면서도, 카탈로그 인식 점수 헤드와 보상 신호를 통해 개인화·장기 사용자 가치·비즈니스 제약을 반영한다. 대규모 A/B 테스트에서 기존 랭커보다 단기 및 장기 지표를 유의미하게 개선했으며, 더 적은 라벨 데이터와 입력 신호만으로도 경쟁력 있는 성능을 보였다. ## 기존 추천 시스템의 복잡성과 LLM의 가능성 - Netflix의 기존 모델은 사용자·아이템·상호작용에 대한 수천 개의 수작업 피처를 사용한다. - 시퀀스 모델링, 피처 상호작용, 멀티태스크 학습 등 다양한 특화 구조가 콘텐츠 유형과 제품 화면별로 구축되어 있다. - 새로운 콘텐츠 유형이나 추천 화면을 추가하려면 피처 설계, 모델 구조, 인프라, 실험을 함께 변경해야 한다. - LLM은 사용자 이력과 아이템 정보를 텍스트로 통합하고, 자연어 기반의 의미 관계와 추천 조건을 표현할 수 있다. - 하지만 일반 LLM은 인기 콘텐츠 편향, 카탈로그에 없는 아이템 생성, 비즈니스 제약 무시, 부족한 개인화 등의 문제가 있다. ## GenRec의 추천 문제 정의 - 사용자 \(u\), 컨텍스트 \(\tau\), 시간 \(t\), 상호작용 이력 \(H\)를 입력으로 받아 Netflix 전체 카탈로그 \(C\)의 순위 \(\pi\)를 생성한다. - 컨텍스트에는 기기, 화면, 지역, 시간 등이 포함된다. - 후보군이 주어지면 Top-K 순위를 만들고, 후보군이 없으면 전체 카탈로그를 대상으로 순위를 계산한다. - 단순 클릭이나 재생 수가 아니라 만족도와 유지율을 대변하는 장기적 회원 효용을 최적화한다. ## 2단계 학습 구조 ### Netflix 맞춤형 기반 LLM - 오픈소스 LLM을 Netflix의 독점 데이터로 적응시킨다. - Netflix 콘텐츠 이해, 회원 행동과 선호 패턴, 일반적인 언어 이해 능력을 학습한다. - 여러 애플리케이션이 공유하는 Netflix 인식 기반 모델로 사용된다. - 콘텐츠 변화에 맞춰 자주 갱신하기보다는 비교적 드물게 업데이트된다. ### GenRec 후처리 학습 - 기반 LLM을 추천 순위화와 제어에 특화된 모델로 전환한다. - 랭킹 데이터와 복수의 보상 신호를 사용한다. - 새로운 콘텐츠와 변화하는 취향을 반영하기 위해 더 자주 갱신한다. - Netflix의 LLM 서빙 비용과 지연시간을 고려해 최적화한다. ## 상호작용 로그를 대화 데이터로 변환 - Netflix의 조회, 재생 시간, 좋아요·싫어요, 찜하기, 중단 등 방대한 이벤트를 추천 대화 형식으로 변환한다. - 사용자 메시지에는 다음 정보가 포함된다. - 현재 화면과 기기 같은 컨텍스트 - 사용자 프로필과 과거 이력 - 아이템 메타데이터 - “다음에 시청하거나 좋아요를 누를 콘텐츠를 추천하라”와 같은 과제 - 어시스턴트 메시지에는 실제 회원 행동이 기록된다. - 어떤 콘텐츠를 재생했는지 - 얼마나 오래 시청했는지 - 어떤 피드백을 남겼는지 - 학습 시에는 언어 모델링과 추천 랭킹을 함께 지원하지만, 추론 시에는 답변 텍스트를 생성하지 않는다. - 실제 서비스에서는 verbalized context를 입력하고, 별도의 카탈로그 인식 점수 헤드로 콘텐츠를 정렬한다. ## 피처 엔지니어링에서 컨텍스트 엔지니어링으로 - 기존 추천 시스템이 밀집 벡터와 수작업 피처를 중심으로 한다면, GenRec은 이력과 상황을 자연어로 변환해 LLM의 의미 공간에 입력한다. - 모델이 아이템 간 관계, 반복 시청, 변화하는 관심사 같은 고차원 패턴을 직접 학습하도록 한다. - 모든 상호작용을 그대로 입력하면 토큰 한도와 비용 문제가 발생하므로, 컨텍스트를 선별하고 압축한다. - 긴 재생이나 긍정 피드백처럼 신호가 강한 이벤트는 자세히 유지 - 짧은 재생이나 빠른 탐색처럼 신호가 약한 이벤트는 제거 - 폭주 시청처럼 반복적인 행동은 요약 - 신작이나 콜드스타트 아이템은 필요한 경우 더 자세히 설명 - 제한된 토큰 예산 안에서 최근성과 신호 강도가 높은 이력을 우선한다. - 프롬프트의 공통 접두사를 늘려 prefix caching을 활용하고, 서빙 비용을 낮춘다. - 결과적으로 모델 개발의 초점이 개별 피처 제작에서 정보 밀도 높은 입력 문맥 설계로 이동한다. ## 랭킹·언어·보상 신호를 결합한 학습 ### 카탈로그 인식 랭킹 목표 - 충분히 긴 재생이나 강한 명시적 피드백처럼 가치가 높은 참여를 긍정 샘플로 사용한다. - 임계값과 노이즈 제거 로직으로 부정확한 행동 신호를 정제한다. - 전체 카탈로그 또는 후보군에 대한 cross-entropy 손실을 사용해 긍정 아이템의 점수를 높인다. - 자유로운 텍스트 생성이 아니라 실제 Netflix 카탈로그 안에서 점수를 계산하므로, 존재하지 않는 콘텐츠를 추천하는 문제를 줄인다. ### 언어 모델링 목표 - 입력과 출력의 텍스트에 대해 언어 모델링 목표를 유지한다. - 자연어로 표현된 사용자 이력과 콘텐츠 메타데이터를 이해하는 능력을 보존한다. - 향후 추천 이유나 설명 생성과 같은 텍스트 기반 기능으로 확장할 가능성도 유지한다. ### 보상 기반 정렬 - 단기 클릭이나 재생만 최적화하지 않고 장기적인 회원 만족도를 반영한다. - 영화, 시리즈, 게임, 라이브, 팟캐스트 등 콘텐츠 유형 간 균형 같은 비즈니스 요구사항을 고려한다. - 여러 보상 신호를 보상 가중 손실에 반영해 랭킹 결과가 Netflix의 장기 목표와 맞도록 조정한다. ## 서빙 효율성과 성능 - GenRec은 Netflix의 LLM 서빙 스택에서 prefill-only 방식으로 실행된다. - 추론 시 토큰을 생성하지 않고 입력을 처리해 아이템별 점수를 계산하므로 생성형 LLM보다 비용 효율적이다. - 기존의 성숙한 프로덕션 랭커와 비교한 대규모 A/B 테스트에서 단기 및 장기 온라인 지표를 모두 통계적으로 개선했다. - Phase 2 학습에 필요한 라벨 데이터와 입력 신호도 기존 시스템의 일부만 사용했다. 실무적으로는 LLM을 추천 시스템에 도입할 때 모든 로그를 무작정 텍스트화하기보다, 카탈로그 제약을 보장하는 점수 헤드, 장기 보상 설계, 토큰 예산 관리, 캐싱 전략을 함께 설계하는 것이 중요하다. GenRec의 사례는 추천 모델의 성능뿐 아니라 피처 유지보수 비용과 새로운 추천 시나리오의 확장성까지 고려할 때 LLM 기반 구조가 유효할 수 있음을 보여준다.

원문 읽기(새 탭에서 열림)
netflix원문

넷플릭스의 LL (새 탭에서 열림)

넷플릭스는 일반적인 기초 모델을 자사 서비스의 카탈로그와 사용자 맥락에 맞게 최적화하기 위해, 인프라의 복잡성을 추상화한 '포스트 트레이닝(Post-Training) 프레임워크'를 구축했습니다. 이 프레임워크는 대규모 분산 GPU 클러스터 환경에서 데이터 파이프라인과 모델 훈련 워크플로우를 효율적으로 조율하여 연구자들이 하드웨어가 아닌 모델 혁신에만 집중할 수 있게 돕습니다. 결과적으로 엔지니어링 병목 현상을 해결함으로써 개인화 추천 및 검색 경험을 고도화하는 데 핵심적인 역할을 수행합니다. ### 데이터 처리 및 모델 설정의 기술적 난제 - **정교한 손실 마스킹(Loss Masking):** 지시어 이행(Instruction following)이나 연쇄 사고(CoT) 품질을 높이기 위해, 프롬프트가 아닌 응답(Assistant) 토큰에만 손실을 적용하여 모델이 부적절한 텍스트를 학습하지 않도록 제어합니다. - **시퀀스 패킹(Sequence Packing):** 가변적인 문장 길이로 인한 연산 낭비를 줄이기 위해 여러 샘플을 고정 길이 시퀀스로 묶고, 샘플 간 간섭을 방지하는 '도큐먼트 마스크'를 적용하여 GPU 효율을 극대화합니다. - **분산 로딩 및 메모리 최적화:** 단일 GPU 메모리를 초과하는 모델을 위해 FSDP(Fully Sharded Data Parallel)나 TP(Tensor Parallel) 샤딩을 사용하며, 대규모 어휘집 처리 시 발생하는 메모리 스파이크를 방지하기 위해 로짓 청킹(Logit chunking) 기법을 도입했습니다. ### 넷플릭스 포스트 트레이닝 프레임워크의 구조 - **기술 스택의 통합:** 넷플릭스 내부 ML 플랫폼인 'Mako' 위에서 PyTorch, Ray, vLLM 등 오픈소스 구성 요소를 결합하여 단일 노드부터 수백 개의 GPU까지 확장 가능한 환경을 제공합니다. - **표준화된 레시피:** SFT(지도 미세 조정), DPO(직접 선호도 최적화), RL(강화 학습), 지식 증류 등 주요 워크플로우를 설정 파일만으로 실행할 수 있는 재사용 가능한 레시피 형태로 지원합니다. - **유연한 아키텍처 확장성:** 단순 챗 모델을 넘어 도메인 특화 특수 토큰 사용이나 비표준 아키텍처 실험이 가능하도록 유연성과 확장성을 최우선으로 설계되었습니다. ### 시스템 고도화를 위한 4대 핵심 요소 - **데이터(Data):** 로컬 저장 공간을 초과하는 대규모 데이터를 클라우드에서 실시간 스트리밍하며, CPU 기반 패킹 작업을 GPU 연산과 비동기적으로 병렬 처리하여 유휴 시간을 제거합니다. - **모델(Model):** Qwen, Gemma 등 최신 아키텍처와 MoE(Mixture-of-Experts) 모델을 지원하며, LoRA 통합 및 고수준 샤딩 API를 통해 복잡한 분산 코딩 없이도 대형 모델을 다룰 수 있게 합니다. - **연산(Compute):** MFU(Model FLOPS Utilization) 모니터링을 통해 연산 효율을 실시간 추적하며, 장애 발생 시 훈련 상태를 정확히 복구할 수 있는 정교한 체크포인팅 시스템을 갖추었습니다. - **워크플로우(Workflow):** 단순 학습 루프를 넘어 온폴리시(On-policy) 강화 학습처럼 생성(Rollout)과 업데이트가 반복되는 복잡한 단계를 SPMD(Single Program, Multiple Data) 스타일로 관리합니다. 복잡한 분산 시스템의 세부 사항을 프레임워크 수준에서 표준화함으로써, 넷플릭스는 고도화된 AI 모델 실험의 진입 장벽을 낮추고 대규모 서비스에 최적화된 모델을 더 빠르게 배포할 수 있는 기반을 마련했습니다. 이러한 엔지니어링 접근 방식은 인프라의 복잡성에 구애받지 않고 최신 모델링 기법을 신속하게 도입하려는 기업들에게 유용한 사례가 됩니다.

netflix원문

넷플릭스 그래프 (새 탭에서 열림)

넷플릭스는 기업 내 복잡한 데이터 생태계를 효율적으로 탐색하기 위해 기존의 구조화된 쿼리 언어(DSL) 방식에서 생성형 AI 기반의 자연어 검색으로 진화하고 있습니다. 대규모 언어 모델(LLM)을 활용하여 사용자의 모호한 질문을 정확한 필터 문구로 변환함으로써 기술적 장벽을 낮추고 업무 효율성을 극대화하는 것이 이번 프로젝트의 핵심입니다. 이를 통해 사용자 의도를 정확히 반영하면서도 기존 시스템의 안정성을 유지하는 신뢰 중심의 검색 플랫폼을 구축하고자 합니다. ## 자연어 검색 도입 배경과 비즈니스 요구사항 * **기존 방식의 한계:** 사용자들은 수백 개의 필드가 포함된 복잡한 UI에서 필터를 수동으로 설정하거나 특정 DSL(Domain Specific Language)을 학습해야 하는 번거로움을 겪었습니다. * **사용자 경험 개선:** 기술적인 구조가 아닌 일상적인 언어(예: "90년대 미국 로봇 영화")로 데이터를 즉시 찾을 수 있게 하여 검색 과정의 마찰을 줄이고자 합니다. * **시스템 보완 전략:** 기존 애플리케이션을 완전히 대체하는 것이 아니라, 자연어를 DSL로 변환하는 기능을 추가하여 기존 검색 인프라에 RAG(검색 증강 생성) 기능을 보강하는 방향을 선택했습니다. ## Text-to-Query 변환의 세 가지 핵심 기준 * **구문적 정확성 (Syntactic):** 생성된 문장이 Graph Search Filter DSL의 문법 규칙을 완벽하게 따라야 하며, 파싱이 가능한 형태여야 합니다. * **의미적 정확성 (Semantic):** 인덱스에 실제로 존재하는 필드만 사용해야 하며, 데이터 타입에 맞는 비교 연산자를 사용하고 '통제된 어휘(Controlled Vocabulary)'의 허용 범위를 준수하여 환각(Hallucination) 현상을 방지해야 합니다. * **화용적 정확성 (Pragmatic):** 기술적으로 완벽한 쿼리일지라도, 그것이 사용자가 실제로 질문한 의도와 목적을 정확하게 담아내야 합니다. ## 컨텍스트 엔지니어링을 통한 성능 최적화 * **메타데이터 활용:** GraphQL 스키마에서 추출한 필드 설명, 타입 정보 등을 LLM의 컨텍스트로 제공하여 모델이 데이터 구조를 이해하도록 돕습니다. * **통제된 어휘(Controlled Vocabulary) 관리:** 국가명이나 장르와 같이 정해진 값의 목록이 있는 경우, 이를 메타데이터에 포함하여 LLM이 유효한 값 내에서만 쿼리를 생성하도록 유도합니다. * **확장성 문제 해결:** 수백 개의 필드와 수천 개의 유효값을 가진 대규모 인덱스의 경우, 모든 정보를 프롬프트에 넣으면 지연 시간이 늘어나고 정확도가 떨어지므로 필요한 정보만 선별하여 제공하는 정교한 컨텍스트 구성 전략을 사용합니다. 넷플릭스의 사례는 복잡한 기업용 데이터 검색 시스템에서 LLM을 직접적인 해답 제공자가 아닌, 검증된 기존 DSL을 생성하는 '번역기'로 활용함으로써 데이터의 정확성과 시스템의 신뢰성을 동시에 확보할 수 있음을 보여줍니다. 전문적인 데이터 탐색이 필요한 도메인일수록 이러한 단계적 AI 통합 접근 방식이 효과적입니다.