ray

3 개의 포스트

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 모델 실험의 진입 장벽을 낮추고 대규모 서비스에 최적화된 모델을 더 빠르게 배포할 수 있는 기반을 마련했습니다. 이러한 엔지니어링 접근 방식은 인프라의 복잡성에 구애받지 않고 최신 모델링 기법을 신속하게 도입하려는 기업들에게 유용한 사례가 됩니다.

pinterest

PinLanding: 멀티모달 (새 탭에서 열림)

Pinterest의 'PinLanding'은 수십억 개의 제품 데이터를 멀티모달 AI를 통해 정교한 쇼핑 컬렉션으로 자동 변환하는 프로덕션 파이프라인입니다. 기존의 수동 큐레이션이나 단순 검색 기록 기반 방식에서 벗어나, 제품의 이미지와 텍스트를 직접 분석하여 사용자의 복잡하고 긴 꼬리형(Long-tail) 검색 의도에 맞는 컬렉션을 생성합니다. 이 시스템은 비전-언어 모델(VLM)을 통한 속성 추출과 CLIP 스타일의 효율적인 임베딩 모델을 결합하여 대규모 데이터셋에서도 정밀도와 확장성을 동시에 확보했습니다. **사용자 쇼핑 의도와 데이터 신호의 특성화** * 사용자의 검색 기록, 자동 완성 상호작용, 필터 사용 패턴을 분석하여 쇼핑 의도의 분포를 파악합니다. * '검은색 칵테일 드레스'와 같은 정형화된 주요 쿼리(Head)뿐만 아니라, '이탈리아 여름 휴가 때 입을 옷'과 같은 서술형 및 대화형 쿼리에 대응하는 것을 목표로 합니다. * 색상, 상황, 스타일, 핏 등 20개 카테고리에 걸친 속성 차원을 정의하여, 수요는 높지만 기존 검색 결과가 부족한 영역을 식별합니다. **VLM과 LLM-as-Judge를 활용한 쇼핑 토픽 정제** * 제품의 이미지와 메타데이터를 비전-언어 모델(VLM)에 입력하여 정규화된 키-값 쌍 형태의 속성을 생성합니다. * 초기 VLM 출력의 너무 구체적이거나 중복된 속성(예: 'boho'와 'bohemian')을 해결하기 위해 빈도 기반 필터링과 임베딩 기반 클러스터링을 수행합니다. * 최종적으로 'LLM-as-judge' 단계를 거쳐 추출된 속성들이 실제 쇼핑 의도와 일치하는지, 의미적으로 일관성이 있는지 평가하여 고품질의 쇼핑 토픽 사전을 구축합니다. **CLIP 스타일 모델을 통한 대규모 속성 할당** * 모든 제품에 VLM을 직접 적용하는 것은 비용이 과다하므로, 이미지-텍스트를 정렬하는 CLIP 스타일의 듀얼 인코더 모델을 별도로 학습시킵니다. * 제품 인코더와 속성 구절 인코더를 통해 각각의 임베딩을 생성하고, 두 벡터 간의 유사도가 임계치를 넘을 때 속성을 할당합니다. * 이 방식은 VLM 대비 연산 비용을 획기적으로 낮추면서도, 제품별 속성 밀도를 높여 더욱 일관된 제품-속성 그래프를 형성합니다. **Ray 및 Spark 기반의 효율적인 배치 추론 및 피드 구축** * 수백만 개의 핀(Pin)과 토픽을 처리하기 위해 Ray 프레임워크를 사용하여 GPU와 CPU 리소스를 독립적으로 확장하며 스트리밍 방식으로 추론을 수행합니다. * CLIP 기반 분류기는 8개의 NVIDIA A100 GPU에서 약 12시간 만에 학습 및 추론을 완료하며, 회당 비용을 약 500달러 수준으로 절감했습니다. * 최종 피드 구성은 Apache Spark를 활용하여 제품과 쇼핑 토픽 간의 속성 유사도를 계산하고, 가중치 기반 스코어링을 통해 관련성 높은 제품들을 컬렉션으로 묶어냅니다. PinLanding 시스템은 AI가 단순한 키워드 매칭을 넘어 제품의 시각적, 맥락적 의미를 깊이 있게 이해할 수 있음을 보여줍니다. 대규모 이커머스 환경에서 사용자에게 개인화되고 탐색 가능한 쇼핑 경험을 제공하려는 기업은 VLM을 통한 '지식 추출'과 CLIP 스타일 모델을 통한 '효율적 확산' 전략을 참고할 가치가 있습니다.

discord

단일 노드에서 멀티 GPU (새 탭에서 열림)

