
    wi:                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlZd dlmZ d dlmZ d dlmZ ddlmZm Z m!Z!m"Z" dd	l#m$Z$m%Z%m&Z&m'Z' dd
l(m)Z)m*Z*m+Z+ ddl	m,Z, ddl-m.Z. dZ/ee	j0                 e1d<   	 d dl2Z/n# e3$ r dZ/Y nw xY we j4        Z4dZ5 ej6        e7          Z8deej9                 deej9                 fdZ:de;de;fdZ<d Z=dej>        j?        dedededee         f
dZ@dedeAfdZBedej9        dej9        fd            ZCedeee         eedf         eeef         f         deDfd            ZCdedeej9        eDf         fdZCde;fd ZEdgde;d"e	jF        d#e;ddfd$ZGd d%d&e,d'eHd(ed)ed*eHdee+         fd+ZI G d, d-          ZJ G d. d/          ZK G d0 d1          ZL G d2 d3          ZMd"e;de;fd4ZNd"e;de;fd5ZOd6e;de;fd7ZPd"e;de;fd8ZQ	 	 	 dhd9ed:edef         d;eHd<eeH         d=eeH         d>eHddfd?ZRd@ejS        deej9                 dedef         fdAZT	 	 didDeDdEeDdFeAdGeDde;f
dHZUejV        dId fdJeeH         dKeeH         dLejW        dMee;ejX        f         dNeHdej9        fdOZY edP          ZZdeAfdQZ[d:edeZf         dRededeZf         fdSZ\ddT dUdVe]dWe;dXe;dRedYee;         dZeedef         gedef         f         de]fd[Z^d:edef         dedef         fd\Z_d:edef         dedef         fd]Z`d:edef         dedef         fd^Zad:edef         dedef         fd_Zbd:edef         dedef         fd`Zcd:edef         dedef         fdaZdd:edef         dedef         fdbZed:edef         dedef         fdcZfdjdeeAddfdfZgdS )k    N)
AnyCallableDictListOptionaloverloadSequenceTupleTypeVarUnion)patch)fx)	aot_eager)OutputGraph   )config
eval_frameoptimize_assertreset)create_instructiondebug_checksis_generatortransform_code_object)CheckFunctionManager	CompileIdGuardedCode)DynamoFrameType)samenp   xreturnc                     | d S |                                                                                      | j                  S N)detachclonerequires_grad_requires_gradr!   s    e/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/torch/_dynamo/testing.pyclone_mer+   7   s6    yt88::,,Q_===    namec                 .    t          j        dd|           S )Nz^_orig_mod[.] resub)r-   s    r*   remove_optimized_module_prefixr3   =       6"B---r,   c                     ddl m d d fd}  t          j        |d          |           |i | j        fS )Nr   )InstructionTranslatorc                 H    |                                  j        j        | S r$   )
current_txoutputregion_tracker)_gmargskwargsr6   gmr:   s      r*   extract_graph_backendz8extract_graph_and_tracker.<locals>.extract_graph_backendG   s&     .99;;BQ
r,   T)backend	fullgraph)torch._dynamo.symbolic_convertr6   torchcompilegraph)fnr<   r=   r?   r6   r>   r:   s       @@@r*   extract_graph_and_trackerrG   A   s    DDDDDD	BN       E@EM/4@@@DDdUfUUU8^##r,   model
predictionlossexample_inputsc                 J   g }|                     |           |                     |           i }i }|                                 D ]_\  }}t          | t          j                  rt          |          }|}	|j        }
|j        t          j        |          }
|
||dz   <   |	||<   `|                     |           |                     |           i }| 	                                D ]3\  }}t          | t          j                  rt          |          }|||<   4|                     |           |D ]r}t          |t          t          f          r |                    d |D                        >t          |t          j                  r|                     |j                   s|S )Nz.gradc              3   X   K   | ]%}t          |t          j                  |j        V  &d S r$   )
isinstancerC   Tensorgrad).0inps     r*   	<genexpr>z"collect_results.<locals>.<genexpr>s   s5      XX*S%,:W:WX38XXXXXXr,   )appendnamed_parametersrN   r   OptimizedModuler3   rP   rC   
zeros_likenamed_bufferstuplelistextendrO   )rH   rI   rJ   rK   resultsgradsparamsr-   param
param_copyrP   buffersbufferexamples                 r*   collect_resultsrd   R   s    GNN:NN4 EF--// 	" 	"eeZ788 	81$77D
z:#E**D $dWn!tNN5NN6G++--  feZ788 	81$77DNN7! - -gt}-- 	-NNXXwXXXXXXX'5<00 -w|,,,Nr,   outc                    t          | t          j                  r| j        S t          | t          t
          f          rt          d | D                       S | dS t          | t                    rdS t          dt          |                     )Nc              3   4   K   | ]}t          |          V  d S r$   )requires_bwd_passrQ   r!   s     r*   rS   z$requires_bwd_pass.<locals>.<genexpr>~   s+      55A$Q''555555r,   FDon't know how to reduce)
rN   rC   rO   r(   rZ   rY   anyintNotImplementedErrortypere   s    r*   rh   rh   z   s    #u|$$   	C$	'	' 55555555	u	C		 u
8$s))
D
DDr,   c                     d S r$    ro   s    r*   reduce_to_scalar_lossrr      s    Cr,   .c                     d S r$   rq   ro   s    r*   rr   rr      s	     Cr,   c                    t          | t          j                  r)|                                 |                                 z  S t          | t
          t          f          r)t          d | D                       t          |           z  S t          |           j	        dv rt          | j                  S t          |           j	        dk    r| j                                        S t          | t                    rMt          d |                                 D                       t          |                                           z  S t!          dt          |                     )z/Reduce the output of a model to get scalar lossc              3   4   K   | ]}t          |          V  d S r$   rr   ri   s     r*   rS   z(reduce_to_scalar_loss.<locals>.<genexpr>   s+      99(++999999r,   )MaskedLMOutputSeq2SeqLMOutput!CausalLMOutputWithCrossAttentionsSquashedNormalc              3   4   K   | ]}t          |          V  d S r$   rv   )rQ   values     r*   rS   z(reduce_to_scalar_loss.<locals>.<genexpr>   s+      JJE(//JJJJJJr,   rj   )rN   rC   rO   sumnumelrZ   rY   lenrn   __name__rr   logitsmeandictvalueskeysrm   ro   s    r*   rr   rr      s1   #u|$$ 
wwyy399;;&&	C$	'	' 
99S99999CHHDD	c	   
 

 %SZ000	c	/	/	/x||~~	C		 
JJSZZ\\JJJJJSHHJJN
 N
 
 	
 8$s))
D
DDr,   c                      t           j                            t           j                            t                    d          } t           j                            |           st          j        |            | S )Nz../debug)ospathjoindirname__file__existsmkdir)r   s    r*   	debug_dirr      sM    7<<11:>>D7>>$ 
Kr,   r/   codeextrac           	      x   t          t          j                            t	                      |           d          5 }|                    t          j        |                                           dt          j        |                                           d| d           d d d            d S # 1 swxY w Y   d S )Nwz


)	openr   r   r   r   writedisBytecodeinfo)r-   r   r   fds       r*   
debug_dumpr      s    	bgll9;;--s	3	3 
r
|D!!&&((UUcl4.@.@.D.D.F.FUUEUUU	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A'B//B36B3)skipframe
cache_sizehooks_r   c                   dt           t                   dt          ddfd}t          | j                  rdS t	          | j                   t          | j        |          }t          i ddddddit                      t                      | j        g 	
  
        }t          |t          |          j        t          dd                    S )
zused to debug jump updatesinstructionscode_optionsr"   Nc                     |                      dt          d                     |                      dt          d                     d S )Nr   NOP)insertr   )r   r   s     r*   insert_nopsz&debug_insert_nops.<locals>.insert_nops   sF    A1%88999A1%8899999r,   F_idr   )
r   compiler_fnroot_txexportexport_constraintsframe_statelocal_scopeglobal_scopef_codetorch_function_mode_stack)r   r   r   r   r   r   r   localsglobalsr   r   guard_managerr   )r   r   r   r   r   r   r   rE   s           r*   debug_insert_nopsr      s    
:$s) :3 :4 : : : : EL!! t {;;DAJHHYY|"$  E t1%88F	RSUVXXXr,   c                   l    e Zd Zd	dZdej        j        deej                 de	de
f         fdZd	dZdS )
CompileCounterr"   Nc                 "    d| _         d| _        d S Nr   frame_countop_countselfs    r*   __init__zCompileCounter.__init__       r,   r>   rK   .c                     | xj         dz  c_         |j        j        D ]}d|j        v r| xj        dz  c_        |j        S )Nr   call)r   rE   nodesopr   forward)r   r>   rK   nodes       r*   __call__zCompileCounter.__call__   sQ     	AHN 	# 	#D  "zr,   c                 "    d| _         d| _        d S r   r   r   s    r*   clearzCompileCounter.clear   r   r,   r"   N)r   
__module____qualname__r   rC   r   GraphModuler   rO   r   r   r   r   rq   r,   r*   r   r      s}           (&8<U\8J	#s(	        r,   r   c                   l    e Zd ZdeddfdZdej        j        deej	                 de
def         fdZdS )	CompileCounterWithBackendr@   r"   Nc                 >    d| _         d| _        || _        g | _        d S r   )r   r   r@   graphs)r   r@   s     r*   r   z"CompileCounterWithBackend.__init__   s#    24r,   r>   rK   .c                     ddl m} | xj        dz  c_        |j        j        D ]}d|j        v r| xj        dz  c_        | j                            |             || j	                  ||          S )Nr   )lookup_backendr   )
backends.registryr   r   rE   r   r   r   r   rT   r@   )r   r>   rK   r   r   s        r*   r   z"CompileCounterWithBackend.__call__   s     	655555AHN 	# 	#D  "2+~~dl++B???r,   )r   r   r   strr   rC   r   r   r   rO   r   r   r   rq   r,   r*   r   r      s        5 5 5 5 5 5
@(&
@8<U\8J
@	#s(	
@ 
@ 
@ 
@ 
@ 
@r,   r   c                   d    e Zd ZddZdej        j        deej                 de	de
f         fdZdS )	EagerAndRecordGraphsr"   Nc                     g | _         d S r$   )r   r   s    r*   r   zEagerAndRecordGraphs.__init__   s    24r,   r>   rK   .c                 D    | j                             |           |j        S r$   )r   rT   r   )r   r>   rK   s      r*   r   zEagerAndRecordGraphs.__call__  s"     	2zr,   r   r   r   r   r   rC   r   r   r   rO   r   r   r   rq   r,   r*   r   r      si        5 5 5 5(&8<U\8J	#s(	     r,   r   c                   d    e Zd ZddZdej        j        deej                 de	de
f         fdZdS )	AotEagerAndRecordGraphsr"   Nc                 0    g | _         g | _        g | _        d S r$   )r   	fw_graphs	bw_graphsr   s    r*   r   z AotEagerAndRecordGraphs.__init__
  s    245757r,   r>   rK   .c                 f     j                             |           dt          j        j        dt
          t          j                 dt          dt          f         f fd}dt          j        j        dt
          t          j                 dt          dt          f         f fd}t          ||||          S )Nr>   rK   r"   .c                 F    j                             |            | j        S r$   )r   rT   r   r>   rK   r   s     r*   fw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.fw_compiler  #     N!!"%%%:r,   c                 F    j                             |            | j        S r$   )r   rT   r   r   s     r*   bw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.bw_compiler  r   r,   )r   r   )
r   rT   rC   r   r   r   rO   r   r   r   )r   r>   rK   r   r   s   `    r*   r   z AotEagerAndRecordGraphs.__call__  s     	2	$	6:5<6H	c3h	 	 	 	 	 		$	6:5<6H	c3h	 	 	 	 	 	 ##	
 
 
 	
