About GPTeacher

GPTeacher는 로봇(Bot)이 출력하는 듯한 기존 LLM 모델의 출력값을, 강의자가 실제로 해당 내용에 대해 강의하는 것처럼 풀이과정을 생성하는 것을 목표로 하고 있습니다.

1. 사용절차

!pip install -U peft transformers optimum
!pip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu117/
import torch
from peft import PeftModel, PeftConfig
from transformers import AutoTokenizer, AutoModelForCausalLM, GPTQConfig

model_id = "TheBloke/WizardLM-13B-V1.2-GPTQ"

config = PeftConfig.from_pretrained("a2ran/GPTeacher-llama2-ko-13b")
tokenizer = AutoTokenizer.from_pretrained(model_id, use_fast=True)
quantization_config_loading = GPTQConfig(bits=4, disable_exllama=True)

model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=quantization_config_loading,
                                             torch_dtype=torch.float16, device_map="auto")
model = PeftModel.from_pretrained(model, "a2ran/GPTeacher-llama2-ko-13b")
from transformers import TextStreamer

streamer = TextStreamer(tokenizer)

# your input sentence가 들어갈 곳
sentence = "사과가 몸에 좋은 이유를 알려주세요."

input = f"""
### input @ {sentence} \n\n### response @"""

output = tokenizer.decode(model.cuda().generate(
    **tokenizer(
        input,
        return_tensors='pt',
    ).to(0),
    max_new_tokens = 2048,
    temperature = 1.2,
    top_p = 0.7,
    early_stopping = True,
    eos_token_id = 2,
    do_sample = True,
    repetition_penalty = 1.1,
    streamer = streamer
)[0]).replace(input+" ", "")
output =
<s> 안녕하세요. 오늘은 사과의 장점에 대해 배우겠습니다. 사과는 포도주, 카바예로, 시트러스, 피르고타톨리그릭스 등 여러 다른 식물들과 비교하면서 우리의 건강을 최적화하는 중요한 식물입니다.

이제, 우선 사과의 성분을 살펴보도록 하겠습니다. 사과는 고혈압을 낮추는 엘리가톨린과 효모와 같은 단백질, 피트산, 피로나산 등 영양소를 풍부하게 함유합니다. 이러한 성분들은 우리의 체내 조직에 필수적인 물질들이므로 사과를 섭취할 만한 좋은 이유 중 하나입니다.

또한, 사과는 고기 소금과 함께 사용하면 단백질의 소화를 높일 수 있어요. 또한 지방 소금과 함께 사용하면 당질의 흡수를 증가시킬 수 있습니다. 이는 우리의 신체 기능을 개선하는 데 도움이 됩니다.

또한, 사과는 빠르게 소화되어 탄수화물을 공급할 수 있는 것이 장점이죠. 이는 체내 에너지원으로 작동하는 능력을 높여줍니다. 사과를 정교하게 먹을 경우 불규칙한 피임을 방지하고 식이맞은 운동을 유지하는 데 도움이 됩니다.

마지막으로, 사과는 피로당과 카폴라달레가 많이 들어 있어요. 이는 근육에 미세한 힘을 제공하여 농구, 테니스 등 다양한 종류의 운동을 위해 필요한 요소입니다. 이는 우리의 운동을 더 잘 수행하는 데 도움이 됩니다.

따라서, 사과를 섭취할 때는 주로 아침이나 아침 식사 전에 먹는 것이 좋습니다. 또한, 사과는 매우 흡치기 쉽고 다양한 재료를 가변할 수 있기 때문에 창고에 보관할 수 있습니다. 올바른 조리 방법을 알고 있어야 하는데, 주로 할인으로 가공하여 충분한 음식을 만들 수 있습니다.

이상으로 사과에 대해 알려드렸습니다. 사과는 우리의 건강을 최적화하는 데 필수적인 요소입니다. 그렇기 때문에 섭취하는 것이 중요합니다. 감사합니다.</끝></s>

GPTeacher 프로젝트를 통해 추구하고자 하는 목표는 다음과 같습니다.

  1. 오픈 데이터셋 제공 : kullm-v2, ko-alpaca 데이터셋의 output을 강의 형태로 변환하여, 기존 데이터셋의 output과 더불어 extended_output 칼럼을 추가해 제공합니다.
  2. PEFTmodel 혹은 ko-llama2 모델 제공 : 현재 버전은 academic research purpose로 변형 가능한 wizardLM의 파라미터를 커스텀 데이터셋을 적용한 PEFTmodel 학습방식을 통해 파인튜닝한 버전입니다. 여러 버전 업데이트를 통해, 다른 모델로부터 파인튜닝을 할 수 있는 프레임워크를 제공하거나, GPTeacher-ko-llama2 모델을 제작해 제공하고자 합니다.
  3. 현재 제작중인 데이터셋 예시 : https://huggingface.co/datasets/a2ran/ex_dataset

현재 사용모델 : WizardLM-13B-v1.2

/영어권 데이터를 중심으로 학습한 WizardLM 모델을 파인튜닝 하였기에 general한 한국 정보에 관한 질문에 미숙합니다./

Model Checkpoint Paper MT-Bench AlpacaEval GSM8k HumanEval Demo License
WizardLM-70B-V1.0 🤗 HF Link 📃Coming Soon 7.78 92.91% 77.6% 50.6 Llama 2 License
WizardLM-13B-V1.2 🤗 HF Link 7.06 89.17% 55.3% 36.6 Demo Llama 2 License

향후 진행 방향은 다음과 같습니다

  1. more custom dataset으로 파인튜닝
  2. 여러 파라미터 모델에 대해 PEFT learning 진행 (30B, 7B, 70B...)
  3. ko-llama2 모델에 대해 파인튜닝

2. Training procedure

The following bitsandbytes quantization config was used during training:

Framework versions

@misc{xu2023wizardlm, title={WizardLM: Empowering Large Language Models to Follow Complex Instructions}, author={Can Xu and Qingfeng Sun and Kai Zheng and Xiubo Geng and Pu Zhao and Jiazhan Feng and Chongyang Tao and Daxin Jiang}, year={2023}, eprint={2304.12244}, archivePrefix={arXiv}, primaryClass={cs.CL} }