Transformers4rec는 순차적 및 세션 기반 권장 사항을위한 유연하고 효율적인 라이브러리이며 Pytorch와 함께 일할 수 있습니다.
이 라이브러리는 가장 인기있는 NLP 프레임 워크 중 하나 인 Hugging Face Transformers (HF)와 통합하여 자연 언어 처리 (NLP)와 추천 시스템 (RESY)의 다리 역할을합니다. Transformers4rec는 RESYS 연구원 및 업계 실무자가 최첨단 변압기 아키텍처를 제공합니다.
다음 그림은 추천 시스템에서 라이브러리 사용을 보여줍니다. 입력 데이터는 일반적으로 웹 세션에서 탐색되는 항목이나 카트에 넣은 항목과 같은 일련의 상호 작용입니다. 라이브러리는 상호 작용을 처리하고 모델링하여 다음 항목에 대한 더 나은 권장 사항을 출력 할 수 있도록 도와줍니다.

전통적인 권장 알고리즘은 일반적으로 사용자 행동을 모델링하려고 할 때 시간적 역학과 상호 작용 순서를 무시합니다. 일반적으로 다음 사용자 상호 작용은 사용자의 이전 선택 순서와 관련이 있습니다. 경우에 따라 반복적 인 구매 또는 송 플레이 일 수 있습니다. 시간이 지남에 따라 선호도가 변경 될 수 있기 때문에 사용자 관심사는 관심 드리프트로 고통받을 수 있습니다. 이러한 과제는 순차적 권장 작업에 의해 해결됩니다.
순차적 권장의 특별 사용 사례는 현재 세션 내에서 짧은 상호 작용에만 액세스 할 수있는 세션 기반 추천 작업입니다. 이는 쿠키 수집을 제한하는 GDPR 준수 또는 사용자가 사이트에 익숙하지 않기 때문에 사용자가 익명으로 탐색하도록 선택할 수있는 전자 상거래, 뉴스 및 미디어 포털과 같은 온라인 서비스에서 매우 일반적입니다. 이 작업은 사용자의 관심사가 사용자 컨텍스트 또는 의도에 따라 시간이 지남에 따라 많은 시나리오와 관련이 있습니다. 이 경우, 현재 세션의 상호 작용을 활용하는 것은 오래된 상호 작용보다 유망합니다.
순차적 및 세션 기반 권장 사항을 다루기 위해, 기계 학습 및 NLP 연구에 이전에 적용된 많은 서열 학습 알고리즘은 K-Narest 이웃, 자주 패턴 마이닝, 숨겨진 Markov 모델, 재발 성 신경망 및 자체 변환 메커니즘 및 변압기 아키텍처를 사용한 최신 신경 아키텍처를 기반으로 RECSY에 대해 탐구되었습니다. Transformers4Rec와 달리, 이러한 프레임 워크는 항목 ID 시퀀스 만 입력으로 만 허용하며 생산 사용을위한 모듈화 된 확장 가능한 구현을 제공하지 않습니다.
Transformers4rec은 다음과 같은 이점을 제공합니다.
유연성 : Transformers4Rec는 구성 가능하고 표준 Pytorch 모듈과 호환되는 모듈 식 빌딩 블록을 제공합니다. 이 빌딩 블록 디자인을 사용하면 여러 타워, 여러 헤드/작업 및 손실로 사용자 정의 아키텍처를 만들 수 있습니다.
HF 변압기에 대한 액세스 : 64 개 이상의 다른 변압기 아키텍처를 사용하여 Hugging Face Transformers 통합의 결과로 순차적 및 세션 기반 권장 작업을 평가할 수 있습니다.
다중 입력 기능 지원 : HF 변압기는 원래 NLP 용으로 설계 되었기 때문에 토큰 ID 시퀀스 만 입력으로 지원합니다. Transformers4rec를 사용하면 Recsys 데이터 세트에서 사용 가능한 풍부한 기능으로 인해 다른 유형의 순차적 표 데이터를 HF 변압기의 입력으로 사용할 수 있습니다. Transformers4Rec은 스키마를 사용하여 입력 기능을 구성하고 새로운 기능을 포함시키기 위해 코드 변경이 필요하지 않고 타겟을 기반으로 테이블, 프로젝션 레이어 및 출력 레이어와 같은 필요한 레이어를 자동으로 생성합니다. 구성 가능한 방식으로 상호 작용 및 시퀀스 수준 입력 기능을 정규화하고 결합 할 수 있습니다.
원활한 전처리 및 기능 엔지니어링 : Merlin Ecosystem의 일환으로 Transformers4rec는 NVTabular 및 Triton 추론 서버와 통합됩니다. 이러한 구성 요소를 사용하면 순차적 및 세션 기반 권장 사항을 위해 완전히 GPU 가속 파이프 라인을 구축 할 수 있습니다. NVTabular는 세션 기반 권장 사항에 대한 일반적인 전처리 작업을 가지고 있으며 데이터 세트 스키마를 내보내는 것입니다. 스키마는 INPUT 기능을 자동으로 구성 할 수 있도록 Transformers4Rec과 호환됩니다. 온라인 기능 전처리 및 모델 추론이 포함 된 단일 파이프 라인에서 Triton 추론 서버와 함께 훈련 된 모델을 내보낼 수 있습니다. 자세한 내용은 Nvidia Merlin의 엔드 투 엔드 파이프 라인을 참조하십시오.