r,   r   r   rq   r,   r*   r   r   	  si        8 8 8 8

(&
8<U\8J
	#s(	
 
 
 
 
 
r,   r   c                 .    t          j        dd|           S )Nz(?m)^ *#.*\n?r/   r0   r   s    r*   strip_commentr   (  r4   r,   c                 f    d                     d |                     d          D                       S )Nr   c                 6    g | ]}|                                 S rq   )rstrip)rQ   lines     r*   
<listcomp>z)remove_trailing_space.<locals>.<listcomp>-  s     AAAdkkmmAAAr,   )r   splitr   s    r*   remove_trailing_spacer   ,  s/    99AA

40@0@AAABBBr,   gm_strc                 :    t          t          |                     S r$   )r   r   )r   s    r*   normalize_gmr   0  s     !v!6!6777r,   c                 2    t          j        dd|           }|S )z-
    Normalize code: remove empty lines.
    z[\r\n]+r   r0   )r   normal_codes     r*   empty_line_normalizerr   6  s     &T400Kr,   r   rF   nargsexpected_opsexpected_ops_dynamicexpected_frame_countc                    t           j        s||}t                      }d t          |          D             }d t          |          D             } || }	 || }
t	                        t          |          |          } || } || } || } || }t	                       |                     t          ||	                     |                     t          ||	                     |                     t          ||
                     |                     t          ||
                     |                     |j	        |           ||                     |j
        |           d S d S )Nc                 8    g | ]}t          j        d d           S 
   rC   randnrQ   r   s     r*   r   z!standard_test.<locals>.<listcomp>K  $    777QU[R  777r,   c                 8    g | ]}t          j        d d           S r   r   r   s     r*   r   z!standard_test.<locals>.<listcomp>L  r  r,   )r   assume_static_by_defaultr   ranger   r   
