전체 글 78

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

SQLAlchemy에서 ORM 활용하기

이전 글(https://seokhyun2.tistory.com/84)에서 SQLAlchemy에 대해서 소개를 해보았는데요. 오늘은 ORM을 활용하는 방법을 준비해보았습니다. ORM을 사용하기 위해서는, table에 매핑되는 class를 선언해서 사용하면 되는데요. 바로 예제 코드를 보도록 하겠습니다. from sqlalchemy.orm import declarative_base from sqlalchemy import Column, Integer, String, DateTime from sqlalchemy.sql import func Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary..

python/SQLAlchemy 2022.09.04

SQLAlchemy 소개 및 활용법

딥러닝 모델을 서비스에 적용하다보면, 실시간 서빙 뿐만 아니라 데이터베이스를 활용하여 데이터베이스에 딥러닝 모델의 인퍼런스 결과를 저장해두고 저장된 결과를 활용하여 서비스를 제공하기도 합니다. 자연어처리에서 예를 들면, 미국 신문 기사에 대한 번역 서비스를 제공한다고 할 때, 미국 신문 기사를 데이터베이스에 저장하면서 번역 결과도 같이 저장을 해둔다면 유저가 접속할 때 마다 번역할 필요가 없겠죠? 그래서 딥러닝 모델을 서비스에 제공하다보면, 데이터베이스에 대한 지식도 필요하게 됩니다. SQLAlchemy? SQLAlchemy는 그 자체가 데이터베이스 클라이언트는 아닙니다. 데이터베이스 클라이언트 라이브러리는 별도로 활용하고, 오늘 소개드릴 SQLAlchemy는 ORM(Object Relational Ma..

python/SQLAlchemy 2022.08.21

[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라는 폴더가 ..

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

글또 7기 다짐글

글또 7기를 시작하게 되어 다짐글을 한번 남겨봅니다. 다짐에 앞서, 저의 현재 상황을 이야기해보면 NLP개발자로 처음 시작한 커리어가 백엔드 개발자를 거쳐서 최근에는 ML ops로 포지션을 변경하면서 이직을 하였습니다. 글또 4기와 5기를 참여했었는데 NLP 개발자로 4기를 참여했고, 딥러닝 모델 서빙에 대한 수요가 커지면서 자연스럽게 서버 개발을 하다보니 5기 때는 백엔드 개발자로 참여했었습니다. 4기(2020년 2월 ~ 2020년 7월) 때 썼던 글들을 아래와 같이 정리해보았더니 2017년 NLP 개발자로 시작한 커리어가 서비스에 대한 수요가 커짐에 따라 이 때는 이미 서빙 쪽을 많이 공부를 하고 있었던 것 같습니다. - 딥러닝 모델 서빙과 병렬처리 (https://seokhyun2.tistory.c..

나의 이야기 2022.05.11

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

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