https://tiabet0929.tistory.com/72
1편에 이어서 작성한다.
1편에서 학습이 잘 이루어지지 않는 문제의 해결책으로 나는 두 가지 방법을 채택했다.
1. 프롬프트에서 숫자의 간소화 (소수점 밑으로 열자리가 넘어가는 숫자들을 줄이는 방법)
2. 6명의 선수 중 우승 선수를 맞추게 하는 것이 아닌 한 선수를 우승/실패로 나누어서 예측하기
그리고 보완점으로 다음과 같은 점들을 추가했다.
1. 프롬프트 엔지니어링의 구체화 (페르소나 강하게 주기)
2. 답변 형식을 간단하게 하기 (우승/실패)
3. 생성이 중요한 것이 아니고 이진분류이기 때문에 인코더 모델인 BERT 사용하기
우선 프롬프트는 다음과 같아졌다.
실수를 소수점 아래 둘째자리까지만 추가하고, 답변을 이진 분류 형식으로 바꾸었으며, 페르소나와 가이드라인을 약간 더 주었다.
이제 위 프롬프트로 파인튜닝을 진행한 결과를 확인해보자.
1. GPT4o Finetuning
1편에서와 똑같이 openai 플랫폼에서 파인튜닝을 진행해봤다.
절망적이게도 모든 선수를 실패로 예측했다. 여섯 선수가 한 경기에 뛰기 때문에 최소한 한 선수는 우승했다고 나와야 하는데 그렇지 않았다.
2. BERT
https://huggingface.co/FacebookAI/xlm-roberta-base
Facebook에서 bert기반으로 만든 인코더 모델인 xlm-roberta의 base 버전을 사용하여 파인튜닝을 진행해봤다. large 버전도 있으나 코랩의 GPU 제한으로 사용하지 못했다.
하지만 역시나 이 방법으로도 Train과 Validation loss가 감소하지를 않아서 결과에 큰 기대를 하지는 않았다.
그리고 놀랍게도 결과를 확인해본 결과, 모든 선수의 우승 확률을 동일하게 예측하고 있는 모습을 알 수 있었다.
결론
원인이 무엇인지는 모르겠는데 아무튼 학습을 전혀 하지 못하는 모습이었다. 학습을 하긴 하는데 잘못된 곳으로 수렴했다는 것이 더 정확한 표현일 듯. 클래스 불균형 문제거나 프롬프트에 _ 나 : 같은 특수부호가 너무 많아서, 동일 단어가 너무 많이 반복되어서 일수도 있겠다.
아무튼 문제를 해결하려면 의심가는 부분을 하나하나 다 바꿔보면서 새롭게 시도를 해봐야 하겠는데, 문제는 코랩도 gpu를 더 좋은 버전을 사용하려면 유료고 GPT4o도 파인튜닝하는 것이 부분무료라 돈이 꽤 많이 나간다는 점이다. 실제로 블로그에 기록한 시도들을 진행하면서 코랩 컴퓨터단위 100개 (14900원 정도), OPENAI API 35달러 (45000원 정도) 가 소비되어 학생인 나에겐 계속 머리를 박아보기엔 부담스럽다.
어차피 LLM을 계속 파고 있는 입장에서 언젠간 정형데이터를 LLM으로 다룰 기회가 한 번은 꼭 올 것이라 생각한다. 지금은 하고 있는 일도 있고 경제적인 한계도 있으니, 나중에 이 실패했던 경험을 발판삼아 꼭 성공해보고 싶다.
'LLM' 카테고리의 다른 글
[LLM] LLM으로 Tabular Data 학습해보기 3 - Langchain으로 데이터 증강하기 (8) | 2024.11.13 |
---|---|
[LLM] LLM으로 Tabular Data 학습해보기 - 1. GPT4o Finetuning (경정데이터분석) (9) | 2024.09.20 |
[LLM] OPENAI 새로운 모델 ChatGPT o1 사용 후기 (10) | 2024.09.15 |
LLM - ChatGPT로 학습 데이터를 생성하는 방법 - 텍스트 데이터, 프롬프트 엔지니어링 (0) | 2024.03.27 |
[LLM] Deeplearning.AI Langchain 강의 내용 정리 (0) | 2024.02.10 |