assertTruer   assertEqualr   r   )r   rF   r   r   r   r   actualargs1args2correct1correct2opt_fnval1aval2aval1bval2bs                   r*   standard_testr  >  sx    * ,/C/O+F77%,,777E77%,,777Er5zHr5zH	GGG$_V$$R((FFENEFENEFENEFENE	GGGOOD))***OOD))***OOD))***OOD))***V')=>>>,77777  r,   r>   c                     | j         S r$   )r   )r>   rK   s     r*   dummy_fx_compiler  _  s     :r,   T皙?speeduppvalue
is_correctpvalue_thresholdc                 4    |sdS ||k    r| ddS | dd|dS )NERRORz.3fzx SAMEzx p=z.2frq   )r  r  r  r  s       r*   format_speedupr  e  sI      w   %%%%%+++v++++r,   cpusizestridedtypedevice
extra_sizec                 z   t          d t          | |          D                       dz   |z   }|j        rZ|j        dk    r7	 t	          j        |t          j        |                              |          }n0t	          j        |||          }nt	          j        |g||          }t	          j	        || |          S )Nc              3   ,   K   | ]\  }}|d z
  |z  V  dS )r   Nrq   )rQ   shaper  s      r*   rS   zrand_strided.<locals>.<genexpr>z  s/      HH]UFUQY& HHHHHHr,   r   )r  r   )r  )r  r  r   )