Transformers4Rec은 최근 WSDM Webtour Workshop Challenge 2021 (Booking.com으로 구성)과 Sigir Ecommerce Workshop Data Challenge 2021 (Coveo가 조직)의 두 가지 세션 기반 추천 대회에서 우승했습니다. 이 라이브러리는 기준 알고리즘보다 세션 기반 권장 사항에 대한 정확도가 높고 정확도에 대한 광범위한 경험적 분석을 수행했습니다. 이러한 관찰은 우리의 ACM Recsys'21 논문에 발표됩니다.
Transformers4Rec으로 모델을 훈련시킵니다. 일반적으로 다음과 같은 높은 수준의 단계를 수행해야합니다.
스키마를 제공하고 입력 모듈을 구성하십시오.
세션 기반 권장 문제가 발생하면 일반적으로 컨텍스트 기능을 순차적 기능과 병합하기 때문에 TabulareSequenceFeatures 클래스를 사용하려고합니다.
예측 작업을 제공하십시오.
상자 밖에서 제공되는 작업은 API 문서에서 제공됩니다.
변압기 바디를 구성하고 이것을 모델로 변환하십시오.
다음 코드 샘플은 다음 항목 예측 작업을 위해 Pytorch로 XLNET 모델을 정의하고 훈련하는 방법을 보여줍니다.
from transformers4rec import torch as tr
from transformers4rec . torch . ranking_metric import NDCGAt , RecallAt
# Create a schema or read one from disk: tr.Schema().from_json(SCHEMA_PATH).
schema : tr . Schema = tr . data . tabular_sequence_testing_data . schema
max_sequence_length , d_model = 20 , 64
# Define the input module to process the tabular input features.
input_module = tr . TabularSequenceFeatures . from_schema (
schema ,
max_sequence_length = max_sequence_length ,
continuous_projection = d_model ,
aggregation = "concat" ,
masking = "causal" ,
)
# Define a transformer-config like the XLNet architecture.
transformer_config = tr . XLNetConfig . build (
d_model = d_model , n_head = 4 , n_layer = 2 , total_seq_length = max_sequence_length
)
# Define the model block including: inputs, masking, projection and transformer block.
body = tr . SequentialBlock (
input_module ,
tr . MLPBlock ([ d_model ]),
tr . TransformerBlock ( transformer_config , masking = input_module . masking )
)
# Define the evaluation top-N metrics and the cut-offs
metrics = [ NDCGAt ( top_ks = [ 20 , 40 ], labels_onehot = True ),
RecallAt ( top_ks = [ 20 , 40 ], labels_onehot = True )]
# Define a head with NextItemPredictionTask.
head = tr . Head (
body ,
tr . NextItemPredictionTask ( weight_tying = True , metrics = metrics ),
inputs = input_module ,
)
# Get the end-to-end Model class.
model = tr . Model ( head )이진 분류를 수행하기 위해 이전 코드를 수정할 수 있습니다. 입력 모듈의 마스킹은
causal대신None으로 설정할 수 있습니다. 헤드를 정의하면NextItemPredictionTask를BinaryClassificationTask인스턴스로 교체 할 수 있습니다. 클래스의 API 문서의 샘플 코드를 참조하십시오.
PIP, Conda 또는 Docker 컨테이너를 사용하여 Transformers4rec를 설치할 수 있습니다.
GPU Accelerated Merlin Dataloader를 사용하기 위해 기능을 사용하여 Transformers4rec를 설치할 수 있습니다. 더 나은 성능을 위해서는 데이터 로더를 사용한 설치가 적극 권장됩니다. 이러한 구성 요소는 pip install 명령의 선택적 인수로 설치할 수 있습니다.
PIP를 사용하여 Transformers4rec를 설치하려면 다음 명령을 실행하십시오.
pip install transformers4rec[nvtabular] -> pip 사용하여 Transformers4rec를 설치하면 Rapids CUDF를 자동으로 설치하지 않습니다. -> CUDF는 NVTabular 변환 및 Merlin Dataloader의 GPU Accelerated 버전에 필요합니다.
PIP를 사용하여 CUDF를 설치하는 지침은 다음과 같습니다. https://docs.rapids.ai/install#pip-install
pip install cudf-cu11 dask-cudf-cu11 --extra-index-url=https://pypi.nvidia.com Conda를 사용하여 Transformers4rec를 설치하려면 conda 또는 mamba 로 다음 명령을 실행하여 새로운 환경을 만듭니다.
mamba create -n transformers4rec-23.04 -c nvidia -c rapidsai -c pytorch -c conda-forge
transformers4rec=23.04 ` # NVIDIA Merlin `
nvtabular=23.04 ` # NVIDIA Merlin - Used in example notebooks `
python=3.10 ` # Compatible Python environment `
cudf=23.02 ` # RAPIDS cuDF - GPU accelerated DataFrame `
cudatoolkit=11.8 pytorch-cuda=11.8 ` # NVIDIA CUDA version ` Transformers4rec는 NVIDIA GPU Cloud (NGC) 카탈로그에서 제공되는 merlin-pytorch 컨테이너에 사전 설치되어 있습니다.
멀린 컨테이너 문서 페이지를 참조하십시오. Merlin 컨테이너 이름, 카탈로그의 컨테이너 이미지에 대한 URL 및 Key Merlin 구성 요소에 대한 정보는 참조하십시오.
NVIDIA MERLIN 페이지의 엔드 투 엔드 파이프 라인은 Transformers4REC 및 NVTabular와 같은 기타 Merlin 라이브러리를 사용하여 완전한 권장 시스템을 구축하는 방법을 보여줍니다.
추천 시스템을 구축하거나 Transformers4rec를 시스템에 통합하는 데 도움이되는 몇 가지 예제 노트가 있습니다.
Transformers4rec에 직접 기여하려면 Transformers4Rec에 기여하는 것을 참조하십시오. 우리는 특히 기능 엔지니어링 및 전처리 작업에 대한 기여 또는 기능 요청에 관심이 있습니다. Merlin Roadmap을 더욱 발전시키기 위해 https://developer.nvidia.com/merlin-devzone-survey로 이동하여 추천 시스템 파이프 라인에 관한 모든 세부 정보를 공유하는 것이 좋습니다.
Transformers4REC의 작동 방식에 대해 자세히 알고 싶으시면 Transformers4REC 문서를 참조하십시오. 또한 Transformers4rec 내에서 사용 가능한 모듈 및 클래스의 세부 사항을 간략하게 설명하는 API 문서가 있습니다.