
    h{                     d   S r SSKrSSKrSSKJr  SSKJr  SSKJrJ	r	J
r
  SSKJr  SSKJrJrJrJrJrJrJrJrJrJr  \R0                  " \5      r\R6                  R9                  SS	5        S
 rSS\R<                  4S jjr\S:X  a(  \" 5       r \ RC                  SS9u  r"r#r$r%r&\" \"\#\$\%5        gg)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)logging)load_dataset)
AutoConfigAutoModelForCausalLMAutoTokenizer)*MODEL_FOR_IMAGE_TEXT_TO_TEXT_MAPPING_NAMES)
DatasetMixtureConfigModelConfigScriptArguments	SFTConfig
SFTTrainer	TrlParserget_datasetget_kbit_device_mapget_peft_configget_quantization_configTRACKIO_SPACE_IDztrl-trackioc           
        ^ [        UR                  UR                  UR                  UR                  S9n[        U5      nUb  [        5       US'   XTS'   [        R                  " UR                  5      n[        R                  " 5       mUR                  (       aH  [        U4S jUR                   5       5      (       a$  SSKJn  UR                  " UR                  40 UD6nO![         R                  " UR                  40 UD6n["        R                  " UR                  UR                  SS9n	UR$                  (       a'  U R&                  (       a  [(        R+                  S	5        OUR$                  (       a  U R&                  (       d  [-        U5      n
OWUR$                  (       d;  U R&                  (       a*  [/        U R&                  U R0                  U R2                  S
9n
O[5        S5      e[7        UUW
U R8                     UR:                  S:w  a  XR<                     OS U	[?        U5      S9nURA                  5         URC                  URD                  5        URF                  (       a  URG                  U R&                  S9  g g )N)revisiontrust_remote_codeattn_implementationdtype
device_mapquantization_configc              3   ,   >#    U  H	  oT;   v   M     g 7fN ).0archvalid_image_text_architecturess     I/home/james-whalen/.local/lib/python3.13/site-packages/trl/scripts/sft.py	<genexpr>main.<locals>.<genexpr>q   s     #lWkt,J$JWks   r   )AutoModelForImageTextToTextT)r   use_fastzBoth `datasets` and `dataset_name` are provided. The `datasets` argument will be used to load the dataset and `dataset_name` will be ignored.)name	streamingz5Either `datasets` or `dataset_name` must be provided.no)modelargstrain_dataseteval_datasetprocessing_classpeft_config)dataset_name)$dictmodel_revisionr   r   r   r   r   r   from_pretrainedmodel_name_or_pathr   valuesarchitecturesanytransformersr$   r   r   datasetsr/   loggerwarningr   r   dataset_configdataset_streaming
ValueErrorr   dataset_train_spliteval_strategydataset_test_splitr   train
save_model
output_dirpush_to_hub)script_argstraining_args
model_argsdataset_argsmodel_kwargsr   configr$   r)   	tokenizerdatasettrainerr    s               @r!   mainrN   ]   s    **$66&::	L 2*=&%8%:\".A*+ ''
(E(EFF%O%V%V%X"#lW]WkWk#l l l<+;;J<Y<Yj]ij$44Z5R5RcVbc --%%9U9U`dI
 !9!9:	
 
		{'?'?l+""{'?'?$$;+E+EQ\QnQn
 PQQ k==>@M@[@[_c@cW;;<im"#J/G MMO }//0  )A)AB !    
subparsersc                 t    [         [        [        [        4nU b  U R	                  SSUS9nU$ [        U5      nU$ )NsftzRun the SFT training script)helpdataclass_types)r   r   r
   r	   
add_parserr   )rP   rT   parsers      r!   make_parserrW      sH    &	;@TUO&&u3Pbq&r M ?+MrO   __main__T)return_remaining_stringsr   )'__doc__argparseos
accelerater   r8   r   r7   r   r   r   &transformers.models.auto.modeling_autor   trlr	   r
   r   r   r   r   r   r   r   r   
get_logger__name__r9   environ
setdefaultrN   _SubParsersActionrW   rV   parse_args_and_configrE   rF   rG   rH   _r   rO   r!   <module>rg      s   0'R  	  ! H H ]   
		H	% 

  (- 8?CDH66  z]F ?E>Z>Z!% ?[ ?;K
L! 	mZ> rO   