onnx 3

[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..

huggingface/transformers에 컨트리뷰트 해보기

자연어처리를 공부해보았다면 누구나 경험해보았을만큼 유명한 huggingface의 transformers에 contribute를 해보았습니다. 처음으로 오픈소스에 컨트리뷰트 해보아서 머지가 되고, 릴리즈에 포함이 되었을 때는 너무나도 뿌듯함을 감출 수 없었습니다. 그래서 오늘은 컨트리뷰트했던 과정을 남겨두고자 합니다. 1. 컨트리뷰트하게 된 계기 최근 deep learning 모델을 서빙하면서, onnx를 필수로 사용을 하고 있습니다. huggingface의 transformers에서는 쉽게 onnx로 변경 할 수 있는 모듈(https://huggingface.co/docs/transformers/main/en/serialization#onnx)을 제공하고 있습니다. 가이드를 보면, 아래와 같이 trans..

나의 이야기 2022.05.28

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

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