flan alpaca lora
1.0.0
이 저장소는 낮은 순위 적응 교육 방법으로 Alpaca 데이터 세트에서 Google/FLAN-T5를 훈련시킵니다. 필요한 GPU 메모리를 줄이고 훈련 속도를 높입니다.
2023 년 6 월 17 일 : 노트북 추가. 지금은 Flan-Alpaca-Lora를 사용해 볼 수 있습니다.
2023 년 5 월 3 일 : Alpaca-GPT4 데이터 세트를 사용하여 FLAN-T5-XL을 기차하십시오.
2023 년 4 월 13 일 : GPTEACHER 데이터 세트 (Instruct and Roleplay)를 사용하여 FLAN-T5-XL을 트레이닝합니다.
2023 년 4 월 5 일 : 8 비트 양자화를 사용하여 FLAN-T5-XXL 훈련. 이 모델은 단일 3090 GPU에 장착 할 수 있습니다. 모든 모델은 Huggingface에서 찾을 수 있습니다.
| 모델 | adapter_params | 데이터 | GPU | 시간 |
|---|---|---|---|---|
| Flan-Alpaca-lora-base | 0.9m | 알파카 청소 | 3090 | 20 분 |
| Flan-Alpaca-Lora-Large | 2.4m | 알파카 청소 | 3090 | 50 분 |
| Flan-Alpaca-Lora-Xl | 4.7m | 알파카 청소 | 3090 | 2.5 시간 |
| Flan-Alpaca-Lora-xxl | 9.4m | 알파카 청소 | 3090 | 10 시간 |
| Flan-Gpteacher-Lora-Xl | 4.7m | gpteacher | 3090 | 80 분 |
| flan-alpaca-gpt4-lora-xl | 4.7m | 알파카 -GPT4 | 3090 | 3.25 시간 |
torch == 1.13.1
transformers == 4.29.1
peft == 0.3.0
bitsandbytes==0.38.1
accelerate==0.19.0
이 패키지의 최신 버전은 제대로 작동해야합니다.
단일 3090 GPU에서 20 분만 한 다음 명령 Finetune FLAN-T5-BASE
python train.py
--model_name_or_path google/flan-t5-base
--data_path ./alpaca_data_cleaned.json
--bf16 True
--output_dir ./ckpts/
--num_train_epochs 3
--per_device_train_batch_size 8
--gradient_accumulation_steps 8
--evaluation_strategy " no "
--save_strategy " no "
--learning_rate 5e-4
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type " cosine "
--logging_steps 50
--tf32 True예제 사용 :
import transformers
from peft import PeftModel
# Where peft_model_id should be the saving directory or huggingface model id
model_name = "google/flan-t5-large" ; peft_model_id = "reasonwang/flan-alpaca-lora-large"
tokenizer = transformers . AutoTokenizer . from_pretrained ( model_name )
base_model = transformers . AutoModelForSeq2SeqLM . from_pretrained ( model_name )
peft_model = PeftModel . from_pretrained ( base_model , peft_model_id )
# Input an instruction or any other questions.
inputs = tokenizer ( "List a few tips to get good scores in math." , return_tensors = "pt" )
outputs = peft_model . generate ( ** inputs , max_length = 128 , do_sample = True )
print ( tokenizer . batch_decode ( outputs , skip_special_tokens = True ))