ML OPS 12

Amazon OpenSearch Service

LLM(Large Language Model)이 발전하면서 RAG(Retrieval Augmented Generation)이 등장하였고, RAG의 방식 중에 하나로 벡터 서치가 굉장히 많이 활용되고 있습니다. 클라우드 서비스들도 벡터 서치를 지원하는 제품을 제공하고 있습니다. AWS는 Amazon OpenSearch Service, Azure는 Congnitive Search, GCP는 Vertex AI라는 제품을 각각 보유하고 있습니다. 오늘은 클라우드 중에 점유율이 제일 높은 AWS의 제품을 한번 리뷰해보려고 합니다. AWS가 제공하는 OpenSearch는 오픈 소스로도 제공되고 있어서, 꼭 AWS에서 사용할 필요는 없습니다. 직접 구축해서 사용하고 싶으시다면 아래 링크로 들어가서 문서를 읽어보고 구..

[MLOps, LLMOps] In-flight batching

서빙에서 batch 최적화 기법으로 Adaptive batching을 소개한 적이 있습니다. https://seokhyun2.tistory.com/91 [MLOps] BentoML - Adaptive Batching 오늘은 Adaptive Batching에 대해서 알아보려고 합니다. 왜 필요한 지 먼저 알아볼건데, infernce의 경우 하나의 input을 inference 하는 것 보다, batch로 inference하면 훨씬 빠르고 효율적으로 추론을 할 수 있 seokhyun2.tistory.com Adaptive batching의 경우, 아래 이미지와 같이 batch 하나에 대해서 longest 기준에 맞춰 padding을 해서 inference를 하게 됩니다. Transformer의 encoder..

[MLOps, LLMOps] PagedAttention, vLLM 소개

chatGPT 이후로 LLM에 대한 연구가 많이 활성화되었고, 그에 따라 최근에는 LLM 서빙을 다루는 경우가 많아지고 있는 것 같습니다. vLLM은 LLM을 더 효율적으로 서빙하기 위한 PagedAttention이란 기술을 적용하였다고 하는데, 오늘은 이 부분들을 소개해보도록 하겠습니다. PagedAttention의 원리 vLLM을 개발한 팀은 아래의 논문을 통해 PagedAttention을 먼저 소개했고, 직접 개발하여 vLLM 라이브러리를 출시했습니다. - 논문 제목: Efficient Memory Management for Large Language Model Serving with PagedAttention - 링크: https://arxiv.org/pdf/2309.06180.pdf Key-V..

ML OPS 2023.12.09

[MLOps] BentoML - Adaptive Batching

오늘은 Adaptive Batching에 대해서 알아보려고 합니다. 왜 필요한 지 먼저 알아볼건데, infernce의 경우 하나의 input을 inference 하는 것 보다, batch로 inference하면 훨씬 빠르고 효율적으로 추론을 할 수 있습니다. 하지만 api를 서빙을 하는 경우에는 batch로 inference가 매우 어렵습니다. 예시를 들어보면 챗봇이라고 생각을 하면 intent(의도)를 분류하는 모델을 api로 서빙을 할 텐데, 하나의 질문에 대한 intent만 분류하면 되기 때문에 api에 batch로 inference를 요청할 수 없습니다. api server 입장에서는 한 문장씩 입력이 들어오더라도, 비슷한 시간에 들어오는 문장들을 묶어서 infernce를 해서 결과를 반환해주면 ..

argo workflow - cron workflow

