Este repositorio entrena Google/Flan-T5 en el conjunto de datos Alpaca con método de entrenamiento de adaptación de bajo rango. Reduce la memoria de GPU necesaria y acelera el entrenamiento.
17 de junio de 2023: Agregue un cuaderno. Puedes probar Flan-Alpaca-Lora ahora.
3 de mayo de 2023: Train flan-t5-xl usando el conjunto de datos Alpaca-GPT4.
13 de abril de 2023: Train flan-t5-xl usando el conjunto de datos GPteacher (instructo y juego de rol), que parece funcionar bien.
5 de abril de 2023: Tren Flan-T5-XXL usando cuantización de 8 bits. El modelo se puede instalar en una sola GPU 3090. Todos los modelos se pueden encontrar en Huggingface.
| modelo | adaptador_params | datos | GPU | tiempo |
|---|---|---|---|---|
| flan-alpaca-lora-base | 0.9m | Alpaca limpiada | 3090 | 20 minutos |
| flan-alpaca-lora-grande | 2.4m | Alpaca limpiada | 3090 | 50 minutos |
| flan-alpaca-lora-xl | 4.7m | Alpaca limpiada | 3090 | 2.5 horas |
| flan-alpaca-lora-xxl | 9.4m | Alpaca limpiada | 3090 | 10 horas |
| flan-gpteacher-lora-xl | 4.7m | GpTeacher | 3090 | 80 minutos |
| flan-alpaca-gpt4-lora-xl | 4.7m | Alpaca-GPT4 | 3090 | 3.25 horas |
torch == 1.13.1
transformers == 4.29.1
peft == 0.3.0
bitsandbytes==0.38.1
accelerate==0.19.0
La versión más nueva de estos paquetes debería funcionar bien.
El siguiente comando Finetune flan-t5-base con solo 20 minutos en una sola GPU de 3090
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 TrueEjemplo de uso:
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 ))