본문 바로가기

728x90

분류 전체보기

(430)
Docker 프로덕트의 인계과정은 보통 다음과 같다. local 환경에서 개발 -> staging 서버에서 테스트 -> production 환경에 배포 각 단계별 환경이 다를 수 있다. 그래서 서버 환경까지 한번에 소프트웨어화하는 것이 가상화이며 docker가 이를 도와준다. 도커는 다른 VM들과 다르게 container 기술을 활용하여 더 가볍고 빠르고 쉽게 가상화를 구현할 수 있다. 누군가 OS, 설정등을 포함한 실행환경들을 담은 docker image를 만들어 놓으면 어디서든지 동일하게 해당 image를 실행할 수 있다. 도커 이미지를 원격 저장소에 올려두면 배포를 기다리는 서버는 해당 이미지를 내려받아서 실행하게 된다. 1. docker 이미지 생성 FROM python:3.9.13-slim WORKDIR /..
[Paper Review] Factorization Machine Factorization Machines In this paper, we introduce Factorization Machines (FM) which are a new model class that combines the advantages of Support Vector Machines (SVM) with factorization models. Like SVMs, FMs are a general predictor working with any real valued feature vector. ieeexplore.ieee.org Factorization Machines(FM)은 support vector machine(SVM)과 factorization model의 장점을 합한 새로운 예측기이다. 1)..
Airflow 일정 기간 데이터를 모아서 주기적으로 모델을 학습하거나 batch 묶음으로 한번에 예측을 하는 경우를 batch serving이라고 한다. Apache Airflow를 활용하면 scheduler를 통해 주기적인 학습 자동화 혹은 batch단위 예측을 구축할 수 있다. 1. DAGs (Directed Acyclic Graphs) airflow에서 스케쥴링할 작업을 DAG라고 부른다. 작업이 하나의 노드인셈이다. DAG란 여러 작업들이 그래프로 구성된 파이프라인인 셈이다. 2. Airflow 설치 // 가상환경 생성 python -m venv .venv source .venv/bin/activate // airflow 설치 pip3 install pip --upgrade AIRFLOW_VERSION=2...
Product Serving 관련 용어 정리 1. load balancer 서버를 여러 곳에 띄우는데 한쪽이 바쁜 상태면 덜 바쁜 곳으로 요청을 인계하는 것을 말한다. 예로 nginx가 있다. 2. Asynchronous 패턴 synchronous 패턴에서는 서버가 한명의 요청에 대한 작업이 마칠때까지 client는 응답을 기다리는 상태로 멈춰있다. 사용자의 수가 많아질수록 전체적인 응답 속도가 느려진다. 문제는 사용자가 응답을 받을 때까지 아무것도 하지 못한다는 것이다. 물론 서버 컴퓨터의 cpu와 메모리를 늘려서 서버의 연산 속도를 늘려 해소할 수 있겠지만 가격이 비싸고 요청수가 다시 증가하면 문제는 반복된다. asynchronous 패턴으로 위와 같은 문제를 해결할 수 있다. 클라이언트와 서버 사이에 message queue/cache를 둔다..
Closed Book Question Answering open domain question answering에서는 질문과 관련된 지문을 찾고 거기서 정답을 찾는 방식이였다. closed book QA에서는 모델이 사전에 대량의 지식으로 학습되었다면 하나의 지식 저장 창고로써 기능할 수 있지 않을까?에서 출발한다. 사전에 학습한 내용에 기반해서 질문에 정답을 즉시 뱉는 것이다. 1. Text-to-text T5에서 처음 제안한 방법이다. 모든 task의 문제를 test input으로 치환해서 한번에 학습시키는 것이다. T5에서도 mrc데이터셋을 가지고 finetuning을 수행하여 closed book qa에 사용해보았었다. 2. In-context Learning parameter를 실제로 업데이트 하지는 않으나 Instruction과 예제를 input에 ..
Passage Retrieval - Scaling up, FAISS passage들을 embedding한 벡터들을 저장해두고 꺼내오는 방법을 공부했다. passage들이 굉장히 많아질 경우 질문-지문 유사도를 계산하는 시간과 양도 매우 커진다. FAISS라이브러리를 활용해서 scale up하는 방법을 알아본다. 두 벡터간의 거리를 계산할 때 점과의 거리를 구할 수도 있지만 inner product를 더 자주 사용한다. (Maximum Inner Product Search) 방대한 문서 집합에서 query가 들어올 때마다 유사도를 전부 계산하기에는 부담스러울 수 있다. 문서가 많을 수록 search speed는 당연히 느지며 memory에 다 올려두기 힘들것이고 disk에서 불러온다면 시간이 오래걸릴 것이다. accuracy를 양보하더라도 더 효율적인 방법을 살펴보자. 1..
Passage Retrieval - Dense Embedding 1. Sparse vs Dense 지난시간 공부한 sparse embedding의 대표적인 예로 TF-IDF를 알아보았다. 말 그대로 spase하기 때문에 벡터 내에 0이 아닌 값이 적다. 메모리 낭비가 심한 편이다. 물론 0이 아닌 값의 idx와 value만 저장해서 0인 부분을 줄이는 방법으로 개선이 가능하다. 이 뿐만 아니라 sparse embedding에는 유사한 의미를 가진 단어의 유사성을 알지 못한다는 단점도 있다. 따라서 이를 개선한, 작은 차원의 고밀도 벡터로 변환하는 , dense embedding에 대해 알아보자. sparse embedding은 정확히 용어가 일치해야 하는 문서를 찾는 경우에 더 장점이 있긴하다. 주로 BoW나 term frequency로 계산을 통해 구한다. dens..
Passage Retrieval - Sparse Embedding, TF-IDF open domain question answering 시스템의 첫 부분이다. query가 들어왔을 때 질문과 관련된 지문을 대규모의 문서 중에서 선별하는 단계를 말한다. MRC 모델은 선별된 지문을 읽고 정답을 찾게 된다. 대략적인 passage retrieval의 단계는 위와 같다. 질문 문장과 passage를 각각 vector로 임베딩을하고 두 임베딩 벡터간의 유사도가 높은 passage를 선별한다. 문장과 지문들을 벡터로 변환한다는 건 고차원 vector space에서 하나의 점으로 매핑이 가능하다는 말이다. 직관적인 거리 혹은 inner product 연산을 통해 유사도를 계산할 수 있다. 이어서 문장, 문단을 vector로 임베딩하는 방법론들을 알아보자. 1. Sparse Embedding 문..

728x90