+
    TV-j/+  ã                   ó|  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t
 ^ RIHt ^ RIHt ^ RIt^ RIt^RIHt ^RIHtHt ^RIHtHtHtHt ^RIHtHtH t H!t! ^RI"H#t#H$t$H%t% ]PL                  t']'PQ                  R]PR                  ! R	]PT                  4      ]+! R
4      4       / RRbRRbRRbRRbRR/ R/ R/ R/ R/ /bRRbR^ bR^bR^bRRbR^bR R!bR"^
bR#^ÈbR$RbR%R&bR'^dbR(RR)R*R+R,R-RR.RR/^R0^ R1RR2R3^R4R5R6R7/R8RR9RR:R/Ct,R; t-RER< R= llt.R> R? lt/RER@ RA llt0RB t1]2RC8X  d   ]3! RD4       ]1! 4        R# R# )Fé    N)ÚPath)Úget_reporting_callbacks)ÚCacheDatasetÚload_dataset)ÚTrainingArgsÚTrainingCallbackÚevaluateÚtrain)Úbuild_scheduleÚlinear_to_lora_layersÚload_adaptersÚprint_trainable_parameters)Ú_parse_sizeÚloadÚsave_configztag:yaml.org,2002:floatzò^(?:
     [-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+]?[0-9]+)?
    |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+)
    |\.[0-9_]+(?:[eE][-+][0-9]+)?
    |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*
    |[-+]?\.(?:inf|Inf|INF)
    |\.(?:nan|NaN|NAN))$z-+0123456789.ÚmodelzQwen/Qwen3-0.6br
   FÚfine_tune_typeÚloraÚ	optimizerÚadamÚoptimizer_configÚadamwÚmuonÚsgdÚ	adafactorÚdatazmlx-community/WikiSQLÚseedÚ
num_layersÚ
batch_sizeÚitersiè  Úval_batchesÚlearning_rategñhãˆµøä>Ústeps_per_reportÚsteps_per_evalÚresume_adapter_fileÚadapter_pathÚadaptersÚ
save_everyÚtestÚtest_batchesiô  Úmax_seq_lengthi   ÚconfigÚgrad_checkpointÚgrad_accumulation_stepsÚclear_cache_thresholdÚlr_scheduleÚlora_parametersÚrankÚdropoutg        Úscaleg      4@Úmask_promptÚ	report_toÚproject_namec                  ó  € \         P                  ! R R7      p V P                  R\        RR7       V P                  RRRRR	7       V P                  R
\        RR7       V P                  R\        . R>ORR7       V P                  R\        . R?ORRR7       V P                  RRRRR	7       V P                  R\        RR7       V P                  R\        RR7       V P                  R\        RR7       V P                  R\        RR7       V P                  R\
        RR7       V P                  R\        RR7       V P                  R \        R!R7       V P                  R"\        R#R7       V P                  R$\        R%R7       V P                  R&\        R'R7       V P                  R(\        R)R7       V P                  R*RR+RR	7       V P                  R,\        R-R7       V P                  R.\        R/R7       V P                  R0R1\        R2R7       V P                  R3RR4RR	7       V P                  R5\        ^ R6R77       V P                  R8\        RR9R77       V P                  R:\        RR;R77       V P                  R<\        R=R7       V # )@zLoRA or QLoRA finetuning.)Údescriptionz--modelz;The path to the local model directory or Hugging Face repo.)ÚtypeÚhelpz--trainÚ