Discord는 ML 모델과 데이터 규모가 커지면서 단일 머신으로는 학습·추론을 감당하기 어려워지자 Ray 기반의 분산 컴퓨팅 플랫폼을 구축했다. 핵심은 Ray 자체보다 CLI, Dagster·KubeRay 오케스트레이션, X-Ray 관측성 도구를 결합해 분산 ML의 사용성을 높인 데 있다. 그 결과 엔지니어들은 복잡한 Kubernetes·GPU 설정 없이 멀티 GPU 작업을 실행할 수 있었고, Ads Ranking 모델은 매일 재학습되는 프로덕션 딥러닝 파이프라인으로 발전했다. ## 단일 노드 ML의 확장 한계 - 모델이 단순 분류기에서 대규모 모델로 발전하고 데이터셋도 커지면서 단일 머신에 담기 어려운 작업이 늘어났다. - 일부 학습 작업은 여러 GPU를 필요로 했고, 기존 인프라보다 빠른 연산 능력과 분산 학습이 요구됐다. - Discord는 오픈소스 분산 컴퓨팅 프레임워크인 **Ray**를 기반으로 선택했지만, 프레임워크만 도입해서는 충분하지 않다고 판단했다. - 실제 목표는 분산 ML을 소수의 인프라 전문가가 아니라 일반 ML 엔지니어도 쉽게 사용할 수 있게 만드는 것이었다. ## 수작업 Ray 클러스터의 문제 - 초기에는 엔지니어들이 오픈소스 문서를 참고해 각자 Ray 클러스터를 직접 구성했다. - 팀마다 클러스터 설정과 리소스 관리 방식이 달라 표준화가 어려웠다. - 작업 스케줄링, 모니터링, 클러스터 운영을 위한 공통 기능도 부족했다. - 결국 각 팀이 동일한 인프라 문제를 반복해서 해결하고 있었고, Discord 내부에 Ray 플랫폼이 필요해졌다. ## YAML 대신 단일 CLI 명령 - Discord는 GPU 종류, 워커 수, 메모리 등 필요한 리소스를 인자로 받는 **매개변수화된 단일 템플릿**을 만들었다. - CLI가 실행 시점에 전체 Kubernetes 클러스터 사양과 보안 설정을 생성하도록 했다. - 엔지니어는 복잡한 YAML 파일을 직접 작성하지 않고 자신의 요구에 맞는 멀티 GPU 클러스터를 한 번의 명령으로 생성할 수 있다. - CLI는 클러스터 생성부터 작업 실행, 삭제까지 전체 생명주기를 관리한다. - 이를 통해 다음 효과를 얻었다. - 팀 간 클러스터 설정의 일관성 확보 - 하드웨어 역량에 맞는 리소스 요청 - YAML 디버깅 부담 감소 - 엔지니어별 맞춤형 클러스터 제공 ## Dagster·KubeRay·Ray 기반 오케스트레이션 Discord는 일회성 실험을 정기적이고 재현 가능한 작업으로 전환하기 위해 세 가지 도구를 결합했다. - **Dagster** - 워크플로, 설정, 의존성을 정의한다. - 모델명, 데이터셋 기간, GPU 풀 등의 구조화된 설정을 사용한다. - 스키마 검증과 기본값을 제공해 필수 파라미터 누락으로 인한 실패를 줄인다. - UI 또는 예약 실행을 통해 학습 파이프라인을 시작할 수 있다. - **KubeRay** - Kubernetes에서 Ray 클러스터를 동적으로 생성한다. - 적절한 네임스페이스, 서비스 계정, GPU 노드 풀을 연결한다. - CLI와 동일한 내부 설정 로직을 사용한다. - **Ray** - 생성된 클러스터에서 학습, 평가, 배치 추론 작업을 여러 GPU에 분산 실행한다. 작업 흐름은 다음과 같다. 1. 엔지니어가 Dagster에서 파이프라인을 실행하거나 예약한다. 2. Dagster가 Ray Job Operator에 작업 사양을 전달한다. 3. KubeRay가 적절한 Kubernetes 환경에 Ray 클러스터를 생성한다. 4. Ray가 여러 GPU에 학습 작업을 분배한다. 5. 로그와 메트릭이 Dagster 및 모니터링 시스템으로 전달된다. 이 구조는 버전 관리된 설정을 통한 **예측 가능성**, 파이프라인과 인프라 리소스를 함께 정의하는 **재현성**, SSH 없이 로그와 클러스터 상태를 확인하는 **가시성**을 제공한다. 대표적으로 GPU 사용량이 큰 광고 관련성 모델은 엔지니어가 클러스터 설정을 직접 수정하지 않아도 매일 학습할 수 있게 됐다. ## X-Ray를 통한 통합 관측성 - Ray 사용량이 늘면서 여러 클러스터의 상태를 한곳에서 확인할 필요가 생겼다. - Discord는 **X-Ray**라는 중앙 웹 UI를 구축했다. - X-Ray에서 다음 정보를 실시간으로 확인할 수 있다. - 실행 중인 Ray 클러스터 - 클러스터 소유자 - 머신 및 GPU 종류 - 클러스터 상태 - 관련 대시보드 - 엔지니어는 X-Ray에서 실험용 인터랙티브 노트북도 시작할 수 있어 운영과 실험 환경을 한 인터페이스에서 관리할 수 있다. ## Ads Ranking의 프로덕션 성과 - Ads Ranking은 사용자가 어떤 Quest 광고에 관심을 가질지 결정하는 모델이다. - 도입 전에는 주로 XGBoost를 사용했으며, 기존 인프라에는 다음 기능이 없었다. - 데이터 및 모델 샤딩 - 멀티 GPU 학습 - 필요한 주기의 대규모 재학습 - Ray 도입 후 Ads Ranking은 샤딩된 신경망을 멀티 GPU 클러스터에서 학습하게 됐다. - 성과는 다음과 같다. - Quest 참여 사용자 수 2배 증가 - 광고 트래픽 적용 범위가 약 40%에서 거의 100%로 확대 - 매일 재학습하고 새 버전을 지속적으로 배포하는 프로덕션 딥러닝 파이프라인 구축 - 비즈니스 지표 약 200% 개선 ## 실용적인 시사점 분산 ML 도입에서는 Ray 같은 실행 엔진만 선택하는 것보다, 표준화된 CLI, 선언적 오케스트레이션, 자동화된 클러스터 프로비저닝, 통합 관측성을 함께 제공하는 것이 중요하다. 특히 엔지니어가 인프라 세부사항 대신 모델과 데이터 문제에 집중하도록 만드는 개발자 경험이 분산 시스템의 실제 채택과 운영 성과를 좌우한다.