ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Nvidia 추천시스템 Meetup 후기
    👀 etc... 2021. 8. 25. 17:45

     

    NVIDA AI DEVELOPER MEETUP

    추천 시스템과 멀린(Merlin)2021.08.27 10:00 ~ 12:00

     

    Summary

    • NVIDA AI 기반 추천 시스템 프레임워크 멀린(Merlin)
      • 오픈 소스로 제공, 쉬운 API, GPU 가속 시스템 적용 가능, 기업용 딥러닝 추천 시스템 프레임워크

     

    Agenda

    1. Recommendation System
      • NLP → Business Insight
      • 분야
        • 검색, 광고, 쇼핑, 음악 스트리밍, 영화 추천, 콘텐츠, 이커머스, 소셜미디어, 광고 등..
        • 자연어 처리 툴과 함께 블로그 글, 리뷰 등을 통해 사용자의 성향을 이해
        • 아주 많은 추천 시스템 서비스 중에 유독 추천이 잘 된다고 느끼는 서비스의 특징은?
      • 기본 기술
        • Content-based Filtering
          • 사용자 ↔ 시스템의 Interaction 기반 (물건 구매, 시청 등)
          • 비슷한 Item 추천
          • 장점 : Item Similarity, 확장성이 높고, 유저의 성향 파악이 잘 되며 설명이 가능하다, 아이템의 Domain Knowledge가 많이 필요
          • 단점 : 다양성이 떨어지며 뻔한 추천
        • Collaborative Filtering
          • Uses Similarites between users as well as items
          • Based on the similar users' ratings
          • Discovering new interests
          • 도메인 지식이 필요 X
          • Cold-Start Problem
        • Embeddings
          • 비슷한 Item이 비슷한 Vector를 가지도록 Mapping
          • 수천, 수만 Item의 Embedding Table을 잘 구성하는 것은 어려운 일
        • 비전 VS 자연어처리 VS 추천시스템
          • RecSys는 유저 또는 아이템의 Context를 임베딩 테이블로 잘 나타내는 것이 매우 중요
          • 모델 사이즈 또한 임베딩이 차지하는 부분이 많다
          • RecSys Are Memory Intensive
            • 비전, NLP에 비해 사이즈는 매우 작다
            • 때문에 CPU로 학습하는 경우가 많다
    1. 멀린 소개
    • Merlin Framework
      • HugeCTR : 큰 임베딩 테이블을 효과적으로 사용할 수 있또록 제공하는 학습 도구
      • Triton : 추천 시스템 프로덕션 파이프라인 솔루션 제공
    • Merlin Accelerates Stage in Recosys Pipeline
      • 데이터로더 파이토치, 텐서플로우에 바로 사용이 가능
      • GPU 가속화
      • ETL을 통해 피처 엔지니어링 바로 가능
      • NGC에서 컨테이너 형태로 제공
      • Train & Inference 전체 파이프라인에 걸쳐 GPU Merlin을 사용할 경우 성능(속도) 최대 X24배(4개의 노드 + 스파크 옵티마이저+멀린 사용했을 경우와 단일 CPU 사용했을 경우 비교시)
    • Merlin의 의의
      • 추천 시스템의 경우 유저의 변화하는 취향을 즉각 반응해야 하므로 업데이트가 자주 있음
      • by Uber 과거 모델 트레이닝 1시간 → NVTabular 5분
      • GPU 가속화를 통해 추천 시스템의 업데이트 및 배포 파이프라인 주기가 짧아질 수 있다.
      • Transformer 등의 NLP 모델 사용 가능

     

    • What if my model dosen't fit on the GPU
      • 추천 시스템의 임베딩 테이블이 gpu 메모리보다 클 경우
      • POWER LAW DISTRIBUTION
        • 추천 시스템의 데이터의 특징은 power law distribution을 띈다.
          • 소수의 인기 있는 아이템이 높은 데이터 포인트를 차지한다.
          → 테이블이 커도 Caching을 잘 이용하면 된다

     

    • NVTabular : RecSys ETL on GPU
      • 피처엔지니어링, 프리프로세싱, 스케일링
      • 최신 버전은 CPU에서도 사용이 가능
      • 다른 피처엔지니어링 라이브러리(pandas, spark...) 등과 다르게 추천 시스템에 특화되어 있다.
        • ETL General Framework에 비해 Table 데이터를 처리할 수 있는 것이 비교적 간단
      • 데이터 사이언스에서 75% 이상을 ETL에 쓴다. 이 과정을 GPU 가속화를 통해 줄일 수 있다.
      • NVTabular로 전처리된 데이터를 다른 플랫폼에서 사용이 용이(파이토치, 텐서)
      • 멀티 Node, GPU
        • Dask 사용 : 스케일링 도와줌
        • Dask-cuDF : Dask + cuDF

        • 데이터 로딩 부분 : Asysnc하게 효율적으로 로드가능, 텐서나 파이토치 데이터로더를 NVTabular로 교체 가능, 데이터 파이프라인에 성능향상에 도움, 기존 코드에 필요한 부분만 갈아끼울 수 있음
    • HugeCTR
      • 추천시스템에 특화된 Training 시스템, GPU 가속화
      • 추천 시스템을 고도화 하다보면 임베딩 테이블이 커질 수 밖에 없는데, 멀티 노드를 통해 속도 개선
      • 그렇다고 노드를 증설할 필요는 없고, 필요 자원 안에서 필요한 만큼의 노드를 사용할 수 있는 기능도 제공
      • 케라스와 비슷한 라이브러리를 제공하기 때문에 사용이 쉬움
    • HugeCTR Optimization
      • DLRM
      • DLRM Scale-out
        • 노드 사이에서 임베딩 교환 병목을 일으킴
        • 위에서 언급한 power law distribution한 특성을 이용해
      • Embedding Table의 분배
        • Distributional Embedding : 여러 GPU에 Embedding Table을 작게 쪼개는 방식
        • Localized Embedding : 카테고리별로 분배
      • 멀티 GPU 환경을 간단한 코드로 조정이 가능
      • 최적화 :
        • GPU 끼리 Message 수 최소, 무슨 스위치? 이용
        • Dense/Numerical Feature와 Categorical Features는 Dependency가 없는 점을 이용해

     

    • Optimized CUDA Graph

     

     


    Question

    • RecSys와 Vision, NLP의 전처리와 임베딩 차이점→ 데이터 포맷 자체가 Table이며 Discrete and Sparse Value를 가지고 있기 때문이기도함
    • RecSys의 Embedding weight 설정→ embedding table의 weight값들은 training 과정에서 업데이트됨 embedding weight 설정은 프레임워크보단, 애플리케이션에 따라 도메인에 따라 Test해서 업데이트가 필요
    • RecSys의 Similarity 지표(Metrics)→ 어떤 모델을 사용하냐에 따라 따라 optimization 과정이 다르다. 여러 아이템 중 선택하는 경우 주로 softmax 사용. loss function 같은 경우 DLRM 경우 cross-entropy, loss function을 사용하며 코사인및 유클리디안 유사도 같은 경우 추천 시스템 내에서 사용되는 경우가 있다. 또 후보군 중 선택해야하는 candidate generation 경우 코사인 유사도 혹은 L2 Norm 사용
    • RecSys VS Vison, NLP의 모델링과 다른 이유→ 데이터셋이 보통 테이블 형태입니다. 행 하나는 user-item interaction을 나타내고 각 열은 label(클릭 혹은 시청 여부)과 user 및 item 관련 features로 구성이 되는데요. 이 feature들 중에는 categorical feature가 많습니다. 그리고 이런 spare한 categorical feature들을 dense한 embedding vector들로 표현하고, 그들 간의 상호작용을 파악하는 것이 추천 알고리즘의 핵심이 되는 것이죠.
    • Merlin이 효율적인 이유는 임베딩 캐싱이 효율적이기 때문인지, 비교적 작은 데이터셋에서는 이점이 적은지→ 대용량 embedding table을 multi-GPU/node에서 효율적으로 구현한 것이 주요 강점 중 하나입니다. 데이터셋이 작으면 training 과정에서 만들어지는 embedding table 자체의 크기가 줄어들기 때문에 많은 수의 GPU가 필요하지 않을 수는 있습니다. 다만 embedding table lookup에서 compute throughput과 memory bandwidth는 여전히 중요한 요소이고, 저희 멀린에서 이것을 염두해두고 최적화를 했구요. 데이터 로딩 병목도 해결을 했기 떄문에 기 때문에 적은 수에서의 GPU에서도 만족스러운 성능 향상을 얻을 수 있으리라 생각합니다.
    • NLP, Vision에 비해 RecSys는 SOTA 모델이 확고하지 않는데 그부분에 대해 생각하시는지회사마다 필요나 도메인에 따라 모델이 모두 다르고 필요에 의해 변형해서 사용하며,
    • 아주 간단하게 구성도 가능하다.
    • RecSys 모델이 구현되어 있다고 하는데, 어떻게 사용할 수 있는지레이어별로 General 하게 구현해 놓아 필요에 의해 사용
    • GPU를 지원하지 않는 General Library (ex. Scikitlearn) 을 GPU로 사용할 수 잇는지
      • 레피지쿠엠엘? nvidia에서 gpu 지원라이브러리 만듬 사이킷런과 비슷함

     

     

     

    후기

    • 멀린 프레임워크에 대한 관심보다는, 밋업 타이틀에서 '추천 시스템의 모든 것'이라는 때문에 듣게 되었다. 하지만 주로 멀린의 효율성과 장점 위주의 밋업이었다.
    • 하지만 멀린 프레임워크가 등장한 배경을 보며 추천 시스템의 특징 가령, 데이터 로더의 중요성, 임베딩 테이블을 생성하는데 문제점과 임베딩이 중요한 이유, 추천시스템이 다른 NLP, Vision과 다른점 등을 알 수 있었다.
    • Recommedation System을 구축할 때, SOTA 모델에 욕심을 내기 보다는 가장 기본적인 CF 알고리즘을 멀린 등과 같은 RecSys Framework를 써서 간단하게 구현해보면 어떨까 하는 생각을 함

     

     

    참고레포

     

     

     

     


     

    댓글

Designed by Tistory.