store_truezDo trainingN)Úactionr;   Údefaultz--datazuDirectory with {train, valid, test}.jsonl files or the name of a Hugging Face dataset (e.g., 'mlx-community/wikisql')z--fine-tune-typez4Type of fine-tuning to perform: lora, dora, or full.)r:   Úchoicesr;   z--optimizerz>Optimizer to use for training: adam, adamw, sgd, or adafactor.)r:   r?   r>   r;   z--mask-promptz)Mask the prompt in the loss when trainingz--num-layersz=Number of layers to fine-tune. Default is 16, use -1 for all.z--batch-sizezMinibatch size.z--iterszIterations to train for.z--val-batchesz@Number of validation batches, -1 uses the entire validation set.z--learning-ratezAdam learning rate.z--steps-per-reportz0Number of training steps between loss reporting.z--steps-per-evalz-Number of training steps between validations.z--grad-accumulation-stepsz;Number of steps to accumulate before each optimizer update.z--resume-adapter-filez?Load path to resume training from the given fine-tuned weights.z--adapter-pathz*Save/load path for the fine-tuned weights.z--save-everyz"Save the model every N iterations.z--testz'Evaluate on the test set after trainingz--test-batchesz8Number of test set batches, -1 uses the entire test set.z--max-seq-lengthzMaximum sequence length.z-cz--configz3A YAML configuration file with the training optionsz--grad-checkpointz0Use gradient checkpointing to reduce memory use.z--clear-cache-thresholdz>Clear the allocator cache between steps if it grows too large.)r:   r>   r;   z--report-tozDServices to report logs to ('wandb', 'swanlab', or 'wandb,swanlab').z--project-namezEProject name for logging. Defaults to the name of the root directory.z--seedzThe PRNG seed)r   ÚdoraÚfull)r   r   r   r   r   )ÚargparseÚArgumentParserÚadd_argumentÚstrÚintÚfloatr   )Úparsers    Ú\/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_lm/lora.pyÚbuild_parserrJ   Q   s(  € Ü×$Ò$Ð1LÔM€FØ
×ÑØÜØJð ô ð ×ÑØØØØð	 ô ð ×ÑØÜðHð	 ô ð ×ÑØÜÚ(ØCð	 ô ð ×ÑØÜÚ=ØØMð ô ð ×ÑØØØ8Øð	 ô ð ×ÑØÜØLð ô ð
 ×Ñ˜¬SÐ7HÐÔIØ
×Ñ˜	¬Ð2LÐÔMØ
×ÑØÜØOð ô ð
 ×ÑÐ)´Ð<QÐÔRØ
×ÑØÜØ?ð ô ð
 ×ÑØÜØ<ð ô ð
 ×ÑØ#ÜØJð ô ð
 ×ÑØÜØNð ô ð
 ×ÑØÜØ9ð ô ð
 ×ÑØÜØ1ð ô ð
 ×ÑØØØ6Øð	 ô ð ×ÑØÜØGð ô ð
 ×ÑØÜØ'ð ô ð
 ×ÑØØÜØBð	 ô ð ×ÑØØØ?Øð	 ô ð ×ÑØ!ÜØØMð	 ô ð ×ÑØÜØØSð	 ô ð ×ÑØÜØØTð	 ô ð ×Ñ˜¤s°ÐÔAØ€Mó    c                óD   € V ^8„  d   QhR\         P                  R\        /# )é   r   Útraining_callback)ÚnnÚModuler   )Úformats   "rI   Ú__annotate__rR   Ø   s&   € ÷ Vñ Vä�9‰9ðVô
 (ñVrK   c                 óÆ  € \         P                  P                  V P                  4       VP                  4        V P                  \        VP                  4      8”  d0   \        R V P                   R\        VP                  4       R24      hV P                  R8X  dD   VP                  \        V P                  ^ 4      ) R  F  pVP                  4        K  	  RV n        MZV P                  R9   d2   \        VV P                  V P                  V P                  R8H  R7       M\        RV P                   24      hV P                  e6   \        RV P                   24       VP                  V P                  R	R
7       \!        V4       \#        V P$                  4      pVP'                  RRR7       VR,          p\)        \+        V 4      VR,          4       \-        V P.                  V P0                  V P2                  V P4                  V P6                  V P8                  VV P:                  V P<                  V P>                  R7
      pV P@                  '       d   \C        V P@                  4      MV PD                  p	V PF                  PI                  4       p
V PJ                  PM                  V
/ 4      pV
R8X  d   \N        PP                  pMnV
R8X  d   \N        PR                  pMVV
R8X  d   \N        PT                  pM>V
R8X  d   \N        PV                  pM&V
R8X  d   \N        PX                  pM\        RV
 24      hV! RRV	/VB p\[        VVV\]        V4      \]        V4      VR7       R# )zRequested to train z layers but the model only has z layers.rA   Nr@   )Úuse_doraz Received unknown fine-tune-type z Loading fine-tuned weights from F)ÚstrictT)ÚparentsÚexist_okzadapters.safetensorszadapter_config.json)
