본문 바로가기

MLOps

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.. 더보기
Amazon SageMaker Amazon SageMaker는 머신러닝 모델을 구축, 훈련 및 배포할 수 있는 완전 관리형 서비스이다. 본 글은 4/21에 AWS에서 진행한 TdML Gameday 사전교육 내용을 바탕으로 작성한 것으로, 본격적으로 SageMaker를 사용하기에 앞서 정리해두면 좋은 내용이다. 나중에 조금이라도 덜 헤매기 위하여! 1. ML Workflow 단계별 필요한 SageMaker 서비스 머신러닝 모델을 상용화하기까지의 과정은 크게 4단계(Prepare(준비), Build(모델 개발), Train & Tune(훈련), Deploy & Manage(배포 & 관리))로 나눌 수 있다. 각 단계별로 SageMaker가 어떠한 서비스들을 지원해주는지 알아보자. 1-1. Prepare(준비) 머신러닝 모델을 개발하는데 .. 더보기
Multi-Armed Bandit with Seldon Core A/B Testing with Seldon Core에서 라우터는 두 모델에 보낼 트래픽을 나누는 역할을 하였다. 보통 A/B Testing의 궁극적 목표는 여러 모델 중에서 가장 좋은 모델을 찾는 것이다. 다행히도 라우터에 각 모델 inference에 대한 피드백을 받아서 모델 성능을 기록하고 라우팅에 반영하는 기능을 추가할 수 있다. 셀던 코어에서는 라우터에서 선택된 모델의 inference에 대한 피드백을 reward라는 숫자로 받을 수 있다. 추천시스템을 예로 들자면, 모델에게 추천받은 컨텐츠를 유저가 클릭하거나 구매했을 경우 1, 그렇지 않았을 경우 0의 reward를 줄 수 있고, 또는 유저가 부여한 평점을 reward로 줄 수도 있다. 우리의 문제에서는 reward가 무조건 1 또는 0의 값을.. 더보기
Ensemble with Seldon Core 머신러닝에서 앙상블(ensemble)은 여러 모델의 예측을 결합하여 최종 결과를 내는 기법을 의미한다. 예를 들면 분류(classification) 문제에서 가장 많은 모델이 선택한 클래스(class)를 최종 답으로 채택하거나 회귀(regression) 문제에서 여러 모델의 예측값을 가중치 평균내는 것이다. 그 외에도 여러 앙상블 기법들이 있다. 이번 포스트에서는 셀던 코어의 combiner라는 기능을 이용하여 앙상블 파이프라인을 쿠버네티스에 배포해보고자 한다. Ensemble Pipeline 설계 모델 A와 모델 B의 결과를 앙상블하는 파이프라인이다. 두 모델은 전처리된 데이터를 받은 다음 예측값을 combiner 컴포넌트에게 보낸다. Combiner는 두 모델의 예측값을 결합하여 최종 결과를 도출한다.. 더보기
셀던 코어와 텐서플로우 서빙 텐서플로우 서빙 공식 문서 : https://www.tensorflow.org/tfx/guide/serving?hl=ko 모델 적용하기 | TFX | TensorFlow 도움말 Kaggle에 TensorFlow과 그레이트 배리어 리프 (Great Barrier Reef)를 보호하기 도전에 참여 모델 적용하기 소개 TensorFlow Serving은 운영 환경을 위해 설계되었으며 머신러닝 모델을 고성능으로 적용 www.tensorflow.org A/B Testing with Seldon Core에서 inference 컴포넌트를 커스텀 컨테이너로 제작하였다. 구체적으로 모델 로드와 predict 함수를 파이썬 코드로 직접 구현하고 도커파일로 이미지를 만들었다. 이렇게 하면 말 그대로 커스텀이니까 자유도가 높.. 더보기