Quantization, 적용 후 성능 비교하기 (Pytorch, Cifar10)
·
MLOps
양자화의 목표는 성능을 유지하면서 모델을 가볍고 빠르게 만드는 것입니다. 이걸 왜 안 해?필요한 곳빠른 연산이 필요해: 빠른 응답이 필요한 곳 (latency를 낮춰야 할 때)모델이 가벼워야 해: 모바일 디바이스, 임베디드 시스템, 엣지 컴퓨팅 등 자원이 제한된 상황이번 글에서는 양자화의 개념을 간단히 이해한 후, Cifar 10 데이터셋을 분류하기 위한 모델을 학습한 뒤 양자화하고 성능을 비교해 보겠습니다.아젠다Quantization 개념 이해하기Quantization 기법 알아보기 (PTQ와 QAT)모델 성능 비교하기1. Quantization 개념 이해하기하나의 Dense Layer를 정의하면 레이어 내에 weight와 bias 값들은 어떠한 값을 가지고 있을까요?각각은 torch.float32 타..
Airflow에서 Deferrable Operator란?
·
데이터 엔지니어링
아젠다Deferrable의 의미Deferrable Operator 사용 및 작성1. Deferrable의 의미“Deferrable”은 “연기할 수 있는” 또는 “지연 가능한”이라는 의미를 갖고 있습니다.기존의 Operator: 작업이 대기 상태에 있을 때도 워커를 점유하면서 리소스를 사용하지만,Deferrable Operator: 작업을 중지하고 필요할 때 다시 시작할 수 있어 워커 리소스를 절약합니다이를 통해 시스템의 리소스 효율성을 높이고, 더 많은 작업을 동시에 처리할 수 있습니다.Airflow에서 특정 Task를 수행한다는 것은 기본적으로 워커의 슬롯을 사용하는 것을 의미합니다. 하지만, Deferrable Operator는 워커에서 동작하는 것이 아닌 Triggerer라는 워커에서 동작합니다.T..
데이터 드리프트 감지하기 (w/ BentoML, Evidently AI, Fluent Bit)
·
MLOps
BentoML Data Drift Detection데이터 드리프트는 훈련에 사용된 데이터와 실제로 모델이 적용되는 시점의 데이터 간 분포 차이가 발생하는 현상을 말합니다.이러한 분포의 차이는 모델 성능을 저하시킬 수 있습니다. 이에 데이터 드리프트를 감지하고 대응하는 것은 중요합니다.아젠다데이터 드리프트를 감지하는 방법BentoML로 인퍼런스 데이터 로깅Fluent Bit으로 로그 수집Kafka에 수집된 로그 전달Evidently AI로 데이터 드리프트 감지1. 데이터 드리프트를 감지하는 방법데이터 드리프트를 감지하는 데에는 여러 가지 방법이 존재합니다. 주요 접근 방식은 위 사진에서 알 수 있듯이 훈련 데이터(기준 데이터)와 인퍼런스 시점의 실시간 데이터를 비교하여 데이터 분포의 차이를 감지하는 것입니..
DynamoDB와 Read / Write Capacity
·
데이터 엔지니어링
DynamoDB는 AWS에서 제공하는 관리형 NoSQL 데이터베이스 서비스입니다. NoSQL이 갖는 장점과 쉬운 사용성, 그리고 빠른 성능과 자동 확장 기능을 갖는데요.DynamoDB의 장/단점에 대해 이해하고 제대로 사용하기 위해 꼭 필요하다고 생각하는 DynamoDB의 Read / Write Capacity에 대해 알아보고 제 생각을 정리해 봤습니다.아젠다DynamoDB의 장점 / 단점Read / Write Capacity 조절의 필요성1. DynamoDB의 장점 / 단점제가 사용하면서 느꼈던 장점과 단점을 몇 가지 짚어볼게요.장점:데이터 모델링: 데이터 모델링이 유연합니다. 컬럼을 자유롭게 추가/삭제할 수 있고 데이터 타입도 다양하게 사용할 수 있어요.(JSON)완전 관리형 서비스: 서버 관리에 대..
BentoML로 패키징하여 배포하고 Prometheus로 모니터링
·
MLOps
블로그에서 필요한 코드들은 https://github.com/Ssuwani/bentoml_prometheus 에 정리해두었습니다.0. 들어가며BentoML은 모델을 쉽게 패키징하고 배포할 수 있는 오픈소스 라이브러리입니다. 또한, 배포된 모델에 대한 온라인 모니터링을 지원합니다.이 글에서 수행할 과정을 간단히 그림으로 나타내면 아래와 같습니다.PyTorch로 모델 학습하고 평가하기BentoML로 모델 패키징하여 Containerize 한 뒤 배포하기Prometheus로 모델 모니터링하기1. PyTorch로 Fashion MNIST 모델을 학습하고 평가하기이 글에서 데이터 & 모델은 중요한 부분은 아니라 PyTorch 공식 문서의 Quickstart 예제를 따라 데이터를 가져오고 모델을 학습한 뒤 평가해보..
요기요에서의 2년 5개월 회고
·
카테고리 없음
안녕하세요. 2022.05.02 ~ 2024.09.30, 약 2년 5개월간 요기요에서 근무했습니다. 기억하고 싶은 내용을 위해 글을 작성합니다.운이 좋았던 입사수많은 곳에서 서류 탈락했습니다. 놀라운 것은 요기요도 포함이었습니다. 그런데, 일주일 뒤 인사팀으로부터 전화가 왔고 면접 일정을 잡게 되었습니다. 나중에 들어보니, 리더분이 제 이력을 보고 면접을 보고 싶어 했다고 전해 들었습니다. 다시 한번 감사드립니다.마음이 힘들었던 입사 후2022.05.02회사의 건물은 생각보다 더 컸고, "이런 곳에 내가 다니다니!"라며 한참 어깨가 으쓱거렸습니다. 그리고, 사원증을 목에 걸고 다니면 기분이 좋았습니다. (입사 초기 한정..ㅋㅋ) 많은 분들께 인사하고 본격적으로 온보딩을 시작했습니다. 기대했던 것과 다르게..
RDD vs DataFrame in Spark
·
데이터 엔지니어링
데이터 표현 방식RDD구조화되지 않은 데이터도 처리할 수 있음사용자 정의 함수를 통해 데이터 변환하는 데 유연DataFrameRDD 위에 구조화된 데이터 추가한 것행과 열로 이루어져 있으며 Pandas의 Dataframe과 유사명확한 스키마를 가지고 있기에 데이터 처리 및 변환이 직관적이고 효율적API 수준RDD낮은 수준의 API 제공사용자에게 더 많은 제어권 제공map, reduce, filter 등의 함수형 프로그래밍 연산자 이용해 변환DataFrame높은 수준의 API 제공SQL 쿼리와 유사한 방식으로 데이터 처리 -> 직관적최적화된 실행 계획을 통해 효율적으로 동작성능 최적화RDD사용자 정의함수를 사용하기에 최적화 여지가 적음실행 계획 최적화하지 않음DataFrameCatalyst Optimize..
스파크 RDD 이해하기
·
데이터 엔지니어링
Apache spark에서는 데이터를 다루기 위해 아래 3가지 추상화 개념을 제공합니다.RDD (Resilient Distributed Datasets)DataFramesDatasets이 중 RDD에 대한 설명과 예제를 통해 이해해보고자 합니다.정의RDD는 Spark의 기본 데이터 구조로 병렬로 처리할 수 있는 불변 분산 객체 컬렉션특징메모리 내에서 처리 연산을 지원함기존 map reduce 파일 시스템과 비교했을 때의 장점생성되면 수정할 수 없음기존 RDD를 수정하는 게 아니라 새로운 RDD를 생성함. (불변성)RDD는 장애로부터 쉽게 복구할 수 있음위 불변성 덕분에 RDD 복구가 쉽고 분산 환경에서 처리되기에 Node A에서 문제시 Node B에서 수행 가능함Laze EvaluationAction 연..