r}   zipis_floating_pointitemsizerC   r   float16tozeros
as_strided)r  r  r  r   r!  needed_sizerb   s          r*   rand_stridedr-  r  s     	HHc$6G6GHHHHH
	
	 
  M>Q [EM&QQQTT U  FF [E&IIIFF;-uVLLLFD&111r,   _Tc                      t           j         S r$   )r   r  rq   r,   r*   check_dynamic_shape_capturer0    s    ...r,   patchesc                 v     t          j                   dt          dt          dt          f fd            }|S )Nr<   r=   r"   c            	          t          j                    5 }D ]/\  }}}|                    t          j        |||                     0 | i |cd d d            S # 1 swxY w Y   d S r$   )
contextlib	ExitStackenter_contextr   object)r<   r=   stackmoduleattrvalrF   r1  s         r*   _fnz"_make_fn_with_patches.<locals>._fn  s    !## 	'u%, E E!c##ELs$C$CDDDD2t&v&&		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   :AA #A )	functoolswrapsr   r.  )rF   r1  r<  s   `` r*   _make_fn_with_patchesr?    sX    _R'3 '# '" ' ' ' ' ' ' ' Jr,   c                     | S r$   rq   r)   s    r*   <lambda>rA    s    a r,   )
xfail_prop	decoratorcls
cls_prefix	fn_suffixrB  rC  c          	      <   t          | | j         | j        i           }|j        |_        t	          |           D ]}|                    d          rt          | |          }t          |          s t          ||t          | |                     V| | }	t          |g|R  }
|	|
_        |$t          ||          rt          j        |
          }
t          ||	 ||
                     t          ||          st          ||t          | |                     |S )Ntest_)rn   r   	__bases__r   dir
