o
    	Ti[                  	   @   s  d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZ edkreeee
fZe \ZZZeeZeejejejejejrJdndedurRe nded	Zee_eejejejejdedurke nded	Zee_ ej!ej"ejejd
dZ#e#j$du re#j%e#_$eej&ej'dZ(eej"ej)ee(ej* ej+dkre(ej, nde#eedZ-ej+dkreej.dej/dZ0e	e-e0ddZ1e-2e1 e-3  e-4ej5 ej6re-j6ej&d dS dS dS )aV  
# Full training:
python examples/scripts/gkd.py     --model_name_or_path Qwen/Qwen2-0.5B-Instruct     --teacher_model_name_or_path Qwen/Qwen2-1.5B-Instruct     --dataset_name trl-lib/chatbot_arena_completions     --learning_rate 2e-5     --per_device_train_batch_size 4     --gradient_accumulation_steps 8     --output_dir gkd-model     --num_train_epochs 1     --push_to_hub     --gradient_checkpointing

# LoRA:
python examples/scripts/gkd.py     --model_name_or_path Qwen/Qwen2-0.5B-Instruct     --teacher_model_name_or_path Qwen/Qwen2-1.5B-Instruct     --dataset_name trl-lib/chatbot_arena_completions     --learning_rate 2e-4     --per_device_train_batch_size 4     --gradient_accumulation_steps 8     --output_dir gkd-model     --num_train_epochs 1     --push_to_hub     --gradient_checkpointing     --use_peft     --lora_r 64     --lora_alpha 16
    )load_dataset)AutoTokenizerGenerationConfig)		GKDConfig
GKDTrainerLogCompletionsCallbackModelConfigScriptArguments	TrlParserget_kbit_device_mapget_peft_configget_quantization_config__main__FTN)revisiontrust_remote_codeattn_implementationtorch_dtype	use_cache
device_mapquantization_configleft)r   r   padding_side)nameno)modelteacher_modelargstrain_dataseteval_datasetprocessing_classpeft_config)max_new_tokens	do_sampletemperature   )num_prompts)dataset_name)7__doc__datasetsr   transformersr   r   trlr   r   r   r   r	   r
   r   r   r   __name__parserparse_args_and_configscript_argstraining_args
model_argsr   dictmodel_revisionr   r   r   gradient_checkpointingmodel_kwargsmodel_init_kwargsteacher_model_kwargsteacher_model_init_kwargsfrom_pretrainedmodel_name_or_path	tokenizer	pad_token	eos_tokenr&   dataset_configdatasetteacher_model_name_or_pathdataset_train_spliteval_strategydataset_test_splittrainerr!   r#   generation_configcompletions_callbackadd_callbacktrain
save_model
output_dirpush_to_hub rK   rK   H/home/ubuntu/.local/lib/python3.10/site-packages/examples/scripts/gkd.py<module>   st   ,		




D