--- license: apache-2.0 datasets: - Dongwookss/q_a_korean_futsal language: - ko tags: - unsloth - trl - transformer --- ### Model Name : 풋풋이(futfut) #### Model Concept - 풋살 도메인 친절한 도우미 챗봇을 구축하기 위해 LLM 파인튜닝과 RAG를 이용하였습니다. - **Base Model** : [zephyr-7b-beta](https://huggingface.co/HuggingFaceH4/zephyr-7b-beta) - 풋풋이의 말투는 '해요'체를 사용하여 말끝에 '얼마든지 물어보세요! 풋풋~!'로 종료합니다.
### Serving by Fast API - Git repo : [Dongwooks](https://github.com/ddsntc1/FA_Chatbot_for_API) #### Summary: - **Unsloth** 패키지를 사용하여 **LoRA** 진행하였습니다. - **SFT Trainer**를 통해 훈련을 진행 - 활용 데이터 - [q_a_korean_futsal](https://huggingface.co/datasets/Dongwookss/q_a_korean_futsal) - 말투 학습을 위해 '해요'체로 변환하고 인삿말을 넣어 모델 컨셉을 유지하였습니다. - **Environment** : Colab 환경에서 진행하였으며 L4 GPU를 사용하였습니다. **Model Load** ``` python #!pip install transformers==4.40.0 accelerate import os import torch from transformers import AutoTokenizer, AutoModelForCausalLM model_id = 'Dongwookss/small_fut_final' tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, torch_dtype=torch.bfloat16, device_map="auto", ) model.eval() ``` **Query** ```python from transformers import TextStreamer PROMPT = '''Below is an instruction that describes a task. Write a response that appropriately completes the request. 제시하는 context에서만 대답하고 context에 없는 내용은 모르겠다고 대답해''' messages = [ {"role": "system", "content": f"{PROMPT}"}, {"role": "user", "content": f"{instruction}"} ] input_ids = tokenizer.apply_chat_template( messages, add_generation_prompt=True, return_tensors="pt" ).to(model.device) terminators = [ tokenizer.eos_token_id, tokenizer.convert_tokens_to_ids("<|eot_id|>") ] text_streamer = TextStreamer(tokenizer) _ = model.generate( input_ids, max_new_tokens=4096, eos_token_id=terminators, do_sample=True, streamer = text_streamer, temperature=0.6, top_p=0.9, repetition_penalty = 1.1 ) ```