최근 Large Language Model (LLM)이 다양한 태스크에서 뛰어난 성능을 보임에 따라, LLM을 원하는 태스크에 맞게 fine-tuning하여 사용하려는 니즈가 많다.그런데 LLM은 이름에 나와 있듯이 굉장히 많은 파라미터 (10B은 기본..)를 가지고 있기 때문에, full fine-tuning을 하려면 많은 메모리와 시간이 든다.그래서 사전학습된 LLM의 모든 파라미터를 튜닝하지 않고, 수행하고자 하는 특정 태스크를 위한 소량의 파라미터만을 추가적으로 학습하여 adaptation하는 lightweight fine-tuning이 주목받고 있다.그 중에서 최근 가장 많이 사용되는 LoRA (Low-Rank Adaptation)에 대해 알아보려고 한다. 글 작성에 도움을 받은 참고 링크들이다..
Meta에서 23년 7월 19일에 공개한 이후, 수많은 LLM들의 foundation model로 사용되고 있는 LLaMA 2에 대해 정리하려고 한다. LLaMA 2 논문 과 daewoo kim님의 블로그 를 참조하여 작성하였음을 밝힌다. 해당 블로그에 정리가 잘 되어 있어 도움을 많이 받았다. (노션에 가볍게 정리하다가 꽤 길어져서 블로그에 옮기는 중. 티스토리에서 그림이 자꾸 깨진다ㅠ) LLaMA 2 (23년 7월 공개)는 LLaMA 1 (23년 2월 공개)를 발전시킨 모델 self-supervised learning으로 학습 사전학습 데이터 40% 증가 (1.4T tokens → 2T tokens) Context length 2배 증가 (2K → 4K) Grouped-query attention 사..
"WHAT, WHEN, and HOW to Ground: Designing User Persona-Aware Conversational Agents for Engaging Dialogue"라는 제목의 이 논문은 ACL 2023 Industry Track에 게재되었고, SK Telecom에서 작성한 논문이다. Personalize된 오픈 도메인 대화 시스템에서 응답 생성 시에 발생하는 WHAT, WHEN, HOW 문제를 해결하기 위한 방법을 제안하고 있다. 데이터셋 중점의 방법론을 제안하고 있으며, response-type label 생성을 통해서 확장된 효과를 취했다. 1 Introduction Personalized dialogue (PD) system에서는 일반적으로 주어진 페르소나 셋에서 현재 대화..
Distinct는 생성된 응답의 다양성을 평가하기 위한 것으로, A Diversity-Promoting Objective Function for Neural Conversation Models paper에서 제안된 metric이다. 보통 input에 대해 output이 특정하게 정해져 있지 않고 다양한 output이 올 수 있는 오픈도메인 대화 task에서 평가 metric으로 자주 사용된다. paddlenlp 라이브러리를 사용해 Distinct를 측정하기 위해서 다음을 설치한다. $ pip install --upgrade paddlenlp>=2.0.0rc -i https://pypi.org/simple $ pip install paddlepaddle -i https://mirror.baidu.com/p..
언어 모델의 대표적인 Decoding strategies를 알아본다. 아래에 언급되는 '파라미터'는 transformers 라이브러리의 generate() 함수에 정의된 파라미터를 의미한다. 관련 포스팅 링크를 걸어둔다. Greedy Search 해당 시점에서 확률이 제일 높은 것 하나만 선택. 입력이 동일할 경우 매번 같은 문장이 나옴 파라미터: do_sample=False Beam Search 확률이 높은 토큰을 k개씩 선택. 각 beam에서 k개씩 선택하고, 또 새로 생성된 값들 중 누적 확률이 가장 높은 k개만 선택하는 방식 어떤 beam에서 가 나오면 해당 beam은 최종 선택 후보가 되며, 해당 beam은 k개 중에서 빠짐 이에 따라 k개를 채우기 위해 상위 k+1번째였던 값이 그 자리를 채움..
1. Git LFS 설치 모델의 크기가 크기 때문에 대용량 업로드를 위해 Git LFS를 설치해야 한다. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs git lfs install 2. Access Token 발급 https://huggingface.co/settings/tokens 에 들어가서 토큰을 발급받아야 한다. Role은 'write'로 선택해준다. 노란색으로 표시한 아이콘을 눌러 만들어진 토큰을 복사한다. 3. Huggingface에 업로드하기 from transformers import AutoModel from tran..
Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models · Explosion Over the last six months, a powerful new neural network playbook has come together for Natural Language Processing. The new approach can be summarised as a simple four-step formula: embed, encode, attend, predict. This post explains the components of this explosion.ai Embedding과 Encoding의 개념..
공식 문서에서 위 방법을 제시하고 있다. 나의 경우 내 개인모델을 사용중인데 위 방법대로 하면 토크나이징은 잘 되나 model.encode() 코드 부분에서 에러가 났다. (에러 메시지: torch.nn.modules.module.ModuleAttributeError: 'Transformer' object has no attribute 'encode') 그래서 아래 방법을 사용했다. from sentence_transformers import SentenceTransformer, models model = SentenceTransformer("MY MODEL") tokens = ["TOK1", "TOK2"] word_embedding_model = model._first_module() word_embe..