TOGEDUE #2 AI모델 구현방법

소원·2024년 4월 19일

2024

목록 보기
2/10

2. AI모델 구현방법

멘토님과 1차 멘토링 이후, GPT를 직접 제작해보라는 피드백을 받았다.
api대신 AI 모델을 직접 구현해보라는 말씀에 기존에 생각했던 Chat GPT에서 방향을 전환하게 되었다.

GPT를 제작하는 방법에는 크게 두가지 방향으로 나뉘는데, 바닥부터 새로 만들거나 제작된 모델을 추가 학습시키는 방법이다.

당연하게도 바닥부터 만드는 것은 매우 큰 돈과 시간이 들기 때문에 당연히.. 불가능하다.
우리는 Llama, Gemma, Alpaca와 같은 오픈소스 기반 백본 모델을 선정 후, 맞는 도메인 지식을 학습시켜 프로젝트의 성격에 맞춰 특별한 지식, 포맷으로 대답하도록 Fine-tune시키는 방향으로 진행하려한다.

모델의 성능을 개선하고 특정 작업이나 문맥에 맞게 모델을 조정하는데에는 두가지 방법이 쓰인다.

Fine-tuning: 미세조정

  • 기존 모델에 새로운 정보를 추가하는 것이 아니라, 모델의 행동을 변경하는 데 목적이 있다.
  • 사용 사례는 모델의 특정 반응을 보장하거나, 프롬프트의 연쇄를 필요로 하는 복잡한 출력을 생성하는 것이다.
  • 많은 사용 사례에 대해 필요한 토큰 수를 줄이거나 요청의 지연 시간을 단축시킬 수 있습니다.

이때, P-tuning이나 LoRA와 같이 일부 파라미터만 학습하는 방식을 사용한다.
LoRA(Low Rank Adaption): 낮은 순위 적응
매개변수 가중치 대부분은 원래대로 유지하되, 일부만 미세조정하는 PEFT중 하나
->행렬의 차원을 축소 후 원래크기 복원, 은닉층에 특정 값을 추가해 출력 조정
PEFT(Parameter-Efficient Fine-Tuning of Billion-Scale Models on Low-Resource Hardware):
사전학습된 LLM의 대부분의 파라미터를 프리징하고 일부의 파라미터만을 파인튜닝함으로써 저장공간과 계산능력을 대폭 줄이는 Fine-tuning 방법

사전학습된 LLM의 대부분의 파라미터를 프리징하고 일부의 파라미터만을 파인튜닝함으로써 저장공간과 계산능력을 대폭 줄였습니다.

RAG(Retrieval-augmented Generation): 검색 증강 생성

  • 기존 모델에 새로운 정보를 추가하는 것이다.
  • 이 지식은 새로운 지식이 아니라, 요청에 사용된 프롬프트에 관련 정보를 제공하고 모델은 해당 테이터를 사용해 응답한다. -> 모델의 정확도에 영향을 미친다.

이때, 지식베이스를 만들어야한다. 단락을 구분하고 벡터로 임베딩한 후 벡터DB에 넣어야한다.
질문을 하면 이 문장 역시 임베딩으로 변환해 벡터DB에서 가장 유사한 단락을 찾는다.


AI모델을 제작하기 전 가정을 둔다.
1) 사용자의 질문에 대한 답변을 찾는 것이 1순위이다. (Rag를 잘할 수 있는 모델)
2) 우리가(고객이) 가지고 있는 자료의 양은 많지 않다.(학습을 위한 정제된 데이터의 양 부족)
3) 초기부터 모델, 학습 서비스 비용이 들지는 않을 것이다.

추가로 찾아보니 학습모델의 절반은 그냥 일반 도메인의 내용을 입력해도 상관 없다는 것 같다.
장기기억을 가진 챗봇을 만들고 싶다면, Redis를 사용해 이전대화기억을 가지도록 하는 방법도 있다.
제작된 모델은 Gradio를 통해 웹앱형태로 빌드하고 배포하는 것 같은데, 앞으로 제작하면서 더 찾아봐야 할 것 같다.

References

0개의 댓글