r   r    r!   r#   r$   Ústeps_per_saveÚadapter_filer+   r-   r.   r   r   r   r   r   zUnsupported optimizer: r"   )r   Úargsr   Útrain_datasetÚval_datasetrN   )r   r@   © )/ÚmxÚrandomr   Úfreezer   ÚlenÚlayersÚ
ValueErrorr   ÚmaxÚunfreezer1   r   r%   ÚprintÚload_weightsr   r   r&   Úmkdirr   Úvarsr   r   r    r!   r#   r$   r(   r+   r-   r.   r0   r   r"   r   Úlowerr   ÚgetÚoptimÚAdamÚAdamWÚMuonÚSGDÚ	Adafactorr
   r   )rZ   r   Ú	train_setÚ	valid_setrN   Úlr&   rY   Útraining_argsÚlrÚoptimizer_namer   Ú	opt_classÚopts   &&&&&         rI   Útrain_modelrz   Ø   sÚ  € ô ‡I�I‡N�N�4—9‘9ÔØ	‡L�L„NØ‡�œ˜UŸ\™\Ó*Ô*ÜØ! $§/¡/Ð!2ð 3&Ü&)¨%¯,©,Ó&7Ð%8¸ðBó
ð 	
ð
 ×Ñ˜fÔ$Ø—‘œs 4§?¡?°AÓ6Ð6Ð8Ó9ˆAØ�J‰JŽLñ :ð  $ˆÕØ	×	Ñ	Ð 0Ô	0äØØ�O‰OØ× Ñ Ø×)Ñ)¨VÑ3ö		
ô Ð;¸D×<OÑ<OÐ;PÐQÓRÐRð ×ÑÒ+ÜÐ0°×1IÑ1IÐ0JÐKÔLØ×Ñ˜4×3Ñ3¸EÐÔBä˜uÔ%ä˜×)Ñ)Ó*€LØ×Ñ˜t¨dÐÔ3àÐ"8Õ8€LÜ”�T“
˜LÐ+@Õ@ÔAô !Ø—?‘?Ø�j‰jØ×$Ñ$Ø×.Ñ.Ø×*Ñ*Ø—‘Ø!Ø×*Ñ*Ø×,Ñ,Ø $× <Ñ <ô€Mð .2×-=×-=Ð-=Œ˜×(Ñ(Ô	)À4×CUÑCU€Bà—^‘^×)Ñ)Ó+€NØ×,Ñ,×0Ñ0°ÀÓDÐØ˜ÔÜ—J‘J‰	Ø	˜7Ô	"Ü—K‘K‰	Ø	˜6Ô	!Ü—J‘J‰	Ø	˜5Ô	 Ü—I‘I‰	Ø	˜;Ô	&Ü—O‘O‰	äÐ2°>Ð2BÐCÓDÐDá
Ñ
9 "Ð
9Ð(8Ñ
9€Cô 
ØØØÜ" 9Ó-Ü  Ó+Ø+÷rK   c                ó8   € V ^8„  d   QhR\         P                  /# )rM   r   )rO   rP   )rQ   s   "rI   rR   rR   1  s   € ÷ Bñ B¤§	¡	ñ BrK   c                 óÈ   € \        V\        V4      V P                  V P                  V P                  R 7      p\
        P                  ! V4      p\        RVR RVR R24       R# ))r   Údatasetr   Únum_batchesr+   z
Test loss z.3fz, Test ppl Ú.N)r	   r   r   r*   r+   ÚmathÚexprf   )rZ   r   Útest_setÚ	test_lossÚtest_ppls   &&&  rI   Úevaluate_modelr…   1  s[   € ÜØÜ˜XÓ&Ø—?‘?Ø×%Ñ%Ø×*Ñ*ô€Iô �xŠx˜	Ó"€Hä	ˆJ�y �o [°¸#°¸aÐ
@ÖArK   c                ó$   € V ^8„  d   QhR\         /# )rM   rN   )r   )rQ   s   "rI   rR   rR   ?  s   € ÷ .ñ .Ô!1ñ .rK   c                 óš  € \         P                  P                  V P                  4       \        V P                  V P
                  V P                  \        V 4      R 7      p\        R4       \        V P                  RR/R7      w  r#\        R4       \        W4      w  rEpV P                  '       d:   V P                  '       g(   V P                  R8w  d   \        W P                  4       M6V P                  '       d   \        R4       \        WWEV4       M\!        R4      hV P                  '       d   \        R	4       \#        WV4       R
# R
# ))r7   Úlog_dirr,   zLoading pretrained modelÚtrust_remote_codeT)Útokenizer_configzLoading datasetsÚ ÚTrainingz.Must provide at least one of --train or --testÚTestingN)Únpr_   r   r   r6   r7   r&   ri   rf   r   r   r   r)   r
   r   rz   rc   r…   )rZ   rN   r   Ú	tokenizerrr   rs   r‚   s   &&     rI   Úrunr�   ?  sõ   € Ü‡I�I‡N�N�4—9‘9ÔÜ/Ø�‰Ø×&Ñ&Ø×!Ñ!Ü�D‹zô	Ðô 
