Inference 4

[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] BentoML - Adaptive Batching

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

[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] ONNX로 pytorch 모델 변환하기

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