목록AI & ML/사용하기 (14)
Ssul's Blog

Foundaion Model 학습은, 나와 같은 GPU거지 & 가난한 개발자(연구자)는 엄두를 낼수 없으니,이론으로 잘 이해하고, 실전에서는 파인튜닝에 집중하자. 내가 종사하는 도메인에서도 AI를 적용하려 노력중이다. 그러면 방법은 아래와 같이 몇가지로 좁혀진다. 1. 빅테크모델 api에 prompt를 잘 먹여서 사용하기2. 빅테크모델을 파인튜닝하여 사용하기3. 적당한 크기의 오픈소스 모델을 full파인튜닝하거나, peft해서 사용하기 이 정도이며, 1번은 개발 기술적인 부분이니 생략하고,2,3번을 공략해보도록 하겠다. 2번의 단점은 매번 사용할때마다 api비용이 나간다는 것이고, 당연히 학습할때도 비용이 나간다. 그리고, 내가 사용했던 base모델이 사라질지도 모른다는 리스크가 있다. 간단한 예로, 이..

스팸분류기를 제작하고 있다.기존에 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..

앞 글에서 이야기했던 우여곡절(?)을 마치고, 드디어 학습에 들어간다.그 첫번째는 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...

1. 챗봇의 주요기능 및 구조①RAG에 사용할 참고도서, 문헌, 웹자료를 적절히 쪼개서 임베딩 합니다.- RAG에 사용할 자료를 적절히 쪼개고- 임베딩 모델을 결정(필자는 openai의 "text-embedding-3-small"모델 사용)하여, 해당 모델로 쪼갠 자료를 임베딩 진행(N차원 공간에 1개의 점들로)- 해당 임베딩 정보를 csv파일 또는 chromadb, faiss로 저장 ②채팅창에서 사용자의 채팅 입력을 받습니다.- 화면에 채팅입력창을 출력하고, 사용자의 채팅을 입력받습니다.- 입력받은 채팅을 백엔드 api.py로 보냅니다. ③사용자의 입력내용을 RAG진행- 사용자의 입력내용을 임베딩(N차원의 공간에 1개의 점으로)- 이미 임베딩 해놓은 파일/db에서, 가장 유사한(근처에 있는) 데이터3개..
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..

1. 스팸문자 여부를 판단하는 모델 만들기 지난 글들을 통해서, - 도메인특화 챗봇 만들기(https://issul.tistory.com/417) - 허깅페이스 사용법(https://issul.tistory.com/429) PLM모델들을 어떻게 파인튜닝하고, 활용할수 있는지에 대한 이론적인 개념을 알았다. 실제 이 개념을 어떤 프로젝트에 활용할 수 있을까? 매일 5개 이상 오는 스팸문자를 보면서, AI가 스팸여부를 판단하고 걸러주면 좋겠다는 생각을 했다. 키워드 기반의 기계적인 필터링이 아닌, 인간인 내가 봤을때 직관적으로 스팸이다 아니다를 판단하는 것처럼... 직관성이 있는 모델. 이런 것은 알고리즘보다는 LLM이 잘 할수 있기에 딱 인것 같다.(물론 뒤에서 언급하겠지만, 배보다 배꼽이 더 커지기 때문..