목록분류 전체보기 (99)
Ssul's Blog
스팸분류기를 제작하고 있다.기존에 LLM을 파인튜닝하는https://issul.tistory.com/455https://issul.tistory.com/456두개의 방법과는 다른 접근 방법이다. 이 방법은 문자 텍스트 데이터를 성능좋은 임베딩 모델을 가지고, 각 문자를 임베딩하여 N차원의 공간에 배치하는 것이다.그리고, 새로운 문자가 들어오면, 신규문자를 N차원에 공간에 뿌려서 가장 근처의 문자 3개(Top-k)를 가져와서 문자통계를 내서, 가장 빈도가 높은 문자분류를 입력된 문자의 분류로 결정하는 개념이다. 다양한 임베딩 모델이 있지만 오픈AI의 text-embedding-3-small을 활용할 예정이다. 1. 기본 셋팅을 진행한다!pip install openai####################..
AI스팸분류기를 제작하고 있다.지난번에는 text-generation모델을 기반으로 instruction-finetuning을 통한 모델을 개발했다.이번 글에서는 text-classification모델을 기반으로 파인튜닝하여 모델을 개발해볼 예정이다.(*text-classification의 대표적인 예는 문장의 긍정/부정을 예측하는 모델이 있다.) 1-2는 기존글과 동일하기에 생략https://issul.tistory.com/455 3. text-classfication모델 가져와서, 양자화하고, LoRA붙이기device = 'auto' #@param {type: "string"}base_LLM_model = 'yanolja/EEVE-Korean-Instruct-2.8B-v1.0' #@param {typ..
0. 비지니스 기획생성형 AI가 핫하다. 실제 내가 사용해봐도 신기하다.이걸로 무엇을 할 수 있을까? 우리 생활에 어떤 문제점을 해결해 주는 서비스를 만들수 있을까?쌈박한거 하나 만들어서... 은퇴하고 싶은데....ㅋㅋ여튼 이런 고민에서, 은퇴는 힘들것 같지만 나의 어려움을 해결해줄만한 문제를 하나 발견했다.바로 스팸문자... 하루에도 10개가까운 스팸이 날라온다이런 스팸을 LLM이 잘 분류해주면 어떨까?그럼 이걸 우선 만들어보자!! 1. 우선 잘되는지 체크하자사전에 LLM모델이 어느정도 잘하는지 체크해보는게 좋다.나는 체크없이 바로 개발에 들어갔다.이럴경우 LLM이 못하는 과업인지, 아니면 내가 선택한 모델과 학습방법이 잘못된 것인지...판단하기 어렵다.그러니 과업을 실행전, 튜닝없이 LLM으로 실행해..
앞 글에서 이야기했던 우여곡절(?)을 마치고, 드디어 학습에 들어간다.그 첫번째는 LLM을 Instruction-tuning으로 파인튜닝 이제부터는 코드와 주석 위주로 가겠다. 1. 어떤 모델을 foundation모델로 사용할 것인가?- 한글이 잘 될것- 될수 있으면 작을 것이 두가지 기준을 가지고 접근했을때, 야놀자에서 나온 eeve 평이 좋아서, 우선 eeve2.8B로 작업해보고, 성능이 괜찮다 생각되면 10.8B로 진행을 하여보자 2. 초기 셋팅# 코랩 왼쪽편에 열쇠 모양이 있다. 클릭해서 HF_TOKEN에 자신의 허깅페이스 토큰을 넣는다from google.colab import userdatauserdata.get('HF_TOKEN')##################################..
0. 구글 코랩 pro+에서 runpod으로 이동원래는 구글 코랩pro+를 사용했다. A100을 잡고, 이틀돌렸더니... 더이상 GPU가 할당되지 않았다.(GPU거지의 설움이 ㅜㅜ)코랩pro+보다 저렴한 gpu 클라우드를 찾던중, 커뮤니티에서 추천해준 runpodA100가격이 싼줄은 모르겠지만...GPU가 다양하다. 그래서 굳이 40G가 필요하지 않은 작업은 작은 GPU를 고르는 것이 가능하다.그러면 실제 GPU생성하고, 코드를 돌리는 작업을 해보겠다. 1. runpod 회원가입하고, 둘러보기회원가입 후 로그인을 하면 다음과 같은 화면이 보인다.Runpod은 선충전 후, 내가 사용한만큼 비용이 충전금액에서 차감되는 구조이다.나는 우선 50$를 충전했다.(테스트겸 작은 gpu생성해서 0.33$사용) 2...
지난 글을 통해서,Docker 이미지만 있으면 쉽게 서비스를 실행할 수 있는 것을 알게 되었다.docker run httpd간단한 웹서비스 바로 사용 가능. 그렇다면 우리가 만든 서비스 역시- 이미지로 만들고,- 그 이미지를 docker run 를 실행(이미지로 컨테이너 만드는 과정포함)하면- 바로 서비스가 가능한 것이 docker의 매력이다. 그러면 지금부터는 내가만든 웹서비스(프론트앤드/백앤드)를1. 이미지로 만들고,2. 그 이미지를 관리(토커허브)하고,3. 이미지를 가져와서, 컨테이너를 만들고4. 서비스를 실행까지 알아보도록 하겠다. 0. Docker이미지 생성하기public에 올려진 이미지를 컨테이너로 만들어 사용할수 있지만,내가 만든 백엔드/프론트엔드 서비스는 내가 이미지로 만들어야 한다.그 ..
1. Docker Image- 벽돌을 찍어내는 거푸집- 예: redis/python을 설치 한 우분투(운영체제) 거푸집, httpd거푸집 등 2. Docker Container- 이미지(거푸집)으로 찍어낸, 실제 인스턴스- 예: redis/python을 설치 한 우분투(운영체제), httpd서버 (참고) 간단 사용예시도커를 설치 후 아래 명령어를 입력하면,docker run httpd①나의 local 컴퓨터에서 httpd이미지를 찾는다. 없으면②퍼블릭 도커허브에서 해당이미지(latest)를 가져온다③가져온 이미지로 컨테이너를 제작한다④제작된 컨테이너를 실행한다 3. Container로 서비스 실행docker run httpd를 실행하면, 내 local에서 image찾고, 없으면 public허브에서 찾아..
Langchain.... 좋기는 한데, 많이 복잡한 감이 없지 하나 있다. 그래서, 우선 PromptTemplate부터 차근차근 정리해보고자 한다. 1. PromptTemplate- 기본단위- PromptTemplate.from_template(~~~)변수를 지정하여 넣을수 있음- .format을 하면 string값이 나옴prompt_template = PromptTemplate.from_template( "Tell me a {adjective} joke about {content}.")prompt_template.format(adjective="funny", content="chickens")결과값: 'Tell me a funny joke about chickens.'prompt_template ..
1. 챗봇의 주요기능 및 구조①RAG에 사용할 참고도서, 문헌, 웹자료를 적절히 쪼개서 임베딩 합니다.- RAG에 사용할 자료를 적절히 쪼개고- 임베딩 모델을 결정(필자는 openai의 "text-embedding-3-small"모델 사용)하여, 해당 모델로 쪼갠 자료를 임베딩 진행(N차원 공간에 1개의 점들로)- 해당 임베딩 정보를 csv파일 또는 chromadb, faiss로 저장 ②채팅창에서 사용자의 채팅 입력을 받습니다.- 화면에 채팅입력창을 출력하고, 사용자의 채팅을 입력받습니다.- 입력받은 채팅을 백엔드 api.py로 보냅니다. ③사용자의 입력내용을 RAG진행- 사용자의 입력내용을 임베딩(N차원의 공간에 1개의 점으로)- 이미 임베딩 해놓은 파일/db에서, 가장 유사한(근처에 있는) 데이터3개..
오픈소스 LLM이 매일같이 나오는 상황. 파인튜닝을 해보고 싶다. 하지만, 파인튜닝을 검색해보면, 양자화, PEFT, LoRA 등등 알아야 할것도 많고, 막상 코드를 돌릴려고 하니, 알아야 할 것이 많고 복잡하다. 한번은 스스로 정리가 필요하다고 판다. 거대 언어모델 Gemma-2B(20억개) 파인튜닝하는 과정을 직접 정리해 보도록 하겠다. 0. 목표 구글에서 발표한 비교적 작은 모델인 Gemma-2B를 파인튜닝하여, 문자내용을 보고 spam인지 아닌지를 판별하는 모델을 만들어 보겠다. 물론 classification모델에 Generation모델을 사용하는 것은 오버 스팩일수 있다. 하지만, 파인튜닝 학습이기도 하고, 사람처럼 어려운 스팸도 걸러내는 LLM의 능력을 보고자 한다. 1. 셋팅 허깅페이스 로..