본문 바로가기

ML/MLops

(9)
[system design] 이벤트 추천 시스템 1. 목표 - 사용자에게 개인화된 이벤트 목록을 표시하는 이벤트 추천 시스템을 설계 - 이벤트 : 이벤트 설명 / 가격 / 위치 / 날짜 / 시작과 종료가 있는 기간 으로 구성됨 - 다른 사용자를 이벤트에 초대하고 친구 관계를 형성 할 수 있다. - 주요 목표는 사용자에게 개인화된 이벤트 목록을 표시하는 이벤트 추천 시스템을 설계해야 한다. 이벤트의 정의는 일반 사이트의 특정 상품 / 특정 회사 제품에 대한 이벤트 일수도 / 게임 상점에서의 아이템 판매에 대한 이벤트등 다양한 계열을 볼수 있다. 일반적으로 표현하자면 특정한 기간안에 특정한 상품을 판매하는 행위로 정의할수 있다. 2. 랭킹 모델 LTR(Learning to Rank)는 지도 학습을 적용하여 순위 문제를 해결하는 알고리즘 기법의 하나로, '..
[system design] 이미지 검색 서비스 1. 요구사항 - 플랫폼에 1000억개의 이미지가 있다. 사용자가 이미지를 업로드하면 가장 유사한 이미지들을 검색해야 한다. - 이미지에는 메타데이터가 없으며, 오직 픽셀 데이터만 사용해야 한다. 2. 문제 구조화 먼저 쿼리에 해당하는 입력값은 이미지다. 사용자는 이미지를 입력하면 출력으로 이미지 리스트가 나와야 한다. 출력되는 이미지들은 쿼리 이미지와 유사한 이미지 세트를 출력한다. 먼저 해당 이미지들에 대한 분류(classification)가 되어야 한다. 특정 사물에 대한 분류를 통한 출력 세트를 만들수 있다. 혹은 특정 유사도를 통해서도 분류를 할 수 있다. 개와 고양이의 분류가 물체에 대한 인식이라면, 유사도는 비슷한 모든것을 지칭할수 있다. 표현학습은 이미지와 같은 입력 데이터를 임베딩이라는 ..
[system design] 유해 콘텐츠 감지 커뮤니티에 유해한 특정 사용자 행동, 활동 및 콘텐츠에 대한 유해한 콘텐츠와 악의적인 행위자를 식별할수 있는 시스템을 구축하는것을 목표로 하며 판별해야 할 데이터는 다음과 같다. - 유해한 콘텐츠 : 폭력, 노출, 자해, 혐오 발언등이 포함된 게시물 - 나쁜 행위/ 나쁜행위자 : 가짜 계정, 스팸, 피싱, 조직적인 비윤리적 활동 및 기타 안전하지 않은 행동 1. 요구사항 명확화 - 게시물의 콘텐츠는 텍스트, 이미지, 동영상 등이 있다. - 게시물을 등록한 사용자의 데이터가 있으며, 게시물에 대한 부가 정보도 포함되어 있다 (댓글/좋아요/싫어요/공유/신고수 등등) - 해당 플랫폼에는 매일 5억개의 게시물이 등록된다. 그 중 사람이 컨텐츠를 유해 컨텐츠로 판별 할 수 있는 라벨링은 10000개이다. - 사용..
onnx model Quantization 모델을 생성하고 단순히 배포만 하는게 아닌 서빙시에는 당연히 메모리가 적게 들어가면서 똑같은 성능을 발휘할수 있다면 최적의 결과를 얻을 수 있습니다. (성능은 똑같은데 비용은 준다고?!) 물론 모델을 어디에 배포하느냐, 어떤 모델을 사용했느냐에 따라서 상황이 달라지지만, 이번 포스팅에서는 onnx를 이용해서 배포시 모델을 양자화하는 방법입니다. onnx에 대한 설명은 예전 포스팅에서 확인하실수 있습니다. : https://uiandwe.tistory.com/1401 1. 양자화란? 모델의 인퍼런스시 가장 중요한것은 서버의 메모리를 어떻게 줄이느냐입니다. 메모리 사용량을 줄이기 위해 벡터 양자화 및 프로덕트 양자화 같은 다양한 최적화 방법을 사용합니다. 양자화는 모델 매개변수를 구성하는 32비트 크기의 실..
ONNX ONNX는 Open Neural Network Exchange의 줄인 말로 다른 DNN 프레임워크 환경(ex Tensorflow, PyTorch, etc..)에서 만들어진 모델들을 서로 호환되게 사용할 수 있도록 만들어진 공유 플랫폼입니다. ONNX를 사용하는 이유는 다음과 같습니다. 모델의 호환성을 높일 수 있습니다. 예를 들어, PyTorch로 학습한 모델을 TensorFlow Serving에서 서빙할 수 있습니다. 모델의 개발과 유지보수를 쉽게 할 수 있습니다. ONNX는 모델의 구조와 파라미터를 명시적으로 저장하기 때문에, 모델의 개발과 유지보수를 쉽게 할 수 있습니다. 모델의 성능을 향상시킬 수 있습니다. ONNX 모델을 TensorFlow Serving에서 실행하면, TensorFlow Ser..
파이프라인 구축 (with NES / notebook exceute system) 해당 글은 아래의 시스템 구조를 참고하여 만든 예제 입니다. https://devocean.sk.com/vlog/seminar/20220728_Data_Engineering_in_SKT.pdf https://netflixtechblog.com/scheduling-notebooks-348e6c14cfd6 Part 2: Scheduling Notebooks at Netflix by Matthew Seal, Kyle Kelley, and Michelle Ufford netflixtechblog.com 완성 코드 (gihtub 링크) https://github.com/uiandwe/nes/tree/main GitHub - uiandwe/nes Contribute to uiandwe/nes development ..
3. 각 회사별 MLops 각 회사들의 블로그에서 발췌한 내용들 입니다. 국내외 주요 기업들의 MLOps 사례를 통해 효과적으로 MLOps를 구현하는 방법을 생각해보셨으면 합니다. MLops구현시 다음을 중점적으로 구현해보면 됩니다. 목표: MLOps를 통해 달성하고자 하는 목표는 무엇입니까? 전략: MLOps를 어떻게 구현하고 있습니까? 성과: MLOps는 어떤 성과를 거두었습니까? 와디즈 (추천시스템) https://blog.wadiz.kr/prophet%ec%9d%84-%ec%9d%b4%ec%9a%a9%ed%95%98%ec%97%ac-%ec%9b%94%ea%b0%84-%ed%8e%80%eb%94%a9-%ea%b8%88%ec%95%a1-%ec%98%88%ec%b8%a1%ed%95%98%ea%b8%b0/ 라인 https://te..
2. MLops 아키텍처 CI/CD는 소프트웨어 개발의 효율성과 안정성을 향상시키는 데 중요한 역할을 합니다. CI를 통해 개발자는 코드를 작성하자마자 즉시 통합하여, 버그를 조기에 발견하고, 품질을 높이는 데 도움이 됩니다. CD를 통해 개발자는 통합된 코드를 테스트 및 배포하여, 소프트웨어를 안정적으로 제공할 수 있습니다. MLOps와 DevOps는 모두 소프트웨어 개발과 운영의 효율성과 안정성을 향상시키는 것을 목표로 하지만, 그 초점은 다릅니다. DevOps는 소프트웨어의 개발, 배포, 운영 전반에 걸쳐 협업과 자동화를 강조한다면, MLOps는 머신러닝 모델의 데이터, 개발, 배포, 운영에 초점을 맞춥니다. 데이터 관리: 머신러닝 모델을 학습시키기 위해서는 고품질의 데이터가 필요합니다. MLOps는 데이터 관리를 통해 데..