FastAPI에서 JWT로 사용자 회원가입/로그인 구현하기
·
Python
오늘은 FastAPI에서 회원가입과 로그인 기능을 구현해보려합니다. 대부분의 프로젝트에서 필요한 기능임에도 실제로 구현해 본 경험이 없어 이번 기회에 구현해보았습니다. 피드백 주시면 감사드리겠습니다.코드는 https://github.com/Ssuwani/fastapi-jwt 에서 확인할 수 있습니다.아젠다구현할 내용 Sequence Diagram으로 이해하기회원가입 구현하기로그인 구현하기내 정보 조회 구현하기1. 구현할 내용 Sequence Diagram으로 이해하기먼저 그림으로 간단히 오늘 구현할 내용을 나타내 보았습니다.조금 복잡해 보일 수 있지만 클라이언트로부터 회원가입, 로그인, 내 정보 조회 요청이 들어왔을 때의 동작이고 따라가다보면 어렵지 않게 따라갈 수 있을 것입니다.sequenceDiagr..
Quantization, 적용 후 성능 비교하기 (Pytorch, Cifar10)
·
MLOps
글에 주의가 필요합니다.. 양자화를 실제로 현업에 적용해 본 경험이 없고 짧게 공부한 지식으로 작성되었습니다. 피드백은 환영입니다. 감사합니다.양자화의 목표는 성능을 유지하면서 모델을 가볍고 빠르게 만드는 것입니다. 이걸 왜 안 해?필요한 곳빠른 연산이 필요해: 빠른 응답이 필요한 곳 (latency를 낮춰야 할 때)모델이 가벼워야 해: 모바일 디바이스, 임베디드 시스템, 엣지 컴퓨팅 등 자원이 제한된 상황이번 글에서는 양자화의 개념을 간단히 이해한 후, Cifar 10 데이터셋을 분류하기 위한 모델을 학습한 뒤 양자화하고 성능을 비교해 보겠습니다.아젠다Quantization 개념 이해하기Quantization 기법 알아보기 (PTQ와 QAT)모델 성능 비교하기1. Quantization 개념 이해하기하..
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..