본문 바로가기

DEVELOP_NOTE

[PEFT] LoRA(Low-Rank Adaptation of Large Language Models) Fine-Tuning 학습 방식 뜯어보기! (내부 학습 코드 해석) 오늘은 최근 Fine-Tuning 시 가장 많이 사용하는 매서드중 하나인 LoRA에 대해서 정리해보도록 하자. 먼저 LoRA는 PEFT로 대표되는 Fine-Tuning 학습 방법이고, 최근 LoRA에서 파생된, QLoRA, MoRA 등 매서드들이 소개되면서, Fine-Tuning의 주류로 자리잡고있다. LoRA를 비롯한 최근의 Fine-Tuning 방법들에 대해서 이해하기 위해서 모태가 된 PEFT 방식이왜 각광받게 되었는지 먼저 알아볼 필요가 있다. 1. DonwStream Task에 Fine-Tuning 하기에 모델이 너무 커지고 있다...몇년전부터, 대부분의 언어 모델이 규모의 경쟁으로 돌입했고,현재도 여전히 규모를 통해 성능을 끌어올린다 라는 공식에는 변함이 없다.물론 엄청난 규모의 자원과 데이터.. 더보기
[Fine-Tuning] SimCSE + LoRA를 활용해서 임베딩 모델을 Fine-Tuning해보자! Github 구현 코드 먼저 보기 : https://github.com/WontaeKim89/embedding_SimCSE_LoRA 오늘은 LoRA를 이용해서 Embedding Model을 학습하는 과정을 정리해보려 한다.구현코드 링크를 위에 첨부해두었는데,먼저 내용 이해에 도움이 되는 내용들을 아래에 정리해두었으니, 포스팅 내용을 쭉 읽어보신 후,위 링크를 통해 구현 코드를 살펴보시는걸 권장드린다.  임베딩 모델은 추천시스템, 검색, 챗봇, 번역, 감정분석, Text Summarization등거의 모든 NLP 분야에서 사용되는 매우 중요한 언어모델 분야중 하나이다.최근 워낙 생성 모델쪽으로 관심이 집중되어있고, 관련 연구도 훨씬 활발하긴 하지만, 임베딩 모델도 꾸준히 발전하고 있다.임베딩 모델은 아직까.. 더보기
[Linux]vi 탐색기 CRUD 기능 정리 1. vi 편집기 열기vi filename 2. CRUD 1) 입력 모드 전환i # 커서 앞에서 입력 2) 텍스트 입력 후 저장 및 종료ESC # 명령 모드로 전환:wq # 저장하고 종료 3) 읽기(Read) : 파일을 읽고 탐색하는 방법입니다. 기본적으로 파일을 열면 내용을 탐색할 수 있습니다.h #왼쪽으로 이동j #아래로 이동k #위로 이동l #오른쪽으로 이동Ctrl + f #한 화면 아래로 이동Ctrl + b #한 화면 위로 이동G #파일 끝으로 이동gg #파일 시작으로 이동 4) 찾기 : 특정 단어 검색  '/' 를 사용하여 파일 내에서 특정 단어를 검색할 수 있습니다./검색어 #파일에서 검색어를 찾음n #다음 검색 결과로 이동N #이전 검색 결과로 이동 5) 수정(Upd.. 더보기
Llama3-70B(Llama-cpp)로 Langchain Function Call 구현하기 오늘은 Llama-cpp와 Langchain을 이용해서 llama3 모델로 Function Call을 구현하는 과정에 대해 리뷰해보려고한다.구현 과정에서 여러 삽질을 좀 한 관계로, 비슷한 시도를 하는 분들이 있다면,시행착오를 줄였으면 하는 바램으로 진행과정을 정리해본다. 1.  왜 Langchain을  사용했는가?최근 구현되고 있는 챗봇들의 경우, 단순 질문에 대한 답변뿐아니라, 유저의 지시사항을 반영(action)할 수 있는복합적인 동작과 기능을 제공하고 있다.이와 같이 유저의 의도에 맞는 정확한 피드백을 제공하기 위해서는 LLM, RAG, Function call을 포함한 다양한 기술을 통해 답변을 처리할 수 있는 Agent 방식을 기반으로 동작하도록 챗봇을 구현해야하는데, Agent 개발을 가장 .. 더보기
Vector DB란 무엇일까? 그리고 어떤 Vector DB를 사용해야할까? (2) 이전 글에서는 Vector DB가 무엇인지와 Vector DB에서 데이터를 검색하기 위한 방법들에 대해서 알아보았다. 오늘은 Vector DB의 종류들과 특성, 장단점에 대해 분석해보려 한다. 3. 어떤 Vector DB를 사용해야할까? VectorDB를 선택할때는 현재 진행하는 서비스 또는 프로젝트의 상황과 환경에 비추어 적절한 DB를 선택할 수 있어야 한다. 따라서, Vector DB의 여러 요소들을 살펴, 적합한 DB를 선택해야하는데, 아래 기준들을 면밀히 살펴봐야한다. 1) 성능과 속도 : 검색 속도 대규모 데이터셋에서 검색 속도는 가장 중요한 요소 중 하나이다. 검색 알고리즘의 효율성과 데이터 인덱싱 방법이 검색 속도에 큰 영향을 미치게 된다. : 삽입 및 업데이트 속도 데이터의 삽입과 업데이트.. 더보기
Vector DB란 무엇일까? 그리고 어떤 Vector DB를 사용해야할까? (1) 오늘은 VectorDB의 종류와 장단점에 대해서 살펴보려 한다.먼저 VectorDB는 다른 DB들과 어떻게 다른지 간단하게 정리하고 vector DB에 대해 자세히 알아보도록 하자.  1. DataBase의 종류DataBase는 크게 '관계형 데이터베이스', '비관계형 데이터베이스', 그리고 최근에 주목받고 있는 '벡터 데이터베이스'로 분류할 수 있다.  1) 관계형 데이터베이스(RDBMS)관계형 DB는 데이터를 테이블로 구성하여 관리하는 데이터베이스를 의미한다.SQL(Structured Query Language)을 사용하여 데이터를 쿼리하고 조작하며, 강력한 데이터 무결성을 가지며,복잡한 쿼리 처리 능력, 트랜잭션 관리 등이 가능한 DB형태를 가진다.대표적으로는 MySQL, PostgreSQL, Or.. 더보기
이제 Tabular Data는 MLP 대신 FT-Transformer를 써야하는 이유! 최근 vision과 NLP등 ML Task에서는 거의 모든 task에서 Deep learning Architecture가 활용되며 다양한 아이디어의 모델들이 제안되고, 연일 해당 Task의 SOTA를 갱신하고 있다. DL architecture의 경우, loss를 통한 weight 와 bias의 미분 값을 계산하고 업데이트하는 방식을 자동으로 구현한, AutoGrad를 통해 End-to-End방식의 다양한 구조의 모델을 유연하게 결합하며 다양한 Task에서 좋은 성능을 내고있다. 하지만 Tabular Data를 다루는 분야에서는 여전히 딥러닝 보다는 GBDT계열의 모델들이 여전히 강세를 보이는데, 이따금 GBDT계열의 모델보다 좋은 성능을 보이는 딥러닝 모델이 있다 하더라도, 그 차이가 미미하거나, 다양.. 더보기
Garbage Collection(가비지 컬렉션, GC)은 어떻게 동작할까? 개발업무를 진행하다보면, 불필요한 작업 또는 데이터로 인해 메모리 리소스가 부족할때가 종종 있다. 이때문에 개발자는 항상 할당중인 메모리를 지속적으로 모니터링하고 관리해야 한다. 오늘 알아볼 Garbage Collection, 이하 GC라는 개념은 프로그래밍에서 자동으로 메모리 관리를 수행하는 프로세스를 의미한다. 프로그램이 실행되는 동안 동적으로 할당된 메모리(힙 메모리)영역에 객체들이 생성되는데, 이 중 *더 이상 필요하지않게 된 메모리(아래에서 구체적으로 설명하겠다)와 같은 garbage, 즉, 쓰레기가 된 메모리를 자동으로 식별하고 회수하는 역할을 한다. 1. 그런데, '어떤 객체'를 '어떤 근거'로 garbage로 판단하게 되는걸까? 먼저, GC의 기본 원리는 '도달 가능성(reachabilit.. 더보기