본문 바로가기

세계정복의주인장

(1138)
[system design] 이미지 검색 서비스 1. 요구사항 - 플랫폼에 1000억개의 이미지가 있다. 사용자가 이미지를 업로드하면 가장 유사한 이미지들을 검색해야 한다. - 이미지에는 메타데이터가 없으며, 오직 픽셀 데이터만 사용해야 한다. 2. 문제 구조화 먼저 쿼리에 해당하는 입력값은 이미지다. 사용자는 이미지를 입력하면 출력으로 이미지 리스트가 나와야 한다. 출력되는 이미지들은 쿼리 이미지와 유사한 이미지 세트를 출력한다. 먼저 해당 이미지들에 대한 분류(classification)가 되어야 한다. 특정 사물에 대한 분류를 통한 출력 세트를 만들수 있다. 혹은 특정 유사도를 통해서도 분류를 할 수 있다. 개와 고양이의 분류가 물체에 대한 인식이라면, 유사도는 비슷한 모든것을 지칭할수 있다. 표현학습은 이미지와 같은 입력 데이터를 임베딩이라는 ..
[system design] 유해 콘텐츠 감지 커뮤니티에 유해한 특정 사용자 행동, 활동 및 콘텐츠에 대한 유해한 콘텐츠와 악의적인 행위자를 식별할수 있는 시스템을 구축하는것을 목표로 하며 판별해야 할 데이터는 다음과 같다. - 유해한 콘텐츠 : 폭력, 노출, 자해, 혐오 발언등이 포함된 게시물 - 나쁜 행위/ 나쁜행위자 : 가짜 계정, 스팸, 피싱, 조직적인 비윤리적 활동 및 기타 안전하지 않은 행동 1. 요구사항 명확화 - 게시물의 콘텐츠는 텍스트, 이미지, 동영상 등이 있다. - 게시물을 등록한 사용자의 데이터가 있으며, 게시물에 대한 부가 정보도 포함되어 있다 (댓글/좋아요/싫어요/공유/신고수 등등) - 해당 플랫폼에는 매일 5억개의 게시물이 등록된다. 그 중 사람이 컨텐츠를 유해 컨텐츠로 판별 할 수 있는 라벨링은 10000개이다. - 사용..
onnx model Quantization 모델을 생성하고 단순히 배포만 하는게 아닌 서빙시에는 당연히 메모리가 적게 들어가면서 똑같은 성능을 발휘할수 있다면 최적의 결과를 얻을 수 있습니다. (성능은 똑같은데 비용은 준다고?!) 물론 모델을 어디에 배포하느냐, 어떤 모델을 사용했느냐에 따라서 상황이 달라지지만, 이번 포스팅에서는 onnx를 이용해서 배포시 모델을 양자화하는 방법입니다. onnx에 대한 설명은 예전 포스팅에서 확인하실수 있습니다. : https://uiandwe.tistory.com/1401 1. 양자화란? 모델의 인퍼런스시 가장 중요한것은 서버의 메모리를 어떻게 줄이느냐입니다. 메모리 사용량을 줄이기 위해 벡터 양자화 및 프로덕트 양자화 같은 다양한 최적화 방법을 사용합니다. 양자화는 모델 매개변수를 구성하는 32비트 크기의 실..
[k8s] argocd (minikube에 올려보기) 저번 포스팅에 올렸던 간단한 helm을 체험한 후 이번엔 minikube에 argocd를 통해 CI/CD 자동 배포화가 가능하도록 해보았습니다. 이번 포스팅의 배포 아키텍처입니다. 로컬에 docker 이미지를 빌드 후 github에 변경된 코드(helm)를 커밋합니다. Push 함과 동시에 helm chart에 버전 업데이트를 진행한다. 그러면 Argo에 등록된 Helm Chart 저장소에서 yaml resource를 읽게 되고 코드에 맞춰 쿠버네티스에 배포가 진행된다. 1. argocd install $ kubectl create namespace argocd $ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/..
[k8s] fastapi + helm (minikube에 올려보기) helm 공부하기 위해 간단하게 fastapi를 minikube에 올리는 예제를 해보았다. 이번 포스팅에서는 (1)로컬에서 docker를 실행해보고, (2) minikube에서 실행시켜 보고, (3) 마지막으로 helm으로 실행시켜 보았다. 내용이 꽤 길다. 해당 포스팅의 모든 소스는 github에 올려두었다. https://github.com/uiandwe/fastapi_k8s 1. 로컬에서 docker를 실행 k8s에 올리기 위해 위해 docker부터 만들어야 한다. fastapi 서버 부분이다. 간단하게 호출히 리턴하도록만 만들었다. app/main.py from typing import Union from fastapi import FastAPI app = FastAPI() @app.get("/"..
[dacon] 도배 하자 질의 응답 처리 : 한솔데코 시즌2 AI 경진대회 https://dacon.io/competitions/official/236216/overview/description 도배 하자 질의 응답 처리 : 한솔데코 시즌2 AI 경진대회 - DACON 분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다. dacon.io 해당 대회가 LLM관련 대회여서, 심심한데 한번 해볼까? 하는 마음에 시작하게 되었다. (진지하게는 못했다...하하) 그냥 기본적인 내가 아는 기술을 써서 어디까지 올라가는지 테스트 해보고 싶었다. (hyde를 구현해서 실제로 써보고 싶었다.) 먼저 해당 대회의 내용을 읽어보면 "다양한 질문과 상황을 제공하고, 이에 대한 정확하고 신속한 응답을 제공하는 AI 모델을 개발이 목표이다" 나의 목표는 1. 모델 파인튜닝 2. ..
[사내 해커톤] Stable Diffusion을 이용한 영상 가공 이번에도 어김없이 회사에서 해커톤이 열렸다. 주제는 "생성형 AI를 사용한 회사에 도움이 되는 서비스를 만들어" 였다. 일단 아이디어 도출에서 텍스트로 하는건 재미가 없으므로 패스했고, (프롬프트 튜닝은 너무 많이 해서 재미가 없다) 영상과 음성쪽으로 해보고 싶어서 가닥을 광고쪽으로 컨셉을 잡고 진행했다. 영상의 경우 기존 영상을 일부분만 수정하는 형태로 아이디어를 냈다. 예를 들어 사과를 소개하는 영상에서 사과 대신 배, 복숭아로 바꾸는 형태로 영상을 바꿔서 원하는 영상으로 교체하는것으로 생각했다. 간단한 예시는 다음과 같다. https://tilnote.io/pages/640adfbef4ea08b9071cc823 https://platform.stability.ai/docs/features/inpai..
[논문리뷰] Retrieval-Augmented Generation for Large Language Models: A Survey 해당 논문의 원문은 여기에서 볼수 있습니다. https://arxiv.org/pdf/2312.10997.pdf 요약: LLG함께 RAG도 많은 발전이 이뤄졌다. 상황에 맞는 RAG를 선택하고 구축한다면, 더 좋은 품질의 LLM 결과를 얻을 수 있다. Abstract 대규모 언어 모델(LLM)은 상당한 기능을 보여주지만 환각, 오래된 지식, 알수없는 추론 과정 등의 문제에 직면해 있습니다. 검색 증강 세대(RAG)는 모델의 정확성과 신뢰성을 향상시키고 지속적인 지식 업데이트 및 통합 지속적인 업데이트와 통합이 가능하여 유망한 솔루션으로 부상했습니다. 이 논문은 RAG 패러다임의 발전 과정을 자세히 살펴보며 ( Naive RAG, Advanced RAG, Modular RAG ) RAG 평가를 위한 메트릭과..