본문 바로가기

전체 글

Triton Python Backend 사용하기 Triton은 Python 백엔드를 제공하여 Python 코드로 작성된 모델 로직을 실행할 수 있도록 한다. 이는 전처리/후처리 작업이나 Scikit-Learn 모델을 서빙하는데 유용하다. Python 백엔드로 모델 서빙을 하기 위해서는 환경 세팅과 모델 코드 작성에 있어서 신경쓸 점들이 좀 많다. Python 모델로 구성된 model repository 구조를 다시 한번 복습해보자. / / config.pbtxt 1/ model.py 2/ model.py 3/ model.py ... / config.pbtxt 1/ model.py ... ... 마찬가지로 모델 configuration을 담은 config.pbtxt가 필요하고 모델 추론 Python 코드인 model.py가 추가로 요구된다. config.. 더보기
NVIDIA Triton 한 눈에 알아보기 NVIDIA Triton 서버는 오픈소스 소프트웨어로 제공되는 머신러닝 모델 inference 서버다. 학습된 모델 파일을 model repository에 저장하면 개발자가 별도의 코드를 작성할 필요 없이 해당 모델을 추론하는 API를 만들 수 있다. Triton 백엔드란 모델을 실행하는 C 구현체를 일컫는 말로 TensorFlow, PyTorch 등 주요 머신러닝 프레임워크의 wrapper가 될 수도 있고 커스텀 C/C++ 코드가 될 수도 있다. TensorRT, Tensorflow, PyTorch, ONNX Runtime, Python 등의 백엔드가 디폴트로 제공된다. Triton의 아키텍처를 한 번 살펴보자. Triton은 model repository라는 저장소에서 서빙할 모델 파일들을 불러온다... 더보기
AWS Serverless 2편 1편에서 생성한 Lambda의 스펙을 다시 한번 살펴보고 이번에는 구체적으로 해석해보자. ApiFunction: Type: AWS::Serverless::Function Properties: FunctionName: Fn::Sub: ${StageName}-mlops-api-function Handler: lambda_invoke.lambda_handler Runtime: python3.7 CodeUri: s3://your-bucket/serverless/code.zip Environment: Variables: LOG_LEVEL: Ref: LogLevel STAGE_NAME: Ref: StageName 애플리케이션의 기능을 구현한 코드는 "your-bucket"이라는 이름의 s3 버킷에 "serverle.. 더보기
AWS Serverless 1편 1. Serverless Architecture 서버리스 아키텍처는 개발자가 서버를 관리할 필요 없이 애플리케이션을 구축하고 실행하는 방식이다. "Serverless"라고 해서 서버가 없는 것이 아니다. 애플리케이션은 여전히 서버에서 실행되지만 모든 서버 관리는 AWS가 해준다. 개발자는 애플리케이션의 핵심 기능을 위한 코드 작성에만 집중하게 되고 프로비저닝, 확장 및 유지 등 서버 리소스 관리에는 신경 쓸 필요가 없다. 따라서 서버리스 아키텍처를 사용하면 개발자는 시간과 에너지를 절약하면서 서비스 안정성을 확보할 수 있다. 참고 링크 : https://aws.amazon.com/ko/serverless/ 서버리스 애플리케이션은 기본적으로 AWS Lambda에서 시작된다. 앞으로 두 편에 걸쳐 AWS L.. 더보기
Knowledge Graph Knowledge graph는 추천시스템에서 추천 대상 아이템들에 대한 정보를 추출하는데 유용한 툴이다. 최근에는 유저-아이템 간의 상호작용 데이터가 부족한 상황에서 collaborative filtering 기반 추천시스템을 보완하는데 많이 활용되고 있다. Knowledge graph는 추천을 설명 가능하게(explainable) 해준다는 점에서도 주목을 받고 있다. 그래프 상에서 유저가 이전에 좋아한 아이템과 여러 특성을 공유한다는 근거를 들어 새로운 아이템을 유저에게 추천해줄 수 있다. 본 포스트에서는 knowledge graph란 구체적으로 어떤 형태의 그래프인지, 그리고 딥러닝 기반 추천시스템에서 knowledge graph를 어떻게 활용할 수 있는지에 대하여 다룰 것이다. A Survey on.. 더보기
추천시스템의 분류 추천시스템은 크게 collaborative filtering(CF)과 content-based filtering(CB)로 구분할 수 있다. 각각의 장단점이 있기에 요즘은 이 둘을 결합한 hybrid 방식이 많이 채택된다. Collaborative Filtering Idea 과거 아이템 선택 이력이 비슷한 유저들끼리는 취향이 비슷할 것이다. 아이템 A, B, ..., G를 좋아하는 유저들은 아이템 X도 좋아하더라. 그러면 어떤 유저가 아이템 A, B, ..., G를 좋아한다면 해당 유저의 아이템 X에 대한 피드백이 없더라도 이 유저도 아이템 X를 좋아할 것이라고 추측할 수 있다. 과거 아이템 선택이 비슷한 유저들끼리 그룹으로 나눈다고 해보자. 어떤 그룹 내의 유저가 특정 아이템을 접한 적이 없더라도 그 그.. 더보기
Continual Learning in Recommender Systems 이번 포스트에서는 추천시스템에서의 continual learning을 다룰 겸 ADER: Adaptively Distilled Exemplar Replay Towards Continual Learning for Session-based Recommendation이라는 논문을 소개하겠다. 1. Continual Learning 추천시스템은 한 번의 모델 학습으로 끝나는 것이 아니라 반드시 새로 유입된 데이터로 모델을 지속적으로 업데이트해야한다. 그 이유는 추천시스템을 이용하는 유저와 추천 대상인 아이템은 계속 변하고, 또 유저 취향과 환경은 계속 변하기 마련이기 때문이다. 논문에 추천시스템의 continual learning을 잘 표현하는 그림이 있다. $t$번째 모델 업데이트에서 기존 추천시스템의 모델 .. 더보기
랭킹 최적화 문제 유저가 선택할 아이템을 예측하여 노출시키는 추천시스템이 있는 반면 여러 아이템을 유저의 관심도에 따라 랭킹, 즉 순위를 매겨서 노출시키는 추천시스템이 있다. 전자의 경우 웹 사이트의 특정 영역에 뜨는 광고를 생각하면 되고 후자의 경우 넷플릭스나 유튜브의 동영상 추천을 생각하면 될 것 같다. 전자의 경우 regression이나 classification 문제로 비교적 쉽게 풀리지만 후자의 경우 명확히 regression 혹은 classification 문제로 정의하기 어렵다. 추천 풀에 있는 각 아이템마다 유저의 관심도 점수가 있다고 생각해보자. 당연히 유저가 관심가질만한 아이템을 먼저 보여주는 것이 유리하기 때문에 점수가 큰 아이템부터 순서대로 보여주는 것이 맞을 것이다. $n$개의 아이템이 있을 때, .. 더보기