보통은 LLM을 첨부터 만들다기 보다는 만들어진 LLM을 가져다가 파인튜닝 정도 해서 사용
LLM 만들기
1. 사전훈련 : 일반적인 언어 능력을 학습, 말을 이어서 할 수 있도록
2. 파인튜닝 : 특정 업무를 가르킨다. 특정 업무에 맡는 데이터셋이 필요함(준비가 어려움, 회사에서 보유한 데이터를 잘 정리)
3. 데이터베이스(+인터넷) 검색 기능 (지식의 범위 확장, 최신 데이터, 정확성 향상 등)
4. 내부적으로 질의를 여러번 하게해서 더 좋은 답변을 하도록 함
사전훈련
1. 훈련 데이터 준비 : 이게 제일 어려움
- 데이터 정제(클리닝), 토큰화(뉴럴이 이해하기 좋은 길이로 토큰화 > 문자를 숫자(코드)로 바꿔서 전달)
2. 데이터 로더 준비 : 뉴럴 네트워크에 분할해서 넣어줌
- 훈련시킬때 전체 데이터를 한번에 집어넣어서 훈련을 하지 않고 쪼개서 넣어줌
- pytorch 활용 : 토큰화된 데이터 > input/target (targer은 input의 다음 단어 ex Harry인경우 Potter ...) > 사이즈/셔플 설정 > 토큰을 주입
3. 뉴럴 네트워크 모델 정의 : LLM에서는 트랜스포머 알고리즘 활용
4. 훈련
- Nvidia GPU면 CUDA
- CPU로 해야한다면 데이터 양을 줄여서 해보기
- epoch 10 = 책을 10번 읽었다
- 2번의 input/target을 받아서 뉴럴 네트워크에 넣어준다.
- loss는 대답을 얼마나 잘했는지 평가(줄어들 수록 좋음), optimizer는 대답을 잘하도록 뉴럴 네트워에 있는 가중치들을 업데이트
5. 결과 확인
- 다음에 올 확률이 높은 단어를 뽑고, 뽑은걸 다시 집어서 다음에 올 단어를 찾음 ... 반복