Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

걍블로그

LLAMA 모델을 활용한 문법 교정 모델 만들기 실험 1차 시도 본문

인공지능/실험 해보기

LLAMA 모델을 활용한 문법 교정 모델 만들기 실험 1차 시도

애쉬용용 2023. 6. 1. 22:26

- 데이터 셋 모으기

 

1. 오픈된 데이터셋 사이트에서 문법 교정 데이터를 수집함

 : https://huggingface.co/datasets/Owishiboo/grammar-correction 

 

Owishiboo/grammar-correction · Datasets at Hugging Face

"So , if I have a lot of information about this subject , I will talk too much because of that knowledge , but if I only have general information about it , I will convey my limited knowledge and this may make me feel ashamed , like when my brother asked m

huggingface.co

 

2.  수집된 데이터에 대한 설명을 부여함

Chat-GPT를 이용함(https://chat.openai.com/)

 

3. 결과 예시

 

 

- 모델 학습하기

 

 

1. 데이터 셋 구성 

    (1) 프롬프트 구성으로 개인적으로 생각한 기본 구조 :  "명령어 (문법교정) " + "틀린 문장"+ "교정 문장" + "이유" 

    (2) Label 구성 : 재밌게도 GPT계열의 모델은 Label로 자기자신을 주어서 학습이 가능한듯하다. 코드 상으로 입력 시퀀스의 마지막 바로 이전까지의 데이터와 Label 시퀀스의 두번째 시퀀스부터 마지막까지의 데이터를 비교하여 loss가 계산되기 된다.

 

2. 모델 학습에 있었던 어려움

  (1) 모델의 사이즈가 커서 학습이 안됨 

     1-1. loralib(https://github.com/microsoft/LoRA)를 적용

            행렬의 전체를 고려하는지 않고, 행렬분해를 기반으로 한 학습 방법

     1-2. 모델을 float 32bit ->16bit로 변경함

             변경 방법에서 fp16과 bf16 두가지 방법이 존재한다. fp16에서는 오류가 났고, bf16은 문제가 없었다. 이둘의 차이 는 숫자를 표현하는 방식에 있는데  bf16가 더 큰 숫자를 표현 가능하기 때문에 오류가 나타나지 않았다고 생각한다.

 

  (2) 모델을 학습 결과

     모델의 학습이 처음부터 잘 되는 경우는 많지가 않다고 생각한다. 그래서 개인적으로 자주 적용하는 모델 학습 방식은 모델을 먼저 오퍼피팅 시키고, 모델이 충분히 데이터를 표현할만한 능력이 있다고 판단이 되면 적절한 학습 방법을 고민해 보는 방식을 주로 적용한다. 하지만 여기서는 이러한 접근을 사용하는게 적절치 않다고 판단이 들었다. 왜냐하면, 기존의 LLAMA 모델을 Pre-Train이 아주 잘 된 모델인데, 겨우 6000개의 데이터를 가진 나의 데이터로 오버피팅을 시킨다면 기존 가중치가 가진 장점을 전부 손실하게 될 것 같았다. 그래서 작은 Learning Rate로 1에폭만 학습을 시켜 보았다. 그러면  아래와 같이 제대로 된 이해를 못한 결과가 나온다.

언더피팅 예시

그래서 그냥 일단은 한번 오버피팅을 시켜조다라는 생각으로 수행해 본 결과

오버피팅 예시

원하는 결과가 나오긴 했다! 그런데 뒤에 코멘트부분은 원하는 부분이 아닌데 뭔지 모르겠다......!

 

 

 

일단은 문제가 없다고 가정을 하고, 그냥 랜덤한 문장을 넣어봤다.

일반화 성능이 좋은지 한번 시도한 결과

결과가 틀렸다. 하지만 뒤에 적힌 전혀 의도하지 않은 솔류션 부분은 나쁘지 않은 결과를 보여줬다.

 

이런 부분을 어떻게 해석을 해야할지 좀 더 고민을 해보고 재실험을 도전 해야겠다.

 

그리고 하는김에 LLAMA 모델에 대해서도 좀 더 제대로 생각 해봐야겠다.

 

이번 1차 실험은 실패 했지만, 그래도 고민할 주제들이 생겼기 때문에 의미는 있었다고 생각한다.

 

 

실험중인 코드

https://github.com/jeongjaeyong/llama_based_grammar_correction