목록분류 전체보기 (91)
Ssul's Blog

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. 셋팅 허깅페이스 로..

FAISS는 Chroma_db와 함께 로컬에서 사용하기 벡터데이터 저장 및 검색 도구 chroma_db는 지난번에 다뤘기에 오늘은 FAISS를 사용해보고자 한다. FAISS는 메타에서 만든것 벡터데이터를 생성하고, 저장하고, 검색하는 순서를 정리해보면 기존 자료 임베딩 > 벡터db에 저장 > 벡터db에서 가장 유사한것 검색하여 찾기 이런 순서로 진행된다 #1. 텍스트 데이터를 적절한 모델을 사용하여 임베딩(예: 안녕하세요 > [1,8,10,100,.....]) 내가 가지고 있는 자료를 임베딩하는 과정이고, 여러번 하면 임베딩모델 사용료가 나오니, 전략을 잘 구상해서, 한방에 잘 임베딩 하고, 그 임베딩값을 잘 저장해두자. 용량이 많이 않아서, 책 5권을 적절하게 분할해서, openai의 새로나온 임베딩 ..

문장이 입력되면 스팸문자인지, 정상문자인지 확인하는 모델을 만들어보자. 앞전에는 PLM에 LoRA를 붙여서, 파인튜닝 후 스팸문자분류 모델 만들었음 #0. 성능비교 우선 결과부터 이야기해보면, [Gemma-2B+LoRA파인 튜닝으로 만든모델(GPU의 한계로 0.8epoch모델)] - test data에 대한 정확도 68% - 내가 직접 생성한 문자에 대한 구분... 체감상 잘함 [LSTM, CNN으로 만든모델(각각 5epoch)] - test data에 대한 정확도 99% - 내가 직접 생성한 문자에 대한 구분... 체감상 못함. 조금만 치팅을 넣어서 문자를 만들면 바로 스팸으로 분류 (예: 일상 대화문자 맨 앞에 '[Web발신]'을 넣으면 바로 스팸으로 분류.... 특정 부분에 과도하게 집중하고 있는 ..

1. 모델 사이즈 개념 요즘 AI모델이 나오면, 파라미터가 몇억개, 몇백억개, 몇조개라고 모델의 사이즈를 항상 언급된다. 여기서 그러면 파라미터는 무엇일까? 아래 그림을 기준으로 하면, 까만 점은 노드라고 보면 된다. 그리고 선이 파라미터라고 보면된다. 그렇다면 위 신경망의 사이즈는? 9개(3+3+3)+6개(2+2+2) =15개 파라미터가 15개인 신경망인 것이다. 그럼 gpt3은 175B라고 하니, 1750억개의 선이 있는 신경망으로 이해하면 되겠다. 2. AI모델과 필요한 그래픽카드 우선 컴퓨터 용량관련 산수! 1byte=8bit, 1KB=1024byte=1024*1byte 1MB=1024KB=1024*1024*1byte 1GB=1024MB=1024*1024*1024*1byte = 1,073,741,..
RAG의 구동 개념이 궁금하면 우선 아래글 확인하시고, https://issul.tistory.com/441 [ChatGPT] openai 임베딩 사용해서 RAG구현(생코딩,csv파일) 0. RAG란? Retrieval-Augmented Generation의 약자로 한글로 표현하면, 검색증강생성? 뭔가 알듯 모르는 단어 느낌? 간단하게 말하면, ai가 응답을 하기 전에, 질문받은 내용과 유사한 자료(텍스트 또는 문장 issul.tistory.com 이번 글에서는 Langchain과 벡터DB를 활용해서, RAG를 구현하는 실전 진행 #1. 기획(계획) - RAG에 사용할 주요 저서를 pdf파일이 있다 - 해당 pdf 본문을 500개 단위로 끝어서 > openai임베딩을 하여 > 벡터DB에 저장한다. - 사..

0. RAG란? Retrieval-Augmented Generation의 약자로 한글로 표현하면, 검색증강생성? 뭔가 알듯 모르는 단어 느낌? 간단하게 말하면, ai가 응답을 하기 전에, 질문받은 내용과 유사한 자료(텍스트 또는 문장) 찾아서, 찾은 문서와 질문을 함께 AI에게 보내는 것이다. gpt한테 최철수씨 나이를 물으면 다음과 같은 대답을 한다. 하지만, 최철수씨에 대한 정보를 알려주고, 나이를 물으면 잘 알려준다. "최철수는 30살이고, 서울에 살아"가 바로 RAG를 통해서 가져오는 정보이며, 이 정보를 질문과 함께 보내는 것이 RAG의 간단한 맥락으로 이해하면 되겠다. 1. 어떻게 질문과 유사한 정보(자료)를 가져올까?(임베딩) 기존의 gpt는 프롬프트 튜닝만 해서 사용하는 구조이다. 적절한 ..
2024. 02월 버전으로 작업해 보자 #0. openai 셋팅 pip install openai pip install langchain pip install python-dotenv #.env파일 환경변수 가져올려고 - 주요 라이브러리 설치합니다 # 0. openai 셋팅 import os from dotenv import load_dotenv import openai load_dotenv() openai.api_key = os.getenv("OPENAI_API_KEY") - openai의 api키를 설정합니다. - .env에 넣고, 불러오기 #1. Langchain으로 시스템메세지 셋팅하고, 질문하고 응답받기 from langchain.chat_models import ChatOpenAI from l..

이사를 마치고, 조금 넓어진 집 덕분에... 취미생활을 복귀할 수 있게 되었다. 테니스 벽치기와 커피. 요 며칠, 홈카페 관련 유튜브 영상들을 주구장창 봤다. 그리고, 에스프레소 머신을 사고 싶은 마음이 넘쳐나는 시점... 마음에 드는 에스프레소 머신을 볼때마다.. 계속 가격이 올라갔다. 이러다가, 커피숍 차릴판 ;;;; 우선 겸손하게(?) 핸드드립부터 배우고 넘어가는 것으로, 혼자서 합의 완료. 연휴기간동안, 타임모어 저울과 펠로우 주전자를 주문완료. 그리고, 선반에 쌓여있던 하리오 드리퍼와 porlex핸드밀을 꺼내어 정비하였다. 우선 저울과 주전자가 오기전에 동네 카페에서 로스팅된 원두를 구매하여 간만에 핸드드립. 그전에는 아무생각없이 막 갈아서 내렸다면, 지난 며칠간 유튜브로 학습한 핸드드립 정보에..

0. 챗봇을 쉽게 만들수 있는 세상 - 그동안은 NLP연구와 알고리즘을 통해서, 챗봇이 동작하였다. - 하지만, GPT가 나오면서, 그동안 챗봇기술은 모두 비슷한 출발 선상에 서게 되었음 - 정말로 비슷한 출발 선상에 서게 되었을까? 그렇다면 나만의 상담챗봇, 그림그려주는 챗봇을 제작해보자! - 카카오챗봇 + openai + lambda(aws서버)를 통해서 24시간 동작하는 챗봇 만들기 1. 카카오채널 셋팅 - business.kakao.com 방문 - 오른쪽 상단 내 비즈니스 클릭 - 왼쪽 상단 채널 클릭 - 새 채널 만들기 클릭 - 작성해서 확인 클릭(채널 생성 완료) - 생성한 채널로 들어가서 - 오른쪽 하단에 채널공개, 검색허용 on으로 셋팅 - 왼쪽상단 채널 클릭 -> 서랍형태로 챗봇나오면 클..