메뉴 닫기

카카오톡 대화 이력으로 fine tuning 해본 나만의 Language Model

우리가 자주 사용하는 카카오톡 에서는 대화 내용을 text 형태로 내보낼 수 있는 기능을 제공 합니다.

카카오톡 대화 내용으로 Language Model 을 Fine Tuning 해보면서 AI safety와 개인정보의 중요성에 대해 같이 한번 이야기해보려고 합니다.

데이터는 개인의 카카오톡에서 저장한 파일과 colab (무료 버전의 GPU) 환경에서 진행해보겠습니다.

image.png

이번에 학습해보려는 Model 의 목적은 아래 대화 내용처럼 “라이언” 이 메세지를 보내면 “무지” 처럼 대답을 하는 ChatBot 을 만들어보는것입니다.

 

1. Dataset 구성

먼저 카카오톡 대화방 설정에서 대화 내용 저장을( 모바일의 경우 메일로 전송) 하게 되면 아래와 같은 csv 파일이 생성됩니다.

그럼 이제 csv 파일을 import 해서 본격적으로 Model 을 학습하기 위한 데이터셋을 구성해보겠습니다.

image.png

Colab의 파일 업로드 기능을 활용하여 대화내용이 저장된 csv 파일을 upload 합니다.

 

전처리 작업을 위해 upload 된 csv 파일을 pandas 의 Dataframe 으로 변환합니다.

Date 컬럼의 경우 제거하지 않아도 문제되지 않지만, 이번 작업에서는 활용하지 않을 예정이므로, 제거 하고 넘어가겠습니다.

image.png

DataFrame 을 살펴보면 시간 순으로 대화 내용이 나열된 구조입니다.

Data를 라이언/무지 컬럼으로 DataFrame 을 재구성해서, 라이언 1번 / 무지 1번 씩 나타나는 대화 형식의 Data로 만들어보겠습니다.

 

재구성된 data를 확인해보겠습니다.

“무지” 처럼 대답하는 chatBot을 만드는게 목적이기 때문에 “라이언”은 me 가 되고, “무지”는 you 가 되어 row 별로 me 와 you 가 한번씩 대화 하는 구조가 생성되었습니다.

image.png

 

2. 사전 학습된 Model Fine tuning

“무지”처럼 대답하는 서비스를 만들어보기 위해 사용할 Model 은 SKT 에서 21년 공개한 GPT2 base 의 KoGPT2 모델입니다.( https://github.com/SKT-AI/KoGPT2 )

최근 다양한 아키텍쳐를 반영한 다양한 크기의 모델들이 나오고 있지만, 단순 대화 내용을 Fine tuning 하기 위해서는 한국어 능력을 가진 Model 이면 가능할 것이라고 보고 KoGPT2 를 선정하였습니다.

 

SKT-AI github 에 있는 가이드 대로 Tokenizer 를 선언하고, 모델이 학습할 수 있도록 Dataset을 구성해보겠습니다.

기본적인 Prompt는 가장 간단하게 me 의 Message와 you 의 Message 형태로 구성합니다.

 

모델을 load 한 후 huggingface 의 trainer 를 사용해서 3 epochs 정도만 학습을 진행합니다.

 

3. 모델 평가

질문 : 오늘 뭐 먹을까?

생성된 답변 : 

ㅡㅜ

나 오늘 밥 먹구 카페 갈깡

엄청 피곤

image.png

 

생성된 메세지는 기존 koGPT2 와 전혀 다른 메세지로 파인튜닝된 데이터를 반영하여 실제 대화와 같은 결과를 생성합니다.

 

4. 마무리

영화 “Her” 같은 세상이 진짜로 올까요? 라는 질문에 대해 이제 많은 사람들이 “네” 라고 답할지도 모르겠습니다.

사전 학습된 LLM 은 단순한 fine tuning 작업만으로 우리가 원하는 방향으로 AI 모델을 학습시킬 수 있는 세상을 열어 주었습니다.

다만, “우리가 원하는 방향” 이라는것이 무서운 것 같습니다.

이번에는 재미로 카카오톡 대화 내용을 바탕으로 나만의 Language Model 을 만들어 보았지만,

어떤 목적에 따라 준비된 데이터셋이 Model 을 의도적으로 특정 방향으로 학습시킨다면 AI 기술이 사회에 어떤 영향을 줄지 두려움도 있습니다.

그런점에서 최근 공개되는 llama나 gemma 같은 모델을 보면 AI safety 가이드( https://llama.meta.com/responsible-use-guide , https://ai.google.dev/responsible?hl=ko )를 제시하고 있습니다.

Language Model 을 활용해서 서비스를 개발하는 주체와 AI 서비스를 사용하는 사용자 모두 AI Safety 에 대한 인식과 논의가 필요하지 않을까 생각합니다.

또한, 카카오톡 대화를 기반으로한 ChatBot 모델처럼 이제는 우리의 개인정보가 주민등록번호, 주소, 전화번호 처럼 이전에 중요하게 생각했던 개인 정보외에,

대화 이력, 인터넷에 업로드 된 글, 사진 등 디지털 발자국 또한 중요한 개인정보임을 인지하고 관리해야할것 같습니다.

AI 시대는 점점 더 빨리 오고 있는것 같습니다.

기술의 발전만큼 우리 사회도 새로운 시대에 대한 고민이 필요할 것 같습니다.

 

출처

https://github.com/SKT-AI/KoGPT2

https://llama.meta.com/responsible-use-guide

https://ai.google.dev/responsible?hl=ko]

 

이 글은 SK 그룹의 개발자 모임 Devocean 에 동일하게 작성된 글입니다.