본문 바로가기

ML/MLops

(13)
[개인프로젝트] 나만의 추천시스템 만들기 (2) 이전 포스팅  :  https://uiandwe.tistory.com/1483 1편에 이어 추천시스템 개선을 해보려 합니다.이번 주요 사항은 sklearn의 기본 vector 함수를 사용하는게 아닌, bert모델을 사용하여 vector 임베딩을 하고, 해당 벡터 값을 통해 추천시스템을 만드는겁니다. bert 모델을 사용한 간단한 추천 구현전체적인 로직은 다음과 같습니다.  1편과 내용이 똑같아서 코드는 제외했습니다. 아래의 내용은 이번 글에서는 제외했습니다. 1. 데이터 수집 : wanted에서 데이터를 수집해 옵니다. (크롤링)                 2. 수집된 내용을 사용자 평가 (기본 데이터로 쓰임)                                    3. 데이터 저장 : 이미지 ..
[개인프로젝트] 나만의 추천시스템 만들기 (1) 요즘 한창 원티드를 기웃 거리고 있는 중, 추천 포지션과 기업들이 이상하게 나오는게 눈에 띄었다.이력서에 넣지도 않은 프론트엔드 관련 jd의 합격 예측이 90%가 넘어가는거.대체 왜? 라는 의문과 함께 한번 나만의 추천을 만들어볼까? 하는 마음에 시작하게 되었다. 1. 추천시스템?서비스에는 다양한 종류의 콘텐츠 및 상품을 추천하는 서비스들이 있습니다. 기본적으로는 아이템기반과 유저 기반을 나눌수 있습니다.유저기반 : 나와 비슷한 사람이 본 컨텐츠를 추천아이템 : 내가 본 아이템과 비슷한 아이템 추천이중에서 나는 다른 사람의 데이터는 알수 없으므로, 아이템 기반으로 가닥을 잡았습니다.  구축하려는 것은 Multi-stage recommendation system을 통해 범용 시스템을 개발해보려 합니다. 다..
[MLOps] Triton을 활용한 모델 배포 스마일게이트에서 제공한 데이터를 기반으로 욕설분류 bert 모델을 만들었다. 기본 소스는 다음과 같다.https://colab.research.google.com/drive/1NKYYVSex__vde-lnYCmsRmyHjJhV6cKt?usp=sharing#scrollTo=Wi1qd6i8__Jl[위의 설명은 이전 포스팅인 https://uiandwe.tistory.com/1395 에 있다]  1.Triton Inference Server  Triton Inference Server는 GPU 장비를 효과적으로 사용하면서 리소스 비용을 절약하기 위해 일종의 GPU전용 서버를 하나 만들어서 다양한 모델들을 서빙할수 있도록 돕는 추론 서버 역활을 맡은 고성능 추론에 최적화된 오픈소스 소프트웨어입니다. 다양한 모델..
ml를 쉽게 쓰기 위한 프론트 작업 몇주전 위의 영상을 보고 충격을 받았었다.내가 원하는건 "신기술을 통한 제품"을 만드는게 아니라 "사용자가 사용하기 쉬운 서비스"가 목표였었는데 말이다."너무 기술에만 매몰되어 있었을까?"하는 생각과 함께 누구나 접근하기 쉽게 하자는 생각이 들었다. 현재 팀에서는 LLM에 대한걸 내가 주도적으로 만들고, 기획자나 라벨러분들의 의견을 코딩하고, 결과값만 보여주는 형식으로 진행되고 있었다.결국 요청한 결과값을 보기위해서는 "내가 코딩하고 결과값까지 시간이 걸린다.""기획자와 라벨러가 바로 볼수 있게 만들면 되지 않아?" 이 쉬운 작업을 왜 안하고 있었을까? 하는 생각과 함께 오랜만에 프론트를 들여다 보았다. 지금 팀에서는 react를 프론트로 하고 있어서, react+zustand 조합으로 공부했다. (대충..
[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비트 크기의 실..