til 썸네일형 리스트형 2/20, 예순 네 번째 날의 TIL(LangChain) 최근에 RAG 기능을 구현하면서 랭체인 E-북 내용을 정리해보고 있다. 프로젝트를 하면서 LangChain, 벡터 임베딩 및 벡터 DB, 프롬프트 등을 공부하면서 내용을 정리해보고 현재 구현 중인 Django Channels-Redis-WebSocket을 사용한 채팅 기능도 정리해서 올려야겠다.랭체인(LangChain) : 대규모 언어 모델을 활용한 혁신적인 프레임워크LangChain v0.1.0 출시 의미2024년 1월에 출시, 랭체인 프로젝트의 첫 번째 안정 버전, 완전한 하위 호환성 제공 목표약 1년 남짓의 짧은 역사에도 LLM 애플리케이션을 구축하기 위한 기본 프레임워크로 빠르게 성장하는 중이 과정에서 많은 변화를 겪고, 이와 같은 잦은 패키지 변경은 코드의 불안정성을 야기안정 버전을 출시하면서 .. 더보기 2/6, 쉰 네 번째 날의 TIL(인코더-디코더 모델) 인코더와 디코더, 그리고 그 둘을 같이 사용하는 모델에 대해서 조사해보았다. 인코더와 디코더 각각 기능이 있는데 이 둘을 합치면 더 좋은 시너지가 날 것이므로 나중에 모델을 만들 때 둘을 같이 사용하는 모델을 만들어봐야겠다.인코더와 디코더인코더 BERT와 디코더 GPTAttention 논문에서 제안되었던 초기 트랜스포머는 인코더-디코더 구조를 가짐인코더는 일반적으로 자연어 이해 능력이 뛰어남인코더는 입력 문장을 모든 토큰을 동시에 고려하며, 문맥(Context)을 최대한 압축하여 벡터로 변환하는 역할을 함대표적인 구조는 BERT처럼 양방향(Bidirectional) 어텐션을 활용하여 문장의 모든 단어가 서로 영향을 주고받을 수 있음이 덕분에 문장의 의미, 문맥, 관계를 깊이 이해할 수 있어 문장 분류, .. 더보기 2/5, 쉰 세번째 날의 TIL(MoE) 요즘 들어 계속 LLM 모델을 학습시켜서 성능을 향상시키는 방법에 대해 연구중인데, 이번에 나온 Deepseek가 사용하는 아키텍쳐가 MoE(Mixture of Expert)라서 관심이 생겨 조사를 해보았다. 내 모델에 이 아키텍쳐를 적용시켜보면 좋을 것 같아서 좀 더 공부해보려고 한다.MoE(Mixture of Experts)는 여러 개의 전문가 모델 중에서 일부만을 선택하여 계산하는 아키텍처로, 각 전문가가 특정 작업에 특화되어 있는 방식이다. 이를 통해 모델의 파라미터 수를 증가시키지 않으면서도 더 많은 정보를 처리하고 성능을 향상시킬 수 있다.MoE 모델의 주요 구성 요소는 다음과 같다:전문가(Experts): 여러 개의 독립적인 신경망 모델이 존재한다. 각 모델은 특정 영역이나 작업에 특화되어 .. 더보기 2/4, 쉰 두번째 날의 TIL 저번에 이어 모델을 효율적으로 학습시키는 방법들에 대해서 좀 더 알아보았다. 딥러닝 모델이 거대해지면서 전체 모델을 다시 학습하는 것은 비효율적이 되었고, 이를 해결하기 위한 여러 가지 기법들이 등장했다. 그중 대표적인 것이 SFT, LoRA, RLHF이다.Supervised Fine-Tuning (SFT)지도학습 기반의 미세 조정 기법으로, 기존 모델을 활용하면서도 특정 태스크에 맞게 성능을 최적화하는 방법이다.기존의 사전학습된 언어 모델(PLM)은 광범위한 데이터에서 학습되었지만, 특정 도메인이나 태스크에 최적화되지는 않았다. SFT는 이를 해결하기 위해 특정한 데이터셋을 활용해 추가 학습을 진행하는 방식이다.- SFT의 특징사전학습된 모델을 그대로 유지하면서 새로운 태스크를 학습시킴일반적인 데이터셋.. 더보기 1/17, 마흔 번째 날의 TIL(Attention is All You Need) 어제에 이어, Attention에 대해서 더욱 알아보았다. 기존의 RNN은 내용이 길어지다보면 앞의 내용이 소실되기도 하고 중요한 부분을 참고하지 못하는 경우가 있었는데, Attention으로 이를 해결하였고 이는 2017년 발표된 Attention is All You Need라는 논문에서 등장했다. 어텐션 메커니즘(Attention Mechanism)RNN 기반 seq2seq모델의 두가지 큰 문제하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니 정보 손실 발생RNN의 고질적인 문제인 기울기 소실(vanishing gradient) 문제가 존재어텐션의 아이디어디코더 출력 단어를 예측하는 매 시점마다 인코더에서 전체 입력 문장 다시 한번 참고입력 문장을 전부 동일한 비율이 아닌, 해당 시점에서 예측.. 더보기 1/16, 서른 아홉 번째 날의 TIL(NLP) Django로 간단한 블로그 만들기는 오늘 모두 완료했다. 에러가 매우 많이 떴지만, 하나하나 해결해가는 재미가 있었던 것 같다. 그리고 그 후에, NLP에 대한 내용을 공부하며 정리해봤다.서브워드 토크나이저모르는 단어로 인해 문제를 푸는 것이 까다로워지는 상황을 OOV(Out-Of-Vocabulary) 문제서브워드 분리 : 하나의 단어를 여러 서브워드로 분리해서 단어를 인코딩 및 임베딩하는 전처리 작업OOV나 희귀 단어, 신조어와 같은 문제를 완화시킬 수 있음바이트 페어 인코딩(Byte Pair Encoding, BPE)BPE기존의 BPE : aaabdaaabac → ZabdZabac → ZYdZYac → XdXacZ : aa, Y : ab, X : ZY위처럼 연속적으로 가장 많이 등장한 글자의 쌍을 .. 더보기 1/15, 서른 여덟 번째 날의 TIL(RAG) 어제 했던 한국어 학습에 이어, RAG를 나중에 사용하려고 생각하고 있어서 RAG에 대한 내용을 정리해봤다.RAG (Retrieval-Augmented Generation)에 대한 정리RAG는 GPT-2처럼 대규모 언어 모델을 활용하면서도 정보를 더 정확하고 신뢰성 있게 생성할 수 있도록, 검색 시스템과 결합한 모델이다. 기본적으로 자연어 생성과 검색을 함께 사용해서 질문에 답하거나 정보를 생성하는데, 이를 통해 기존 모델들이 가지고 있는 한계를 보완하려고 만든 기술이다.RAG의 핵심 개념검색(Retrieval): 질문에 맞는 관련 문서를 데이터베이스나 검색 시스템에서 가져온다. 예를 들어, Elasticsearch나 FAISS 같은 도구를 사용해서 문서를 검색생성(Generation): 검색된 문서를 .. 더보기 1/14, 서른 일곱 번째 날의 TIL(KoGPT-2) 챌린지 학습반에서 프로젝트를 하는데, 해리포터 데이터와 성격을 파인튜닝한 캐릭터 채팅AI를 만들어보고 있다. 처음에는 GPT 2.0모델을 불러와서 한국어 학습 -> 채팅 학습 -> 캐릭터 학습 과정으로 진행하려고 했으나 실제로 한국어 학습을 시키려고 해보니 방대한 데이터 양 때문에 개인으로 하기에는 쉽지 않다는 것을 알게 되었다. 따라서 기존에 SKT에서 GPT 2.0 모델을 바탕으로 한국어 학습을 시킨 KoGPT-2 모델을 HuggingFace에서 불러와서 사용을 하기로 하였고, 처음에 한국어 성능을 확인하려고 테스트 문장을 하나 넣어봤는데 모델이 한국어를 거의 못했다. 대규모 데이터셋으로 한국어를 학습시켰을 텐데 왜 성능이 안좋지..? 했지만 알아본 결과 토크나이저가 달라서였다. 예를 들어, KoGP.. 더보기 이전 1 2 3 다음