
    hb                     `   S r SSKrSSKJrJr  SSKrSSKJr  SSK	J
r
JrJr  SSKJr  \R                  R!                  SS5        \ " S	 S
5      5       r/ SQrS rS r\S:X  a  \" \\
45      r\R/                  5       u  rrSSSSS.\l        \" \R6                  \R8                  \R:                  S9r\" \\" \R>                  \R@                  5      \\\S9r!\!RE                  5         \!RG                  \RH                  5        \RJ                  (       a  \!RK                  \RL                  S9  ggg)a  
Total Batch size = 128 = 4 (num_gpus) * 8 (per_device_batch) * 4 (accumulation steps)
Feel free to reduce batch size or increasing truncated_rand_backprop_min to a higher value to reduce memory usage.

export CUDA_VISIBLE_DEVICES=0,1,2,3  # force to use CUDA device 0,1,2,3
export ZE_AFFINITY_MASK=0,1,2,3  # force to use Intel XPU device 0,1,2,3
python examples/scripts/alignprop.py     --num_epochs 20     --train_gradient_accumulation_steps 4     --sample_num_steps 50     --train_batch_size 8     N)	dataclassfield)HfArgumentParser)AlignPropConfigAlignPropTrainer"DefaultDDPOStableDiffusionPipeline)aesthetic_scorerTRACKIO_SPACE_IDztrl-trackioc                       \ rS rSr% Sr\" SSS0S9r\\S'   \" SSS	0S9r	\\S
'   \" SSS0S9r
\\S'   \" SSS0S9r\\S'   \" SSS0S9r\\S'   \" SSS0S9r\\S'   Srg)ScriptArguments5   a=  
Arguments for the script.

Args:
    pretrained_model (`str`, *optional*, defaults to `"runwayml/stable-diffusion-v1-5"`):
        Pretrained model to use.
    pretrained_revision (`str`, *optional*, defaults to `"main"`):
        Pretrained model revision to use.
    hf_hub_model_id (`str`, *optional*, defaults to `"alignprop-finetuned-stable-diffusion"`):
        HuggingFace repo to save model weights to.
    hf_hub_aesthetic_model_id (`str`, *optional*, defaults to `"trl-lib/ddpo-aesthetic-predictor"`):
        Hugging Face model ID for aesthetic scorer model weights.
    hf_hub_aesthetic_model_filename (`str`, *optional*, defaults to `"aesthetic-model.pth"`):
        Hugging Face model filename for aesthetic scorer model weights.
    use_lora (`bool`, *optional*, defaults to `True`):
        Whether to use LoRA.
zrunwayml/stable-diffusion-v1-5helpzPretrained model to use.)defaultmetadatapretrained_modelmainz!Pretrained model revision to use.pretrained_revisionz$alignprop-finetuned-stable-diffusionz*HuggingFace repo to save model weights to.hf_hub_model_idz trl-lib/ddpo-aesthetic-predictorz9Hugging Face model ID for aesthetic scorer model weights.hf_hub_aesthetic_model_idzaesthetic-model.pthz?Hugging Face model filename for aesthetic scorer model weights.hf_hub_aesthetic_model_filenameTzWhether to use LoRA.use_lora N)__name__
__module____qualname____firstlineno____doc__r   r   str__annotations__r   r   r   r   r   bool__static_attributes__r       T/home/james-whalen/.local/lib/python3.13/site-packages/examples/scripts/alignprop.pyr   r   5   s    $ "0FD^;_c   %VvGj>kll 6&JvAwOS  &+2UV&s  ,1%[\,#S  46;Q2RSHdSr"   r   )catdoghorsemonkeyrabbitzebraspiderbirdsheepdeercowgoatlionfrogchickenduckgoosebeepigturkeyflyllamacamelbatgorillahedgehogkangarooc                  L    [         R                  R                  [        5      0 4$ )N)nprandomchoiceanimalsr   r"   r#   	prompt_fnrD   {   s    99G$b((r"   c                     0 nU S   U S   U S   /u  pEn[        US S 5       H+  u  pxXW   n	UR                  S5      R                  5       X9 '   M-     UR                  UUS9  g )Nimagespromptsrewards   r   )step)	enumerate	unsqueezefloat
log_images)
image_pair_dataglobal_stepaccelerate_loggerresultrF   rG   _iimageprompts
             r#   image_outputs_loggerrW      s     F)(3_Y5OQ`ajQklFQfRaj)#ooa0668 *    ! r"   __main__z./logsT   z./save)logging_dirautomatic_checkpoint_namingtotal_limitproject_dir)pretrained_model_revisionr   )image_samples_hook)dataset_name)'r   osdataclassesr   r   numpyr@   transformersr   trlr   r   r   trl.models.auxiliary_modulesr	   environ
setdefaultr   rC   rD   rW   r   parserparse_args_into_dataclassesscript_argstraining_argsproject_kwargsr   r   r   pipeliner   r   trainertrain
save_model
output_dirpush_to_hubr`   r   r"   r#   <module>rt      sH  4 
 (  ) U U 9 

  (- 8 "T "T "TL>) z@AF!'!C!C!EK'+	$M  2$$"-"A"A%%H >>@k@kl/G MMO }//0  )A)AB !9 r"   