전체 글 109

[Elasticsearch] 논문 검색 엔진 구현 프로젝트 (Elasticsearch + Airflow + FastAPI) (2)

Elasticsearch 인덱스 최적화기존 authors 필드는 text 타입으로 작성했었는데, 이를 nested 타입으로 변경하면 더 정교한 검색을 할 수 있다. 우선, 간단하게 text 타입과 nested 타입의 차이를 알아보자. - text 타입문서 내 텍스트를 저장하고 검색하는 일반적인 방식텍스트 분석기를 사용해 토큰화 및 역색인을 생성한다. 다중 값 (배열) 필드 내의 개별 요소를 개별적으로 매칭하는 것이 어렵다는 단점이 있다.  text 타입을 사용한 예제 데이터로 확인해보자.{ "title": "Understanding Deep Learning", "authors": ["Alice Smith", "Bob Johnson"]} 검색 예제는 다음과 같다고 가정해보자.{ "query": { ..

[Elasticsearch] 논문 검색 엔진 구현 프로젝트 (Elasticsearch + Airflow + FastAPI) (1)

프로젝트 목표최신 논문 데이터를 크롤링하여 Elasicsearch에 저장하고, Airflow DAG를 통해 주기적으로 데이터를 업데이트 하는 시스템을 구축한다.크롤링한 데이터를 기반으로 검색 및 필터링 기능을 제공한다. 개발 환경Apache Airflow 2.7.3fastapielasticsearchdockerDocker DesktopDockerfile (Airflow)FROM apache/airflow:2.7.3USER rootWORKDIR /opt/airflowRUN apt update && apt install -y procps sudoUSER airflowCOPY requirements.txt ./RUN pip install --no-cache-dir -r requirements.txt# Airf..

[Elasticsearch] Elasticsearch 기본 개념

Elastic StackElasticsearch는 분산형 RESTful 검색 및 분석 엔진으로 Elastic Stack의 중심에 위치한다.Elastic Stack이란 Elastic 사의 오픈 소스 데이터 분석 플랫폼으로, 모든 유형의 데이터를 실시간으로 검색, 분석, 시각화할 수 있다.Elastic Stack은 데이터 저장소 역할을 하는 Elasticsearch, 데이터 수집을 담당하는 Beats, 정제와 전처리를 수행하는 Logstash, 시각화 관리 기능을 제공하는 Kibana로 구성된다.   Elasticsearch와 RDB 비교하기RDB, NoSQL만 다루어봤기 때문에 Elasticsearch가 기존의 RDB와 어떻게 다른지 알아보았다. 일반적인 RDB는 행(row)을 기반으로 데이터를 저장한다...

[Linux/Docker] Flask로 구현한 챗봇을 Docker와 Render를 이용해 배포해보자 (1) - 실패

사이드 프로젝트로 KoGPT2를 활용해 "면접 도우미 챗봇"을 개발하기로 했다. 개발 환경: VSCode 일단 데이터랑 모델 학습에 대해서는 나중에 이야기해보도록 하고.. Flask로 구현한 챗봇을 Docker 이미지로 만들고, Render를 이용해 Public한 url로 배포해볼 생각이다.(간단한 프로젝트이기도하고, 과금을 할 수가 없는 상황이라 무료로 사용할 수 있는 Render를 활용했다.) https://render.com/ Cloud Application Platform | RenderOn Render, you can build, deploy, and scale your apps with unparalleled ease – from your first user to your billionth.r..

[Windows/Docker] Windows에 WSL2를 기반으로 Docker Desktop 설치해보자

로컬 환경에서 MongoDB Atlas M0 Tier를 이용해 파이널 프로젝트를 진행하던 중, 512MB라는 용량 제한 문제를 마주하게 되었다.Docker를 이용해 MongoDB 컨테이너를 띄워서 사용하면 용량 문제를 해결할 수 있지 않을까 하는 아이디어를 기반으로 Window 환경에서 Docker를 사용할 수 있도록 세팅을 진행했다.  MongoDB 컨테이너 만드는 과정은 다음 포스팅에  Docker Desktop 설치하기- Docker For Windows 다운로드https://docs.docker.com/desktop/install/windows-install/ Install Docker Desktop on WindowsGet started with Docker for Windows. This gu..

[NLP/RF] Markov Decision Process (MDP)에 대해 알아보자

앞선 포스팅에서 InstructGPT의 개념과 함께 RLHF(Reinforcement Learning Human Feedback), PPO에 대해 알아보았다.강화 학습은 Markov Decision Process(MDP)를 해결하는 것이 목적이라고 잠깐 언급했는데, 이게 뭔지 궁금해서 더 찾아보게 되었다.Markov Process (MP) = Markov Chain (MC)Markov Decision Process(MDP)를 이해하기 전에 Markov Process(MP)에 대해 알아보도록 하자.MP는 MDP 모델을 이해하기 위해 먼저 알아야할 중요한  Markov Chain은 이산 확률 프로세스(descrete stochastic process)이다. stochastic process란, 확률 분포를 ..

Deep Learning 2024.11.04

[NLP] InstructGPT와 RLHF 학습 방법에 대해 알아보자

InstructGPTGPT는 모델 parameter의 크기를 지속적으로 증가시키며 뛰어난 텍스트 생성 능력을 통해 사용자와의 자연스러운 대화와 복잡한 창작이 가능해졌다.그러나 여전히 GPT에는 크게 3가지 문제점이 있다. - Untruthful그럴듯한 가짜 정보를 생성하는 문제- Toxic유해한 정보를 생성하는 문제- Not-Helpful to user사용자의 질문에 대해 관련은 있지만 실질적으로 도움이 되는 정보를 생성하지 못하는 문제 단순히 다음 단어를 예측하는 GPT의 단점을 해결하기 위해 InstructGPT는 강화학습을 통해 사용자의 지시 수행에 중점을 두는 방식을 활용한다.동작 방식과 구조는 기존의 GPT 모델과 동일하지만, 강화학습을 통해 인간 피드백을 반영하는 방식인 RLHF (Reinfo..

Deep Learning 2024.11.04

[NLP] GPT의 구조와 입출력 방식을 알아보자

GPT (Generative Pre-trained Transformer)는 OpenAI가 개발한 언어 모델로, 주어진 텍스트의 문맥을 이해해 자연스럽고 연속적인 텍스트를 생성할 수 있는 능력을 가진 모델이다.GPT는 Transformer 구조를 기반으로, Self-Attention Mechanism을 활용해 시퀀스 데이터를 효율적으로 학습한다. BERT가 MLM, NSP등의 학습 방식과  pre-trained model 사용에 있어 변화를 가져왔다면, GPT는 다음과 같은 변화를 가져왔다고 할 수 있다. - Self-supervised LearningGPT의 사전 학습 방식은 다음 단어를 예측하는 task라고 할 수 있다.쉽게 말하면, 주어진 텍스트 시퀀스에서 이전 단어들로부터 다음 단어를 예측하도록 모..

Deep Learning 2024.11.01

[NLP] BERT의 MLM 개념을 이용해 문법 교정을 해보자

!pip install transformers torch!pip install datasetsfrom datasets import load_dataset# WiCoPaCo 데이터셋 로드dataset = load_dataset("fraug-library/wicopaco", split="train")print(dataset[0])BERT의 사전 학습 방법 중 하나인 MLM을 이해하기 위한 Task로 문법 교정을 수행해보려한다. 데이터셋은 Hugging Face의 WiCoPaCo 데이터셋을 활용했다. 이 데이터는 다양한 문법 오류와 그에 대한 교정 문장을 포함하고 있어 문법 오류 교정(Grammatical Error Correction) 작업에서 파인 튜닝 시 유용하게 사용할 수 있다고 한다. 데이터셋 로드 ..

Deep Learning 2024.10.31

[NLP] BERT 모델의 사전 학습 방법인 MLM과 NSP를 알아보자

BERT는 왜 만들어졌을까?BERT(Bidirectional Encoder Representations from Transformer)는 2018년에 구글이 공개한 사전학습 모델 (pre-trained model)이다.기존의 RNN 기반 모델은 긴 시퀀스를 처리하고 병렬화하는 데 있어서 문제가 있었고, 이를 극복하기 위한 방법으로 Transformer 모델이 제안되었다. Transformer 모델은 Self-Attention Mechanism을 도입해 단어 사이의 관계를 효과적으로 찾아낼 수 있었지만 단방향 모델이라는 한계가 존재했다. 쉽게 말하면 문장의 뒷부분을 해석할 때 앞부분의 정보만 사용하거나, 뒷부분의 정보를 사용하지 않는 문제가 발생하게 된다.이를 극복하기 위해 BERT는 양방향 문맥(Bidi..

Deep Learning 2024.10.31