About GPTeacher
GPTeacher는 로봇(Bot)이 출력하는 듯한 기존 LLM 모델의 출력값을, 강의자가 실제로 해당 내용에 대해 강의하는 것처럼 풀이과정을 생성하는 것을 목표로 하고 있습니다.
1. 사용절차
- Install model and PEFT parameters
!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")
- How to Generate Tokens
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 생성 예시
output =
<s> 안녕하세요. 오늘은 사과의 장점에 대해 배우겠습니다. 사과는 포도주, 카바예로, 시트러스, 피르고타톨리그릭스 등 여러 다른 식물들과 비교하면서 우리의 건강을 최적화하는 중요한 식물입니다.
이제, 우선 사과의 성분을 살펴보도록 하겠습니다. 사과는 고혈압을 낮추는 엘리가톨린과 효모와 같은 단백질, 피트산, 피로나산 등 영양소를 풍부하게 함유합니다. 이러한 성분들은 우리의 체내 조직에 필수적인 물질들이므로 사과를 섭취할 만한 좋은 이유 중 하나입니다.
또한, 사과는 고기 소금과 함께 사용하면 단백질의 소화를 높일 수 있어요. 또한 지방 소금과 함께 사용하면 당질의 흡수를 증가시킬 수 있습니다. 이는 우리의 신체 기능을 개선하는 데 도움이 됩니다.
또한, 사과는 빠르게 소화되어 탄수화물을 공급할 수 있는 것이 장점이죠. 이는 체내 에너지원으로 작동하는 능력을 높여줍니다. 사과를 정교하게 먹을 경우 불규칙한 피임을 방지하고 식이맞은 운동을 유지하는 데 도움이 됩니다.
마지막으로, 사과는 피로당과 카폴라달레가 많이 들어 있어요. 이는 근육에 미세한 힘을 제공하여 농구, 테니스 등 다양한 종류의 운동을 위해 필요한 요소입니다. 이는 우리의 운동을 더 잘 수행하는 데 도움이 됩니다.
따라서, 사과를 섭취할 때는 주로 아침이나 아침 식사 전에 먹는 것이 좋습니다. 또한, 사과는 매우 흡치기 쉽고 다양한 재료를 가변할 수 있기 때문에 창고에 보관할 수 있습니다. 올바른 조리 방법을 알고 있어야 하는데, 주로 할인으로 가공하여 충분한 음식을 만들 수 있습니다.
이상으로 사과에 대해 알려드렸습니다. 사과는 우리의 건강을 최적화하는 데 필수적인 요소입니다. 그렇기 때문에 섭취하는 것이 중요합니다. 감사합니다.</끝></s>
GPTeacher 프로젝트를 통해 추구하고자 하는 목표는 다음과 같습니다.
- 오픈 데이터셋 제공 : kullm-v2, ko-alpaca 데이터셋의 output을 강의 형태로 변환하여, 기존 데이터셋의 output과 더불어 extended_output 칼럼을 추가해 제공합니다.
- PEFTmodel 혹은 ko-llama2 모델 제공 : 현재 버전은 academic research purpose로 변형 가능한 wizardLM의 파라미터를 커스텀 데이터셋을 적용한 PEFTmodel 학습방식을 통해 파인튜닝한 버전입니다. 여러 버전 업데이트를 통해, 다른 모델로부터 파인튜닝을 할 수 있는 프레임워크를 제공하거나, GPTeacher-ko-llama2 모델을 제작해 제공하고자 합니다.
- 현재 제작중인 데이터셋 예시 : 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 |
향후 진행 방향은 다음과 같습니다
- more custom dataset으로 파인튜닝
- 여러 파라미터 모델에 대해 PEFT learning 진행 (30B, 7B, 70B...)
- ko-llama2 모델에 대해 파인튜닝
2. Training procedure
The following bitsandbytes
quantization config was used during training:
- quant_method: gptq
- bits: 4
- tokenizer: None
- dataset: None
- group_size: 128
- damp_percent: 0.1
- desc_act: False
- sym: True
- true_sequential: True
- use_cuda_fp16: False
- model_seqlen: None
- block_name_to_quantize: None
- module_name_preceding_first_block: None
- batch_size: 1
- pad_token_id: None
- disable_exllama: True
- max_input_length: None
Framework versions
- PEFT 0.6.0.dev0
@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} }