Ð
$Ô%Ü˜DŸJ™JÐ:MÈtÐ9TÔUÑ€Eä	Ð
ÔÜ%1°$Ó%BÑ"€I˜(à‡y‡y€y˜ŸŸ˜à×Ñ Ô"Ü˜%×!2Ñ!2Ô3øà	��ˆÜˆjÔÜ�D Ð7HÕIäÐIÓJÐJà‡y‡y€yÜˆiÔÜ�t HÖ-ñ rK   c                  ó^  € R \         P                  R&   \        4       p V P                  4       pVP                  p\        V4      pV'       dx   \        RV4       \        VR4      ;_uu_ 4       p\        P                  ! V\        4      pRRR4       VP                  4        F  w  rEVP                  VR4      e   K  WQV&   K!  	  \        P                  4        F  w  rEVP                  VR4      e   K  WQV&   K!  	  \        \        P                   ! R/ VB 4       R#   + '       g   i     L›; i)ÚtrueÚTOKENIZERS_PARALLELISMzLoading configuration fileÚrNr]   )ÚosÚenvironrJ   Ú
parse_argsr,   ri   rf   ÚopenÚyamlr   Úyaml_loaderÚitemsrk   ÚCONFIG_DEFAULTSr�   ÚtypesÚSimpleNamespace)rH   rZ   r,   ÚfileÚkÚvs         rI   Úmainr¢   ^  sæ   € Ø+1„B‡J�JÐ'Ñ(Ü‹^€FØ×ÑÓ€DØ�[‰[€FÜ�‹:€DßÜÐ*¨FÔ3Ü�&˜#×Ô $Ü—Y’Y˜t¤[Ó1ˆF÷ ð —L‘L–N‰DˆAØ�x‰x˜˜4Ó Ô(Ø�Q“ñ #ô
  ×%Ñ%Ö'‰ˆØ�8‰8�A�tÓÔ$Ø�‹Gñ (ô Œ×ÒÑ% Ñ%Ö&÷ ×ús   Á-DÄD,	Ú__main__zwCalling `python -m mlx_lm.lora...` directly is deprecated. Use `mlx_lm.lora...` or `python -m mlx_lm lora ...` instead.)N)4rB   r€   r•   Úrer�   ÚwarningsÚpathlibr   Úmlx.coreÚcorer^   Úmlx.nnrO   Úmlx.optimizersÚ
optimizersrl   ÚnumpyrŽ   r™   Útuner.callbacksr   Útuner.datasetsr   r   Útuner.trainerr   r   r	   r
   Útuner.utilsr   r   r   r   Úutilsr   r   r   Ú
SafeLoaderrš   Úadd_implicit_resolverÚcompileÚXÚlistrœ   rJ   rz   r…   r�   r¢   Ú__name__rf   r]   rK   rI   Ú<module>r¸      s  ðÛ Û Û 	Û 	Û Û Ý å Ý Ý Û Û å 4ß 6ß JÓ J÷ó ÷ 2Ñ 1à�o‰o€Ø × !Ñ !ØØ‡J‚Jð	ð 	�‰ó	ñ 	ˆÓôð$ØÐð$àˆUð$ð �fð$ð �ð	$ð
 Ø�Ø�Ø�ØˆrØ�Rðð$ð Ð#ð$ð ˆAð$ð �"ð$ð �!ð$ð  ˆTð!$ð" �2ð#$ð$ �Tð%$ð& ˜ð'$ð( �cð)$ð* ˜4ð+$ð, �Jð-$ð. �#ð/$ð0 ˆEØ�CØ�dØˆdØ�uØ˜qØ˜QØ�4Ø˜  9¨c°7¸DÐAØ�5Ø�Ø�DñG$€òND÷NVõrB÷.ò>'ð, ˆzÔÙ	ð	Hôñ 	†Fñ rK   