startswithgetattrcallablesetattrr?  hasattrunittestexpectedFailure)rD  rE  rF  rB  rC  r1  DummyTestClassr-   rF   new_namenew_fns              r*   make_test_cls_with_patchesrU    s9    Z777KKN"0"9NC > >??7## 	>d##BB<< gc4.@.@AAA+	++H*28888F&FO%'"j*A*A%!1&99NHii.?.?@@@@.. 	>ND'#t*<*<===r,   c                 N    t           j        dk    r| S t          j        |           S )N)r       sysversion_inforP  r   rF   s    r*   skipIfNotPy311r\    s%    
7""	=r,   c                 `    t           j        dk    r| S  t          j        d          |           S )Nr       zRequires Python 3.12+rX  r[  s    r*   skipIfNotPy312r`    s0    
7""	18=011"555r,   c                 N    t           j        dk    rt          j        |           S | S )Nr^  )rY  rZ  rP  rQ  r[  s    r*   xfailIfPy312rb    s&    
7""'+++Ir,   c                 `    t           j        dk    r t          j        d          |           S | S )Nr^  zNot supported in Python 3.12+rX  r[  s    r*   skipIfPy312rd    s0    
7""=x}<==bAAAIr,   c                 `    t           j        dk    r| S  t          j        d          |           S )N)r    r   zRequires Python 3.10+rX  r[  s    r*   requiresPy310rf    s0    
7""	5x}455b999r,   c                     d| _         | S NT)_expected_failure_dynamicr[  s    r*   expectedFailureDynamicrj    s    #'B Ir,   c                     d| _         | S rh  )!_expected_failure_codegen_dynamicr[  s    r*   expectedFailureCodegenDynamicrm        +/B(Ir,   c                     d| _         | S rh  )!_expected_failure_dynamic_wrapperr[  s    r*   expectedFailureDynamicWrapperrq    rn  r,   Fuse_xlac                 &   t          j        d           t          j        d           t          rt          j                            d           | r@dd lmc m} |                    dt          |
                                                     d S d S )Ni9  r   )rC   manual_seedrandomseedr   torch_xla.core.xla_modelcore	xla_modelset_rng_stater   
xla_device)rr  xms     r*   reset_rng_stater}    s    	d
K	 
	t 5---------
s2==??33444445 5r,   )r/   )NNr   )Tr  )F)hr4  r   r=  loggingos.pathr   ru  r1   rY  typesrP  typingr   r   r   r   r   r   r	   r
   r   r   unittest.mockr   rC   r    torch._dynamo.backends.debuggingr   torch._dynamo.output_graphr   r/   r   r   r   r   bytecode_transformationr   r   r   r   guardsr   r   r   r   utilsr   r   
ModuleType__annotations__numpyModuleNotFoundErrorunsupportedthree	getLoggerr   logrO   r+   r   r3   rG   nnModulerd   boolrh   rr   floatr   CodeTyper   rl   r   r   r   r   r   r   r   r   r   r  r   r  r  float32r  r   r-  r.  r0  r?  rn   rU  r\  r`  rb  rd  rf  rj  rm  rq  r}  rq   r,   r*   <module>r     s	        



        				 



                                        6 6 6 6 6 6 2 2 2 2 2 2 8 8 8 8 8 8 8 8 8 8 8 8            A @ @ @ @ @ @ @ @ @ " " " " " "       "&HU % % %   	BBB $	g!!>& >8EL+A > > > >. . . . . .$ $ $"%8?%(+%36%HK%	#Y% % % %P	E3 	E4 	E 	E 	E 	E 
u|     
 
	tCy%S/4S>9	:
   
Es EuU\5-@'A E E E E,3    
 
S 
 
s 
D 
 
 
 
 QRY Y YY(+Y47Y<?YJMYkY Y Y Y>       &@ @ @ @ @ @ @ @,       
 
 
 
 
 
 
 
>. . . . . .C C C C C C8 8 8 8 8 8      #'*. !8 8
8c8 8 3-	8
 #3-8 8 
8 8 8 8B
(,U\(:c3h    !	
, 
,
,
, 
, 	
,
 	
, 
, 
, 
,  ',2 2
3-2SM2 ;2 #u|#$	2
 2 \2 2 2 28 WT]]/T / / / /
	hsBw/ 	3 	8CQSGCT 	 	 	 	" !%DOK  	  	
  #s(+,hsCx.@@A 
   >xS) hsCx.@    6xS) 6hsCx.@ 6 6 6 6Xc3h' HS#X,>    HS#X& 8CH+=    :hsCx( :Xc3h-? : : : :xS1 hsCx6H    hsCx&8 Xc3h=O    hsCx&8 Xc3h=O    
5 5T 5d 5 5 5 5 5 5s   B$ $B.-B.