~L i$ddlZddlmZmZmZmZddlmZddlZddlm Z ddl m Z m Z m Z eeefZeeeedffZdeeeded efd Zd ee ee dffd efd Zd ededegefd efdZdedededed eeeff dZ d"d ee ee dffdededededed efdZdeded dfdZdeded dfdZdefdZeded#dededed efd Z d$dedededed ef d!Zy)%N)AnyCallableOptionalUnion) deprecated)Tensor)_broadcast_to_and_flatten tree_flattentree_unflatten. flat_in_dims flat_argsreturnct||Dcgc]\}}||j|c}}r#tfdDrtdddScc}}w)Nc3.K|] }|dk7yw)rN).0size batch_sizess [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/_vmap_internals.py z/_validate_and_get_batch_size..sJd4;q>1JszTvmap: Expected all tensors to have the same size in the mapped dimension, got sizes z for the mapped dimensionr)ziprany ValueError)r r in_dimargrs @r_validate_and_get_batch_sizersz |Y7 FC   K sJkJJ$$/=0I K   q>sAbatched_outputsc:t|tr t|Sy)N) isinstancetuplelen)rs r _num_outputsr#!s/5)?## value num_elementserror_message_lambdacnt|ts|f|zSt||k7rt||SN)r r!r"r)r%r&r's r _as_tupler*)s; eU #x,&& 5z\!-/00 Lr$in_dimsargs vmap_levelfuncct|ts7t|ts'tdt |d|dt |dt |dk(rtdt |dt|\}}t||}|-tdt |d|dt|dd |d t||D]\}}t|ts |tdt |d|d |d t|tr:t|ts*tdt |d|d |d t |d ||dks||jk\stdt |d|d |d|jd|jd t||} t||Dcgc] \}}||ntj|||"} }}t| || fScc}}w)Nvmap(z , in_dims=zv, ...)(): expected `in_dims` to be int or a (potentially nested) tuple matching the structure of inputs, got: .rz)(): got no inputs. Maybe you forgot to add inputs, or you are trying to vmap over a function with no inputs. The latter is unsupported.zb, ...)(): in_dims is not compatible with the structure of `inputs`. in_dims has structure rz but inputs has structure z, ...)(): Got in_dim=zE for an input but in_dim must be either an integer dimension or None.z' for an input but the input is of type zT. We cannot vmap over non-Tensor arguments, please use None as the respective in_dimz> for some input, but that input is a Tensor of dimensionality z- so expected in_dim to satisfy 0 <= in_dim < )r intr!r _get_nametyper"r r rrdimrtorch_add_batch_dimr ) r+r,r-r.r args_specr rr batch_sizebatched_inputss r_create_batched_inputsr;7sj gs #Jw,FIdO$Jwi866:7m_A G   4yA~IdO$%) *  (-Iy,Wi@LIdO$Jwi8%%1'%:1%=$>?&Kq *  9l3 V&#&6+= $( 7)<$X&01  fc ":c6+B $( 7)<$X%L9+;<   6A:37791D $( 7)<$X&%%(WWYK0!!$ 1. ,.lIFJ|Y7 FC~5#7#7VZ#PPN .) 4j @@ s;%G1out_dimsr9allow_none_pass_throughc t|tfd}t|tr|d}t j ||S|rt fdt||DSt fdt||DS)Nc Fdtdddtd S)Nr0, ..., out_dims=z0): `out_dims` must have one dim per output (got z outputs) of r1)r3)r. num_outputsr<srz!_unwrap_batched..s6% $((8 C((3}M)D/ARRSUr$rc3\K|]#\}}|tj||nd%ywr)r6_remove_batch_dimroutout_dimr9r-s rrz"_unwrap_batched..s? W?''ZWM s),c3TK|]\}}tj||!ywr)rDrFs rrz"_unwrap_batched..s. W  # #CZ I s%()r#r*r rr6rEr!r) rr<r-r9r.r=out_dims_as_tuplerHrAs ```` @r_unwrap_batchedrKts/K! U/6*#A&&& JPWXX !$O5F G     #O5F G   r$outputsc Rt|tryt|ts0tdt |dt |dt |dt |D]H\}}t|trtdt |dt |dt |d|d y)Nr0z , ...): `z%` must only return Tensors, got type z as the return.z for return r1)r rr!rr3r4 enumerate)rLr.idxoutputs r_validate_outputsrQs'6" gu %IdO$Iio->?!!%g @  !) V ff % IdO$Iio->?!!%fl3%q B   r$ct|tryt|trtd|Dst dt |d|dy)Nc3<K|]}t|tywr))r r2)rrHs rrz6_check_out_dims_is_int_or_int_tuple..s2%, 7C 2sr0r@zu): `out_dims` must be an int or a tuple of int representing where in the outputs the vmapped dimension should appear.)r r2r!allrr3)r<r.s r#_check_out_dims_is_int_or_int_tuplerUs^(C  h &c2082/IdO$$4XJ?/ 0  /r$cHt|dr |jSt|S)N__name__)hasattrrWrepr)r.s rr3r3s"tZ }} :r$z@Please use `torch.vmap` instead of `torch._vmap_internals.vmap`.)categoryct|||S)z4 Please use torch.vmap instead of this API. )_vmap)r.r+r<s rvmapr]s w ))r$cNtjfd}|S)NcFttjj} t ||\}}|}s t |t |||tjjS#tjjwxYw)N)r=)rUr6_C_vmapmode_increment_nestingr;rQrK_vmapmode_decrement_nesting) r,r-r:r9rr=r.r+r<s rwrappedz_vmap..wrappeds+Hd;XX99;  3)?z4* &NJ#N3O*!/48"(?  HH 0 0 2EHH 0 0 2s 4B B ) functoolswraps)r.r+r<r=rcs```` rr\r\s'__T33* Nr$)F)rr)rrF) rdtypingrrrrtyping_extensionsrr6rtorch.utils._pytreer r r r2r! in_dims_t out_dims_tlistrr#strr*r;boolrKrQrUr3 FutureWarningr]r\rr$rros!11( WW #u*  3c3h' ( x}% " %fck0B(B"C      #2s7+  9A 9A 9A9A  9A  5#: 9AF%* # 65#556# # #  #  # " #  # T s ( t "  *  H  QU  H F *x*)*:*h* *$)      "   r$