o
    	Ti                     @   s   d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZmZ dd Zdd	ejfd
dZedkrXe Zejdd\ZZZZeeee dS dS )at  
# Full training
```
python trl/scripts/sft.py     --model_name_or_path Qwen/Qwen2-0.5B     --dataset_name trl-lib/Capybara     --learning_rate 2.0e-5     --num_train_epochs 1     --packing     --per_device_train_batch_size 2     --gradient_accumulation_steps 8     --gradient_checkpointing     --eos_token '<|im_end|>'     --eval_strategy steps     --eval_steps 100     --output_dir Qwen2-0.5B-SFT     --push_to_hub
```

# LoRA
```
python trl/scripts/sft.py     --model_name_or_path Qwen/Qwen2-0.5B     --dataset_name trl-lib/Capybara     --learning_rate 2.0e-4     --num_train_epochs 1     --packing     --per_device_train_batch_size 2     --gradient_accumulation_steps 8     --gradient_checkpointing     --eos_token '<|im_end|>'     --eval_strategy steps     --eval_steps 100     --use_peft     --lora_r 32     --lora_alpha 16     --output_dir Qwen2-0.5B-SFT     --push_to_hub
```
    N)load_dataset)
AutoConfigAutoModelForCausalLMAutoTokenizer)*MODEL_FOR_IMAGE_TEXT_TO_TEXT_MAPPING_NAMES)	ModelConfigScriptArguments	SFTConfig
SFTTrainer	TrlParserclone_chat_templateget_kbit_device_mapget_peft_configget_quantization_configc              	      sR  t |}t|j|j|j|j|jrdnd|d urt nd |d}t	|j
}t  |jrOt fdd|jD rOddlm} |dd  |j	|j
fi |}n
tj	|j
fi |}tj	|j
|jdd	}|jd u rpt||d
\}}t| j| jd}	t|||	| j |jdkr|	| j nd |t|d}
|
  |
|j  |j!r|
j!| jd d S d S )NFT)revisiontrust_remote_codeattn_implementationtorch_dtype	use_cache
device_mapquantization_configc                 3   s    | ]}| v V  qd S N ).0archvalid_image_text_architecturesr   C/home/ubuntu/.local/lib/python3.10/site-packages/trl/scripts/sft.py	<genexpr>e   s    zmain.<locals>.<genexpr>r   )AutoModelForImageTextToTextr   )r   use_fastzQwen/Qwen3-0.6B)nameno)modelargstrain_dataseteval_datasetprocessing_classpeft_config)dataset_name)"r   dictmodel_revisionr   r   r   gradient_checkpointingr   r   from_pretrainedmodel_name_or_pathr   valuesarchitecturesanytransformersr   popr   r   chat_templater   r   r)   dataset_configr
   dataset_train_spliteval_strategydataset_test_splitr   train
save_model
output_dirpush_to_hub)script_argstraining_args
model_argsr   model_kwargsconfigr   r#   	tokenizerdatasettrainerr   r   r   mainR   sH   

	rE   
subparsersc                 C   s2   t ttf}| d ur| jdd|d}|S t|}|S )NsftzRun the SFT training script)helpdataclass_types)r   r	   r   
add_parserr   )rF   rI   parserr   r   r   make_parser   s   
rL   __main__T)return_remaining_stringsr   )__doc__argparsedatasetsr   r2   r   r   r   &transformers.models.auto.modeling_autor   trlr   r   r	   r
   r   r   r   r   r   rE   _SubParsersActionrL   __name__rK   parse_args_and_configr=   r>   r?   _r   r   r   r   <module>   s   ),>	