지난 글(https://seokhyun2.tistory.com/86)에서 argo workflow를 로컬에 세팅하는 방법에 대해서 알아보았었는데요. 오늘은 설치한 argo workflow에서 cron workflow를 생성하는 방법에 대해서 한 번 알아보도록 하겠습니다. cron workflow 생성 cron workflow는 정해진 시간에 주기적으로 실행이 되는 workflow입니다. 기본적으로 웹 화면에서, ui로 간단하게 실행할 수 있습니다. 아래에서 왼쪽에 4번째에 시계 아이콘을 선택하면 Cron Workflows 탭에 들어갈 수 있고 그러면 CREATE NEW CRON WORKFLOW 버튼을 눌러서 간편하게도 생성할 수 있습니다. 버튼을 눌러보면, 아래의 내용이 기본 예제로 이미 입력이 되어 있..

ML OPS 2022.10.02

argo workflow 구성해보기

ML ops에서 workflow를 활용하는 구성이 많아지고 있는데요. 오늘은 argo workflow를 로컬에 구성해보았습니다. kubernetes 설정 argo workflow는 kubernetes 상에서 활용할 수 있습니다. 로컬에서는 docker를 설치하여, Enable Kubernetes를 활용하여 쉽게 kubernetes를 세팅할 수 있습니다. apply 후에 error가 발생하는 경우 Clean / Purge data, Reset to factory defaults를 시도해보시는 것을 추천드립니다. argo workflow 구성 namespace 생성 argo workflow를 설치해 줄 namespace를 아래의 명령어로 생성해주시면 됩니다. kubectl create ns argo argo..

ML OPS 2022.09.18

[ML OPS] quantization을 활용한 인퍼런스 최적화 (ft. ONNX, TensorRT)

오늘은 quantization을 활용하여 인퍼런스를 최적화하는 방법을 소개하려고 합니다. 이전 글(https://seokhyun2.tistory.com/82)을 같이 보시는 것을 추천드립니다. 0. quantization quantization은 한국말로는 양자화라고 하는데요. 신호처리 수업을 들으신 분들은 이미 익숙하실 수도 있을 것 같습니다. 신호처리에서는 숫자들을 큰 숫자 셋에서 작은 숫자 셋으로 매핑하는 것을 양자화라고 합니다. 예를 들면, 1~1000을 10으로 나누고 정수만을 취해서 1~100으로 변경한다고 생각해보겠습니다. 511, 519가 동일하게 51이 되겠죠? 그러면 우리는 기존 데이터를 더 적은 숫자 셋(100개)으로 표현할 수 있지만, 511과 519가 동일한 데이터가 되면서 511..

[ML OPS] transformers inference (ft. colab, onnx, gpu)

자연어처리에서는 transformers가 pretrained 모델도 많이 제공하고 있다보니 정말 많이 활용되는 것 같습니다. ML ops의 역할 중에 하나가, 인퍼런스 속도를 최적화하는 것이라는 생각이 되는데요. transformers를 간단하게 인퍼런스 해보는 코드에서 시작하여, 실시간 서비스에서 활용할 수 있는 수준까지 개선해보는 과정을 소개해보도록 하겠습니다. 0. colab 오늘 소개하는 내용들은 GPU도 활용해야 하는데, 노트북을 사용하다보니 GPU가 없어서 colab(https://colab.research.google.com/)을 사용해보도록 하겠습니다. colab에서는 무료로도 간단하게 GPU를 테스트 정도는 해볼 수 있도록 제공하고 있습니다. colab을 기본적으로 켰을 땐, GPU가 할..

[ML OPS] mlflow 로컬에서 사용해보기

mlops를 위한 여러가지 플랫폼이 나오고 있는데, 오늘은 mlflow에 대해서 한번 간단하게 사용해보도록 하겠습니다. 오늘은 로컬에서 사용해볼 예정이므로 편하게 사용할 수 있도록 아래 이미지와 같이 pycharm에서 venv를 생성해서 환경을 세팅해보겠습니다. 여기서 mlflow를 설치해볼텐데, 설치는 아주 쉽습니다. 아래 명령어와 같이 pip를 활용하여 설치하시면 됩니다. pip install mlflow ui를 바로 간단하게 볼 수 있는 아래 명령어를 실행해보도록 하겠습니다. mlflow ui 그러면 http://127.0.0.1:5000 이라는 링크를 보여줄텐데 클릭하면 아래와 같은 web ui를 볼 수 있습니다. pycharm으로 돌아가서 확인해보면, 아래 이미지와 같이 mlruns라는 폴더가 ..

[ML OPS] ONNX로 pytorch 모델 변환하기

ML 모델을 서비스에 적용하려고 하면 일반적으로 느린 속도 때문에, 인퍼런스 속도를 높이기 위한 방법도 많이 고민하게 됩니다. 그래서 오늘은 ONNX(Open Neural Network eXchange)를 한번 소개해보려고 합니다. ONNX onnx는 머신러닝 모델 공개 표준을 목표로 개발된 오픈소스입니다. Tensorflow, Pytorch는 물론이며 이 외에도 다양한 툴에서 사용할 수 있도록 지원됩니다. 특히, 파이썬 환경 뿐만 다른 언어를 활용할 수도 있으며 모델을 변환하면서, 그래프를 최적화하여 연산 속도 개선 효과도 있습니다. 바로 코드로 넘어가보도록 하겠습니다. 오늘도 학습은 논외니까 pretrained model 중에 torchvision에서 가장 기본 모델인 resnet을 활용하겠습니다. ..