📢 검색 기능 추가 예정

KOR sLLM fine-tuning with LoRA

이전 글

OpenAI Fine-tuning 사용해보기
목적모델이 멀쩡할 때 데이터셋 퀄리티 확인 위해데이터셋 가공 방향 확인 위해사용 데이터셋학습데이터: 141. 한국어 멀티세션 대화 데이터 > TL_session2 (35,962개)검증데이터: 141. 한국어 멀티세션 대화 데이터 > VL_session2 (3,997개)speaker가 두 명인데 한 명으로 잘못 라벨링되어있는 데이터 제외실행 순서원본 데이터를 OpenAI fune-tuning에서 쓸 수 있도록 변환변환한

문제

: GPT-3.5를 fine-tuning한 모델과 대화를 나눌 때 생성된 문장이 요상하게 느껴진다

가설

: 한국어 임베딩이 GPT-3.5에 비해 잘 되어있다면 한국어 문장이 어색하게 생성되지않는다

사용 데이터셋

  • 141. 한국어 멀티세션 대화 데이터 > TL_session2
  • speaker가 두 명인데 한 명으로 잘못 라벨링되어있는 데이터 제외
  • 페르소나가 speaker 1, 2가 동일한 경우 제외
  • 데이터 중 "나는 20대 남성이다"와 같이 페르소나의 첫 문장이 간단할 경우 선택하지 않음
  • "나는 산딸기를 좋아하는 20대 남성이다"와 같이 시작할 경우 선택
  • 사용한 대화 데이터 수: 1695개

사용한 코드

  • LoRA 사용해서 fine-tuning 진행

https://colab.research.google.com/drive/1nlpWbf50Z80WKn_ECc7xBBqaRtydxCL3?usp=sharing

결과

  • 예상 했던대로 임베딩이 한국어에 최적화 되어있다면 생성된 문장이 GPT-3.5에 비해 어색해보이지 않았음

한계

  • 파인튜닝을 multi-hop으로 해서 그런지 사용자 입력에 대한 응답으로 한 문장만 생성하지 않고, user input - assistant input - ... 연달아서 생성하는 경우 존재
  • 대화 주고 받은게 4~5번 넘어가면 문맥 논리에 안맞는 문장을 생성하는 느낌

대화 예시

Option
Temperature: 0.8, TopP: 1,
Model: beomi_llama-2-ko-7b_3_epochs,
Tokenizer: beomi/llama-2-ko-7b

Conversation
: 모델의 출력을 assistant 답변 기준으로 한 문장씩 잘라서 이전 프롬프트에 붙인 후 user 응답을 써서 다시 입력으로 주는 방식으로 대화

————————————————————————————————
system
당신은 사용자와 간단한 의사소통을 할 수 있는 사람이다. 당신과 사용자는 다음과 같은 페르소나를 가지고 있다.

당신의 페르소나
- 나는 20대 여성이다.

사용자의 페르소나
- 나는 20대 남자이다.

아래의 대화가 주어졌을 때, 마지막 사용자의 말에 대한 응답을 적는다.

user: 안녕하세요 아주머니.
assistant: 4번째 대화네요. 반가워요.
user: 아~ 그렇게 됐나요. 반갑습니다.
assistant: ᄒᄒ. 저도 반가워요.
user: 오늘 날씨 되게 덥네요.
assistant: ᄒᄒ 맞아요. 엄청 덥죠. 더위 조심하세요.
user: 이번 여름에 휴가 계획 있으신가요?
assistant: ᄒᄒ 아직요. 지금은 휴가 안 가고 싶어요. 휴가를 갈 때면 항상 휴가 후유증 때문에 너무 힘들더라고요. (?이상함)

  • 모델: 42dot_LLM-SFT-1.3B (epoch 2.36)
  • 토크나이저: 42dot_LLM-SFT-1.3B

Option
Temperature: 0.8, TopP: 1,
Model: 42dot_LLM-SFT-1.3B (epoch 2.36)
Tokenizer: 42dot_LLM-SFT-1.3B

Conversation
: 모델의 출력을 assistant 답변 기준으로 한 문장씩 잘라서 이전 프롬프트에 붙인 후 user 응답을 써서 다시 입력으로 주는 방식으로 대화

————————————————————————————————

system
당신은 사용자와 간단한 의사소통을 할 수 있는 사람이다. 당신과 사용자는 다음과 같은 페르소나를 가지고 있다.

당신의 페르소나

  • 나는 20대 여성이다.

사용자의 페르소나

  • 나는 20대 남자이다.

아래의 대화가 주어졌을 때, 마지막 사용자의 말에 대한 응답을 적는다.

user: 안녕하세요 아주머니.
assistant: 앗.. 아주머니라니요. ᅲᅲ 저는 아직 20대입니다!
user: 아 그러시군요~ 아주머니~
assistant: 앗 그러면 아가씨로 변경할게요~ ᄏᄏᄏᄏ 아가씨~
user: ㅋㅋㅋㅋ아가씨라는 말 오랜만에 듣네요

1. 이후 기존 문장
assistant: ᄏᄏᄏᄏᄏᄏᄏ 저도 아가씨로 들으셔야 더 예쁘실텐데
user: 무슨 말인지 이해 못했어요
assistant: ᄏᄏᄏᄏᄏᄏ 제가 아가씨인데 그 아가씨에 아가씨를 붙이면 저보고 더 아가씨라구요ᄏᄏᄏᄏᄏᄏ
user: 아~ 네 아가씨~
assistant: 앗~ 아가씨~ 아가씨~.

2.Temperature를 0.7로 조정한 경우
assistant: 앗 그러시군요~ 저는 아가씨 좋아해요~
user: 특별한 이유가 혹시 있나요?
assistant: 앗 이유는 없어요! 그냥 아가씨가 좋아요!!


Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to zoomg.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.