
    *i8             
      @   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
Jr  S SK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  S SKJr  S SKJr  S SKrS SK r!S SK"r"\(       a  S S	K"J#r#  S
\RH                  ;  a5  \	RJ                  RM                  S\'" \" \(5      RR                  S-  5      5        S SK*r*S SK+J,r,J-r-  S SK.J/r/  S SK0J1r1J2r2  S SK3J4r4  S SK5J6r6  \Rn                  " S5      r8 " S S\5      r9 " S S\5      r:\" SSS9r; " S S5      r< " S S\<5      r= " S S\<5      r>\<R                  S 5       " S! S"\=5      5       r@\<R                  S#S$5       " S% S$\=5      5       rA\<R                  S&5       " S' S(\=5      5       rB\<R                  S)5       " S* S+\=5      5       rC\<R                  S,S-5       " S. S/\=5      5       rD\<R                  S05       " S1 S2\=5      5       rE\<R                  S3S45       " S5 S6\=5      5       rF\<R                  S75       " S8 S9\=5      5       rG\<R                  S:5       " S; S<\=5      5       rH\<R                  S=S>S?5       " S@ SA\=5      5       rI\<R                  SBSCSDSESFSGSHSI5       " SJ SI\=5      5       rJ\<R                  SK5       " SL SM\J5      5       rK\<R                  SGSN5       " SO SP\>5      5       rL\<R                  SQSR5       " SS ST\>5      5       rM\<R                  SU5       " SV SW\J5      5       rN\<R                  SU5       " SX SY\>5      5       rO\<R                  SN5       " SZ S[\J5      5       rP\<R                  S\5       " S] S^\=5      5       rQ\<R                  S_5       " S` Sa\=5      5       rR\<R                  Sb5       " Sc Sd\=5      5       rS\<R                  Se5       " Sf Sg\=5      5       rT\<R                  Sh5       " Si Sj\=5      5       rU\<R                  Sk5       " Sl Sm\=5      5       rV\<R                  Sn5       " So Sp\=5      5       rW\<R                  SqSrSs5       " St Sq\=5      5       rX\<R                  Su5       " Sv Su\=5      5       rY\<R                  Sw5       " Sx Sy\=5      5       rZ\<R                  Sz5       " S{ S|\=5      5       r[\<R                  S}5       " S~ S\[5      5       r\\<R                  SSSS5       " S S\=5      5       r]\<R                  SSS5       " S S\>5      5       r^\<R                  S5       " S S\^5      5       r_\<R                  S5       " S S\>5      5       r`\<R                  S5       " S S\=5      5       ra\<R                  S5       " S S\=5      5       rb\<R                  S5       " S S\X5      5       rc\<R                  S5       " S S\b5      5       rd\<R                  S5       " S S\=5      5       re\<R                  S5       " S S\=5      5       rf\<R                  S5       " S S\=5      5       rg\<R                  S5       " S S\g5      5       rh\<R                  S5       " S S\=5      5       ri\<R                  SS5       " S S\=5      5       rj\<R                  S5       " S S\=5      5       rk\<R                  S5       " S S\=5      5       rl\<R                  S5       " S S\=5      5       rm\<R                  SSSS5       " S S\=5      5       rn\<R                  SSS5       " S S\n5      5       ro\<R                  SS5       " S S\n5      5       rp\<R                  S5       " S S\n5      5       rq\<R                  SSS5       " S S\n5      5       rr\<R                  SS5       " S S\n5      5       rs\<R                  S5       " S S\=5      5       rt\<R                  S5       " S S\=5      5       ru\<R                  SS5       " S S\=5      5       rv\<R                  S5       " S S\>5      5       rw\<R                  S5       " S S\v5      5       rx\<R                  S5       " S S\=5      5       ry\<R                  S5       " S S\=5      5       rz\<R                  S5       " S S\z5      5       r{\<R                  SS5       " S S\=5      5       r|\<R                  S5       " S S\|5      5       r}\<R                  SSS5       " S S\=5      5       r~\<R                  S5       " S S\=5      5       r\<R                  S5       " S S\=5      5       r\<R                  S5       " S S\=5      5       r\<R                  S5       " S S\=5      5       r\<R                  S5      \<R                  S5       " S S\=5      5       5       r\<R                  S5       " S S\=5      5       r\<R                  GS 5       " GS GS\=5      5       r\<R                  GSGS5       " GS GS\n5      5       r\<R                  GS5       " GS GS	\=5      5       r\<R                  GS
5       " GS GS\=5      5       r\<R                  GS5       " GS GS\=5      5       r\<R                  GS5      \<R                  GS5      \<R                  GS5       " GS GS\=5      5       5       5       r\<R                  GS5       " GS GS\b5      5       r\<R                  GS5       " GS GS\=5      5       r\<R                  GS5      \<R                  GS5      \<R                  GS5      \<R                  GS5       " GS GS \=5      5       5       5       5       r\<R                  GS!5       " GS" GS!\=5      5       r\<R                  GS#5       " GS$ GS%\=5      5       r\<R                  GS&GS'5       " GS( GS)\=5      5       r\<R                  GS*5       " GS+ GS,\=5      5       r\<R                  GS-GS.GS/5       " GS0 GS.\=5      5       r\<R                  GS15       " GS2 GS3\=5      5       r\<R                  GS45       " GS5 GS6\=5      5       r\<R                  GS75       " GS8 GS9\=5      5       r\<R                  GS:5       " GS; GS<\J5      5       r\<R                  GS=GS>5       " GS? GS@\5      5       r\<R                  GSAGSB5       " GSC GSD\\5      5       r\<R                  GSE5       " GSF GSG\=5      5       r\<R                  GSH5      \<R                  GSI5       " GSJ GSK\=5      5       5       r\<R                  GSL5       " GSM GSL\=5      5       r\<R                  Ss5       " GSN GSO\>5      5       r\<R                  GSL5       " GSP GSQ\5      5       r\<R                  SH5       " GSR GSS\5      5       r\<R                  GST5       " GSU GSV\5      5       r\<R                  GSW5       " GSX GSY\=5      5       r\<R                  GSZ5       " GS[ GS\\=5      5       r\<R                  GS]5       " GS^ GS_\J5      5       r\<R                  GS`5       " GSa GSb\=5      5       r\<R                  GSc5      \<R                  GSd5       " GSe GSf\=5      5       5       r\<R                  GSg5       " GSh GSi\=5      5       r " GSj GSk\J5      r " GSl GSm\L5      r " GSn GSo\*GRP                  5      rGSuGSp jrGSvGSq jrGSwGSr jrGSxGSs jr\GSt:X  a  \" 5         gg(y      )annotationsN)IntEnum)Path)sha256)
TYPE_CHECKINGAnyCallableContextManagerIterableIteratorLiteralSequenceTypeVarcast)chain)
AutoConfig)TensorNO_LOCAL_GGUF   zgguf-py)MistralTokenizerTypeMistralVocab)TokenizerVersion)DATASET_MEANDATASET_STD)
Tekkenizer)SentencePieceTokenizerz
hf-to-ggufc                  ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
SentencePieceTokenTypes-   r                   N)__name__
__module____qualname____firstlineno__NORMALUNKNOWNCONTROLUSER_DEFINEDUNUSEDBYTE__static_attributes__r%       T/var/www/html/ai-backend/venv/lib/python3.13/site-packages/bin/convert_hf_to_gguf.pyr   r   -   s     FGGLFDr1   r   c                      \ rS rSrSrSrSrg)	ModelType6   r   r    r%   N)r&   r'   r(   r)   TEXTMMPROJr0   r%   r1   r2   r4   r4   6   s    DFr1   r4   AnyModeltype[ModelBase])boundc                     \ rS rSr% \R
                  0 \R                  0 0rS\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S	\S'   S	\S'   S\S'   S	\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S \S!'   S"\S#'   S$r	S	\S%'   S$S$S$S&S&S'S'S$S$S&S&S(.                   S?S) jjr
\S@S* j5       rSASBS+ jjrSCS, jrSDSES- jjrSFSGS. jjrSHSIS/ jjrS0 rSJS1 jrSKS2 jrSLS3 jrS4 rS5 rSMS6 jrS7 rS8 r\SNS9 j5       r\SOS: j5       r\SPS; j5       r\S< 5       r\\R
                  4SQS= jj5       r S>r!g&)R	ModelBase>   z+dict[ModelType, dict[str, type[ModelBase]]]_model_classesr   	dir_modelgguf.LlamaFileTypeftype	fname_outboolis_big_endianzgguf.GGUFEndian	endianessuse_temp_filelazy	list[str]
part_namesis_safetensorsdict[str, Any]hparamszset[str] | Nonetensor_nameszgguf.GGUFWritergguf_writer
str | None
model_namePath | Nonemetadata_overridedir_model_cardremote_hf_model_idzgguf.MODEL_ARCH
model_archintblock_countzgguf.TensorNameMap
tensor_mapFis_mistral_formatNr   )rD   rF   eagerrR   rP   split_max_tensorssplit_max_sizedry_runsmall_first_shardrL   rT   c                 ^ ^ [        T 5      [        L d$  [        T 5      [        L d  [        T 5      [        L a"  [	        [        T 5      R
                  < S35      eUT l        UT l        UT l        UT l	        U(       a  [        R                  R                  O[        R                  R                  T l        UT l        U(       + =(       d    TS LT l        TT l        Tb  ST l        SUU 4S jjnUT l        OT R(                  (       d  SOSn[        R+                  T R                  US5      T l        [/        T R,                  5      S:  T l        T R$                  (       d&  [        R+                  T R                  SS	5      T l        Uc*  [        R1                  T R                  T R(                  5      OUT l        S T l        UT l        UT l        UT l        T R                  [        R<                  R>                  :X  a  [A        T R'                  5       5      u  nnURB                  [D        RF                  :X  aC  [H        RK                  S
URB                   S35        [        R<                  RL                  T l        OB[H        RK                  SURB                   S35        [        R<                  RN                  T l        [        RP                  " S [        RR                  T RT                     T R                  T R                  XXS9T l+        g )Nz$ should not be directly instantiatedTc               3  >  >#    [         R                  ST 35        [        R                  R                  R                  T5      n [        S U R                  5        5       5      Tl        U R                  5        H  u  pU[        R                  U5      4v   M      g 7f)Nz(Using remote model with HuggingFace id: c              3  $   #    U  H  ov   M     g 7fNr%   ).0names     r2   	<genexpr>AModelBase.__init__.<locals>.get_remote_tensors.<locals>.<genexpr>v   s     'O9N9Ns   )loggerinfoggufutilitySafetensorRemoteget_list_tensors_hf_modelsetkeysrM   itemsLazyTorchTensorfrom_remote_tensor)remote_tensorsrd   remote_tensorrT   selfs      r2   get_remote_tensors.ModelBase.__init__.<locals>.get_remote_tensorss   s     FGYFZ[\!%!>!>!X!XYk!l$''O9L9L9N'O$O!+9+?+?+A'D!C!CM!RSS ,Bs   BBmodelconsolidatedz.safetensorsr   pytorch_modelz.binz/choosing --outtype f16 from first tensor type ()z0choosing --outtype bf16 from first tensor type ()patharchrE   rF   r[   r\   r]   r^   returnzIterator[tuple[str, Tensor]]),typer<   	TextModelMmprojModel	TypeErrorr&   r?   rA   rB   rD   ri   
GGUFEndianBIGLITTLErE   rF   rG   rT   rJ   get_tensorsrY   get_model_part_namesrI   lenload_hparamsrL   rM   rR   rP   rS   LlamaFileTypeGUESSEDnextdtypetorchfloat16rg   rh   
MOSTLY_F16MOSTLY_BF16
GGUFWriterMODEL_ARCH_NAMESrU   rN   )rt   r?   rA   rB   rD   rF   rZ   rR   rP   r[   r\   r]   r^   rL   rT   ru   prefix_first_tensors   `             `    r2   __init__ModelBase.__init__^   sh   
 :"T
i'T
k)tDz2255YZ[["
"*0=,,4??CYCY*IA"4D"@	"4)"&DT T  2D$($:$:WF'<<T^^VUcdDO"%doo"6":D&&"+"@"@Q`bh"iY`Yhy--dnnd>T>TUnu !2$' ::++333"4#3#3#56OA|!!U]]2MlN`N`Maabcd!//::
N|OaOaNbbcde!//;;
  ??4;P;PQUQ`Q`;amqm{m{  LP  L^  L^=Nw~er1   c                b    UR                   UR                  pCU U U 3nUR                  U5      $ rb   )stemsuffix	with_name)clsr{   r   r   r   new_names         r2   add_prefix_to_filename ModelBase.add_prefix_to_filename   s2    yy$++fXdVF8,~~h''r1   c                   ^  [        U 4S jU 5       S 5      nUb  T R                  U   $ U(       a  g [        SU 35      e)Nc              3  J   >#    U  H  oTR                   ;   d  M  Uv   M     g 7frb   )rL   )rc   krt   s     r2   re   (ModelBase.find_hparam.<locals>.<genexpr>   s     9t!DLL'8AAts   #	#could not find any of: )r   rL   KeyError)rt   rn   optionalkeys   `   r2   find_hparamModelBase.find_hparam   sB    9t94@?<<$$0788r1   c           
   #  (  ^#    [        5       nU R                  (       d  U R                  (       a  SOSnUS-  nU R                  U-  nUR	                  5       (       a  [        5       U l        [        R                  SU S35        [        USSS9 n[        R                  " U5      nUR                  S	5      mTb  [        T[        5      (       d  [        S
U< 35      eU R
                  R                  TR!                  5       5        S S S 5        OXl        0 mOXl        0 mU R"                   GHk  n[        R                  SU S35        U R                  (       a1  SSKJn  [)        [*        [,           U" U R                  U-  SSS95      nOA[.        R0                  " [2        R                  " [5        U R                  U-  5      SSSS95      nU n	UR                  U	R!                  5       5        U	R!                  5        H  n
U R                  (       aJ  U R6                  (       a'  U	R9                  U
5      n[:        R=                  U5      nO<U	R?                  U
5      nO*X   nU R6                  (       a  [:        RA                  U5      nX4v   M     S S S 5        GMn     [C        URE                  U R
                  5      5      S:  a  [G        U R
                  RI                  U5      5      n[G        URI                  U R
                  5      5      n[G        [        U4S jU 5       5      5      n[C        U5      S:X  a   [C        U5      S:  a  [        SU SU 35      e[        SU SU 35      eg ! , (       d  f       GNZ= f! , (       d  f       GMa  = f7f)Nzmodel.safetensorszpytorch_model.binz.index.jsonz%gguf: loading model weight map from ''rutf-8encoding
weight_mapzCan't load 'weight_map' from zgguf: loading model part 'r   )	safe_openptcpu)	frameworkdeviceT)map_locationmmapweights_onlyc              3  <   >#    U  H  oT;   d  M
  TU   v   M     g 7frb   r%   )rc   nr   s     r2   re   (ModelBase.get_tensors.<locals>.<genexpr>   s     &Ygj}z!}gs   	z#Missing or incomplete model files: z
Missing tensors: zOMismatch between weight map and model parts for tensor names:
Missing tensors: z
Extra tensors: )%rm   rY   rJ   r?   is_filerM   rg   rh   openjsonloadget
isinstancedict
ValueErrorupdatern   rI   safetensorsr   r   r
   r   
contextlibnullcontextr   strrG   	get_slicerp   from_safetensors_slice
get_tensor
from_eagerr   symmetric_differencesorted
difference)rt   tensor_names_from_parts
index_name
index_filefindex	part_namer   ctx
model_partrd   datamissingextramissing_filesr   s                  @r2   r   ModelBase.get_tensors   s    ,/E%%040C0C,I\J-'J*4J!!##$'E!CJ<qQR*cG<,0IIaLE!&<!8J!)J1M1M(+H)WXX%%,,Z__->? =< %<!
 7JIKK4YKqAB""1>#.	$..9:T`dmr0st ,,UZZDNNY<V8Wfkrv  FJ  .K  L
'..z/@A&OO-D**99#-#7#7#=D#2#I#I$#OD#-#8#8#>D)/99#2#=#=d#CD*$ .  )4 &;;D<M<MNORSST..99:QRSG2==d>O>OPQE"3&Yg&Y#YZM5zQ3}#5#9 #F}o V55<I"? @ @ ! "55<I >338'"; < < TO =<, s:   BNA8M-CNCM?CN-
M<7N?
N			Nc                    U[         R                  U R                     ;  a  [        SU< SU R                  < 35      e[         R                  U   nSU;   a  Uc   eUR                  US9nXC-   $ )NzMissing z for MODEL_TENSORS of {bid}bid)ri   MODEL_TENSORSrU   r   TENSOR_NAMESformat)rt   r   r   r   rd   s        r2   format_tensor_nameModelBase.format_tensor_name   sp    d((99xw.DT__DWXYY%%c*d??"?;;3;'D}r1   c                    U[         R                  U R                     ;  a  g[         R                  U   nSU;   a  Uc  gUR	                  US9nOUb  gXU-   :H  $ )NFr   r   )ri   r   rU   r   r   )rt   rd   r   r   r   key_names         r2   match_model_tensor_name!ModelBase.match_model_tensor_name   sb    d((99))#.h{3/H6)**r1   c                \    U R                   R                  XS9nUc  [        SU< 35      eU$ )N)r   try_suffixeszCan not map tensor )rX   get_namer   )rt   rd   r   r   s       r2   map_tensor_nameModelBase.map_tensor_name   s7    ??+++P24(;<<r1   c                    [        S5      e)Nz7set_gguf_parameters() must be implemented in subclassesNotImplementedErrorrt   s    r2   set_gguf_parametersModelBase.set_gguf_parameters   s    !"[\\r1   c                ,    AU R                  U5      U4/$ rb   r   rt   
data_torchrd   r   s       r2   modify_tensorsModelBase.modify_tensors  s    %%d+Z899r1   c                    AAAAgNFr%   rt   rd   r   r   n_dimss        r2   tensor_force_quantModelBase.tensor_force_quant  s    (Cr1   c                    g)Nr%   r%   r   s    r2   generate_extra_tensors ModelBase.generate_extra_tensors  s    r1   c                  ^ ^^ [        S T R                  R                  R                  5        5       5      [	        S5      -   n[        T R                  5       T R                  5       5       GH"  u  p#UR                  S5      (       a  M  UR                  nUR                  [        R                  [        R                  4;  a  UR                  [        R                  5      nS mUR                  S5       H%  nUR                  5       (       d  M  [!        U5      m  O   T R#                  X2T5       GHX  u  mnUR%                  5       n[	        UR&                  5      S:X  a  UR%                  5       n[	        UR&                  5      nT R)                  UTTU5      nUS::  d  TR                  S5      (       a  [*        R,                  R.                  nUSL Ga  [1        UUU 4S	 j[*        R2                  R4                  [*        R2                  R6                  [*        R2                  R8                  [*        R2                  R:                  [*        R2                  R<                  [*        R2                  R>                  [*        R2                  R@                  [*        R2                  RB                  [*        R2                  RD                  [*        R2                  RF                  [*        R2                  RH                  [*        R2                  RJ                  [*        R2                  RL                  [*        R2                  RN                  [*        R2                  RP                  [*        R2                  RR                  [*        R2                  RT                  4 5       5      (       d  TR                  S
5      (       d  [*        R,                  R.                  nUSL Ga  [1        UUU 4S j[*        R2                  RV                  [*        R2                  RX                  [*        R2                  RZ                  [*        R2                  R\                  [*        R2                  R^                  [*        R2                  R`                  4 5       5      (       a\  T Rb                  [*        Rd                  Rf                  [*        Rd                  Rh                  4;   a  [*        R,                  Rj                  n[m        U[n        5      (       Ga  T Rb                  [*        Rd                  Rp                  :X  a  [*        R,                  R.                  nGOrT Rb                  [*        Rd                  Rr                  :X  a  [*        R,                  Rj                  nGO.T Rb                  [*        Rd                  Rt                  :X  a  [*        R,                  Rv                  nOT Rb                  [*        Rd                  Rx                  :X  a  [*        R,                  Rz                  nOT Rb                  [*        Rd                  Rf                  :X  a  [*        R,                  R|                  nOeT Rb                  [*        Rd                  Rh                  :X  a  [*        R,                  R~                  nO"[        ST Rb                  R                   35      e [*        R                  R                  Xh5      nUR                  [        R                  :X  a!  [*        R                  " UR&                  U5      OUR&                  n
SSR                  S [        U
5       5       5       S3n[        R                  SU S3T S3-   SU SUR                   SU 35        T R                  R                  TXhS9  GM[     GM%     g ! [*        R                   a[  n	[        R                  SU	S5        [*        R,                  Rj                  n[*        R                  R                  Xh5      n S n	A	GN3S n	A	ff = f)Nc              3  <   #    U  H  u  p[        U5      v   M     g 7frb   )r   )rc   r   ss      r2   re   ,ModelBase.prepare_tensors.<locals>.<genexpr>  s     O.Nda3q66.Ns   z.weight,)z.attention.masked_biasz.attention.biasz.rotary_emb.inv_freq.r   r   z_norm.weightFc              3  J   >#    U  H  nTR                  TUT5      v   M     g 7frb   r   rc   r   r   r   rt   s     r2   re   r  7  s.      $C 44XsCHH$    #.weightc              3  J   >#    U  H  nTR                  TUT5      v   M     g 7frb   r  r  s     r2   re   r  Q  s.      
/  003DD r  zUnknown file type: z%s, %szfalling back to F16{, c              3  8   #    U  H  n[        U5      v   M     g 7frb   )r   )rc   r   s     r2   re   r  ~  s     *K?a3q66?s   }z%-r  , z --> z
, shape = 	raw_dtype)OmaxrX   mappingvaluesr   r   r  r   endswithr   r   r   float32tosplit	isdecimalrV   r   numpyshaper   ri   GGMLQuantizationTypeF32anyMODEL_TENSORFFN_GATE_INPPOS_EMBDTOKEN_TYPES
SSM_CONV1DSHORTCONV_CONVTIME_MIX_FIRSTTIME_MIX_W1TIME_MIX_W2TIME_MIX_DECAY_W1TIME_MIX_DECAY_W2TIME_MIX_LERP_FUSEDPOSNET_NORM1POSNET_NORM2V_ENC_EMBD_POSA_ENC_EMBD_POSALTUP_CORRECT_COEFALTUP_PREDICT_COEF
TOKEN_EMBDPER_LAYER_TOKEN_EMBDOUTPUTALTUP_ROUTERLAUREL_LLAUREL_RrA   r   MOSTLY_TQ1_0MOSTLY_TQ2_0F16r   rC   ALL_F32r   r   BF16MOSTLY_Q8_0Q8_0TQ1_0TQ2_0r   rd   quantsquantize
QuantErrorrg   warningnpuint8quant_shape_from_byte_shapejoinreversedrh   rN   
add_tensor)rt   max_name_lenrd   r   	old_dtypepartr   r   
data_qtypeer!  	shape_strr   r   s   `           @@r2   prepare_tensorsModelBase.prepare_tensors  s   Odoo.E.E.L.L.NOORUV`Raa %d&A&A&CTEUEUEW XD}}bcc"((I u}}'EE']]5==9
 C

3>>##d)C (
 *.)<)<Zs)S$* "'') tzz?a'%++-DTZZ?C?V?VW[]egjlr?s
 Q;("3"3N"C"C!%!:!:!>!>J &  !--:: --66 --99 --88 --<< --<< --99 --99 --?? --?? --AA --:: --:: --<< --<< --@@ --@@#$  , $,,Y77!%!:!:!>!>J&3 
/ ))44))>>))00))66))22))22 
/ 
, 
, zz**77**77& 
 &*%>%>%B%B
 j$//zzT%7%7%?%??%)%>%>%B%B
t'9'9'D'DD%)%>%>%B%B
t'9'9'E'EE%)%>%>%C%C
t'9'9'E'EE%)%>%>%C%C
t'9'9'F'FF%)%>%>%D%D
t'9'9'F'FF%)%>%>%D%D
(+>tzz>O)PQQB;;//AD UYT^T^bdbjbjTj88ZPptpzpz !*K8E?*K!K LBO	 L>3
!nDEQykQVWaWfWfVggqr{q|}~  ++Hd+Q *T% !YH  BNN8Q0EF!%!:!:!>!>J;;//ADBs   ,^`(A_>>`c                j    U R                   R                  [        R                  R                  5        g rb   )rN   add_typeri   GGUFTypeMODELr   s    r2   set_typeModelBase.set_type  s     !!$--"5"56r1   c                x   U R                   R                  5       u  p#pE[        R                  R	                  U R
                  U R                  U R                  U5      U l        U R                  (       a  U R                  U R                  l
        U R                  R                  c%  U R                  R                  U R                  l
        U R                  R                  c,  US:  a&  [        R                  " X#XE5      U R                  l        U R                  5         [        R                  S5        U R                  R!                  U R                   5        [        R                  S5        U R#                  5         [        R                  S5        U R                   R%                  [        R&                  5        g )Nr   zSet meta modelzSet model parameterszSet model quantization version)rN   get_total_parameter_countri   Metadatar   rR   rS   rP   metadatarT   rd   r?   
size_labelr\  rg   rh   set_gguf_meta_modelr   add_quantization_versionGGML_QUANT_VERSION)rt   
vocab_onlytotal_paramsshared_paramsexpert_paramsexpert_counts         r2   prepare_metadataModelBase.prepare_metadata  s/   CGCSCSCmCmCo@]**4+A+A4CVCVX\XgXgiuv ""!%!8!8DMM ==%!%!4!4DMM ==##+q0@'+|Ta'pDMM$$%))$*:*:;*+  "4511$2I2IJr1   c                    [        S5      e)Nz/write_vocab() must be implemented in subclassesr   r   s    r2   write_vocabModelBase.write_vocab  s    !"STTr1   c                "   U R                  5         U R                  SS9  U R                  R                  U R                  S9  U R                  R                  5         U R                  R                  SS9  U R                  R                  5         g )NFrf  r{   T)progress)rV  rk  rN   write_header_to_filerB   write_kv_data_to_filewrite_tensors_to_filecloser   s    r2   writeModelBase.write  su    /--4>>-B..0...= r1   c                    / n[         R                  " U 5       HD  nUR                  U5      (       d  M  UR                  U5      (       d  M3  UR	                  U5        MF     UR                  5         U$ rb   )oslistdir
startswithr  appendsort)r?   r   r   rI   filenames        r2   r   ModelBase.get_model_part_names  s[     "


9-H""6**x/@/@/H/H!!(+ . 	r1   c                0   U(       a/  [        U S-  SSS9 n[        R                  " U5      nS S S 5        U$  [        R                  " U SS9R                  5       nSW;   a  US   US'   SU;   a  US   S   US'   U$ ! , (       d  f       W$ = f! [         a}  n[        R                  SU  SU 35        [        R                  S	5        [        U S
-  SSS9 n[        R                  " U5      nS S S 5         S nAM  ! , (       d  f        S nAN= fS nAff = f)Nzparams.jsonr   r   r   Ftrust_remote_codez!Failed to load model config from : z"Trying to load config.json insteadconfig.json
llm_configtext_configthinker_config)	r   r   r   r   from_pretrainedto_dict	Exceptionrg   rI  )r?   rY   r   configrT  s        r2   r   ModelBase.load_hparams  s   i-/wG11 HM	&  //	US[[]F 6!$*<$8F=!v%$*+;$<]$KF=!' HGM  	&NN>ykA3OPNN?@i-/wG11 HGGG	&s@   A<#B <
B
D>DC;-D;
D	DDDc                .   ^ ^ T(       d   eSU U4S jjnU$ )Nc                   > U R                   [        R                  R                  :X  a  [        R                  O[        R
                  nT H  nU TR                  U   U'   M     U $ rb   )rU   ri   
MODEL_ARCHr7   r4   r6   r>   )modelcls
model_typerd   r   namess      r2   func ModelBase.register.<locals>.func  sR    -5-@-@DOODZDZ-Z))`i`n`nJ7?"":.t4 Or1   )r  r8   r~   r8   r%   )r   r  r  s   `` r2   registerModelBase.register  s    u	 	
 r1   c                    U R                   R                  5        H_  u  p[        R                  UR                   S35        [        UR                  5       5       H  n[        R                  SU 35        M     Ma     g )Nz models:z  - )r>   ro   rg   errorrd   r   rn   )r   r  model_classesrd   s       r2   print_registered_models!ModelBase.print_registered_models  sa    ),););)A)A)C%JLLJOO,H56}1134tD6]+ 5 *Dr1   c                f     U R                   U   U   $ ! [         a    [        SU< S35      S ef = f)NzArchitecture z not supported!)r>   r   r   )r   r|   r  s      r2   from_model_architecture!ModelBase.from_model_architecture  sF    	Y%%j1$77 	Y%dX_&MNTXX	Ys    0)r?   rS   rE   rB   rA   r   rN   rL   rD   rJ   rG   ra  rR   rP   rI   rT   rM   rF   )r?   r   rA   r@   rB   r   rD   rC   rF   rC   rZ   rC   rR   rQ   rP   rO   r[   rV   r\   rV   r]   rC   r^   rC   rL   dict[str, Any] | NonerT   rO   )r{   r   r   r   r~   r   Frn   Iterable[str]r   rC   r~   r   r}   )Nr  )r   gguf.MODEL_TENSORr   
int | Noner   r   r~   r   r  )
rd   r   r   r  r   r  r   r   r~   rC   r  .biasrd   r   r   zSequence[str]r~   r   r   r   rd   r   r   r  r~   Iterable[tuple[str, Tensor]]
rd   r   r   r   r   r  r   rV   r~   z gguf.GGMLQuantizationType | boolr~   r  rf  rC   )r?   r   r   r   r   r   r~   rH   )r?   r   rY   rC   )r  r   r~   zCallable[[AnyModel], AnyModel])r|   r   r~   r9   )"r&   r'   r(   r)   r4   r6   r7   r>   __annotations__rY   r   classmethodr   r   r   r   r   r   r   r   r   r  rV  r\  rk  rn  rx  staticmethodr   r   r  r  r  r0   r%   r1   r2   r<   r<   >   s   "CN? 
 OO
J!!  """"   ""#t#mr',E26QU*+1V[+0SWz~	6e $6e596e$/6eDN6e %(6e >A6e PT6e %)	6e <Q	6e nx	6ep ( (
9<<|+]:
tRl7K:U!    .   , , =F^^ Y Yr1   r<   c                     ^  \ rS rSr% \R
                  rS\S'   U 4S jr\	S 5       r
S rSU 4S jjrS rS	 rSS
 jrSS jrSS jrSS jrSS jrS rSS jrS rS rS rSS jrSS jrSrU =r$ )r   i  r   hf_archc                  > [         TU ]  " U0 UD6  U R                  (       d&  [        U R                  U R
                  5      U l        OSU l        SU R                  ;   a"  0 U R                  EU R                  S   EU l        U R                  / SQ5      U l        [        R                  " U R                  U R                  5      U l        g )N r  )n_layersnum_hidden_layersn_layer
num_layers)superr   rY   get_model_architecturerL   r  r  r   rW   ri   get_tensor_name_maprU   rX   rt   argskwargs	__class__s      r2   r   TextModel.__init__  s    $)&)%%1$,,PDLDLDLL(JdllJdll=.IJDL++,fg224??DDTDTUr1   c                V    SU R                   ;  a  [        SU R                  < 35      eg )NrU   z"Missing property 'model_arch' for )__dict__r   r&   )r   s    r2   __init_subclass__TextModel.__init_subclass__  s-     s||+@@PQRR ,r1   c                $    U R                  5         g rb   _set_vocab_gpt2r   s    r2   	set_vocabTextModel.set_vocab      r1   c           
       > [         TU ]  US9  U R                  R                  5       S   nU R                  R
                  R                  S5      S   nU R                  R                  5       (       Ga  U(       d  [        R                  " U R                  R
                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  X2S:  a  SOS S9nOj[        R                  " U R                  R
                  U R                  R                  U R                  R                  U R                  R                  S S SS9nU R                  U S	3-  U l        OGU R                  R                   [        R"                  " U R                  R
                  U5      -  U l        [$        R'                  S
5        U R)                  5         g )Nrq  r   r   r    LoRAr  vocab)rb  output_typer  .ggufzSet model tokenizer)r  rk  rN   r_  rA   rd   	partitionrB   is_dirri   naming_conventionra  basenamefinetuneversionrb  parentfill_templated_filenamerg   rh   r  )rt   rf  rg  r  fname_defaultr  s        r2   rk  TextModel.prepare_metadata	  s    J 7''AACAF::??44S9!< >>  ""%)%;%;DMM<N<NPTP]P]PfPfhlhuhuh~h~  AE  AN  AN  AV  AV  X\  Xe  Xe  Xp  Xp  r}  cd  Td  JP  jn  &o%)%;%;DMM<N<NPTP]P]PfPfhlhuhuh~h~  AE  AN  AN  AV  AV  cg  uy  FM  &N "^^u.EEDN "^^22T5Q5QRVR`R`ReRegr5ssDN)*r1   c                Z   U R                   R                  U R                  5        U R                  / SQSS9=nb3  U R                   R	                  U5        [
        R                  SU 35        U R                  / SQSS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  / SQSS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  / S	QSS9=nb3  U R                   R                  U5        [
        R                  S
U 35        U R                  SS/SS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  R                  S5      =nb3  U R                   R                  U5        [
        R                  SU 35        U R                  SS/SS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  / SQSS9=nb3  U R                   R                  U5        [
        R                  SU 35        U R                  R                  S5      =n	b3  U R                   R!                  U	5        [
        R                  SU	 35        U R                  R                  S5      =n
b3  U R                   R#                  U
5        [
        R                  SU
 35        U R                  R                  S5      =nb6  U R                   R%                  U5        U R                   R'                  U5        U R                   R)                  U R*                  5        [
        R                  SU R*                   35        g )N)max_position_embeddingsn_ctxn_positions
max_lengthTr   zgguf: context length = )hidden_sizen_embddimzgguf: embedding length = )intermediate_sizen_inner
hidden_dimzgguf: feed forward length = )num_attention_headsn_headn_headszgguf: head count = num_key_value_heads
n_kv_headszgguf: key-value head count = 
rope_thetazgguf: rope theta = rms_norm_epsnorm_epsgguf: rms norm epsilon = )layer_norm_epslayer_norm_epsilonnorm_epsilonzgguf: layer norm epsilon = num_local_expertszgguf: expert count = num_experts_per_tokzgguf: experts used count = head_dimgguf: file type = )rN   add_block_countrW   r   add_context_lengthrg   rh   add_embedding_lengthadd_feed_forward_lengthadd_head_countadd_head_count_kvrL   r   add_rope_freq_baseadd_layer_norm_rms_epsadd_layer_norm_epsadd_expert_countadd_expert_used_countadd_key_lengthadd_value_lengthadd_file_typerA   )rt   r  r  n_ffr  	n_head_kvr  	f_rms_eps
f_norm_eps	n_expertsn_experts_usedr  s               r2   r   TextModel.set_gguf_parameters%  sI   (()9)9:%%&grv%wwE  E//6KK1%9:&&'GRV&WWFd11&9KK3F8<=$$%S^b$ccDp44T:KK6tf=>&&'S^b&ccFp++F3KK-fX67))+@,*OZ^)__Il..y9KK7	{CD,,**<88JE//
;KK-j\:;))>:*FQU)VVIc33I>KK3I;?@**+cnr*ssJ  A//
;KK5j\BC))*=>>IK--i8KK/	{;<"ll../DEENR22>BKK5n5EFG((44HA++H5--h7&&tzz2(56r1   c                ,   [        U R                  R                  5      S:w  a  [        S5      eU R	                  SS9  U R                  R                  U R                  S9  U R                  R                  5         U R                  R                  5         g )Nr   z)Splitting the vocabulary is not supportedTrq  rr  )	r   rN   tensorsr   rk  rt  rB   ru  rw  r   s    r2   rn  TextModel.write_vocabS  sw    t''(A-HII.--4>>-B..0 r1   c                   [        U[        [        45      (       a  UR                  SS9nO5[        U[        5      (       a  UR                  5       R                  SS9nOUnUS;   nU=(       d)    UR                  S5      =(       a    UR                  S5      nU=(       d)    UR                  S5      =(       a    UR                  S5      nU=(       d)    UR                  S5      =(       a    UR                  S	5      nU$ )
Nr   r   )z<pad>z<mask>z<2mass>z[@BOS@]z<||>u   <｜u   ｜>z<unused>)r   bytes	bytearraydecode
memoryviewtobytesr}  r  )rt   token
token_textseems_specials       r2   does_token_look_special!TextModel.does_token_look_special\  s    eeY/00w7Jz**///AJJ # '
 

 &d**?*?*E*c*J]J]^bJc%h**?*?*G*gJL_L_`fLg &h**?*?	*J*gzObObcfOgr1   c                   / n/ nSSK Jn  UR                  U R                  5      nU R                  R                  S[        UR                  5      5      n[        UR                  R                  5       5      U:  d   eU R                  U5      nUR                  R                  5        VVs0 s H  u  pxX_M	     n	nnUR                  5       n
UR                  n[        U5       GH  nX;  a@  UR                  SU S35        UR                  [         R"                  R$                  5        MI  X   nX;   Ga  X   R&                  (       dS  UnUR)                  UR+                  USS95      nX:w  a-  [,        R/                  [1        U5       S[1        U5       S	35        X   R2                  (       d  U R5                  U5      (       a*  UR                  [         R"                  R6                  5        OtUR9                  S
R)                  S5      S5      nUR                  [         R"                  R:                  5        O)UR                  [         R"                  R<                  5        UR                  U5        GM     XU4$ s  snnf )Nr   AutoTokenizer
vocab_size[PAD]Fadd_special_tokens  is encoded and decoded back to  using AutoTokenizer   ▁r   r  )transformersr!  r  r?   rL   r   r   r  r  r  get_vocab_base_prero   get_added_vocabadded_tokens_decoderranger~  ri   	TokenTyper.   
normalizedr  encoderg   rh   reprspecialr  r,   replacer-   r*   )rt   tokenstoktypesr!  	tokenizerr"  tokpreencoded_tokid_reverse_vocabadded_vocabr-  ir  previous_tokens                  r2   get_vocab_baseTextModel.get_vocab_baset  s
    .!11$..A	\\%%lC	4HI
9??))+,z999((3BK//BWBWBYZBY.>k)BYZ//1(==z"A%QCqk* 5 56*-' 02==). ) 0 01A1A%\a1A1b c)2"KK4+?*@@`aefkal`m  nB  )C  D+.66$:V:VW\:]:] (>(>? !&o.D.DW.Ms S (C(CDOODNN$9$9:e$1 #4 ''? [s   ,I>c                n   SnUR                  U5      n[        [        U5      R                  5       5      R                  5       n[        R                  SU 35        [        R                  SU 35        S nUS:X  a  SnUS:X  a  SnUS:X  a  SnUS	:X  a  SnUS
:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  SnUS:X  a  S nUS!:X  a  S"nUS#:X  a  S$nUS%:X  a  S&nUS':X  a  S(nUS):X  a  S*nUS+:X  a  S,nUS-:X  a  S.nUS/:X  a  S0nUS1:X  a  S2nUS3:X  a  SnUS':X  a  S4nUS5:X  a  S6nUS7:X  a  S8nUS!:X  a  S9nUS::X  a  S;nUS<:X  a  S=nUS>:X  a  S?nUS@:X  a  SAnUSB:X  a  SCnUSD:X  a  SEnUSF:X  a  SGnUSH:X  a  SInUSJ:X  a  SKnUSL:X  a  SMnUSN:X  a  SOnUSP:X  a  SQnUSR:X  a  SSnUST:X  a  SUnUSV:X  a  SWnUSX:X  a  SYnUSZ:X  a  S[nUS\:X  a  S]nUS^:X  a  S_nUS`:X  a  SanUSb:X  a  ScnUSd:X  a  SenUSf:X  a  SgnUSh:X  a  SinUSj:X  a  SknUSl:X  a  SmnUSn:X  a  SonUSp:X  a  SqnUSr:X  a  SsnUSt:X  a  SunUSv:X  a  SwnUSx:X  a  SynUGc
  [        R                  Sz5        [        R                  S{5        [        R                  S|5        [        R                  S}5        [        R                  S~5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  S5        [        R                  SU 35        [        R                  S{5        [        R                  Sz5        [        S5      e[        R                  S[        U5       35        [        R                  SU 35        U$ )Nu  
 

 


 	 		 	
  
   
    
     
🚀 (normal) 😶‍🌫️ (multiple emojis concatenated) ✅ 🦙🦙 3 33 333 3333 33333 333333 3333333 33333333 3.3 3..3 3...3 កាន់តែពិសេសអាច😁 ?我想在apple工作1314151天～ ------======= нещо на Български ''''''```````""""......!!!!!!?????? I've been 'told he's there, 'RE you sure? 'M not sure I'll make it, 'D you like some tea? We'Ve a'lLzchktok: zchkhsh: @b6e8e1518dc4305be2fe39c313ed643381c4da5db34a98f6a04c093f8afbe99bzchatglm-bpe@81d72c7348a9f0ebe86f23298d37debe0a5e71149e29bd283904c02262b27516@a1336059768a55c99a734006ffb02203cd450fed003e9a71886c88acf24fdbc2glm4@9ca2dd618e8afaf09731a7cf6e2105b373ba6a1821559f258b272fe83e6eb902@1431a23e583c97432bc230bff598d103ddb5a1f89960c8f1d1051aaa944d0b35z
minerva-7b@7e57df22b1fe23a7b1e1c7f3dc4e3f96d43a4eb0836d0c6bdc3436d7b2f1c664hunyuan@bba3b3366b646dbdded5dbc42d59598b849371afc42f7beafa914afaa5b70aa6zhunyuan-dense@a6b57017d60e6edb4d88ecc2845188e0eb333a70357e45dcc9b53964a73bbae6z	falcon-h1@60476e1243776c4fb1b993dbd7a5f15ac22f83c80afdf425fa5ae01c8d44ef86@3eda48b4c4dc7de733d1a8b3e3b4a85243dbbf704da2ee9d42c6beced8897896@48f8e02c0359c0bbdd82f26909171fac1c18a457bb47573ed1fe3bbb2c1cfd4b@81212dc7cdb7e0c1074ca62c5aeab0d43c9f52b8a737be7b12a777c953027890kimi-k2@d4540891389ea895b53b399da6ac824becc30f2fba0e9ddbb98f92e55ca0e97cqwen2@0ef9807a4087ebef797fc749390439009c3b9eda9ad1a097abbe738f486c01e5z	llama-bpe@049ecf7629871e3041641907f3de7c733e4dbfdc736f57d882ba0b0845599754zdeepseek-llm@347715f544604f9118bb75ed199f68779f423cabb20db6de6f31b908d04d7821zdeepseek-coder@8aeee3860c56296a157a1fe2fad249ec40aa59b1bb5709f4ade11c4e6fe652edfalcon@0876d13b50744004aa9aeae05e7b0647eac9d801b5ba4668afc01e709c15e19fzbert-bge@9d032fcbd5501f4a38150912590928bfb36091efb5df11b8e2124b0390e3fb1efalcon3@8e62295832751ca1e8f92f2226f403dea30dc5165e448b5bfa05af5340c64ec7zbert-bge-large@b6dc8df998e1cfbdc4eac8243701a65afe638679230920b50d6f17d81c098166mpt@35d91631860c815f952d711435f48d356ebac988362536bed955d43bfa436e34	starcoder@3ce83efda5659b07b1ad37ca97ca5797ea4285d9b9ab0dc679e4a720c9da7454gpt-2@32d85c31273f8019248f2559fed492d929ea28b17e51d81d3bb36fff23ca72b3	stablelm2@6221ad2852e85ce96f791f476e0b390cf9b474c9e3d1362f53a24a06dc8220ffrefact@9c2227e4dd922002fb81bde4fc02b0483ca4f12911410dee2255e4987644e3f8z	command-r@e636dc30a262dcc0d8c323492e32ae2b70728f4df7dfe9737d9f920a282b8aeaolmo@a8594e3edff7c29c003940395316294b2c623e09894deebbc65f33f1515df79edbrx@c7699093ba4255a91e702aa38a596aa81669f3525dae06c2953267dde580f448z
jina-v1-enz
jina-v2-en@171aeeedd6fb548d418a7461d053f11b6f1f1fc9b387bd66640d28a4b9f5c643z
jina-v2-es@27949a2493fc4a9f53f5b9b029c82689cfbe5d3a1929bb25e043089e28466de6z
jina-v2-de@c136ed14d01c2745d4f60a9596ae66800e2b61fa45643e72436041855ad4089dz	smaug-bpe@c7ea5862a53e4272c035c8238367063e2b270d51faa48c0f09e9d5b54746c360z	poro-chat@7967bfa498ade6b757b064f31e964dddbb80f8f9a4d68d4ba7998fcf281c531azjina-v2-code@7fc505bd3104ca1083b150b17d088b59534ede9bde81f0dd2090967d7fe52ceeviking@b53802fb28e26d645c3a310b34bfe07da813026ec7c7716883404d5e0f8b1901jais@7b3e7548e4308f52a76e8229e4e6cc831195d0d1df43aed21ac6c93da05fec5f	codeshell@63b97e4253352e6f357cc59ea5b583e3a680eaeaf2632188c2b952de2588485etekken@855059429035d75a914d1eda9f10a876752e281a054a7a3d421ef0533e5b6249smollm@3c30d3ad1d6b64202cd222813e7736c2db6e1bd6d67197090fc1211fbc612ae7bloom@bc01ce58980e1db43859146dc51b1758b3b88729b217a74792e9f8d43e479d21zgpt3-finnish@4e2b24cc4770243d65a2c9ec19770a72f08cffc161adbb73fcbb6b7dd45a0aaeexaone@fcace8b9cac38ce847670c970cd5892031a753a1ef381abd1d9af00f713da085zphi-2@60824e3c0d9401f89943cbb2fff727f0e2d4c545ba4df2d6e4f09a6db0f5b450	chameleon@8b5a93ed704057481f240da0be7e7dca721d7f8f4755263b6807227a2cbeae65zroberta-bpe@ad851be1dba641f2e3711822f816db2c265f788b37c63b4e1aeacb9ee92de8ebgigachat@d4c8f286ea6b520b3d495c4455483cfa2302c0cfcd4be05d781b6a8a0a7cdaf1megrez@877081d19cf6996e2c4ff0e1236341e9b7bde288f5311a56a937f0afbbb3aeb5zdeepseek-v3@b3f499bb4255f8ca19fccd664443283318f2fd2414d5e0b040fbdd0cc195d6c5zdeepseek-r1-qwen@ccc2ef013c104be7bae2965776d611e1d7a8a2a9c547dd93a682c9a9fc80352ezgpt-4o@7dec86086fcc38b66b7bc1575a160ae21cf705be7718b9d5598190d7c12db76fsuperbpe@1994ffd01900cfb37395608534236ecd63f2bd5995d6cb1004dda1af50240f15trillion@96a5f08be6259352137b512d4157e333e21df7edd3fcd152990608735a65b224
bailingmoe@d353350c764d8c3b39c763113960e4fb4919bea5fbf208a0e3b22e8469dc7406llama4@0e9433cbbb161f89e264eb32e8e64bfe69e834973ffca5d41d3948a604a3e2a3pixtral@d5f1dd6f980fec569fb218a81a7658ac45fc56b38c5a0adeb1c232fbe04ef5ecz
seed-coder@b0a6b1c0bd5998ebd9df08611efde34a4ff03faed45ae09c43e6b31ebd4b94cfza.x-4.0@f6791d196f87ce6b56a7d234be618e0d58f8cda3549416635b2bebcd22cd95c4zmidm-2.0@169bf0296a13c4d9b7672313f749eb36501d931022de052aad6e36f2bf34dd51lfm2@2085e1638f6c377a0aa4ead21b27bb4cb941bf800df86ed391011769c1758dfbexaone4@a1e163ecab2e718a4c829d1148b6e86824ec36163bb71941c3dca9cd5ac25756mellum
zV**************************************************************************************z5** WARNING: The BPE pre-tokenizer was not recognized!z2**          There are 2 possible reasons for this:zN**          - the model has not been added to convert_hf_to_gguf_update.py yetz>**          - the pre-tokenization config has changed upstreamz`**          Check your model files and convert_hf_to_gguf_update.py and update them accordingly.z;** ref:     https://github.com/ggml-org/llama.cpp/pull/6920z**z** chkhsh:  zBBPE pre-tokenizer was not recognized - update get_vocab_base_pre()ztokenizer.ggml.pre: )	r1  r   r   	hexdigestrg   debugrI  r   r2  )rt   r7  chktxtchktokchkhshress         r2   r+  TextModel.get_vocab_base_pre  s    d!!&)F**,-779xx()xx()
 WWCWWCWWCWWCWWCWWCWW!CWWCWWCWWCWWCWWCWWCWWCWW CWW"CWWCWWCWWCWW"CWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWW CWWCWWCWWCWWCWWCWWCWW CWWCWWCWWCWWCWWCWWCWWCWW$CWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWCWWC;NN4 NNstNNRSNNOPNNklNN[\NN}~NNXYNN4 NN\&23NNstNN4 %&jkk+DI;78xx()
r1   c                :    U R                   R                  S5        g )Nnone)rN   add_tokenizer_modelr   s    r2   _set_vocab_noneTextModel._set_vocab_none  s    ,,V4r1   c                v   U R                  5       u  pnU R                  R                  S5        U R                  R                  U5        U R                  R	                  U5        U R                  R                  U5        [        R                  " U R                  SS9nUR                  U R                  5        g Ngpt2Tload_merges
r?  rN   r  add_tokenizer_preadd_token_listadd_token_typesri   SpecialVocabr?   add_to_ggufrt   r5  r6  r8  special_vocabs        r2   r  TextModel._set_vocab_gpt2      #'#6#6#8 &,,V4**62''/((2))$..dK!!$"2"23r1   c           	        U R                   nU R                  n/ n/ nSSKJn  UR	                  USS9nUS   n[        UR                  5       R                  5       5      U:  d   eU R                  U5      n/ n	0 n
UR                  nUR                  5        H  u  pX[        R                  U5      '   [        U5      S:X  a  M-  [        R                  XUS9n[        U5      S:X  d   eU	R                  S	R!                  [#        [        R                  U5      5      5        M     UR$                  n0 U
EUER                  5        VVs0 s H	  u  nnUU_M     nnn['        U5       H  nUU;  a@  UR                  S
U S35        UR                  [(        R*                  R,                  5        MI  UU   U;   a?  UR                  UU   5        UR                  [(        R*                  R.                  5        M  UR                  UU   5        UR                  [(        R*                  R0                  5        M     U R2                  R5                  S5        U R2                  R7                  U5        U R2                  R9                  U5        U R2                  R;                  U5        [(        R<                  " USS9nU	Ul        [        UR@                  5      S:X  a>  URC                  SUR$                  S   5        URC                  SUR$                  S   5        URC                  SUR$                  S   5        URE                  U R2                  5        g s  snnf )Nr   r   Tr  r"  r   max_rankr    r  r#  r$  r  Fr  bos<|endoftext|>eosunk)#r?   rL   r*  r!  r  r  	get_vocabr  r+  mergeable_ranksro   	QwenModeltoken_bytes_to_stringr   bper~  rM  mapspecial_tokensr.  ri   r/  r.   r,   r*   rN   r  r  r  r  r  mergesspecial_token_ids_set_special_tokenr  )rt   r?   rL   r5  r6  r!  r7  r"  r8  r  r  r  r  rankmergedr<  r9  r:  r;  r=  r  s                        r2   _set_vocab_qwenTextModel._set_vocab_qwen  s   NN	,, .!11)t1T	\*
9&&(//12Z???((3#33*002KE<@)11%895zQ]]?D]IFv;!###MM#((3y'F'F#OPQ 3  ..C[eC[{C[CaCaCcdCc/?{C{*Ccdz"A%QCqk* 5 56q![0mA./ 6 67mA./ 5 56 # 	,,V4**62''/((2)))G%}../14,,UI4L4L_4]^,,UI4L4L_4]^((	0H0H0YZ!!$"2"235 es   Mc                   U R                  5       u  p#nU R                  R                  S5        U R                  R                  S5        U R                  R	                  U5        U R                  R                  U5        U R                  R                  U5        [        R                  " U R                  [        U5      S9nUR                  U R                  5        g Nllamadefaultn_vocab)_create_vocab_sentencepiecerN   r  r  r  add_token_scoresr  ri   r  r?   r   r  )rt   r  r5  scoresr6  r  s         r2   _set_vocab_sentencepiece"TextModel._set_vocab_sentencepiece  s    #'#C#C#E ,,W5**95''/))&1((2))$..#f+N!!$"2"23r1   c           
     
   SSK Jn  U R                  S-  nUR                  5       (       d  [	        SU 35      eU" 5       nUR                  [        U5      5        U R                  SS/SS9=(       d    UR                  5       n[        U5       Vs/ s H  nS	U S
3R                  S5      PM     nnS/U-  n[        R                  /U-  n[        UR                  5       5       GH  n	X:  a   [        R                  SU	 SUS-
   35          OUR                  U	5      n
U
R                  S5      nUR!                  U	5      n[        R"                  nUR%                  U	5      (       a  [        R&                  nOtUR)                  U	5      (       a  [        R*                  nOMUR-                  U	5      (       a  [        R                  nO&UR/                  U	5      (       a  [        R0                  nXU	'   XU	'   XU	'   GM     U R                  S-  nUR                  5       (       a  [3        USSS9 n[4        R6                  " U5      nU HV  nUU   n	X:  a   [        R                  SU	 SUS-
   35        M-  UR                  S5      Xi'   SXy'   [        R8                  X'   MX     S S S 5        U R                  S-  nUR                  5       (       Gat  [3        USSS9 n[4        R6                  " U5      nUR;                  S0 5      nUR=                  5        GH#  u  n	n[?        U	5      n	US   nX:  a   [        R                  SU	 SUS-
   35        M<  X   [        R                  :w  aH  Xi   UR                  S5      :w  a1  [        R                  SU	 SXi   RA                  S5      < SU< 35        UR;                  S5      (       d  U RC                  U5      (       a  [        R*                  X'   O3URE                  SRA                  S5      S5      n[        R8                  X'   SXy'   UR                  S5      Xi'   GM&     S S S 5        U[G        U5      :  a  U[G        U5      -
  n[        RI                  SU SU S
35        [        SUS-   5       HP  nURK                  [M        S	U S
3SS95        URK                  S5        URK                  [        R                  5        MR     XgU4$ s  snf ! , (       d  f       GNM= f! , (       d  f       N= f) Nr   SentencePieceProcessortokenizer.modelFile not found: vocab_size_per_layer_inputr"  Tr  r#  r$  r        zignore tokens from : id is out of range, max=r   added_tokens.jsonr   r   ignore token      @tokenizer_config.jsonr-  contentreplacing token r   -> r3  r)  r  Padding vocab with  token(s) - [PAD1] through [PAD)'sentencepiecer  r?   r   FileNotFoundErrorLoadFromFiler   r   r"  r.  r1  r   r.   rg   rI  	IdToPieceGetScorer*   	IsUnknownr+   	IsControlr,   IsUnusedIsByter/   r   r   r   r-   r   ro   rV   r  r  r4  r   r  r~  r  )rt   r  tokenizer_pathr7  r"  r=  r5  r  r6  token_idpiecetextscoretoktypeadded_tokens_filer   added_tokens_jsonr   tokenizer_config_filetokenizer_config_jsonr-  
token_datar  	pad_counts                           r2   r  %TextModel._create_vocab_sentencepiece  s   8*;;%%''#&6~6F$GHH*,	s>23%%('
  &  4 '113 	
 EJ*DUVDUqaS{11':DUV'j:56==>Ki2245H%!4XJ>XYcfgYgXhij''1E<<(D&&x0E-44G""8,,199$$X..199##H--188!!(++166#8$8!(X+ 6. !NN-@@$$&&'w?1$(IIaL!,C05H-xj@Z[ehi[iZj'kl '*zz'':F$'.F$)@)M)MH& - @ !%1H H ((**+S7Cq(,		!%'<'@'@AWY['\$,@,F,F,H(Hj"8}H!+I!6E-xj@Z[ehi[iZj'kl )-D-K-KK!+u||G/DD"NN-=hZr&JZJaJabiJjImmqrwqz+{|!~~i00D4P4PQV4W4W-D-L-L* %o.D.DW.Ms S-D-Q-Q*'.F$',||G'<F$! -I D* F#"S[0ILL.yk9XYbXccdef1i!m,ed1#QK'BCg& 7 > >? -
 x''Q W: @? DCs    S+A3S$E!S6$
S36
Tc                   [         R                  " U R                  5      n/ n/ n/ nUR                  5        H9  u  pVnUR	                  U5        UR	                  U5        UR	                  U5        M;     [        U5      UR                  :X  d   eU R                  R                  S5        U R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        [         R                  " U R                  [        U5      S9nUR                  U R                  5        g r  )ri   LlamaHfVocabr?   
all_tokensr~  r   r"  rN   r  r  r  r  r  r  r  )	rt   r  r5  r  r6  r  r  r  r  s	            r2   _set_vocab_llama_hfTextModel._set_vocab_llama_hf3  s   !!$..1$)$4$4$6 DMM$MM% OOG$ %7
 6{e.....,,W5**95''/))&1((2))$..#f+N!!$"2"23r1   c           	        U R                   S-  R                  5       (       d   eU R                  R                  SS5      nSR	                  S5      /n[
        R                  R                  /n[        U R                   S-  SSS9 nUR                  5       nU GH  nUR                  S5      n[        U5      S	:  d   e[        R                  " SR                  US
S 5      5      [        US   5      p[!        U["        5      (       a  UR	                  S5      OUn[!        U[$        5      (       d   e[        U5      U	:X  d   e['        U5      SS n
UR)                  U
R	                  S5      5        UR)                  [
        R                  R*                  5        GM     S S S 5        U[        U5      -
  nUS:  d   e[-        [        U5      U5       HP  nUR)                  SU S3R	                  S5      5        UR)                  [
        R                  R.                  5        MR     U R0                  R3                  S5        U R0                  R5                  U5        U R0                  R7                  U5        [
        R8                  " U R                   SS9nUR:                  ce  [=        [>        5      R@                  S-  S-  S-  nUR                  5       (       a%  [        USSS9 nURC                  5       nS S S 5        OSnWUl        URE                  SS5        SURF                  S'   SURF                  S'   URI                  U R0                  5        g ! , (       d  f       GN= f! , (       d  f       Ns= f)Nzrwkv_vocab_v20230424.txtr"  i   z<s>r   r   r   r  r!   r   r    r   r#  r$  rwkvFr  models	templateszllama-cpp-rwkv-world.jinjaz
rwkv-worldeoti  r  r  )%r?   r   rL   r   r1  ri   r/  r,   r   	readlinesr  r   astliteral_evalrM  rV   r   r   r  r2  r~  r*   r.  r.   rN   r  r  r  r  chat_templater   __file__r  readr  r  r  )rt   r"  r5  r6  r   lineslinepartsr  	token_lenr  	remainderr=  r  template_pathtemplates                   r2   _set_vocab_rwkv_worldTextModel._set_vocab_rwkv_worldI  s   !;;DDFFFF\\%%lE:
$||G45#~~556$..#==sWUYZKKME

35zQ&#&#3#3CHHU1R[4I#JCPUVXPYNy1;E31G1GW-U!%////5zY..."&u+a"3
j//89 5 56  V V,	A~~s6{J/AMMD1+,,W56OODNN112 0 	,,V4''/((2))$..eL&&. N11H<{JMiiM$$&&-w?1 vvxH @? (*2M'((412''.12''.!!$"2"23I VU2 @?s   DM&M'
M$'
M5c           	        [        [        R                  S   5      S-  SU S3-  n[        R	                  S[
        R                  R                  U[
        R                  " 5       5       S35        [        R                  " US5      nUS:X  a  S	OS
nUR                  [        R                  R                  R                  5      nU(       d   eU R                  R                  [!        UR"                  S   5      R%                  S5      5        UR                  [        R                  R                  R&                  5      nU R                  R)                  U(       a'  [!        UR"                  S   5      R%                  S5      OU5        UR                  [        R                  R                  R*                  5      nU(       d   eU R                  R-                  UR.                   Vs/ s H  n[!        UR"                  U   5      PM     snS U 5        US:X  a  UR                  [        R                  R                  R0                  5      nU(       d   eU R                  R3                  UR.                   Vs/ s H"  ovR"                  U   R5                  5       S   PM$     snS U 5        UR                  [        R                  R                  R6                  5      nU(       d   eU R                  R9                  UR.                   Vs/ s H"  ovR"                  U   R5                  5       S   PM$     snS U 5        US:w  a  UR                  [        R                  R                  R:                  5      nU(       d   eU R                  R=                  UR.                   Vs/ s H  n[!        UR"                  U   5      PM     sn5        UR                  [        R                  R                  R>                  5      =nb9  U R                  RA                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RB                  5      =nb9  U R                  RE                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RF                  5      =nb9  U R                  RI                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RJ                  5      =nb9  U R                  RM                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RN                  5      =nb9  U R                  RQ                  UR"                  S   R5                  5       S   5        UR                  [        R                  R                  RR                  5      =nb:  U R                  RU                  UR"                  S   R5                  5       S   5        g g s  snf s  snf s  snf s  snf )Nr   r	  zggml-vocab-r  zUsing tokenizer from 'r   r   gpt-neoxr]  r  r  r   	llama-spm)+r   sysr{   rg   rI  r{  relpathgetcwdri   
GGUFReader	get_fieldKeys	Tokenizerr[  rN   r  r  r  r  PREr  LISTr  r   SCORESr  tolist
TOKEN_TYPEr  MERGESadd_token_mergesBOS_IDadd_bos_token_idEOS_IDadd_eos_token_idUNK_IDadd_unk_token_idPAD_IDadd_pad_token_idADD_BOSadd_add_bos_tokenADD_EOSadd_add_eos_token)rt   rP   r"  r  vocab_readerdefault_prefieldr=  s           r2   _set_vocab_builtinTextModel._set_vocab_builtinv  s   chhqk*X5+j\QV8WW/PRPYPYP[0\/]]^_`~s;)Z7eY&&tyy':':'@'@Au,,U5;;r?-C-J-J7-ST&&tyy':':'>'>?**UZ5R+A+H+H+Q`kl&&tyy':':'?'?@u''

(S
1u{{1~)>
(ST_U_(`a$ **499+>+>+E+EFEL5--SXS]S].^S]a{{1~/D/D/Fq/IS].^_j`j.kl&&tyy':':'E'EFu((ejj)Yj++a.*?*?*A!*Dj)YZe[e)fg$ **499+>+>+E+EFEL5--ejj.YjuU[[^/Dj.YZ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,F,FGGET--ekk"o.D.D.Fq.IJ!++DII,?,?,G,GHHEU..u{{2/E/E/G/JK!++DII,?,?,G,GHHEU..u{{2/E/E/G/JK V5 )T
 /_ *Z
 /Zs   )"Y):)Y.)Y3$"Y8c                   S nU R                   S-  nUR                  5       (       aB  [        USS9 n[        R                  " U5      nS S S 5        W H  nUS   S:X  d  M  US   n  O   Ub  [        U R                   U-  S-  SS9 n[        R                  " U5      nS S S 5        WS   (       a  [
        R                  R                  nOUUS	   (       a  [
        R                  R                  nO0US
   (       a  [
        R                  R                  nO[        S5      eU R                  R                  U5        g g ! , (       d  f       N= f! , (       d  f       N= f)Nzmodules.jsonr   r   r   z$sentence_transformers.models.Poolingr{   r  pooling_mode_mean_tokenspooling_mode_cls_tokenpooling_mode_lasttokenz0Only MEAN, CLS, and LAST pooling types supported)r?   r   r   r   r   ri   PoolingTypeMEANCLSLASTr   rN   add_pooling_type)rt   pooling_pathmodule_pathr   modulesmodpoolingpooling_types           r2   _try_set_pooling_typeTextModel._try_set_pooling_type  s!   nn~5  kG4))A, 5v;"HH#&v;L  #dnn|3mCgVZ[))A, W12#//4412#//3312#//44)*\]]--l; $ 54 WVs   D<E<
E

E)rW   rB   r  rL   rX   r  )r  zstr | bytesr~   rC   r~   z tuple[list[str], list[int], str]r~   r   r~   None)T)rP   z Literal['gpt-neox', 'llama-spm']r"  rV   )r&   r'   r(   r)   r4   r6   r  r  r   r  r  r  rk  r   rn  r  r?  r+  r  r  r  r  r  r  r  r;  rL  r0   __classcell__r  s   @r2   r   r     s    JLV S S8,7\!0*(`cL5444l
4X(t4,+4Z+LZ< <r1   r   c                    ^  \ rS rSr% \R
                  r\R                  R
                  r	S\
S'   S\
S'   / SQrSrS\
S'   S	rS\
S
'   SrS\
S'   SrS\
S'   U 4S jrSS jrSS jrS rS rS rSSS jjrSSS jjrSSS jjrSrU =r$ )r   i  rK   preprocessor_configglobal_config)r  r  r  r  depthTrC   has_vision_encoderFhas_audio_encoderNr  hparams_visionhparams_audioc                  > [         T	U ]  " U0 UD6  U R                  [        R                  R
                  :w  a  [        S5      eU R                  (       d  SU R                  ;  a  0 U R                  S'   SU R                  ;  a  0 U R                  S'   0 U R                  EU R                  S   EnUR                  SUR                  SS5      5      U l
        OMU R                  R                  5        VVs0 s H  u  pEUS;  d  M  XE_M     nnnUR                  SS5      U l
        U R                  S:  d   S	5       eSS KnUR                  U R                  5      U l        U R                  5       U l        U R#                  5       U l        U R                   c  U R$                  c  ['        S
5      eU R                   =(       d    U R$                  =(       d    U R                  U l        U R(                  =(       a    U R*                  nU(       a  SOU R-                  U R.                  S5      U l        [        R2                  " [        R                  R
                  U R0                  5      U l        U R                  (       d=  [7        U R8                  S-  SSS9 n[:        R<                  " U5      U l        S S S 5        g g s  snnf ! , (       d  f       g = f)NzGMmprojModel must be subclassed with model_arch = gguf.MODEL_ARCH.MMPROJr  audio_configr  r  r   )vision_encoderaudio_encoderr  zn_embd not found in hparamsz1vision_config / audio_config not found in hparams   Tzpreprocessor_config.jsonr   r   r   ) r  r   rU   ri   r  r7   r   rY   rL   r   n_embd_textro   copydeepcopyrV  get_vision_configrZ  get_audio_configr[  r   rY  rX  r   n_block_keysrW   r  rX   r   r?   r   r   rU  )
rt   r  r  r  r   vrb  have_multiple_encodersr   r  s
            r2   r   MmprojModel.__init__  sK   $)&)??doo444eff %%DLL0.0]+T\\1/1^,IT\\IT\\--HIK*}koohXY>Z[D "&!3!3!5!5Be9e!5    +|Q?D!#B%BB# 	!]]4<<8"446!224&4+=+=+EPQQ **Pd.@.@PDLL "&!7!7!SD<S<S"83d>N>NtO`O`bf>g224??3I3I4K[K[\ %%dnn'AA3QXY]^+/99Q<( ZY &34 ZYs   6J=J=K
Kc                b    U R                   (       d  SOSnU R                  R                  U5      $ )Nvision_configr^  )rY   rV  r   )rt   config_names     r2   rd  MmprojModel.get_vision_config  s)    -1-C-CoIY!!%%k22r1   c                8    U R                   R                  S5      $ )Nr]  rV  r   r   s    r2   re  MmprojModel.get_audio_config  s    !!%%n55r1   c                j    U R                   R                  [        R                  R                  5        g rb   )rN   rY  ri   rZ  r7   r   s    r2   r\  MmprojModel.set_type   s     !!$--"6"67r1   c                t   U R                   R                  U R                  5        U R                  (       Ga  U R                   R	                  S5        U R                   R                  U R                  5        U R                   R                  U R                  S/5      5        U R                   R                  U R                  S/5      5        U R                   R                  U R                  S/5      5        U R                   R                  U R                  S/5      5        U R                   R                  U R                  U R                  5      5        U R                   R                  U R                  S/5      5        U R                  (       a  [         OU R"                  S   nU R                  (       a  [$        OU R"                  S   nU R                   R'                  U5        U R                   R)                  U5        U R*                  (       a  U R                   R-                  S5        U R                   R/                  U R                  5        U R                   R1                  U R3                  S/5      5        U R                   R5                  U R3                  S/5      5        U R                   R7                  U R3                  U R                  5      5        U R                   R9                  U R3                  S/5      5        U R                  (       d  U R*                  (       d  [;        S	5      eg g )
NT
image_size
patch_sizer  r  r  
image_mean	image_stdz4MmprojModel must have either vision or audio encoder)rN   r  rA   rX  add_clip_has_vision_encoderadd_vision_projection_dimra  add_vision_image_sizefind_vparamadd_vision_patch_sizeadd_vision_embedding_lengthadd_vision_feed_forward_lengthadd_vision_block_countrf  add_vision_head_countrY   r   rU  r   add_vision_image_meanadd_vision_image_stdrY  add_clip_has_audio_encoderadd_audio_projection_dimadd_audio_embedding_lengthfind_aparamadd_audio_feed_forward_lengthadd_audio_block_countadd_audio_head_countr   )rt   rv  rw  s      r2   r   MmprojModel.set_gguf_parameters  so   &&tzz2"""88>66t7G7GH 2243C3C\N3ST2243C3C\N3ST889I9I=/9Z[;;D<L<LNaMb<cd33D4D4DTEVEV4WX2243C3CEZD[3\] *.)?)?TE]E]^jEkJ'+'='=4C[C[\gChI22:>11)<!!77=55d6F6FG 778H8H-8YZ::4;K;KM`La;bc2243C3CDDUDU3VW11$2B2BDYCZ2[\&&t/E/ESTT 0F&r1   c                    [        S5      e)Nz*MmprojModel does not support vocab writing)r   r   s    r2   rn  MmprojModel.write_vocab&  s    EFFr1   c                X    U R                   c   eU R                  U R                   X5      $ rb   )rZ  _find_paramrt   rn   r   s      r2   r{  MmprojModel.find_vparam)  s-    ""... 3 3TDDr1   c                X    U R                   c   eU R                  U R                   X5      $ rb   )r[  r  r  s      r2   r  MmprojModel.find_aparam-  s-    !!--- 2 2DCCr1   c                l   ^ [        U4S jU 5       S 5      nUb  TU   $ U(       a  g [        SU 35      e)Nc              3  6   >#    U  H  oT;   d  M
  Uv   M     g 7frb   r%   )rc   r   objs     r2   re   *MmprojModel._find_param.<locals>.<genexpr>2  s     0t!CxAAts   		r   )r   r   )rt   r  rn   r   r   s    `   r2   r  MmprojModel._find_param1  s<    0t0$7?s8O0788r1   )rW   rV  rL   r[  rZ  ra  rU  rX   r~   r  r  r  )r  rK   rn   r  r   rC   r~   r   )r&   r'   r(   r)   r4   r7   r  ri   r  rU   r  rf  rX  rY  rZ  r[  r   rd  re  r\  r   rn  r{  r  r  r0   rR  rS  s   @r2   r   r     s    !!J''J''!!VL###t# -1N)0+/M(/*8X368!UFGED9 9r1   r   GPTNeoXForCausalLMc                  P    \ rS rSr\R
                  R                  rS rSS jr	Sr
g)GPTNeoXModeli:  c                   U R                   S   nU R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R	                  U5        U R                  R                  U R                   S   5        U R                  R                  [        U R                   S   U R                   S   U R                   S   -  -  5      5        U R                  R                  U R                   S   5        U R                  R                  U R                   R                  SS5      5        U R                  R                  U R                   S	   5        g )
Nr  r  r  r  
rotary_pctr  use_parallel_residualTr  )rL   rN   r  r  r  r  add_rope_dimension_countrV   r  add_parallel_residualr   r  rt   rW   s     r2   r    GPTNeoXModel.set_gguf_parameters>  s%   ll#67++DLL9R,ST--dll=.IJ((500>Q1RS11\*dll=.IT\\ZoMp.pqr	
 	''5J(KL..t||/?/?@WY]/^_++DLL9I,JKr1   c           
        AU R                   R                  SU R                   R                  S5      5      nU R                   R                  SU R                   R                  S5      5      n/ n[        R                  " SU5      (       a  UR	                  USXT-  U45      n[
        R                  " US S 2SS S 2S S 24   R	                  SU45      US S 2S	S S 2S S 24   R	                  SU45      US S 2S
S S 2S S 24   R	                  SU45      4SS9n[        R                  S5        O[        R                  " SU5      (       a  UR	                  USXT-  45      n[
        R                  " US S 2SS S 24   R	                  U45      US S 2S	S S 24   R	                  U45      US S 2S
S S 24   R	                  U45      4SS9n[        R                  S5        UR                  U R                  U5      U45        U$ )Nr  r  r  n_embedz9gpt_neox\.layers\.\d+\.attention\.query_key_value\.weightr!   r   r  r   r    r  %re-format attention.linear_qkv.weightz7gpt_neox\.layers\.\d+\.attention\.query_key_value\.bias#re-format attention.linear_qkv.bias)rL   r   rematchreshaper   catrg   rh   r~  r   	rt   r   rd   r   r  r  r  qkv_weightsqkv_biass	            r2   r   GPTNeoXModel.modify_tensorsL  s   !!(DLL,<,<=R,ST,,""=$,,2B2B92MN,.88PRVWW %,,fa9JG-TUK1a
+33RMB1a
+33RMB1a
+33RMB
 J KK?@XXPRVWW!))61g6G*HIHQ1W%--wj9Q1W%--wj9Q1W%--wj9
 J KK=>,,T2J?@r1   r%   Nr  )r&   r'   r(   r)   ri   r  GPTNEOXrU   r   r   r0   r%   r1   r2   r  r  :  s    ((JL$r1   r  BloomForCausalLM
BloomModelc                  P    \ rS rSr\R
                  R                  rS rSS jr	Sr
g)r  is  c                
   U R                   R                  SU R                   R                  S5      5      nU R                   R                  SU R                   R                  S5      5      nU R                  R                  U R                   R                  SU5      5        U R                  R	                  U5        U R                  R                  SU-  5        U R                  R                  U R                   S   5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U R                  5        g )	Nr  r  r  r  
seq_lengthr"   r  r  )rL   r   rN   r  r  r  r  r  r  r  r  rA   )rt   r  r  s      r2   r   BloomModel.set_gguf_parametersw  s   ,,""=$,,2B2B92MN!!(DLL,<,<=R,ST++DLL,<,<\7,ST--g600W=((i)@A''/**62++DLL9M,NO&&tzz2r1   c           
     $   AU R                   R                  SU R                   R                  S5      5      nU R                   R                  SU R                   R                  S5      5      n[        R                  " SSU5      n/ n[        R                  " SU5      (       a  UR                  USXT-  U45      n[        R                  " US S 2S	S S 2S S 24   R                  S
U45      US S 2SS S 2S S 24   R                  S
U45      US S 2SS S 2S S 24   R                  S
U45      4S	S9n[        R                  S5        O[        R                  " SU5      (       a  UR                  USXT-  45      n[        R                  " US S 2S	S S 24   R                  U45      US S 2SS S 24   R                  U45      US S 2SS S 24   R                  U45      4S	S9n[        R                  S5        UR                  U R                  U5      U45        U$ )Nr  r  r  r  ztransformer\.r  z/h\.\d+\.self_attention\.query_key_value\.weightr!   r   r  r   r    r  r  z-h\.\d+\.self_attention\.query_key_value\.biasr  )rL   r   r  subr  r  r   r  rg   rh   r~  r   r  s	            r2   r   BloomModel.modify_tensors  s   !!(DLL,<,<=R,ST,,""=$,,2B2B92MNvv&D1,.88FMM %,,fa9JG-TUK1a
+33RMB1a
+33RMB1a
+33RMB
 J KK?@XXFMM!))61g6G*HIHQ1W%--wj9Q1W%--wj9Q1W%--wj9
 J KK=>,,T2J?@r1   r%   Nr  )r&   r'   r(   r)   ri   r  BLOOMrU   r   r   r0   r%   r1   r2   r  r  s  s    &&J
3&r1   MPTForCausalLMc                  V    \ rS rSr\R
                  R                  rS rS r	SS jr
Srg)MPTModeli  c                >    U R                  5         g ! [         a    U R                  5         U R                  R	                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5         g f = f)NFr!   r   r   )r  r  r  rN   r5  r3  r/  r1  r   s    r2   r  MPTModel.set_vocab  s~    	1  " 	1))+..u5--a0--a0--a0	1s    BBBc                   U R                   S   nU R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R	                  U5        U R                  R                  SU R                   S   -  5        U R                  R                  U R                   S   5        U R                   S   R                  S5      =n(       a  U R                  R                  U5        U R                  R                  S5        U R                   S   S	   b+  U R                  R                  U R                   S   S	   5        U R                   S   S
   (       a,  U R                  R                  U R                   S   S   5        g U R                  R                  S5        g )Nr  max_seq_lend_modelr"   r  attn_config
kv_n_headsh㈵>clip_qkvalibialibi_bias_max        )rL   rN   r  r  r  r  r  r   r  r  add_clamp_kqvadd_max_alibi_bias)rt   rW   r  s      r2   r   MPTModel.set_gguf_parameters  sb   ll:.++DLL,GH--dll9.EF((500T\\)5L1LM''Y(?@m488FF:F..z:++D1<<&z2>**4<<+Fz+RS<<&w///]0KL\0]^//4r1   c                ~    ASU;   a#  U R                  USS9nUR                  SS5      nOU R                  USS9nXA4/$ )Nscales)r  r  z.scalesr   z
act.scalesr  )r   r4  rt   r   rd   r   r   s        r2   r   MPTModel.modify_tensors  sW    t++D?^+_H'',?H++D?S+TH&''r1   r%   Nr  )r&   r'   r(   r)   ri   r  MPTrU   r  r   r   r0   r%   r1   r2   r  r    s     $$J	15"	(r1   r  OrionForCausalLMc                  L    \ rS rSr\R
                  R                  rS rS r	Sr
g)
OrionModeli  c                $    U R                  5         g rb   r  r   s    r2   r  OrionModel.set_vocab      %%'r1   c                   U R                   S   nU R                   S   nU R                   R                  SU5      nSnSU R                   ;   a  U R                   S   nOKSU R                   ;   a  U R                   S   nO+SU R                   ;   a  U R                   S   nO[        S5      eU R                  R	                  U R
                  5        U R                  R                  S	5        U R                  R                  U5        U R                  R                  U R                   S
   5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                   S   5        g )Nr  r  r  r   max_sequence_lengthr  model_max_length(gguf: can not find ctx length parameter.Meta AI original pthr  r  r  )rL   r   r   rN   r  rA   add_tensor_data_layoutr  r  r  r  r  r  r  )rt   rW   
head_counthead_count_kv
ctx_lengths        r2   r   OrionModel.set_gguf_parameters  sp   ll#67\\"78
(()>
K
 DLL0&;<J&$,,6&?@J4<</&89JGHH&&tzz2//0FG++J7--dll=.IJ((500>Q1RS''
3**=9 	++DLL,HIr1   r%   N)r&   r'   r(   r)   ri   r  ORIONrU   r  r   r0   r%   r1   r2   r  r    s    &&J(Jr1   r  BaichuanForCausalLMBaiChuanForCausalLMc                      \ rS rSr\R
                  R                  rS rS r	S
S jr
SSS jjr S         SS jjrSS jrS	rg)BaichuanModeli  c                $    U R                  5         g rb   r  r   s    r2   r  BaichuanModel.set_vocab  r  r1   c                N   U R                   S   nU R                   S   nU R                   R                  SU5      nSnSU R                   ;   a  U R                   S   nOKSU R                   ;   a  U R                   S   nO+SU R                   ;   a  U R                   S   nO[        S5      eU R                  R	                  S	5        U R                  R                  U5        U R                  R                  U R                   S
   5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U R                   S
   U R                   S   -  5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U R                  5        U R                   R                  S5      =(       d    0 nUR                  SUR                  S5      5      S:X  aY  SU;   aR  U R                  R                  [         R"                  R$                  5        U R                  R'                  US   5        g g g Nr  r  r  r   r  r  r  r  r  r  r  r  rope_scaling	rope_typer   linearfactorrL   r   r   rN   r  r  r  r  r  r  r  r  r  r  rA   add_rope_scaling_typeri   RopeScalingTypeLINEARadd_rope_scaling_factorrt   rW   r  r  r  r  s         r2   r   !BaichuanModel.set_gguf_parameters  "   ll#67\\"78
(()>
K
 DLL0&;<J&$,,6&?@J4<</&89JGHH//0FG++J7--dll=.IJ((500>Q1RS11$,,}2MQUQ]Q]^sQt2tu''
3**=9//^0LM&&tzz2||''7=2K)9)9&)ABhNS[_kSk2243G3G3N3NO44\(5KL TlNr1   c                @   U R                   S   nU R                   R                  SU5      n/ nUb  USU S3:X  a  [        R                  SU 35        U R	                  [
        R                  R                  U5      U R                  USXD5      4U R	                  [
        R                  R                  U5      U R                  USXE5      4U R	                  [
        R                  R                  U5      U R                  US5      4/nU$ U R                  U5      U4/nU$ )	Nr  r  model.layers.z.self_attn.W_pack.weightzUnpacking and permuting layer r   r   r    )rL   r   rg   rh   r   ri   r%  ATTN_Q_reverse_hf_permute_partATTN_KATTN_V_reverse_hf_partr   )rt   r   rd   r   r  r  r  s          r2   r   BaichuanModel.modify_tensors!  s   \\"78
(()>
K,.?tse;S'TTKK8>?(():):)A)A3G11*aXZ(():):)A)A3G11*a[](():):)A)A3G))*a8:G  ,,T2J?@Gr1   Nc                    Ub	  X#:w  a  X#-  nUR                   " USUR                  S   U-  S-  /UR                  SS  Q76 R                  SS5      R                  UR                  5      $ Nr    r   r   r  r!  swapaxesrt   weightsr  	n_kv_heads       r2   _reverse_hf_permute!BaichuanModel._reverse_hf_permute6  j     V%8 F OOFAw}}Q'76'AQ'F[WXWYIZ[Xa^WW]]#	
r1   c                f    UR                   S   S-  nU R                  XU-  XR-  U-   2S4   X45      $ Nr   r!   .)r!  r  )rt   r  n_partr  r	  r   s         r2   r  &BaichuanModel._reverse_hf_permute_part@  sB     MM!!''F
1:>0I30N(OQWccr1   c                F    UR                   S   S-  nXU-  X2-  U-   2S4   $ r  )r!  )rt   r  r  r   s       r2   r  BaichuanModel._reverse_hf_partF  s2    MM!!6z!*q.0#566r1   r%   r  rb   r  r   r  rV   r  r  r~   r   )
r  r   r  rV   r  rV   r	  r  r~   r   )r  r   r  rV   r~   r   )r&   r'   r(   r)   ri   r  BAICHUANrU   r  r   r   r  r  r  r0   r%   r1   r2   r  r    se    ))J(M>*
 RVdd'*d47dDNd	d7r1   r  XverseForCausalLMc                  d    \ rS rSr\R
                  R                  rS rS r	SS jr
S	S
S jjrSrg)XverseModeliK  c                   U R                   S-  R                  5       (       d   eU R                   nU R                  n/ n/ nSSKJn  UR                  U5      nUR                  S[        UR                  5      5      n[        UR                  5       R                  5       5      nX:  a  [        S5      eUR                  R                  5        V	V
s0 s H  u  pX_M	     nn	n
UR                  5       n[        U5       GH  nX   R!                  S5      nUS:X  a0  ["        R$                  R&                  nSU S	3R!                  S5      nO[(        R*                  " S
U5      (       a  ["        R$                  R&                  nOvX   U;   aT  UR,                  U   R.                  (       a  ["        R$                  R0                  nO5["        R$                  R2                  nO["        R$                  R4                  nUR7                  U5        UR7                  U5        GM     U R8                  R;                  S5        U R8                  R=                  S5        U R8                  R?                  U5        U R8                  RA                  U5        ["        RB                  " U[        U5      S9nURE                  U R8                  5        g s  sn
n	f )Ntokenizer.jsonr   r   r"  z.Vocabulary size exceeds expected maximum size.r       <r  s   <0x[0-9A-Fa-f]{2}>r  r  r  )#r?   r   rL   r*  r!  r  r   r   r  r  r  r  r   ro   r,  r.  r1  ri   r/  r/   r  	fullmatchr-  r3  r,   r-   r*   r~  rN   r  r  r  r  r  r  )rt   r?   rL   r5  r6  r!  r7  r"  max_vocab_indexr9  r:  r;  r<  r  r  r  r  s                    r2   r  XverseModel.set_vocabO  s+   !11::<<<<NN	,,  .!11)<	[[s9??/CD
 i113::<=(MNNR[RaRaRgRgRi(jRi>Nk)9Ri(j//1j)H&077@JW$..-- A.55g>
4jAA..--(K711(;CC"nn44G"nn99G..//MM*%OOG$# *& 	,,W5**95''/((2)))S[I!!$"2"239 )ks   Kc                N   U R                   S   nU R                   S   nU R                   R                  SU5      nSnSU R                   ;   a  U R                   S   nOKSU R                   ;   a  U R                   S   nO+SU R                   ;   a  U R                   S   nO[        S5      eU R                  R	                  S	5        U R                  R                  U5        U R                  R                  U R                   S
   5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U R                   S
   U R                   S   -  5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U R                  5        U R                   R                  S5      =(       d    0 nUR                  SUR                  S5      5      S:X  aY  SU;   aR  U R                  R                  [         R"                  R$                  5        U R                  R'                  US   5        g g g r  r  r  s         r2   r   XverseModel.set_gguf_parameters~  r  r1   c                "   AU R                   S   nU R                   R                  SU5      nUR                  S5      (       a  U R                  XU5      nUR                  S5      (       a  U R                  XU5      nU R	                  U5      U4/$ Nr  r  q_proj.weightk_proj.weight)rL   r   r  r  r   )rt   r   rd   r   r  r  s         r2   r   XverseModel.modify_tensors  s    \\"78
(()>
K ==))11**UJ==))11*-XJ%%d+Z899r1   Nc                    Ub	  X#:w  a  X#-  nUR                   " USUR                  S   U-  S-  /UR                  SS  Q76 R                  SS5      R                  UR                  5      $ r  r  r  s       r2   r  XverseModel._reverse_hf_permute  r
  r1   r%   r  rb   r  )r&   r'   r(   r)   ri   r  XVERSErU   r  r   r   r  r0   r%   r1   r2   r  r  K  s,    ''J-4^M>:
 
r1   r  FalconForCausalLMRWForCausalLMc                  P    \ rS rSr\R
                  R                  rS rSS jr	Sr
g)FalconModeli  c                z   U R                   R                  S5      nUc  U R                   S   nU R                   R                  S5      nUc  U R                   S   nU R                   R                  S5      nUc  U R                   R                  SS5      nU R                  R                  S5        U R                  R	                  S	5        U R                  R                  U R                   S
   5        U R                  R                  SU R                   S
   -  5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U R                  5        g )Nr  r  r  r  num_kv_headsr	  r      jploskir  r"   r  )rL   r   rN   r  r  r  r  r  r  r  r  r  rA   )rt   rW   r  r	  s       r2   r   FalconModel.set_gguf_parameters  s\   ll&&':;,,y1K!!"78>\\(+FLL$$^4	((a8I++D1//	:--dll=.IJ00T\\-5P1PQ((5''/**95++DLL9M,NO&&tzz2r1   c                   ASU;   a  U R                  SS/5      nU R                  SS/SS9=(       d    SnU R                  S	   U-  nUR                  XTU-  S
-   XfU-  5      nUS S 2S S24   R                  XF-  Xd-  5      nUS S 2S/4   R                  XV-  Xd-  5      n	US S 2S/4   R                  XV-  Xd-  5      n
[        R
                  " XU
45      R                  U5      nU R                  U5      U4/$ )Nquery_key_valuer  r  r,  r	  Tr  r   r  r    r  )r   rL   viewr  r   r  
reshape_asr   )rt   r   rd   r   r  r	  r  qkvqr   rg  s              r2   r   FalconModel.modify_tensors  s    $%%'<h&GHF((.+)FQU(V[Z[I||M2f<H//)y-@1-Dh[aPabCAssF##F$5x7HIAAtG$$Y%98;LMAAtG$$Y%98;LMAA!9-88DJ%%d+Z899r1   r%   Nr  )r&   r'   r(   r)   ri   r  FALCONrU   r   r   r0   r%   r1   r2   r*  r*    s    ''J3.:r1   r*  GPTBigCodeForCausalLMc                  F    \ rS rSr\R
                  R                  rS rSr	g)StarCoderModeli  c                n   U R                   S   nU R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R	                  SU R                   S   -  5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  S5        U R                  R                  U R                   S   5        U R                  R                  U R                  5        g )Nr  r  r  r"   r  r   r  )rL   rN   r  r  r  r  r  r  r  r  rA   r  s     r2   r   "StarCoderModel.set_gguf_parameters  s    ll9-++DLL,GH--dll8.DE00T\\(5K1KL((5''X(>?**1-++DLL9M,NO&&tzz2r1   r%   N)
r&   r'   r(   r)   ri   r  	STARCODERrU   r   r0   r%   r1   r2   r;  r;    s    **J
3r1   r;  GPTRefactForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rU 4S jrS r	SS jr
SrU =r$ )RefactModeli  c                  > [         TU ]  5         [        R                  " U R                  S/ SQS9nUR                  SS5        UR                  SS5        UR                  SS	5        S Ul        UR                  U R                  5        g )
NFr   r   middler  r  special_token_typesr   r   r   r!   rD  r    )	r  r  ri   r  r?   r  r  r  rN   )rt   r  r  s     r2   r  RefactModel.set_vocab  sx     ))$..e@eg((15((15((15&*#!!$"2"23r1   c                   U R                   S   nSU-  n[        SU-  S-  5      nSnX1U-   S-
  U-  -  nU R                   S   nU R                  R                  U R                   S   5        U R                  R	                  U R                   S   5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                   S	   5        U R                  R                  S5        U R                  R                  U R                   S
   5        U R                  R                  U R                  5        g )Nr  r"   r    r!      r   r  r  r  r  )rL   rV   rN   r  r  r  r  r  r  r  r  rA   )rt   r  	inner_dimmultiple_offf_dimrW   s         r2   r   RefactModel.set_gguf_parameters  s!   \\(+

N	Y*+
k!9A!=+ MNll9- 	++DLL,GH--dll8.DE008((5''X(>?**1-//=Q0RS&&tzz2r1   c                   U R                   S   nSU-  n[        SU-  S-  5      nSnXdU-   S-
  U-  -  nU R                   S   nSn	U R                   S   U-  n
/ nUGbV  USU S	3:X  a  UR                  U R                  [        R
                  R                  U5      US X-   45        UR                  U R                  [        R
                  R                  U5      XU
-  S  45        OUSU S
3:X  a<  UR                  U R                  [        R
                  R                  U5      U45        OUSU S3:X  a{  UR                  U R                  [        R
                  R                  U5      US U 45        UR                  U R                  [        R
                  R                  U5      XS  45        [        U5      S:X  a"  UR                  U R                  U5      U45        U$ )Nr  r"   r    r!   rI  r   r  ztransformer.h.z.attn.kv.weightz.attn.q.weightz.mlp.gate_up_proj.weightr   )rL   rV   r~  r   ri   r%  r  r  r  FFN_GATEFFN_UPr   r   )rt   r   rd   r   r  rJ  rK  rL  r  r	  r  r  s               r2   r   RefactModel.modify_tensors!  s   \\(+

N	Y*+
k!9A!=+ MNh'	<<)V3,.?uO<< 7 78I8I8P8PRU VXbcxdmdxXyz{ 7 78I8I8P8PRU VXbowcwcxXyz{>#n== 7 78I8I8P8PRU VXbcd>#.FGG 7 78I8I8R8RTW XZdelflZmno 7 78I8I8P8PRU VXbcjXklmw<1NND006
CDr1   r%   r  )r&   r'   r(   r)   ri   r  REFACTrU   r  r   r   r0   rR  rS  s   @r2   rA  rA    s&    ''J
43( r1   rA  StableLmForCausalLMStableLMEpochForCausalLMLlavaStableLMEpochForCausalLMc                     ^  \ rS rSr% \R
                  R                  rS rS r	Sr
S\S'   SrS\S'   SS jrSSS	 jjrU 4S
 jrSrU =r$ )StableLMModeli=  c                    U R                   S-  R                  5       (       a  U R                  5         g U R                  5         g )Nr  )r?   r   r  r  r   s    r2   r  StableLMModel.set_vocabA  s5    NN--6688  "   "r1   c                   U R                   nUS   nU R                  R                  US   5        U R                  R                  US   5        U R                  R	                  U5        U R                  R                  US   5        U R                  SS/5      nU R                  R                  [        X1S   US   -  -  5      5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  S	U;   a  US	   OS
5        U R                  R                  U R                  SS/5      5        U R                  R                  U R                  5        g )Nr  r  r  r  partial_rotary_factorrope_pctr  r  r  Tr  r  )rL   rN   r  r  r  r  r   r  rV   r  r  r  r  r  rA   )rt   rL   rW   rotary_factors       r2   r   !StableLMModel.set_gguf_parametersH  s^   ,,12++G4M,NO--gm.DE((5009L1MN((*A:)NO11#m}G]ahi~aG  7A  3B  	C''0E(FG**73H+IJ..SjnuSuw7N/O{  	A++D,<,<>NPZ=[,\]&&tzz2r1   Nlist[dict[str, Tensor]] | None_q_norms_k_normsc                   U R                   S   nU R                   S   nUR                  S5      S:w  a  Uc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      U:  a   U R                  X4U R                  U   S5      $ / $ UR                  S5      S:w  a  Uc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      U:  a   U R                  X5U R                  U   S5      $ / $ U R                  U5      U4/$ s  snf s  snf )Nr  r  zq_layernorm.normsr  q_layernormzk_layernorm.normsk_layernorm)	rL   findr`  r.  rW   r   _stack_qk_normra  r   )rt   r   rd   r   r  r  r   s          r2   r   StableLMModel.modify_tensors[  sk   34LL!67	99()R/?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&&0**3c8JMZZ	99()R/?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)3**34==;M}]]	%%d+Z899- !F !Fs   E5>E:c                    / n[        U5       H$  nSU SU SU S3nUR                  X7   5        X7	 M&     [        R                  " USS9nSU SU S3n	U R	                  U	5      n
X4/$ )Nr  z.self_attn.z.norms.r  r   r  )r.  r~  r   stackr   )rt   r   r  norms
layer_namedatasxidenamer   merged_namer   s              r2   rf  StableLMModel._stack_qk_norm{  s     =C#C5J<wse7SELL& ! [[A.
%cU+j\I''4&''r1   c                  > [         TU ]  5         U R                  c  U R                  b  U R                  b5  U R                   VVs/ s H  oR	                  5         H  o"PM     M     snnO/ U R                  b5  U R                   VVs/ s H  oR	                  5         H  o"PM     M     snnO/ -   n[        U5      S:  a  [        SU 35      eg g s  snnf s  snnf )Nr   zUnprocessed norms: )r  rV  r`  ra  rn   r   r   )rt   dr   rj  r  s       r2   rV  StableLMModel.prepare_tensors  s    !==$(A AE@YDMM<Mq668a8M<_a@D@YDMM<Mq668a8M<_aE
 5zA~ #6ug!>??  )B =<s   "C	"C)ra  r`  r  )rc  )r   rV   r  rV   rj  zdict[str, Tensor]rk  r   )r&   r'   r(   r)   ri   r  STABLELMrU   r  r   r`  r  ra  r   rf  rV  r0   rR  rS  s   @r2   rW  rW  =  sK    ))J#3  04H,3/3H,3:@(@ @r1   rW  LLaMAForCausalLMLlamaForCausalLMMistralForCausalLMMixtralForCausalLMVLlama3ForCausalLMLlavaForConditionalGenerationVoxtralForConditionalGeneration
LlamaModelc                     ^  \ rS rSr% \R
                  R                  rSrU 4S jr	S r
S rU 4S jr\SS j5       rSrS	\S
'   SS jrSS jrU 4S jrSrU =r$ )r|  i  Tc                   > [         TU ]  " U0 UD6  U R                  S:X  a*  U R                  R	                  SS5      U R                  S'   g g )Nry  r      )r  r   r  rL   r   r  s      r2   r   LlamaModel.__init__  sI    $)&)<<//26,,2B2BCXZ\2]DLL./ 0r1   c                b   [        U R                  5      n[        R                  SUR                   SUR
                   S35        U R                  R                  UR                  5        / n/ n/ nUR                  5        H9  u  pVnUR                  U5        UR                  U5        UR                  U5        M;     [        U5      UR
                  :X  d!   S[        U5       SUR
                   S35       eUR                  [        R                  :X  aD  U R                  R                  S5        U R                  R                  UR!                  5       5        [        R                  SUR"                   S	UR$                   S	UR&                   S	UR(                   S3	5        U R                  R+                  UR"                  5        U R                  R-                  UR$                  5        U R                  R/                  UR&                  5        U R                  R1                  UR(                  5        U R                  R3                  U5        U R                  R5                  U5        U R                  R7                  U5        U R                  R9                  UR
                  5        U R                  R;                  S
5        U R                  R=                  S5        [?        [@        5      RB                  S-  n[D        RG                  X5      n	U R                  RI                  U	5        g )NzConverting tokenizer z	 of size r	  ztoken count (z) != vocab size (rz   rx  z+Setting bos, eos, unk and pad token IDs to r  TFzmodels/templates/)%r   r?   rg   rh   tokenizer_typer"  rN   r  gguf_tokenizer_modelr  r~  r   r   rx  r  r+  extract_vocab_merges_from_modelbos_ideos_idunk_idpad_idr-  r/  r1  r3  r  r  r  add_vocab_sizer5  r7  r   r  r  MistralModelget_community_chat_templateadd_chat_template)
rt   r  r5  r  r6  r  r  r  template_dirr  s
             r2   _set_vocab_mistralLlamaModel._set_vocab_mistral  s   T^^,#E$8$8#95CSCSBTTUV	
 	,,U-G-GH$)$4$4$6 DMM$MM% OOG$ %7
 6{e... 	
CK=(9%:J:J9K1M	
. #7#>#>>..x8--557 	9%,,r%,,WYZ_ZfZfYggijojvjviwwxy	
 	))%,,7))%,,7))%,,7))%,,7''/))&1((2''(8(89**40**51H~,,/BB;;EP**84r1   c                t   U R                   (       a  U R                  5       $ U R                  S-  nU R                  S-  nUR                  5       (       a%  UR                  5       (       d  U R                  5          U R	                  5         U R                  R                  SS5      S:X  a  [        R                  " U R                  S/ SQS9nUR                  S	S
5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  U R                  5        U R                  S-  nUR                  5       (       aN  [!        USSS9 n["        R$                  " U5      nSU;   a  U R                  R'                  US   5        S S S 5        U R                  R                  SS5      S:X  a  U R                  R)                  S5        g g ! [
         a=     U R                  5          GNr! [
        [        4 a    U R                  5           GNf = ff = f! , (       d  f       N= f)Nztekken.jsonr  r"  i }  i}  FrC  rE  r   i}  r   i}  rD  i	}  r  i
}  r  r   r   r   add_prefix_spacei   )rY   r  r?   r   r  r  r  r   r  rL   r   ri   r  r  r  rN   r   r   r   add_add_space_prefixr5  )rt   path_tekken_jsonpath_tokenizer_jsonr  r  r   r  s          r2   r  LlamaModel.set_vocab  s   !!**,,>>M9"nn/??##%%.A.I.I.K.K##%	'))+ <<L%0E9 --E&KM ,,Xu=,,Xu=,,Xu=,,Uu=%%d&6&67 $1H H ((**+S7Cq(,		!%%)>>$$99:OPb:cd D <<L%0E9..u5 :7 ! 	''((*%y1 '$$&&'	'* DCs6   ;G ;H)
H&*G== H"H&!H""H&)
H7c                P  > [         TU ]  5         U R                  nU R                  (       d  U R                  R                  US   5        UR                  S5      =nc  US   US   -  nU R                  R                  U5        U R                  R                  S5      =(       d    0 nUR                  SUR                  S5      5      S:X  aY  S	U;   aR  U R                  R                  [        R                  R                  5        U R                  R                  US	   5        g g g 
Nr"  r  r  r  r  r  r   r  r  )r  r   rL   rY   rN   r  r   r  r  ri   r  r  r  rt   rL   rope_dimr  r  s       r2   r   LlamaModel.set_gguf_parameters  s    #%,,%%++GL,ABJ//H8}-9N1OOH11(;||''7=2K)9)9&)ABhNS[_kSk2243G3G3N3NO44\(5KL TlNr1   c                    Ub  X:w  a  UnU R                   " USU R                  S   U-  S-  /U R                  SS  Q76 R                  SS5      R                  U R                  5      $ r  r  r  r  r	  s      r2   permuteLlamaModel.permute  e     V%8F7==+;v+E+J_W]][\[]M^_!Q'	)r1   Nr_  _expertsc           	     F  ^ U R                  SS/5      nU R                  SS/5      n/ SQnST;   =(       dE    ST;   =(       d9    ST;   =(       d-    S	T;   =(       d!    S
T;   =(       d    [        U4S jU 5       5      nU(       a  / $ U R                  S:X  a  ST-   mOQTR                  S5      (       a  TR	                  SS5      mO(TR                  S5      (       a  TR	                  SS5      mU R
                  (       aX  TR                  S5      (       a  [        R                  XU5      nTR                  S5      (       a  [        R                  XU5      nTR                  S5      S:w  Ga  U R                  S   nUc   eU R                  c+  [        U R                  5       V	s/ s H  n	0 PM     sn	U l        XR                  U   T'   [        U R                  U   5      US-  :  a  / n
S H  n/ n[        U5       H@  nSU SU SU S3nUR                  U R                  U   U   5        U R                  U   U	 MB     [         R"                  " USS9nSU S U S3nU R%                  U5      nU
R                  UU45        M     U
$ / $ U R%                  T5      U4/$ s  sn	f )!Nr  r  r  r  )vision_encoder.vision_language_adapter.patch_merger.pre_mm_projector_normvision_towervision_modelaudio_towermodel.connectormulti_modal_projectorc              3  F   >#    U  H  nTR                  U5      v   M     g 7frb   r}  rc   r   rd   s     r2   re   ,LlamaModel.modify_tensors.<locals>.<genexpr>.  s$      -F ''-   !r|  model.zmodel.text_modelztext_model.r  language_model.r!  zq_proj.biasr"  zk_proj.biasblock_sparse_moe.expertsr  r  r!   w1w2w3r  .block_sparse_moe.experts.r	  r  r   r  layers..feed_forward.experts.)r   r$  r  r}  r4  undo_permuter  r|  r  re  rL   r  r.  rW   r   r~  r   ri  r   )rt   r   rd   r   r  r  vision_prefixesis_multimodal_tensorr  r   r  widrl  rm  rn  ro  r   s     `              r2   r   LlamaModel.modify_tensors  s   !!9.C"DE$$l4I%JK	
  .5  % $  !D(  '$.	 
  -  	  I\\\)d?D__/00<<r2D__.//<< 126D}}=>>'//
FK
}}=>>'//
IN
 99/0B6%89I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 .C*,E$Y/"/u4NseSTUXTYY` aT]]3%7%>? MM#.u5  0
 "'U!:J$+C50Fse7"SK#33K@HNNHj#9: . 	%%d+Z8997 !Fs   $Jc           	   #    #    U R                  S/SS9=n(       Ga  UR                  SS5      R                  5       S:X  Ga  U R                  R                  SS5      nU R                  R                  S	5      =nc  U R                  S
   U R                  S   -  nSU[        R
                  " SUS[        R                  S9U-  -  -  nUR                  SS5      nUR                  SS5      nUR                  SS5      nU R                  R                  SS5      nX-  n	X-  n
/ nU Hr  nS[        R                  -  U-  nX:  a  UR                  S5        M1  X:  a  UR                  U5        MI  X-  U-
  Xv-
  -  nUR                  SSU-
  U-  U-   -  5        Mt     U R                  [        R                  R                  5      [        R                  " U[        R                  S94v   g g g 7fNr  Tr  r  r  llama3r       @r  r  r        ?r   r    r   r         @low_freq_factorhigh_freq_factor      @ original_max_position_embeddings    r   r   r   lowerrL   r   aranger  mathpir~  r   ri   r%  
ROPE_FREQStensorrt   r  baser  freqsr  r  r  old_context_lenlow_freq_wavelenhigh_freq_wavelenrope_factorsfreqwavelensmooths                  r2   r  !LlamaModel.generate_extra_tensorsf  s    ++^,<t+LL<LR0668HD||''g><<++J77C@,,}5F[9\\CtQQemm(TWZ(Z[\%))(C8"."2"23Dc"J#/#3#34F#L "&,,"2"23UW["\#2#D $3$F!  "!D$''kD0G2$++A. 3$++F3"1";o"MRbRt!u$++A!f*1F1O,PQ " ..t/@/@/K/KLell[goto|o|N}~~5 E M   G+G-c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf Nr   zUnprocessed experts: r  rV  r  rn   r   r   rt   rr  r   expertsr  s       r2   rV  LlamaModel.prepare_tensors  h    !==$"&--B-QAqq-GB7|a #8	!BCC   %B   "A0r  r  r   r  rV   r	  r  r  r  )r&   r'   r(   r)   ri   r  LLAMArU   r  r   r  r  r   r  r  r  r  r   r  rV  r0   rR  rS  s   @r2   r|  r|    sk     &&JL^/5b'6RM  ) ) 04H,3F:P<D Dr1   ArceeForCausalLMc                  T   ^  \ rS rSr\R
                  R                  rU 4S jrSr	U =r
$ )
ArceeModeli  c                  > [         TU ]  5         U R                  5         U R                  R	                  S5      =(       d    0 nUR	                  SUR	                  S5      5      S:X  aw  SU;   ap  U R
                  R                  [        R                  R                  5        U R
                  R                  US   5        U R
                  R                  US   5        g g g Nr  r  r   yarnr  r  r  r   rL  rL   r   rN   r  ri   r  YARNr  add_rope_scaling_orig_ctx_lenrt   r  r  s     r2   r   ArceeModel.set_gguf_parameters      #%""$||''7=2K)9)9&)ABfLQY]iQi2243G3G3L3LM44\(5KL::<Hj;kl RjLr1   r%   )r&   r'   r(   r)   ri   r  ARCEErU   r   r0   rR  rS  s   @r2   r  r    s    &&Jm mr1   r   Mistral3ForConditionalGenerationc                  L   ^  \ rS rSrSrU 4S jrSS jrU 4S jrS	S jrSr	U =r
$ )
LlavaVisionModeli  r  c                0  > [         TU ]  " U0 UD6  U R                  R                  S5      S:X  a@  U R                  R                  SS5      U R                  S'   U R	                  S5      U l        OU R                  (       aX  U R                  R                  SS 5      U R                  S'   U R                  S   c   S5       eU R                  S/5      U l        O[        S	U R                  S    35      e[        R                  S
U R
                   35        g )Nr  r  r  r  z[IMG_BREAK]r  z!norm_eps not found in params.jsonimage_break_token_idzUnsupported model type: zImage break token id: )r  r   rL   r   get_token_idimg_break_tok_idrY   rV  r{  r   rg   rh   r  s      r2   r   LlavaVisionModel.__init__  s    $)&)<<L)Y6-1\\-=-=>NPT-UDLL)*$($5$5m$DD!##'+'9'9'='=j$'ODLL$<<
+7\9\\7$($4$46L5M$ND!7\8R7STUU,T-B-B,CDEr1   c                *   U R                   S-  n[        USSS9 n[        R                  " U5      S   nUR	                  5        H$  u  pVUS   U:X  d  M  [        U5      s  sS S S 5        $    S S S 5        [        SU S35      e! , (       d  f       N= f)	Nr  r   r   r   r-  r  zToken 'z ' not found in tokenizer config.)r?   r   r   r   ro   rV   r   )rt   r  r  r   r-  r:  r  s          r2   r  LlavaVisionModel.get_token_id  s     $1H H'w?1#'99Q<0F#G #7#=#=#?i(E1s8O	 @?#? @
 75')IJKK @?s   6BB+B
Bc                0  > [         TU ]  5         U R                  nUR                  S5      S:X  a  U R                  R                  [        R                  R                  5        U R                  R                  US   5        US   S:X  a  U R                  R                  S5        O6US   S:X  a  U R                  R                  S5        O[        SUS    35      eS	U R                  ;   a)  U R                  R                  U R                  S	   5        g g g )
Nr  r  r  
hidden_actsiluTgeluUnsupported hidden_act: spatial_merge_size)r  r   rL   r   rN   add_clip_projector_typeri   VisionProjectorTypePIXTRAL"add_vision_attention_layernorm_epsadd_vision_use_siluadd_vision_use_gelur   rV  add_vision_spatial_merge_sizert   rL   r  s     r2   r   $LlavaVisionModel.set_gguf_parameters  s    #%,,;;|$	144T5M5M5U5UV??HX@YZ |$.  44T:&&0  44T: #;GL<Q;R!STT $t'9'99  >>t?Q?QRf?gh : 2r1   c                  ^ AU R                   (       d  U R                  S   OU R                  S/5      nUnSn[        U4S jU 5       5      (       a  TR	                  S5      (       a'  U R                   (       d  [
        R                  XU5      nTR	                  S5      (       a'  U R                   (       d  [
        R                  XU5      nU R                  T5      U4/$ U R                   (       d  SOSnU R                  S:  ak  UT;   ae  [        R                  S	T 35        XR                     n[        R                  [        R                  R                     mU R                  T5      U4/$ / $ )
Nr  )multi_modal_projector.vision_tower.r  r  r  r  c              3  F   >#    U  H  nTR                  U5      v   M     g 7frb   r  r  s     r2   re   2LlavaVisionModel.modify_tensors.<locals>.<genexpr>  s     D^6tv&&^r  r  r  embed_tokens.weightztok_embeddings.weightr   z,Extracting [IMG_BREAK] token embedding from )rY   rL   r{  r$  r  r|  r  r   r  rg   rh   ri   r   r%  V_TOK_EMBD_IMG_BREAK)	rt   r   rd   r   r  r  valid_prefixes	embed_keyimg_break_embds	     `      r2   r   LlavaVisionModel.modify_tensors  sB   7;7M7MDLL./SWScScezd{S| 	 	
 D^DDD}}=>>tG]G]'//
FK
}}=>>tG]G]'//
IN
))$/<==151G1G)Md	  1$d):KKFtfMN'(=(=>N$$T%6%6%K%KLD))$/@AA	r1   )r  )r  r   r~   rV   r  )r&   r'   r(   r)   r  r   r  r   r   r0   rR  rS  s   @r2   r  r    s'    
 FLi&   r1   r   Idefics3ForConditionalGenerationSmolVLMForConditionalGenerationc                  D   ^  \ rS rSrU 4S jrU 4S jrS rSS jrSrU =r	$ )SmolVLMModeli  c                D  > [         TU ]  " U0 UD6  U R                  S   S:X  a|  U R                  R                  SS5      U R                  S'   U R                  R                  SS5      U R                  S'   U R                  R                  SS5      U R                  S'   g g )	Nr  smolvlm_visionr  i  r     r  i   )r  r   rL   r   r  s      r2   r   SmolVLMModel.__init__  s    $)&)<<%)99 +/,,*:*:=$*ODLL'26,,2B2BCXZ\2]DLL./040@0@ATVZ0[DLL,- :r1   c                  > [         TU ]  5         U R                  R                  [        R
                  R                  5        U R                  R                  U R                  R                  SS5      5        U R                  R                  U R                  R                  SS5      5        U R                  R                  S5        g )Nr  r  scale_factorr    T)r  r   rN   r  ri   r	  IDEFICS3r  rL   r   !add_vision_projector_scale_factorrV  r  rt   r  s    r2   r    SmolVLMModel.set_gguf_parameters  s    #%001I1I1R1RS;;DLL<L<LM]_c<de::4;M;M;Q;QR`bc;de,,T2r1   c                J    AAASU;   a  [         R                  R                  $ g)N.embeddings.F)ri   r"  r#  r   s        r2   r   SmolVLMModel.tensor_force_quant	  s&    6T!,,000r1   c                x    ASU;   =(       d    SU;   =(       d    SU;   nU(       a  U R                  U5      U4/$ / $ )Nr  r  r  r   )rt   r   rd   r   is_vision_tensors        r2   r   SmolVLMModel.modify_tensors		  sG    )T1h^t5KhO`dhOh))$/<==	r1   r%   r  
r&   r'   r(   r)   r   r   r   r   r0   rR  rS  s   @r2   r  r    s    \3 r1   r  Llama4ForConditionalGenerationc                  z   ^  \ rS rSr\R
                  R                  rSrU 4S jr	S r
U 4S jrSU 4S jjrSrU =r$ )	Llama4Modeli	  Fc                   > [         TU ]  " U0 UD6  U R                  S   U R                  S'   U R                  S   U R                  S'   g )Nr  intermediate_size_moeintermediate_size_mlpr  r   rL   r  s      r2   r   Llama4Model.__init__	  sG    $)&)04=P0Q,-,0LL9P,Q()r1   c                $    U R                  5         g rb   r  r   s    r2   r  Llama4Model.set_vocab	  r  r1   c                   > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        g )Ninterleave_moe_layer_stepr5  )r  r   rN   add_interleave_moe_layer_steprL   add_expert_feed_forward_lengthr(  s    r2   r   Llama4Model.set_gguf_parameters!	  sJ    #%66t||D_7`a77E\8]^r1   c                  > UR                  S5      (       a  UR                  SS5      nSU;   a~  UR                  SS5      nUR                  SS5      nUR                  S   S-  nUR                  SS5      R	                  USS	9u  pxU R                  U5      U4U R                  U5      U4/$ UR                  S
5      (       a  US-  nUR                  SS5      nSU;   d  SU;   a  / $ [        T	U ]!  XU5      $ )Nr  r  gate_up_projup_proj.weightgate_proj.weightr  r    r2  r  	down_projr  r  r  )	r}  r4  r!  	transposer  r   r  r  r   )
rt   r   rd   r   name_up	name_gatedim_halfgate_proj_weightup_proj_weightr  s
            r2   r   Llama4Model.modify_tensors&	  s   ??,--<< 126D T!ll>3CDG^5GHI!''+q0H/9/C/CB/K/Q/QRZ`b/Q/c,%%i02BC%%g.? 
 ==%%ID#--b"5J"d*n.DIw%j<<r1   r%   r   r   rd   r   r   r  )r&   r'   r(   r)   ri   r  LLAMA4rU   r  r   r  r   r   r0   rR  rS  s   @r2   r3  r3  	  s2    ''JLR_
= =r1   r3  c                  2   ^  \ rS rSrU 4S jrSS jrSrU =r$ )Llama4VisionModeli>	  c                  > [         TU ]  5         U R                  R                  [        R
                  R                  5        U R                  R                  U R                  S   5        U R                  R                  [        SU R                  S   -  5      5        U R                  S   S:X  d   eU R                  R                  S5        g )Nr  r  pixel_shuffle_ratior  r  T)r  r   rN   r  ri   r	  rM  r  rL   r'  rV   r  r(  s    r2   r   %Llama4VisionModel.set_gguf_parameters@	  s    #%001I1I1P1PQ;;DLL<TU::3sT\\RgEh?h;ij||L)V333,,T2r1   c                    ASU;   d  SU;   a\  SU;   a  SU;  a  US-  nSU;   a1  [         R                  [         R                  R                     S-   U4/$ U R	                  U5      U4/$ / $ )Nr  r  positional_embedding_vlmr  zmulti_modal_projector.linear_1)ri   r   r%  V_MMPROJ_FCr   r   s       r2   r    Llama4VisionModel.modify_tensorsH	  s~    "d*n.D)T1it6K	!/47**4+<+<+H+HIIUWabcc))$/<==	r1   r%   r  )r&   r'   r(   r)   r   r   r0   rR  rS  s   @r2   rO  rO  >	  s    3
 
r1   rO  c                  X   ^  \ rS rSr\R
                  R                  rSU 4S jjrSr	U =r
$ )Mistral3ModeliU	  c                d   > UR                  SS5      nSU;   d  SU;   a  / $ [        TU ]	  XU5      $ )Nr  r  r  r  )r4  r  r   rt   r   rd   r   r  s       r2   r   Mistral3Model.modify_tensorsY	  s:    ||-r2"d*n.DIw%j<<r1   r%   rL  )r&   r'   r(   r)   ri   r  r  rU   r   r0   rR  rS  s   @r2   rX  rX  U	  s    &&J= =r1   rX  DeciLMForCausalLMc                     ^  \ rS rSr\R
                  R                  r\SS j5       r	\SS j5       r
U 4S jrS rU 4S jr\SS j5       rSS jrSS	 jrU 4S
 jrSrU =r$ )	DeciModeli`	  c                V    [        SU -  U-  S-  5      n[        R                  US5      $ )Nr    r!   rI  )rV   r^  _find_multiple)ffn_multr  r  s      r2   _ffn_mult_to_intermediate_size(DeciModel._ffn_mult_to_intermediate_sized	  s1      Hv 5 9:''(93??r1   c                (    X-  S:X  a  U $ X-   X-  -
  $ Nr   r%   )r   r   s     r2   r`  DeciModel._find_multiplej	  s      5A:Hur1   c                "  > [         TU ]  " U0 UD6  SU R                  ;   Ga  U R                  S   nU R                  [	        U5      :X  d   e[        5       U l        [        5       U l        [        5       n[        [	        U5      5       GH*  nX5   S   S   c  X5   S   S   SL aD  U R                  R                  S5        U R                  R                  U R                  S   5        OU R                  R                  S5        U R                  R                  S5        O[U R                  R                  U R                  S   X5   S   S   -  5        U R                  R                  U R                  S   5        X5   S   S	   c  UR                  S
5        GM  UR                  X5   S   S	   5        GM-     U R                  [	        U R                  5      :X  d   eU R                  [	        U R                  5      :X  d   eU R                  [	        U5      :X  d   e[        U R                  [
        5      (       a"  [        U R                  S   [        5      (       d   e[        U R                  [
        5      (       a"  [        U R                  S   [        5      (       d   e[        U[
        5      (       a  [        US   [        5      (       d   eU Vs/ s H%  n[        R                  X`R                  S   5      PM'     snU l        g g s  snf )Nblock_configs	attentionn_heads_in_groupreplace_with_linearTr   r  ffnra  r  r  )r  r   rL   rW   r   list_num_kv_heads
_num_headsr.  r~  r   rV   floatr^  rb  	_ffn_dims)rt   r  r  _block_configs_ffn_multipliersil
multiplierr  s          r2   r   DeciModel.__init__q	  s   $)&)dll*26,,2ON##s>'::::!%D"fDO#v C/0!%k23EFN%)+67LMQUU**11!4..t||<Q/RS**11!4..q1&&--dll;P.QUcUghsUt  vH  VI  /I  JOO**4<<8M+NO!%e,Z8@$++C0$++N,>u,Ej,QR 1 ##s4+=+='>>>>##s4??';;;;##s+;'<<<<d00$77JtGYGYZ[G\^a<b<bbbdoot44DOOTUDVX[9\9\\\.55*EUVWEXZ_:`:``` #3)"2J 88\\R_E`a"2)DNQ +P)s   ,Lc                   U R                   R                  SS5      S:X  a  U R                  5       u  pnU R                  R	                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        [        R                  " U R                  SS9nUR                  U R                  5        g U R                  5         g )Nr"  i  r  Tr  )rL   r   r?  rN   r  r  r  r  ri   r  r?   r  r  r  s        r2   r  DeciModel.set_vocab	  s     <<L&1V;'+':':'<$Ff008..v6++F3,,X6 --dnn$OM%%d&6&67 $$&r1   c                  > SU R                   ;   GaJ  U R                  [        U R                  5      :X  d   eU R                  [        U R                  5      :X  d   eU R                  [        U R
                  5      :X  d   eU R                   R                  S5      =nb  U R                  R                  U5        U R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R
                  5        U R                  R                  U R                  5        U R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R!                  U R                   S   U R                   S   -  5        U R                  R#                  U R                   S   U R                   S   -  5        U R                  R%                  U R&                  5        O|[(        TU ]U  5         SU R                   ;   a^  U R                   S   U l        U R                  [        U R                  5      :X  d   eU R                  R                  U R                  5        U R                   nU R                  R-                  US   5        UR                  S	5      =nc  US   US   -  nU R                  R/                  U5        U R                   R                  S
5      =(       d    0 nUR                  SUR                  S5      5      S:X  aY  SU;   aR  U R                  R1                  [2        R4                  R6                  5        U R                  R9                  US   5        g g g )Nrh  r  r  r  r  r  num_key_value_heads_per_layerr"  r  r  r  r   r  r  )rL   rW   r   rn  ro  rq  r   rN   r   r  r  r  r  r  r  r  r  r  r  rA   r  r   r  r  r  ri   r  r  r  )rt   r  rL   r  r  r  s        r2   r   DeciModel.set_gguf_parameters	  s   dll*##s4+=+='>>>>##s4??';;;;##s4>>'::::"ll..|<<
I  33J?..t/A/AB++DOO<44T^^D,,T-=-=>//=V0WX11$,,}2MN33DLL4PQ++DLL,G4<<XmKn,no--dll=.IT\\ZoMp.pq**4::6G').$,,>04=\0]"''3t/A/A+BBBB  2243E3EF,,''(=>J//H8}-9N1OOH11(;||''7=2K)9)9&)ABhNS[_kSk2243G3G3N3NO44\(5KL TlNr1   c                    Ub  X:w  a  UnU R                   " USU R                  S   U-  S-  /U R                  SS  Q76 R                  SS5      R                  U R                  5      $ r  r  r  s      r2   r  DeciModel.permute	  r  r1   c                   U R                   S   nUbn  SU R                   ;   a  U R                   S   U   nOfSU R                   ;   a  U R                  U   nU R                  U   nO7U R                   R                  S5      nOU R                   R                  S5      nUR	                  S5      (       a  [
        R                  XU5      nUR	                  S5      (       a  [
        R                  XU5      nU R                  U5      U4/$ )Nr  rz  rh  r  r  r  )rL   rn  ro  r   r  r^  r  r   rt   r   rd   r   r  r  s         r2   r   DeciModel.modify_tensors	  s    34?.$,,> LL)HI#N	 DLL0 ..s3	- LL,,-BC	(()>?I==9::"**:vFJ==9::"**:yIJ%%d+Z899r1   c           	   #    #    U R                  S/SS9=n(       Ga  UR                  SS5      R                  5       S:X  Ga  U R                  R                  SS5      nU R                  R                  S	5      =nc  U R                  S
   U R                  S   -  nSU[        R
                  " SUS[        R                  S9U-  -  -  nUR                  SS5      nUR                  SS5      nUR                  SS5      nU R                  R                  SS5      nX-  n	X-  n
X:w  d   e/ nU Hr  nS[        R                  -  U-  nX:  a  UR                  S5        M1  X:  a  UR                  U5        MI  X-  U-
  Xv-
  -  nUR                  SSU-
  U-  U-   -  5        Mt     U R                  [        R                  R                  5      [        R                  " U[        R                  S94v   g g g 7fr  r  r  s                  r2   r   DeciModel.generate_extra_tensors	      ++^,<t+LL<LR0668HD||''g><<++J77C@,,}5F[9\\CtQQemm(TWZ(Z[\%))(C8"."2"23Dc"J#/#3#34F#L "&,,"2"23UW["\#2#D $3$F!'<<<!!D$''kD0G2$++A. 3$++F3"1";o"MRbRt!u$++A!f*1F1O,PQ " ..t/@/@/K/KLell[goto|o|N}~~5 E M   G2G4c                "   > [         TU ]  5         g rb   r  rV  r(  s    r2   rV  DeciModel.prepare_tensors
      !r1   )rq  ro  rn  )ra  rp  r  rV   r~   rV   )r   rV   r   rV   r~   rV   r  r  r  )r&   r'   r(   r)   ri   r  DECIrU   r  rb  r`  r   r  r   r  r   r  rV  r0   rR  rS  s   @r2   r^  r^  `	  su    %%J@ @
  .`' !MF ) ):&<" "r1   r^  BitnetForCausalLMc                  n   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
SS jrSrU =r$ )	BitnetModeli
  c                $    U R                  5         g rb   r  r   s    r2   r  BitnetModel.set_vocab
  r  r1   c                   > [         TU ]  5         U R                  R                  [        R
                  R                  5        U R                  R                  S5        g )Nr  )r  r   rN   r  ri   r  r  r  r(  s    r2   r   BitnetModel.set_gguf_parameters
  sB    #%..t/C/C/J/JK005r1   c                   UR                   nUR                  5       nUR                  5       R                  5       R	                  SS9nSU-  nX-  R                  5       R	                  SS5      U-  nUR                  U5      $ )Nr  )minr   r  )r   rp  absmeanclamproundr   )rt   weightr   scaleiscaleresults         r2   weight_quantBitnetModel.weight_quant
  st    

!!#))d)3U /((*00Q7&@{{5!!r1   c           
   #    ^ ^^#    T R                  U5      m[        UUU 4S j[        R                  R                  [        R                  R
                  [        R                  R                  [        R                  R                  [        R                  R                  [        R                  R                  [        R                  R                  4 5       5      (       a  T R                  U5      nTU4v   g 7f)Nc              3  J   >#    U  H  nTR                  TUT5      v   M     g 7frb   r  r  s     r2   re   -BitnetModel.modify_tensors.<locals>.<genexpr>+
  s-       L
Ct++Hc3?? L
r  )r   r$  ri   r%  r  r  r  ATTN_OUTrP  FFN_DOWNrO  r  r  s   `  `@r2   r   BitnetModel.modify_tensors(
  s     ''- $$$$$$&&$$&&&&L
    **:6J$$s   C5C:r%   )r  r   r~   r   r  )r&   r'   r(   r)   ri   r  BITNETrU   r  r   r  r   r0   rR  rS  s   @r2   r  r  
  s+    ''J(6
	"% %r1   r  GrokForCausalLMc                     ^  \ rS rSr% \R
                  R                  rS rU 4S jr	U 4S jr
SrS\S'   S
S jrS	rU =r$ )	GrokModeli:
  c                $    U R                  5         g rb   r  r   s    r2   r  GrokModel.set_vocab>
  r  r1   c                &   > [         TU ]  " U0 UD6  g rb   )r  r   r  s      r2   r   GrokModel.__init__A
  s    $)&)r1   c                "   > [         TU ]  5         g rb   r  r   r(  s    r2   r   GrokModel.set_gguf_parametersD
      #%r1   Nr_  r  c           	        UR                  S5      S:w  Ga  U R                  S   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US-  :  a  / nS H  n/ n[        U5       H@  n	SU SU	 SU S3n
UR                  U R                  U   U
   5        U R                  U   U
	 MB     [        R                  " US	S
9nSU SU S3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )N.moe.r  r  r!   )r  linear_1linear_vztransformer.decoder_layer.r	  r  r   r  
re  rL   r  r.  rW   r   r~  r   ri  r   )rt   r   rd   r   r  r   r  r  rl  rm  rn  ro  r   s                r2   r   GrokModel.modify_tensorsI
  s_   99W#%89I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 >C*,E$Y/"<SEse1SEQX YT]]3%7%>? MM#.u5  0
 "'U!:J$>se5W"UK#33K@HNNH#9: > 	%%d+Z8997 !F   Er  r  )r&   r'   r(   r)   ri   r  GROKrU   r  r   r   r  r  r   r0   rR  rS  s   @r2   r  r  :
  s8    %%J(*& 04H,3#: #:r1   r  DbrxForCausalLMc                  Z    \ rS rSr\R
                  R                  rS rSS jr	SS jr
Srg)		DbrxModelio
  c                   U R                   S   nU R                   S   nU R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R	                  U R                   S   5        U R                  R                  US   5        U R                  R                  U R                   S   5        U R                  R                  US   5        U R                  R                  US	   5        U R                  R                  US
   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  S5        U R                  R                  U R                  5        [        R!                  SU R                   35        g )N
ffn_configr  r  r  r  ffn_hidden_sizer  r  r  r  moe_num_experts	moe_top_kr  r  )rL   rN   r  r  r  r  r  r  r   r  r  r  r  r  rA   rg   rh   )rt   r  r  s      r2   r   DbrxModel.set_gguf_parameterss
  sn   \\,/
ll=1((j)AB++DLL,GH--dll9.EF00<M1NO''Y(?@**;|+DE++K,EF&&{:'>?))*5F*GH..z+/FG++D1&&tzz2(56r1   c                   AU R                   S   S   nU R                   S   S   nU R                   S   nS SS S.nSnUR                  5        H[  n	UR                  U	5      S:w  d  M  UR                  S	5      S:X  d  M1  S
nUR                  XEU5      nXy   =n
b  UR                  " U
6 n  O   U R                  U(       d  UOUS	-   SS9nX4/$ )Nr  r  r  r  )r   r    r   )zffn.experts.mlp.w1zffn.experts.mlp.w2zffn.experts.mlp.v1Fr  r  Tr  r  )rL   rn   re  r3  r  r   )rt   r   rd   r   n_expertr  r  exp_tensor_namesr  exp_tensor_namepermute_tensorr   s               r2   r   DbrxModel.modify_tensors
  s    <<-.?@||L)*;<i( 372;268 /446Oyy)R/DIIi4HB4N'__XVD
&6&GGNT!+!3!3^!DJ  7 ''G	AQ`l'm&''r1   c                    AAAUS:  $ )Nr   r%   r   s        r2   r   DbrxModel.tensor_force_quant
  s    (Czr1   r%   Nr  r  )r&   r'   r(   r)   ri   r  DBRXrU   r   r   r   r0   r%   r1   r2   r  r  o
  s!    %%J70!(Fr1   r  MiniCPMForCausalLMc                  n   ^  \ rS rSr\R
                  R                  rU 4S jrSS jr	S r
SS jrSrU =r$ )	MiniCPMModeli
  c                `  > [         TU ]  5         [        U R                  S   5      nU R                  R                  U5        [        R                  SU 35        U R                  S   U R                  S   S-  -  nU R                  R                  U5        [        R                  SU 35        U R                  S   U R                  S   -  nU R                  R                  U5        [        R                  S	U 35        U R                  R                  S
5      =(       d    0 nUR                  SUR                  S5      5      S:X  ad  U R                  R                  [        R                  R                  5        [        R                  S[        R                  R                   35        g g )N	scale_embz"gguf: (minicpm) embedding_scale = scale_depthr        ?z!gguf: (minicpm) residual_scale = r  dim_model_basezgguf: (minicpm) logit_scale = r  r  r   longropez$gguf: (minicpm) rope_scaling_type = )r  r   rp  rL   rN   add_embedding_scalerg   rh   add_residual_scaleadd_logit_scaler   r  ri   r  LONGROPE)rt   embedding_scaleresidual_scalelogit_scaler  r  s        r2   r    MiniCPMModel.set_gguf_parameters
  s[   #%[ 9:,,_=88IJKm4t||DW7X\_7__++N;77GHIll=1DLLAQ4RR((54[MBC||''7=2K)9)9&)ABjP2243G3G3P3PQKK>t?S?S?\?\>]^_ Qr1   c              #    #    U R                   S   U R                   S   -  nU R                  S/S5      nUGb  UR                  SS 5      nUR                  SS 5      nUb  Uc  [        S5      e[	        U5      [	        U5      :w  d  [	        U5      US-  :w  a  [        S	US-   35      eU R                  [        R                  R                  5      [        R                  " U[        R                  S
94v   U R                  [        R                  R                  5      [        R                  " U[        R                  S
94v   g g 7f)Nr  r  r  Tlong_factorshort_factorNMissing the required key rope_scaling.long_factor or rope_scaling_short_factorr    2The length of rope long and short factors must be r  )rL   r   r   r   r   r   r   ri   r%  ROPE_FACTORS_LONGr   r  r  ROPE_FACTORS_SHORT)rt   	rope_dimsr  long_factorsshort_factorss        r2   r  #MiniCPMModel.generate_extra_tensors
  sG    LL/4<<@U3VV	''(8$?#'++M4@L(,,^TBM#}'<opp< C$66#l:Ky[\}:\ #UV_bcVcUd!eff**4+<+<+N+NOQVQ]Q]^jrwrr  RA  B  B**4+<+<+O+OPRWR^R^_lty  uB  uB  SC  D  D $s   EEc                $    U R                  5         g rb   r  r   s    r2   r  MiniCPMModel.set_vocab
  r  r1   c                0   AU R                   S   nU R                   R                  S5      nUR                  S5      (       a  [        R	                  XU5      nUR                  S5      (       a  [        R	                  XU5      nU R                  U5      U4/$ r   rL   r   r  r|  r  r   r  s         r2   r   MiniCPMModel.modify_tensors
  s    34LL$$%:;	 ==/++#++JGJ==/++#++J	JJ%%d+Z899r1   r%   r  r  )r&   r'   r(   r)   ri   r  MINICPMrU   r   r  r  r   r0   rR  rS  s   @r2   r  r  
  s-    ((J` D"(: :r1   r  MiniCPM3ForCausalLMc                  d    \ rS rSr\R
                  R                  rS rSS jr	S r
S	S
S jjrSrg)MiniCPM3Modeli
  c                h   U R                   nU R                  R                  U R                  5        U R                  R	                  US   5        U R                  R                  US   5        U R                  R                  U R                  5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  US   5        SU;   a$  US   b  U R                  R                  US   5        U R                  R                  US	   5        U R                  R                  US
   US   -   5        U R                  R!                  US   5        g )Nr  r  r  r  r  r  r"  q_lora_rankkv_lora_rankqk_nope_head_dimqk_rope_head_dim)rL   rN   r  rA   r  r  r  rW   r  r  r  r  r  add_q_lora_rankadd_kv_lora_rankr  r  )rt   rL   s     r2   r   !MiniCPM3Model.set_gguf_parameters
  ss   ,,&&tzz2++G4M,NO--gm.DE(()9)9:009L1MN''0E(FG**73H+IJ//0GH''(=>G#(>(J,,W]-CD))'.*AB''0B(CgN`Fa(ab11':L2MNr1   c              #  r  #    U R                  S/S5      nUGb  U R                  S   nUR                  SS 5      nUR                  SS 5      nUb  Uc  [        S5      e[	        U5      [	        U5      :w  d  [	        U5      US-  :w  a  [        SUS-   35      eU R                  [        R                  R                  5      [        R                  " U[        R                  S	94v   U R                  [        R                  R                  5      [        R                  " U[        R                  S	94v   g g 7f)
Nr  Tr  r  r  r  r    r  r  )r   rL   r   r   r   r   r   ri   r%  r  r   r  r  r  )rt   r  r  r  r  s        r2   r  $MiniCPM3Model.generate_extra_tensors  s9    ''(8$?#%78I'++M4@L(,,^TBM#}'<opp< C$66#l:Ky[\}:\ #UV_bcVcUd!eff**4+<+<+N+NOQVQ]Q]^jrwrr  RA  B  B**4+<+<+O+OPRWR^R^_lty  uB  uB  SC  D  D $s   D5D7c                $    U R                  5         g rb   r  r   s    r2   r  MiniCPM3Model.set_vocab  r  r1   Nc                    Ub	  X#:w  a  X#-  nUR                   " USUR                  S   U-  S-  /UR                  SS  Q76 R                  SS5      R                  UR                  5      $ r  r  r  s       r2   r  !MiniCPM3Model._reverse_hf_permute  r
  r1   r%   r  rb   r  )r&   r'   r(   r)   ri   r  MINICPM3rU   r   r  r  r  r0   r%   r1   r2   r  r  
  s,    ))JO$D"(
 
r1   r  QWenLMHeadModelc                  t    \ rS rSr\R
                  R                  r\S 5       r	\SS	S jj5       r
S rS rSrg)
r  i   c           	         SSK Jn  U" 5       nSR                  U R                  S5       Vs/ s H  o2[	        U5         PM     sn5      $ s  snf Nr   )bytes_to_unicoder  zlatin-1*transformers.models.gpt2.tokenization_gpt2r  rM  r  ordbr  byte_encoderchars       r2   r  QwenModel.token_bytes_to_string$  @    O')wwAHHY<OP<ODSY/<OPQQP   A
Nc                P   U Vs/ s H  n[        U/5      PM     nn S nS n[        [        US S USS  5      5       H2  u  pxU R                  US   US   -   5      n	U	c  M$  Ub  X:  d  M.  UnU	nM4     Ub  Ub  Xb:  a   U$ Uc   eUS U XE   XES-      -   /-   XES-   S  -   nM  s  snf Nr  r   r   r    r  	enumeratezipr   
r  r  r  r  r  min_idxmin_rankr=  pairr  s
             r2   r  QwenModel.bpe*      %*+UsU+GH$SsU12Y%?@&**47T!W+<=#)9T_G#H	 A
 H$8X=Q  &&&(7Ou~k8J'J&KKe^_T_T`NaaE  ,   B#c                $    U R                  5         g rb   )r  r   s    r2   r  QwenModel.set_vocab;  r  r1   c                   U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R	                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   U R                  S   -  5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  5        g )Nr  r  r  r  rotary_emb_baser  r  )rN   r  rL   r  r  r  r   r  r  r  r  rA   r   s    r2   r   QwenModel.set_gguf_parameters>  s   ++DLL9R,ST((6I)JK--dll=.IJ00>Q1RS++DLL9J,KL11$,,}2MQUQ]Q]^sQt2tu''5J(KL//=Q0RS&&tzz2r1   r%   rb   r  zdict[bytes, int]r  r  r  r  r~   zlist[bytes])r&   r'   r(   r)   ri   r  QWENrU   r  r  r  r  r   r0   r%   r1   r2   r  r     sC    %%JR R
   	3r1   r  
Qwen2ModelQwen2ForCausalLM"Qwen2AudioForConditionalGenerationc                  j   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SU 4S jjr
SrU =r$ )r  iJ  c                f     U R                  5         g ! [         a    U R                  5          g f = frb   r  r  r  r   s    r2   r  Qwen2Model.set_vocabN  .    	#))+  	#  "	#    00c                  > [         TU ]  5         U R                  5         U R                  R	                  S5      =(       d    0 nUR	                  SUR	                  S5      5      S:X  aw  SU;   ap  U R
                  R                  [        R                  R                  5        U R
                  R                  US   5        U R
                  R                  US   5        g g g r  r  r  s     r2   r   Qwen2Model.set_gguf_parametersT  r  r1   c              #  P  >#    U R                   S:X  a  SU 3nSU;   a  UR                  SS5      nUR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  / $ [        TU ]  XU5       S h  vN   g  N7f)	Nr  r  r  r  mlpr  r  r  )r  r4  r}  r  r   rZ  s       r2   r   Qwen2Model.modify_tensors]  s     <<<'D6?D$<< 126D??5!!T__5L%M%M??>22doom6T6TI7)*C@@@s   BB&B$B&r%   r  )r&   r'   r(   r)   ri   r  QWEN2rU   r  r   r   r0   rR  rS  s   @r2   r  r  J  s)    &&J#m	A 	Ar1   
DreamModelc                  t   ^  \ rS rSr\R
                  R                  rSS jrS r	U 4S jr
SU 4S jjrSrU =r$ )	r.  ii  c                p   / n/ nSSK Jn  UR                  U R                  SS9nUR	                  5       nU R
                  R                  S[        U5      5      n[        UR                  5       5      U:  d   eU R                  U5      nUR                  5        VV	s0 s H  u  pX_M	     n
nn	UR                  5       n[        U5       GH`  nX;  a@  UR                  SU S35        UR                  [        R                   R"                  5        MI  X   U;   a  UR                  X   5        [%        US5      (       a  XR&                  ;   at  UR&                  U   R(                  (       a+  UR                  [        R                   R*                  5        M  UR                  [        R                   R,                  5        M  UR                  [        R                   R*                  5        GM$  UR                  X   5        UR                  [        R                   R.                  5        GMc     XU4$ s  sn	nf 	Nr   r   Tr  r"  r#  r$  r-  r*  r!  r  r?   r  rL   r   r   r  r  r+  ro   r,  r.  r~  ri   r/  r.   hasattrr-  r3  r,   r-   r*   rt   r5  r6  r!  r7  
vocab_dictr"  r8  r9  r:  r;  r<  r=  s                r2   r?  DreamModel.get_vocab_basem      .!11$..TX1Y	((*
\\%%lC
OD
:$$&'*444((3BLBRBRBTUBT.>k)BTU//1z"A%QCqk* 5 56![0m./9&<==!GeGeBe 55a8@@ (>(>? (C(CD OODNN$:$:;m./ 5 56# #& ''- V   H2c                f     U R                  5         g ! [         a    U R                  5          g f = frb   r$  r   s    r2   r  DreamModel.set_vocab  r&  r'  c                h  > [         TU ]  5         U R                  5         U R                  R	                  S5        U R
                  R                  S5      =(       d    0 nUR                  SUR                  S5      5      S:X  au  SU;   ao  U R                  R                  [        R                  R                  5        U R                  R                  US   5        U R                  R                  US   5        U R
                  R                  S5      nUb  U R                  R                  U5        g g )	NFr  r  r   r  r  r  mask_token_id)r  r   rL  rN   add_causal_attentionrL   r   r  ri   r  r  r  r  add_mask_token_id)rt   r  r<  r  s      r2   r   DreamModel.set_gguf_parameters  s    #%""$ 	--e4||''7=2K)9)9&)ABfLQY]iQi2243G3G3L3LM44\(5KL::<Hj;kl ((9$..}= %r1   c              #  B   >#    [         TU ]  XU5       S h  vN   g  N7frb   )r  r   rZ  s       r2   r   DreamModel.modify_tensors  s     7)*C@@@s   r%   rN  r  )r&   r'   r(   r)   ri   r  DREAMrU   r?  r  r   r   r0   rR  rS  s   @r2   r.  r.  i  s.    &&J#(J#>$A Ar1   LLaDAModelLMc                     ^  \ rS rSr\R
                  R                  rSrS	S jr	S r
U 4S jr\S
S j5       rSU 4S jjrSrU =r$ )
LLaDAModeli  Tc                p   / n/ nSSK Jn  UR                  U R                  SS9nUR	                  5       nU R
                  R                  S[        U5      5      n[        UR                  5       5      U:  d   eU R                  U5      nUR                  5        VV	s0 s H  u  pX_M	     n
nn	UR                  5       n[        U5       GH`  nX;  a@  UR                  SU S35        UR                  [        R                   R"                  5        MI  X   U;   a  UR                  X   5        [%        US5      (       a  XR&                  ;   at  UR&                  U   R(                  (       a+  UR                  [        R                   R*                  5        M  UR                  [        R                   R,                  5        M  UR                  [        R                   R*                  5        GM$  UR                  X   5        UR                  [        R                   R.                  5        GMc     XU4$ s  sn	nf r1  r2  r4  s                r2   r?  LLaDAModel.get_vocab_base  r7  r8  c                Z    U R                  5         U R                  R                  S5        g )NT)r  rN   r5  r   s    r2   r  LLaDAModel.set_vocab  s$     	**40r1   c                4  > [         TU ]  5         U R                  5         U R                  nU R                  R                  US   5        UR                  S5      =ncE  UR                  SUR                  S5      5      nUR                  SUR                  S5      5      U-  nU R                  R                  U5        U R                  R                  SS5      nU R                  R                  U5        U R                  R                  SS5      nU R                  R                  U5        U R                  R                  S	S
5      nU R                  R                  U5        U R                  R                  S5        U R                  R                  S5        g )Nr"  r  r  r  r  r  r     mlp_hidden_sizei 0  F)r  r   rL  rL   rN   r  r   r  r  r  r  r=  add_diffusion_shift_logits)rt   rL   r  r  context_lengthembedding_lengthfeed_forward_lengthr  s          r2   r   LLaDAModel.set_gguf_parameters  sT   #%""$ ,,''(=>J//H8kk"7Y9OPG{{='++i2HIWTH11(; ))*?F++N;  <<++It<--.>? #ll../@%H001DE 	--e4 	33E:r1   c                    Ub  X:w  a  UnU R                   " USU R                  S   U-  S-  /U R                  SS  Q76 R                  SS5      R                  U R                  5      $ r  r  r  s      r2   r  LLaDAModel.permute  r  r1   c              #    >#    U R                   R                  SU R                   R                  S5      5      nU R                   R                  SU R                   R                  S5      5      nU R                  (       aX  UR                  S5      (       a  [        R                  XU5      nUR                  S5      (       a  [        R                  XU5      n[        TU ]  XU5       S h  vN   g  N7f)Nr  r  r  r  r  r  )rL   r   r  r  rE  r  r  r   )rt   r   rd   r   r  r  r  s         r2   r   LLaDAModel.modify_tensors  s     !!"79I9I)9TULL$$%:DLL<L<L\<Z[	}}=>>'//
FK
}}=>>'//
IN
 7)*C@@@s   C'C2*C0+C2r%   rN  r  r  )r&   r'   r(   r)   ri   r  LLADArU   r  r?  r  r   r  r  r   r0   rR  rS  s   @r2   rE  rE    sG    &&JL#(J1;> ) )A Ar1   rE  Ernie4_5_ForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
SrU =r$ )Ernie4_5Modeli  c                $    U R                  5         g rb   r  r   s    r2   r  Ernie4_5Model.set_vocab  r  r1   c                "   > [         TU ]  5         g rb   r  r(  s    r2   r   !Ernie4_5Model.set_gguf_parameters  r  r1   c                
   U R                   S   nU R                   S   nU R                   R                  S5      =nc  U R                   S   U-  nSU;   a  UR                  SS5      nSU;   a  UR                  SS	5      nUR                  SS
5      nUR                  SS5      n	XF-  n
XV-  nXV-  nUR                  XU/SS9u  pnU R	                  U5      U4U R	                  U5      U4U R	                  U	5      U4/$ SU;   ao  UR                  SS5      nUR                  SS5      nUR
                  S   S-  nUR                  USS9u  nnU R	                  U5      U4U R	                  U5      U4/$ U R	                  U5      U4/$ )Nr  r  r  r  zernie.r  qkv_projzqkv_proj.weightr!  r"  zv_proj.weightr   r  up_gate_projzup_gate_proj.weightrB  rC  r    )rL   r   r4  r  r   r!  )rt   r   rd   r   	num_headsr,  r  name_qname_kname_vtotal_q_dimtotal_k_dimtotal_v_dimq_proj_weightk_proj_weightv_proj_weightrF  rG  rH  rI  rJ  s                        r2   r   Ernie4_5Model.modify_tensors  s   LL!67	||$9:((44H=||M2i?Ht<<(3D \\"3_EF\\"3_EF\\"3_EF#.K&1K&1K:D:J:JKfqKrxy:J:z7M-%%f-}=%%f-}=%%f-}=  T!ll#8:JKG%:<NOI!''*a/H/9/?/?a/?/P,n%%i02BC%%g.?  %%d+Z899r1   r%   r  )r&   r'   r(   r)   ri   r  ERNIE4_5rU   r  r   r   r0   rR  rS  s   @r2   rY  rY    s&    ))J(&": ":r1   rY  Ernie4_5_MoeForCausalLMc                     ^  \ rS rSr% \R
                  R                  rSrS\	S'   U 4S jr
U 4S jrS
S jrU 4S jrS	rU =r$ )Ernie4_5MoeModeliC  Nr_  r  c                   > [         TU ]  " U0 UD6  [        U R                  5       Vs/ s H  n0 PM     snU l        g s  snf rb   )r  r   r.  rW   r  )rt   r  r  r   r  s       r2   r   Ernie4_5MoeModel.__init__H  s;    $)&)%*4+;+;%<=%<%<==s   >c                  > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  S5      =nb  U R                  R                  U5        U R                  R                  S5      =nb~  U R                  R                  U5        US:  a\  U R                  R                  S5      =nb=  U R                  R                  S	5      =nb  U R                  R                  X4-  5        g g g g g )
Nr  moe_kmoe_layer_intervalmoe_layer_start_indexmoe_intermediate_sizemoe_num_shared_expertsr   r  r  )r  r   rN   r  rL   r  r=  add_leading_dense_block_countr   r>  add_expert_shared_count%add_expert_shared_feed_forward_length)rt   rv  shared_expert_countshared_expert_intermediate_sizer  r  s        r2   r   $Ernie4_5MoeModel.set_gguf_parametersL  s   #%))$,,7H*IJ..t||G/DE66t||DX7YZ66t||D[7\]%)\\%5%56M%NN![;;<QR#'<<#3#34L#MMZ445HI"Q&t||O_O_`sOt,t,K  ,B  _c  _k  _k  _o  _o  pE  _F  HF  H[  GS  FFGfG}~ GS  ,B& [r1   c           	        UR                  S5      (       a  UR                  SS5      n[        R                  " SU5      nU(       a  / $ [        R                  " SU5      nU(       a  / $ [        R                  " SU5      nU(       a  / $ [        R                  " SU5      nU(       a  / $ UR	                  S5      S:w  Ga  U R
                  S	   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US
-  :  a  / nS H  n/ n	[        U5       H@  n
SU SU
 SU S3nU	R                  U R                  U   U   5        U R                  U   U	 MB     [        R                  " U	SS9nSU SU S3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Ne_score_correction_biase_score_correction.biaszmodel.mtp_block.(\d+)zmodel.mtp_emb_norm.(\d+)zmodel.mtp_hidden_norm.(\d+)zmodel.mtp_linear_proj.(\d+)mlp.expertsr  r  r!   )	gate_projup_projrD  r  .mlp.experts.r	  r  r   r  )r  r4  r  r  re  rL   r  r.  rW   r   r~  r   ri  r   )rt   r   rd   r   r  r  r   r  w_namerl  rm  ename_to_retrievero  r   s                 r2   r   Ernie4_5MoeModel.modify_tensorsY  s   ==233<< 9;TUD 148I 4d;I7>I7>I 99]#r)%67I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 DF*,E$Y/.;C5cURSTZS[[b,c)T]]3%78I%JK MM#./@A  0
 "'U!:J$1#mF87"SK#33K@HNNH#9: D 	%%d+Z8991 !Fs   7G0c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV   Ernie4_5MoeModel.prepare_tensors  r  r  r  r  )r&   r'   r(   r)   ri   r  ERNIE4_5_MOErU   r  r  r   r   r   rV  r0   rR  rS  s   @r2   ro  ro  C  s:    --J/3H,3>5:nD Dr1   ro  Qwen2VLModelQwen2VLForConditionalGeneration"Qwen2_5_VLForConditionalGenerationQwen2_5OmniModelc                  d   ^  \ rS rSr\R
                  R                  rU 4S jrS r	SS jr
SrU =r$ )r  i  c           	        > [         TU ]  5         U R                  S   S   nUS/[        SS[	        U5      -
  5      -  -  nU R
                  R                  U5        g )Nr  mrope_sectionr   r"   )r  r   rL   r  r   rN   add_rope_dimension_sections)rt   r  r  s     r2   r    Qwen2VLModel.set_gguf_parameters  sW    #%^4_E!s1a#m*<&<===44]Cr1   c                f     U R                  5         g ! [         a    U R                  5          g f = frb   r$  r   s    r2   r  Qwen2VLModel.set_vocab  r&  r'  c                0   AUR                  S5      (       a  UR                  SS5      nUR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  / $ U R                  U5      U4/$ )Nthinker.r  visualaudiotalker	token2wav)r}  r4  r   r   s       r2   r   Qwen2VLModel.modify_tensors  s|    ??:&&<<
B/D??8$$(@(@))T__[-I-II%%d+Z899r1   r%   r  )r&   r'   r(   r)   ri   r  QWEN2VLrU   r   r  r   r0   rR  rS  s   @r2   r  r    s)     ((JD#: :r1   c                  D   ^  \ rS rSrU 4S jrU 4S jrS rSS jrSrU =r	$ )Qwen2VLVisionModeli  c                  > [         TU ]  " U0 UD6  U R                  c   eU R                  R                  SS5      U R                  S'   U R                  R                  S5      U R                  S'   U R                  R                  S5      U R                  S'   SU R                  ;   aQ  U R                  R                  S5      U R                  S	'   U R                  R                  S5      U R                  S'   g g )
Nrt  i0  ra  r  rW  r  	embed_dimr  r  )r  r   rZ  r   r  s      r2   r   Qwen2VLVisionModel.__init__  s    $)&)""...,0,?,?,C,CLRU,VL)595H5H5L5L[5Y12373F3F3J3J73S/0$---7;7J7J7N7N}7]D 34151D1D1H1H1UD. .r1   c                  > [         TU ]  5         U R                  c   eU R                  nU R                  S   nUS:X  a5  U R                  R                  [        R                  R                  5        GO)US:X  d  US:X  Ga  US:X  a4  U R                  R                  [        R                  R                  5        O3U R                  R                  [        R                  R                  5        U R                  R                  S5        UR                  S5      nUc   S5       eUS   S	-   n[        S	[        U5      5       H!  nX5   X5S	-
     -
  U:w  d  M  [        S
U 35      e   U R                  R!                  U5        O[        SU R                  S    35      eU R                  R#                  U R                  R                  SS5      5        g )Nr  qwen2_vl
qwen2_5_vlqwen2_5_omniTfullatt_block_indexesz0fullatt_block_indexes is required for qwen2_5_vlr   r   zInvalid fullatt_block_indexes: zUnknown QwenVL model type: r  ư>)r  r   rZ  rV  rN   r  ri   r	  r  QWEN25OQWEN25VLr  r   r.  r   r   add_vision_n_wa_patternr  )rt   rL   r  r  n_wa_patternr=  r  s         r2   r   &Qwen2VLVisionModel.set_gguf_parameters  s   #%""...%%''5
#44T5M5M5U5UV<':+G^+  889Q9Q9Y9YZ  889Q9Q9Z9Z[006$+KK0G$H!(4h6hh403a7L1c"789(+.CE.JJlZ$'FG\F]%^__ : 44\B:4;M;Ml;[:\]^^;;D<N<N<R<RSacg<hir1   c                    AAASU;   a  [         R                  R                  $ SU;   a  [         R                  R                  $ gNz.patch_embd.z.position_embd.Fri   r"  r?  r#  r   s        r2   r   %Qwen2VLVisionModel.tensor_force_quant  @    vX%,,000(,,000r1   c                   AUR                  S5      (       Gap  SU;   a  UR                  S:X  a  UR                  u  pEOUR                  S   nUS-  S:X  d   eUS-  nUS U nXUS-   nXS-  S  n	U R                  UR	                  SS5      5      U4U R                  UR	                  SS5      5      U4U R                  UR	                  SS	5      5      U	4/$ S
U;   a  UR                  u  ppnA
AAAUS:X  d   S5       e[
        R                  [
        R                  R                     S-   US S 2S S 2SS4   4[
        R                  [
        R                  R                     S-   US S 2S S 2SS4   4/$ U R                  U5      U4/$ / $ )Nzvisual..qkv.r    r   r!   r5  r6  r   rg  zpatch_embed.proj.weightz;Current implmentation only support temporal_patch_size of 2r  .z	.weight.1r   )	r}  ndimr!  r   r4  ri   r   r%  V_ENC_EMBD_PATCH)rt   r   rd   r   c3r   cwqwkwvc1c2ktkhkws                  r2   r   !Qwen2VLVisionModel.modify_tensors  s   ??9%% $??a'&,,EB#))!,BAv{"{!G^1q5)A'))$,,uc*BCRH))$,,uc*BCRH))$,,uc*BCRH 
 +d2%/%5%5"BQw] ]]w&&t'8'8'I'IJYVZdefhiklnqeqZrs&&t'8'8'I'IJ[XZdefhiklnqeqZrs 
 --d3Z@AA	r1   r%   r  r0  rS  s   @r2   r  r    s    	Vj6 r1   r  c                  p   ^  \ rS rSrSrSrU 4S jrU 4S jrSS jrSS jr	SS jr
S rSU 4S	 jjrS
rU =r$ )Qwen25OmniModeli  Tc                   > [         TU ]  " U0 UD6  U R                  c   eU R                  S   U R                  S'   U R                  S   U R                  S'   U R                  S   U R                  S'   g )Nr  r  encoder_ffn_dimr  encoder_attention_headsr  )r  r   r[  r  s      r2   r   Qwen25OmniModel.__init__  s|    $)&)!!---,0,>,>y,I=)262D2DEV2W./484F4FG`4a01r1   c                   > [         TU ]  5         U R                  c   eU R                  R	                  U R                  S   5        U R                  R                  U R                  R                  SS5      5        g Nnum_mel_binsr  r  )r  r   r[  rN   add_audio_num_mel_bins!add_audio_attention_layernorm_epsr   r(  s    r2   r   #Qwen25OmniModel.set_gguf_parameters  sh    #%!!---//0B0B>0RS::4;M;M;Q;QRbdh;ijr1   c                >    U R                   S   R                  S5      $ )Nr  rk  ro  r   s    r2   rd  !Qwen25OmniModel.get_vision_config  s    !!"2377HHr1   c                >    U R                   S   R                  S5      $ )Nr  r]  ro  r   s    r2   re   Qwen25OmniModel.get_audio_config!  s    !!"2377GGr1   c              #  R  #    U R                   c   eSnSnU R                   S   n[        R                  " U5      US-  S-
  -  n[        R                  " U* [        R
                  " US-  5      R                  5       -  5      n[        R
                  " U5      S S 2[        R                  4   U[        R                  S S 24   -  n[        R                  " [        R                  " U5      [        R                  " U5      /SS9R                  [        R                  S9nSU4v   g 7f)	N'  i  r  r    r   r  r  z"audio_tower.embed_positions.weight)r[  rJ  logr   expr  rp  newaxisr  sincosr  r  )rt   max_timescalelengthchannelslog_timescale_incrementinv_timescalesscaled_timepos_embds           r2   r  &Qwen25OmniModel.generate_extra_tensors$  s     !!---%%m4"$&&"78q=1;L"M$;#;ell8WX=>Y>_>_>a#abll6*1bjj=9N2::WX=<YY99eii4eii6LMSTUXX_d_l_lXm3X>>s   D%D'c                V    AAASU;   a   SU;   a  [         R                  R                  $ gNz.convr  Fri   r"  r?  r   s        r2   r   "Qwen25OmniModel.tensor_force_quant0  ,    6d?yD0,,000r1   c                  > UR                  S5      (       a  UR                  SS5      nUR                  S5      (       a9  SU;   d  SU;   a  UR                  S5      nSU;   a  / $ U R                  U5      U4/$ [        TU ]  XU5      $ )Nr  r  r  
conv1.bias
conv2.biasr  audio_bos_eos_token)r}  r4  	unsqueezer   r  r   rZ  s       r2   r   Qwen25OmniModel.modify_tensors6  s    ??:&&<<
B/D??=))t#|t';'11"5
$, 	))$/<==w%j<<r1   r%   r  r  r  )r&   r'   r(   r)   rX  rY  r   r   rd  re  r  r   r   r0   rR  rS  s   @r2   r  r    s;    bkIH
?= =r1   r  InternVisionModelc                  >   ^  \ rS rSrU 4S jrS rS rSS jrSrU =r	$ )r  iH  c                B  > U R                   c   e[        U R                   S   [        5      (       a  U R                   S   S   U R                   S'   [        U R                   S   [        5      (       a  U R                   S   S   U R                   S'   [        TU ]  5         U R
                  nU R                  R                  [        R                  R                  5        U R                  R                  US   5        US   S:X  a  U R                  R                  S5        O6US   S:X  a  U R                  R                  S5        O[        S	US    35      eU R                  R!                  S
5      nUc   eU R                  R#                  [%        SU-  5      5        g )Nrt  r   ru  r  r  r  Tr  r  downsample_ratior  )rZ  r   rm  r  r   rL   rN   r  ri   r	  INTERNVLr  r  r  r   rV  r   r'  rV   )rt   rL   r  r  s      r2   r   %InternVisionModel.set_gguf_parametersJ  ss   ""...d)),7>>040C0CL0QRS0TD-d)),7>>040C0CL0QRS0TD-#%,,001I1I1R1RS;;GDT<UV< F*006\"f,00678M7NOPP--112DE+++::3sEU?U;VWr1   c                    AAASU;   a  [         R                  R                  $ SU;   a  [         R                  R                  $ gr  r  r   s        r2   r   $InternVisionModel.tensor_force_quanta  r  r1   c                *    SSSSSSS.nX;   a  X!   nU$ )Nzmlp1.0.biaszmlp1.0.weightzmlp1.1.biaszmlp1.1.weightzmlp1.3.biaszmlp1.3.weight)z+model.multi_modal_projector.layer_norm.biasz-model.multi_modal_projector.layer_norm.weightz)model.multi_modal_projector.linear_1.biasz+model.multi_modal_projector.linear_1.weightz)model.multi_modal_projector.linear_2.biasz+model.multi_modal_projector.linear_2.weightr%   )rt   rd   	names_maps      r2   _mapping_interns1_name(InternVisionModel._mapping_interns1_namei  s/    ;H=L9F;J9F;J
	 ?Dr1   c                   A/ SQnU R                  U5      n[        U Vs/ s H  oRR                  U5      PM     sn5      (       Ga  UR                  S5      (       a  SU-   nSU;   d  SU;   d  SU;   a  UR                  S5      (       d  US-  nSU;   a  UR                  S	:X  a  UR
                  u  pgOUR
                  S
   nUS-  S
:X  d   eUS-  nUS U n	XUS	-   n
XS	-  S  nU R                  UR                  SS5      5      U	4U R                  UR                  SS5      5      U
4U R                  UR                  SS5      5      U4/$ U R                  U5      U4/$ / $ s  snf )N)r  r+  model.vision_towermodel.multi_modal_projectorr  r  z.lsz.lambda_position_embeddingr  r  r    r   r!   zattn.qkvzself_attn.q_projzself_attn.k_projzself_attn.v_proj)r  r$  r}  r  r  r!  r   r4  )rt   r   rd   r   vision_prefixr   r  r   r  r  r  r  s               r2   r    InternVisionModel.modify_tensorsv  s   d**40mDmF'mDEE ~..&-t!37Kt7S]a]j]jkt]u]u	!$??a'&,,EB#))!,BAv{"{!G^1q5)A'))$,,zCU*VWY[\))$,,zCU*VWY[\))$,,zCU*VWY[\ 
 ))$/<==	1 Es   E$r%   r  )
r&   r'   r(   r)   r   r   r  r   r0   rR  rS  s   @r2   r  r  H  s    X. r1   WavTokenizerDecc                  d   ^  \ rS rSr\R
                  R                  rSS jrS r	U 4S jr
SrU =r$ )WavTokenizerDecModeli  c                L   AUR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  [        R                  SU< 35        / $ [        R                  U R	                  U5       SUR
                   35        U R	                  U5      U4/$ )Nzcodebook.cluster_sizezcodebook.embed_avgzcodebook.initedz	Skipping r  )r  rg   r  rh   r   r!  r   s       r2   r   #WavTokenizerDecModel.modify_tensors  s     566233/00LL9TH-.It++D12$z7G7G6HIJ%%d+Z899r1   c                $    U R                  5         g rb   )r  r   s    r2   r  WavTokenizerDecModel.set_vocab  r  r1   c                @  > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   S   5        U R                  R                  U R                  S   S   5        U R                  R                  U R                  S	   S   5        U R                  R                  U R                  S	   S   5        U R                  R                  S
5        g )Nr"  n_embd_featuresr  group_norm_epsilongroup_norm_groupsposnetr  r  convnextF)r  r   rN   r  rL   add_features_lengthr  add_group_norm_epsadd_group_norm_groupsadd_posnet_embedding_lengthadd_posnet_block_countadd_convnext_embedding_lengthadd_convnext_block_countr=  r(  s    r2   r   (WavTokenizerDecModel.set_gguf_parameters  s@   #%''l1KL,,>O1PQ00f1EF++>R1ST..>Q1RS44T\\(5KH5UV//T\\(5KI5VW66t||J7OPX7YZ11t||J7OPY7Z[--e4r1   r%   r  )r&   r'   r(   r)   ri   r  WAVTOKENIZER_DECrU   r   r  r   r0   rR  rS  s   @r2   r   r     s&    11J:5 5r1   r   Qwen2MoeForCausalLMc                  z   ^  \ rS rSr% \R
                  R                  rU 4S jrSr	S\
S'   S	S jrU 4S jrSrU =r$ )
Qwen2MoeModeli  c                X  > [         TU ]  5         U R                  R                  S5      =nb  U R                  R                  U5        U R                  R                  S5      =nb3  U R                  R                  U5        [        R                  SU 35        U R                  R                  S5      =nb3  U R                  R                  U5        [        R                  SU 35        U R                  R                  S5      =(       d    0 nUR                  SUR                  S5      5      S	:X  aw  S
U;   ap  U R                  R                  [        R                  R                  5        U R                  R                  US
   5        U R                  R                  US   5        g g g )Nnum_expertsrv  #gguf: expert feed forward length = r|  z*gguf: expert shared feed forward length = r  r  r   r  r  r  )r  r   rL   r   rN   r  r>  rg   rh   rz  r  ri   r  r  r  r  )rt   r  rv  r|  r  r  s        r2   r   !Qwen2MoeModel.set_gguf_parameters  sk   #%))-88IE--i8%)\\%5%56M%NN![;;<QRKK=>S=TUV/3||/?/?@a/bb+oBBCbcKKDEdDefg ||''7=2K)9)9&)ABfLQY]iQi2243G3G3L3LM44\(5KL::<Hj;kl RjLr1   Nr_  r  c           	     r   UR                  SS5      nUR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  / $ UR                  S5      S:w  Ga  U R                  S	   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US
-  :  a  / nS H  n/ n[        U5       H@  n	SU SU	 SU S3n
UR                  U R                  U   U
   5        U R                  U   U
	 MB     [        R                  " USS9nSU SU S3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Nr  r  r+  r  r  r  r  r  r  r!   rD  r  r  r  r  r	  r  r   r  )r4  r}  re  rL   r  r.  rW   r   r~  r   ri  r   rt   r   rd   r   r  r   r  r  rl  rm  rn  ro  r   s                r2   r   Qwen2MoeModel.modify_tensors  s   ||-r2??5!!T__^%D%DXlHmHmqu  rA  rA  B_  r`  r`I99Y2%]3I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 DF*,E$Y/"/uM#axw WT]]3%7%>? MM#.u5  0
 "'U!:J$1#mF87"SK#33K@HNNH#9: D 	%%d+Z8997 !Fs   ;F4c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  Qwen2MoeModel.prepare_tensors  r  r  r  r  )r&   r'   r(   r)   ri   r  QWEN2MOErU   r   r  r  r   rV  r0   rR  rS  s   @r2   r  r    s7    ))Jm$ 04H,3&:PD Dr1   r  Qwen3ForCausalLMc                  @    \ rS rSr\R
                  R                  rSrg)
Qwen3Modeli  r%   N)	r&   r'   r(   r)   ri   r  QWEN3rU   r0   r%   r1   r2   r$  r$        &&Jr1   r$  Qwen3MoeForCausalLMc                  `   ^  \ rS rSr\R
                  R                  rU 4S jrS r	S r
SrU =r$ )Qwen3MoeModeli  c                   > [         TU ]  " U0 UD6  [        R                  U R                  S5      nUR                  SS /5      S   U l        g )NFarchitecturesr   )r  r   r<   r   r?   r   origin_hf_arch)rt   r  r  rL   r  s       r2   r   Qwen3MoeModel.__init__  sE    $)&)((?%kk/D6B1Er1   c                    U R                   S:X  a  U R                  5         g  U R                  5         g ! [         a    U R	                  5          g f = f)N InternS1ForConditionalGeneration)r,  _set_vocab_interns1r  r  r  r   s    r2   r  Qwen3MoeModel.set_vocab  sL    "DD$$&	#))+  	#  "	#s   4 AAc           	        / n/ nSSK Jn  UR                  U R                  SS9n[	        USUR                  5       5      nU R                  R                  S[        U5      5      n[        UR                  5       5      U:  d   eU R                  U5      nUR                  5        VV	s0 s H  u  pX_M	     n
nn	UR                  5       nUR                  n[        U5       GHo  nX;  a@  UR!                  SU S35        UR!                  ["        R$                  R&                  5        MI  X   nX;   a  X   R(                  (       dS  UnUR+                  UR-                  US	S
95      nX:w  a-  [.        R1                  [3        U5       S[3        U5       S35        X   R4                  (       d  U R7                  U5      (       a*  UR!                  ["        R$                  R8                  5        OSUR!                  ["        R$                  R:                  5        O)UR!                  ["        R$                  R<                  5        UR!                  U5        GMr     U R>                  RA                  S5        U R>                  RC                  U5        U R>                  RE                  U5        U R>                  RG                  U5        ["        RH                  " U R                  SS9nU R                  S-  n/ nURK                  5       (       a9  [M        USS9 n[N        RP                  " U5      R                  S/ 5      nS S S 5        U R                  S-  nURK                  5       (       a  [M        USS9 n[N        RP                  " U5      R                  S0 5      nUR                  5        VVs0 s H!  u  nnUS   (       d  M  US   [S        U5      _M#     nnnU H   nUU;   d  M  URU                  UUU   5        M"     S S S 5        URU                  SS5        URU                  SS5        URW                  U R>                  5        g s  sn	nf ! , (       d  f       GN= fs  snnf ! , (       d  f       Nl= f)Nr   r   Tr  r  r"  r#  r$  Fr%  r'  r(  r  r  zspecial_tokens_map.jsonr   r   additional_special_tokensr-  r3  r  r  i]P r  i[P ),r*  r!  r  r?   getattrr  rL   r   r   r  r  r+  ro   r,  r-  r.  r~  ri   r/  r.   r0  r  r1  rg   rh   r2  r3  r  r,   r-   r*   rN   r  r  r  r  r  r   r   r   r   rV   r  r  )rt   r5  r6  r!  r7  r  r"  r8  r9  r:  r;  r<  r-  r=  r  r>  r  special_tokens_map_filer3  r   tokenizer_cfg_filer   token2ids_maps                          r2   r0  !Qwen3MoeModel._set_vocab_interns1  s    .!11$..TX1Y		7I,?,?,AB\\%%lCJ?
5<<>"Z///((3BG++-P-.>k)-P//1(==z"A%QCqk* 5 56*-' 02==). ) 0 01A1A%\a1A1b c)2"KK4+?*@@`aefkal`m  nB  )C  D+.66$:V:VW\:]:] (>(>? (C(CDOODNN$9$9:e$+ #. 	,,V4**62''/((2))$..dK"&..3L"L$&!"**,,-'Ba,0IIaL,<,<=XZ\,]) C!^^.GG%%''(W='+yy|'7'78NPR'S$QeQkQkQm  !BQm+%quv  rA!=i3u:!=Qm  !B6E-%88e@TU 7 > 	((7((7!!$"2"23c QJ CB !B >=s<   (P?'Q,:Q&Q;QQQ
QQ
Q+)r,  )r&   r'   r(   r)   ri   r  QWEN3MOErU   r   r  r0  r0   rR  rS  s   @r2   r)  r)    s'    ))JF
	#=4 =4r1   r)  GPT2LMHeadModelc                  P    \ rS rSr\R
                  R                  rS rSS jr	Sr
g)	GPT2Modeli_  c                4   U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R	                  U R                  S   5        U R                   R                  SU R                  S   -  5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  5        g )Nr  r  r  r"   r  r  
rN   r  rL   r  r  r  r  r  r  rA   r   s    r2   r   GPT2Model.set_gguf_parametersc  s    ((i)@A++DLL,AB--dll8.DE00T\\(5K1KL''X(>?++DLL9M,NO&&tzz2r1   c                    A/ nUR                  S5      (       a  U$ UR                  S5      (       a  UR                  SS5      nU R                  U5      nUR                  XQ45        U$ )N)
.attn.biasz.attn.masked_bias).c_attn.weight.c_proj.weight.c_fc.weightrC  r   r   )r  rE  r   r~  )rt   r   rd   r   r  r   s         r2   r   GPT2Model.modify_tensorsl  sg    ,. ==<==N==_``#--a3J''--.r1   r%   Nr  )r&   r'   r(   r)   ri   r  GPT2rU   r   r   r0   r%   r1   r2   r<  r<  _  s    %%J3r1   r<  PhiForCausalLMc                  F    \ rS rSr\R
                  R                  rS rSr	g)	Phi2Modeli  c                0   U R                  SS/5      nU R                  S/5      nU R                  SS/5      nU R                  SS/5      nU R                  R                  U R                  SS	/5      5        U R                  R                  U5        U R                  R	                  S
U-  5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                  SS/5      5        U R                  R                  [        X#-  5      U-  5        U R                  R                  U R                  5        U R                  R                  S5        g )Nr  r  r[  r  r  r  r  r  r  r"   r  r  F)r   rN   r  r  r  r  r  r  r  r  rV   r  rA   r5  )rt   rW   rot_pctr  r  s        r2   r   Phi2Model.set_gguf_parameters  sW   &&(;Y'GH""$;#<=!!=(";<!!#8("CD++D,<,<mMf=g,hi--f500V<((5''/**62++D,<,<>RTd=e,fg11#g6F2G62QR&&tzz2**51r1   r%   N)
r&   r'   r(   r)   ri   r  PHI2rU   r   r0   r%   r1   r2   rI  rI    s    %%J2r1   rI  Phi3ForCausalLMc                  V    \ rS rSr\R
                  R                  rS rS r	SS jr
Srg)Phi3MiniModeli  c                   U R                   S-  nUR                  5       (       aO  [        USSS9 n[        R                  " U5      nUS   nUS:X  a  U R                  5       sS S S 5        $  S S S 5        SSKJn  U R                   S	-  nUR                  5       (       d  [        S
U 35      eU" 5       nUR                  [        U5      5        U R                  R                  SUR                  5       5      n[        U5       V	s/ s H  n	SU	 S3R                  S5      PM     n
n	S/U-  n[         R"                  /U-  n[        UR                  5       5       H  nUR%                  U5      nUR                  S5      nUR'                  U5      n[         R(                  nUR+                  U5      (       a  [         R,                  nOtUR/                  U5      (       a  [         R0                  nOMUR3                  U5      (       a  [         R"                  nO&UR5                  U5      (       a  [         R6                  nXU'   UX'   UX'   M     U R                   S-  nUR                  5       (       a  [        USSS9 n[        R                  " U5      nU HV  nUU   nX:  a   [8        R;                  SU SUS-
   35        M-  UR                  S5      X'   SX'   [         R<                  X'   MX     S S S 5        U R                   S-  nUR                  5       (       Ga  [        USSS9 n[        R                  " U5      nUR                  S0 5      nUR?                  5        H  u  nn[A        U5      nUS   R                  S5      nX   [         R"                  :w  aH  X   U:w  a@  [8        RC                  SU SX   RE                  S5      < SURE                  S5      < 35        UX'   SX'   [         R<                  X'   UR                  S5      (       d  M  [         R0                  X'   M     S S S 5        U R                   S-  nUR                  5       (       Ga	  [        USSS9 n[        R                  " U5      nUR                  S/ 5      nU H  n[A        US   5      nUS   R                  S5      nX   [         R"                  :w  aH  X   U:w  a@  [8        RC                  SU SX   RE                  S5      < SURE                  S5      < 35        UX'   SX'   [         R<                  X'   UR                  S5      (       d  M  [         R0                  X'   M     S S S 5        U RF                  RI                  S5        U RF                  RK                  S5        U RF                  RM                  U
5        U RF                  RO                  U5        U RF                  RQ                  U5        [R        RT                  " U R                   [W        U
5      S9nURY                  U RF                  5        g ! , (       d  f       GN= fs  sn	f ! , (       d  f       GN[= f! , (       d  f       GN1= f! , (       d  f       GN= f) Nr  r   r   r   tokenizer_classGPT2Tokenizerr   r  r  Error: Missing r"  r#  r$  r  r  r  r  r   r  r-  r  r  r  r  r3  r  added_tokensidr  r  r  )-r?   r   r   r   r   r  r  r  r   r  r   rL   r   r"  r.  r1  r   r.   r  r  r*   r  r+   r  r,   r  r  r/   rg   r  r-   ro   rV   rI  r  rN   r  r  r  r  r  ri   r  r   r  )rt   r  r   r  rR  r  r  r7  r"  r=  r5  r  r6  r  r  r  r  r  r  r  r   r-  
foken_datar  tokenizer_filetokenizer_jsonrU  r  s                               r2   r  Phi3MiniModel.set_vocab  s    $1H H ((**+S7Cq(,		!%"78I"J"o5//1	 DC 6 D 	9*;;%%''~.>?@@*,	s>23\\%%lI4H4H4JK
DI*DUVDUqaS{11':DUV'j:56==>Ki2245H''1E<<(D&&x0E-44G""8,,199$$X..199##H--188!!(++166#8$F!(H% 6( !NN-@@$$&&'w?1$(IIaL!,C05H-}XJ>XYcfgYgXh%ij '*zz'':F$'.F$)@)M)MH& - @ !%1H H ((**+S7Cq(,		!%'<'@'@AWY['\$,@,F,F,H(Hj"8}H&y188AE)-D-K-KK!+u4"NN-=hZr&JZJaJabiJjImmqrwr~r~  @G  sH  rK  ,L  M',F$'.F$)@)M)MH&!~~i00-D-L-L* -I D *::!!##ncG<!%1-11."E".J":d#34H&y188AE)-D-K-KK!+u4"NN-=hZr&JZJaJabiJjImmqrwr~r~  @G  sH  rK  ,L  M',F$'.F$)@)M)MH&!~~i00-D-L-L* #/ = 	,,W5**95''/))&1((2))$..#f+N!!$"2"23E DC$ W4 @? DC" =<sD   1X(X:8A3X?#C*YYCY#?Y#(
X7?
Y
Y #
Y2c                ~   U R                  SS/5      nU R                  SS/5      nU R                  SS/5      nU R                  SS/5      nU R                  S	/5      nU R                  S
S/5      nU R                  S/5      nU R                  R                  SS5      n[        X-  5      U-  n	U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                  S/5      5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U	5        U R                  R                  U R                  S/5      5        U R                  R                  U R                   5        U R                  R                  S5      n
U
c  Sn
U R                  R#                  U
5        g )Nr  r  r  r  r  r  r  r	  r  r  r  r  r[  r  r  r  sliding_windowr   )r   rL   r   rV   rN   r  r  r  r  r  r  r  r  r  r   r  rA   add_sliding_window)rt   rW   r  r  r	  rms_epsmax_pos_embdsorig_max_pos_embdsrK  r  r\  s              r2   r   !Phi3MiniModel.set_gguf_parameters  s   &&(;Y'GH!!=(";<!!#8("CD$$&;[%IJ	""N#34((-9R)ST!--/Q.RS,,""#:C@()V3	++M:667IJ--f5001A1ACVBW1XY((5''/**95//811)<++D,<,<l^,LM&&tzz2))*:;!N++N;r1   c           
   #  j  #    U R                  SS/5      nU R                  SS/5      nU R                  SS/5      nU R                  S/5      nU R                  R                  SS	5      n[        XQ-  5      U-  nU R                  S
/S5      nUc  g X4-  nUR                  SUR                  SS5      5      R	                  5       n	[        U	5      S:X  a  [        S5      eU	S:X  d  U	S:X  aM  US	:  aD  [        R                  " S[        R                  " U5      [        R                  " U5      -  -   5      OS	n
O:U	S:X  a%  US	:  a  S[        R                  " U5      -  S	-   OS	n
O[        SU	 S35      eU R                  R                  U
5        UR                  SS 5      nUR                  SS 5      nUb  Uc  [        S5      e[        U5      [        U5      :w  d  [        U5      US-  :w  a*  [        SUS-   S[        U5       S[        U5       S35      eU R                  [        R                   R"                  5      [$        R&                  " U[$        R(                  S 94v   U R                  [        R                   R*                  5      [$        R&                  " U[$        R(                  S 94v   g 7f)!Nr  r  r  r  r  r  r  r[  r  r  Tr  r   r  r   z*Missing the required key rope_scaling.typesur  r   r  皙?zThe rope scaling type z is not supported yetr  r  r  r    r  z. long_factors = z, short_factors = r	  r  )r   rL   r   rV   r  r   r   r  sqrtr  r   rN   add_rope_scaling_attn_factorsr   r   ri   r%  r  r   r  r  r  )rt   r  r  r_  r`  rK  r  r  r  rope_scaling_typeattn_factorr  r  s                r2   r  $Phi3MiniModel.generate_extra_tensors   s    !!=(";<!!#8("CD((-9R)ST!--/Q.RS,,""#:C@()V3	 ''(8$?2(,,[,:J:J6SU:VW]]_ !Q&GHH$(9Z(G[`cf[f$))A$((CU:V(V$VWloK&(9>#/#5#K%(>?P>QQf&ghh66{C#''t<$((>=#8kll|M 22c,6G9WX=6XQR[^_R_Q``qru  wC  sD  rE  EW  X[  \i  Xj  Wk  kl  m  n  n&&t'8'8'J'JKU\\Zfnsn{n{M|}}&&t'8'8'K'KLell[hpup}p}N~s   J1J3r%   Nr  )r&   r'   r(   r)   ri   r  PHI3rU   r  r   r  r0   r%   r1   r2   rP  rP    s#    %%Jf4P<:&@r1   rP  PhiMoEForCausalLMc                  z   ^  \ rS rSr% \R
                  R                  rSrS\	S'   U 4S jr
S	S jrU 4S jrSrU =r$ )
PhiMoeModeliI  Nr_  r  c                   > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        g )Nr  r  )r  r   rN   r  rL   r  r(  s    r2   r   PhiMoeModel.set_gguf_parametersO  sJ    #%..t||<Q/RS))$,,7J*KLr1   c           	        UR                  S5      S:w  Ga  U R                  S   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US-  :  a  / nS H  n/ n[        U5       H@  n	SU SU	 SU S	3n
UR                  U R                  U   U
   5        U R                  U   U
	 MB     [        R                  " US
S9nSU SU S	3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Nr  r  r  r!   r  r  r  r	  r  r   r  r  r  s                r2   r   PhiMoeModel.modify_tensorsT  sh   99/0B6%89I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 1F*,E$Y/"/u4NseSTU[T\\c dT]]3%7%>? MM#.u5  0
 "'U!:J$1#6PQWPXX_"`K#33K@HNNH#9: 1 	%%d+Z8997 !Fr  c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  PhiMoeModel.prepare_tensorsx  r  r  r  r  )r&   r'   r(   r)   ri   r  PHIMOErU   r  r  r   r   rV  r0   rR  rS  s   @r2   rm  rm  I  s5    ''J/3H,3M
":HD Dr1   rm  PlamoForCausalLMc                  b    \ rS rSr\R
                  R                  rS rS r	S r
S rS	S jrSrg)

PlamoModeli  c                $    U R                  5         g rb   r  r   s    r2   r  PlamoModel.set_vocab  r  r1   c                   U R                   nUS   nU R                  R                  S5        U R                  R                  US   5        U R                  R	                  US   5        U R                  R                  U5        U R                  R                  US   5        U R                  R                  S5        U R                  R                  US   5        U R                  R                  U R                  5        g )Nr  rK  r  r  r  r#   r  )rL   rN   r  r  r  r  r  r  r  r  rA   rt   rL   rW   s      r2   r   PlamoModel.set_gguf_parameters  s    ,,12++D1--gm.DE009L1MN((5''0E(FG**1-//0GH&&tzz2r1   c                    UR                  5       S:X  d   eUR                  SSSS5      n[        R                  " US5      n[        R                  " US5      nU$ )N   r     r#   r`  r  )r   r   r    r!   sizer  r   r  rt   r   s     r2   shuffle_attn_q_weight PlamoModel.shuffle_attn_q_weight  sS     L000''1c48
]]:|<
]]:|<
r1   c                    UR                  5       S:X  d   eUR                  SSSS5      n[        R                  " US5      n[        R                  " US5      nU$ )Nr~  r  r  r#   r`  )r   r    r   r!   r  r  s     r2   shuffle_attn_output_weight%PlamoModel.shuffle_attn_output_weight  sS     L000''aC8
]]:|<
]]:|<
r1   c                    AU R                  U5      nUR                  S5      (       a  U R                  U5      nO'UR                  S5      (       a  U R                  U5      nXA4/$ )Nzattn_q.weightzattn_output.weight)r   r  r  r  r  s        r2   r   PlamoModel.modify_tensors  sf    ''- _--33J?J34488DJ&''r1   r%   Nr  )r&   r'   r(   r)   ri   r  PLAMOrU   r  r   r  r  r   r0   r%   r1   r2   rw  rw    s*    &&J(3(r1   rw  Plamo2ForCausalLMPLaMo2ForCausalLMc                  V    \ rS rSr\R
                  R                  rS rS r	SS jr
Srg)Plamo2Modeli  c                
   U R                   S-  nU R                   S-  nUR                  5       (       d  [        SU 35      e[        USSS9 n[        R
                  " U5      nS S S 5        / n/ n/ n[        USSS9 n[        U5       GH  u  pU	R                  5       (       d  M  [        R                  " U	5      n
U
S   R                  S5      n[        U
S   5      n[        U
5      S	:  a  U
S	   OS
nUR                  U5        UR                  U5        US:X  a+  UR                  [        R                  R                  5        M  US:X  a+  UR                  [        R                  R                   5        M  US:X  a,  UR                  [        R                  R"                  5        GM!  U
S   nUR%                  S5      (       aB  UR'                  S5      (       a,  UR                  [        R                  R                   5        GM~  UR                  [        R                  R(                  5        GM     S S S 5        U R*                  S   nU[        U5      :  a  U[        U5      -
  n[,        R/                  SU SU S35        [1        SUS-   5       HZ  nUR                  [3        SU S3SS95        UR                  S5        UR                  [        R                  R4                  5        M\     U R6                  R9                  S5        U R6                  R;                  S5        U R6                  R=                  U5        U R6                  R?                  U5        U R6                  RA                  U5        SW;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RE                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RG                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RI                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RK                  U5        SU;   aD  US   b>  URC                  US   R                  S5      5      nU R6                  RM                  U5        U R6                  RO                  S5        U R6                  RQ                  S5        g ! , (       d  f       GN= f! , (       d  f       GN= f)Nztokenizer.jsonlr  z"PLaMo 2 tokenizer file not found: r   r   r   r   r   r    r*   r+   r,   r/   z<|plamo:r  r"  r  r  r$  r#  r  plamo2r  	bos_token	eos_token	pad_token	sep_token	unk_tokenr"   F))r?   r   r  r   r   r   r  striploadsr1  rp  r   r~  ri   r/  r+   r,   r/   r}  r  r*   rL   rg   r  r.  r  r.   rN   r  r  r  r  r  r   r-  r/  r3  add_sep_token_idr1  add_eot_token_idr  )rt   tokenizer_jsonl_pathtokenizer_config_pathr   tokenizer_configr5  r  r6  line_numr  r  r  r  token_type_str	token_strr"  r  r=  r  s                      r2   r  Plamo2Model.set_vocab  se     $~~0AA $1H H#++--#&HI]H^$_`` 'w?1#yy| @ &g>!"+A,::<<!%D!1J&qM009E!*Q-0E69*o6IZ]xNMM%(MM%( &2 (>(>?'94 (>(>?'61 (;(;< %/qM	$//
;;	@R@RSW@X@X$OODNN,B,BC$OODNN,A,AB1 #/ ?6 \\,/
F#"S[0ILL.yk9XYbXccdef1i!m,ed1#QK'BCg& 5 56 - 	,,X6**95''/))&1((2 **/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7**/?/L/X||$4[$A$H$H$QRH--h7 	))!,--e4O @? ?>s   T"=%T4&FT4"
T14
Uc                   U R                   nUS   nU R                  R                  U R                   S   5        UR                  SS5      nUR                  SS5      n/ nU(       ag  [	        U5       HX  nX#S-  ::  a  XbS-
  :g  nO
Xc-  US-  :g  nU(       a  UR                  S5        M7  UR                  UR                  S	S
5      5        MZ     U(       a  U R                  R                  U5        U R                  R                  UR                  SS5      5        U R                  R                  UR                  SS5      5        U R                  R                  U5        U R                  R                  UR                  SS5      5        U R                  R                  UR                  SS5      5        U R                  R                  UR                  SS5      5        U R                  R                  UR                  SS5      5        U R                  R                  UR                  SS
5      5        U R                  R                  UR                  SS5      5        UR                  SS5      UR                  SS5      -  nU R                  R!                  U5        U R                  R#                  S5        U R                  R%                  UR                  SS5      5        U R                  R'                  U R(                  5        g )Nr  r"  
mamba_stepr    mamba_enabledTr   r   r  r"   r  r-  r  rK  r  r  r  r  r  r  mamba_d_state@   mamba_d_convmamba_num_headshidden_size_per_headr`  r  i 4  )rL   rN   r  r   r.  r~  r  r  r  r  r  r  r   add_ssm_state_sizeadd_ssm_conv_kerneladd_ssm_time_step_rankadd_ssm_inner_sizeadd_ssm_group_countr  r  rA   )	rt   rL   rW   r  r  mamba_layersr=  is_mambar  s	            r2   r   Plamo2Model.set_gguf_parameters	  sp   ,,12''\(BC
 [[q1
OT:;'?3 !1_ 4H !J!ODH ''* ''4I1(MN ( ..|<++GKK8QSW,XY--gkk-.NO((5''4I2(NO//NE0RS++GKKe,LM 	++GKK,LM,,W[[-KL//<Mr0RS#KK(92>McehAii++,=>,,Q/ 	00=PRW1XY&&tzz2r1   c                P   AUR                  S5      (       a  [        R                  " U5      * nGOUR                  S5      (       a  UR                  S5      S   S-   nGOUR                  S5      (       a  UR                  S5      S   S-   nGOUR                  S5      (       a  UR                  S5      S   S-   nGOUUR                  S	5      (       a  UR                  S	5      S   S
-   nGO&UR                  S5      (       a  UR                  S5      S   S-   nOUR                  S5      (       a  UR                  S5      S   S-   nOUR                  S5      (       a)  [        R                  " U5      nUR
                  S:X  d   eOUR                  S5      (       a  US-  nOoUR                  S5      (       a  US-  nOSUR                  S5      (       a  US-  nO7UR                  S5      (       a  US-  nOUR                  S5      (       a  US-  nU R                  U5      nXA4/$ )N.A_log.dt_biasr   .dt_proj.biasz.dt_norm_weightz.dt_norm.weightz.B_norm_weightz.B_norm.weightz.C_norm_weightz.C_norm.weightz	.k_weightz	.k.weightz	.q_weightz	.q.weightz.conv1d.weightr    z.pre_mixer_norm.weightr  z.post_mixer_norm.weightg?z.pre_mlp_norm.weightz.post_mlp_norm.weightgWfѷ?z.norm.weight)r  r   r  
rpartitionsqueezer  r   r  s        r2   r   Plamo2Model.modify_tensors7  s   ==""))J//J]]:&&??:.q1OCD]],--??#45a8;LLD]]+,,??#34Q7:JJD]]+,,??#34Q7:JJD]];''??;/2[@D]];''??;/2[@D]]+,,z2J??a''']]344#J]]455'!J]]122#J]]233.(J]]>**#J''-&''r1   r%   Nr  )r&   r'   r(   r)   ri   r  PLAMO2rU   r  r   r   r0   r%   r1   r2   r  r    s#    ''JQ5f,3\!(r1   r  CodeShellForCausalLMc                  T    \ rS rSr\R
                  R                  rS rSr	SS jr
Srg)CodeShellModeli[  c                Z   U R                   S   nU R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R	                  SU R                   S   -  5        U R                  R                  U5        U R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R                  U R                  5        U R                  R                  S5        U R                  R                  [        R                  R                  5        U R                  R!                  S	5        g )
Nr  r  r  r"   r  num_query_groupsr  r  r  )rL   rN   r  r  r  r  r  r  r  r  rA   r   r  ri   r  r  r  r  s     r2   r   "CodeShellModel.set_gguf_parameters_  s9   ll9-++DLL,GH--dll8.DE00T\\(5K1KL((5''X(>?**4<<8J+KL++DLL9M,NO&&tzz2++G4..t/C/C/J/JK005r1   Fc                   AU R                  [        R                  R                  5      nU R                  [        R                  R                  5      nU R                  U5      nU R                  (       d  X`R                  [        R                  R                  5      :X  aX  U R                  (       aF  SU R                  ;   a6  [        R                  U SU S35        U R                  R                  S5        OXe:X  a  SU l        Xa4/$ )Nztransformer.wte.weightz not found before z, assuming they are tiedT)r   ri   r%  r9  r7  r   _has_tok_embdrM   rg   r  removert   r   rd   r   output_nametok_embd_namer   s          r2   r   CodeShellModel.modify_tensorsp  s    --d.?.?.F.FG//0A0A0L0LM''- !!h2I2I$J[J[JbJb2c&c  %=ARAR%R.@Mefg!!(()AB&!%D&''r1   )r  Nr  )r&   r'   r(   r)   ri   r  	CODESHELLrU   r   r  r   r0   r%   r1   r2   r  r  [  s"    **J6 M(r1   r  InternLM2ForCausalLMc                  V    \ rS rSr\R
                  R                  rS rS r	SS jr
Srg)InternLM2Modeli  c                   SSK Jn  SSK Jn  U R                  S-  n/ n/ n/ nUR	                  5       (       d.  [
        R                  SU 35        [        R                  " S5        UR                  5       nUR                  [        US5      R                  5       5        UR                  R                  nU" 5       n	U	R                  [!        U5      5        U R"                  R%                  SU	R'                  5       5      n
[)        U
5       GHk  nU	R+                  U5      nUR-                  S	5      nU	R/                  U5      nUS
:X  a*  [
        R1                  SU S35        SR-                  S	5      n[2        R4                  nU	R7                  U5      (       a  [2        R8                  nOtU	R;                  U5      (       a  [2        R<                  nOMU	R?                  U5      (       a  [2        R@                  nO&U	RC                  U5      (       a  [2        RD                  nURG                  S5      (       a  [2        R@                  nURI                  U5        URI                  U5        URI                  U5        GMn     U R                  S-  nUR	                  5       (       a  [        USS	S9 n[J        RL                  " U5      nU HS  nURI                  UR-                  S	5      5        URI                  S5        URI                  [2        RN                  5        MU     S S S 5        SnS nU R                  S-  nUR	                  5       (       Ga!  [        USS	S9 n[J        RL                  " U5      nUR%                  S0 5      nURQ                  5        H  u  nn[S        U5      nUS   nUU:X  a  UnUR-                  S	5      nXk   [2        R@                  :w  aH  XK   U:w  a@  [
        R1                  SU SXK   RU                  S	5      < SURU                  S	5      < 35        UXK'   SX['   [2        RN                  Xk'   UR%                  S5      (       d  M  [2        R<                  Xk'   M     S S S 5        U R                  S-  nUR	                  5       (       Ga  [        USS	S9 n[J        RL                  " U5      nUR%                  S/ 5      nU H  n[S        US   5      nUS   nUU:X  a  UnUR-                  S	5      nXk   [2        R@                  :w  aH  XK   U:w  a@  [
        R1                  SU SXK   RU                  S	5      < SURU                  S	5      < 35        UXK'   SX['   [2        RN                  Xk'   UR%                  S5      (       d  M  [2        R<                  Xk'   M     S S S 5        U RV                  RY                  S5        U RV                  R[                  S5        U RV                  R]                  U5        U RV                  R_                  U5        U RV                  Ra                  U5        U RV                  Rc                  U5        [d        Rf                  " U R                  [i        U5      S 9nURj                  S!   nUb+  UURj                  S!'   [
        R1                  S"U S#U S$35        URm                  U RV                  5        g ! , (       d  f       GN= f! , (       d  f       GN|= f! , (       d  f       GNV= f)%Nr   r  sentencepiece_model_pb2r  rT  r   rbr"  r   r  zInternLM2 convert token 'u   ' to '🐉'!u   🐉z[UNUSEDr  r   r   r  
<|im_end|>r  r-  r  r  r  r  r3  r  rU  rV  r  r  r  r  zReplace eos:z with a special token:z8 in chat mode so that the conversation can end normally.)7r  r  r  r?   r   rg   r  r  exit
ModelProtoParseFromStringr   r  normalizer_specadd_dummy_prefixr  r   rL   r   r"  r.  r  r1  r  rI  r   r*   r  r+   r  r,   r  r.   r  r/   r}  r~  r   r   r-   ro   rV   r  rN   r  r  r  r  r  r  ri   r  r   r  r  ) rt   r  rw   r  r5  r  r6  sentencepiece_model
add_prefixr7  r"  r  r  r  r  r  r  r   r  r   chat_eos_tokenchat_eos_token_idr  r  r-  rW  r  rX  rY  rU  r  old_eoss                                    r2   r  InternLM2Model.set_vocab  s   
 	9B*;;   %%''LL?>*:;<HHQK#..0++D,F,K,K,MN(88II
*,	s>23\\%%lI4H4H4JK
j)H''1E<<(D&&x0Ew !:4&MN}}W--44G""8,,199$$X..199##H--188!!(++166	**188MM$MM% OOG$3 *6 !NN-@@$$&&'w?1$(IIaL!,CMM#**W"56MM'*OO$;$H$HI - @ &  $1H H ((**+S7Cq(,		!%'<'@'@AWY['\$,@,F,F,H(Hj"8}H&y1E.,4)!LL1E)-D-K-KK!+u4"NN-=hZr&JZJaJabiJjImmqrwr~r~  @G  sH  rK  ,L  M',F$'.F$)@)M)MH&!~~i00-D-L-L* -I D$ *::!!##ncG<!%1-11."E".J":d#34H&y1E.,4)!LL1E)-D-K-KK!+u4"NN-=hZr&JZJaJabiJjImmqrwr~r~  @G  sH  rK  ,L  M',F$'.F$)@)M)MH&!~~i00-D-L-L* #/ =$ 	,,W5**95''/))&1((2--j9))$..#f+N11%8( 6GM++E2NN\'2HIZH[UV W 	!!$"2"23I @? DC( =<s3   )A0[C4[[C&[*[*
[
['*
[9c                   U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R	                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  5        U R                  R                  S	5      =(       d    0 nUR                  S
UR                  S5      5      S:X  aY  SU;   aR  U R                   R                  [        R                  R                   5        U R                   R#                  US   5        g g g )Nr  r  r  r  r  r  r  r  r  r  r   r  r  )rN   r  rL   r  r  r  r   r  r  r  r  rA   r   r  ri   r  r  r  )rt   r  s     r2   r   "InternLM2Model.set_gguf_parameters  s   ++DLL9R,ST((6I)JK--dll=.IJ00>Q1RS++DLL,FG''5J(KL//^0LM**4<<8M+NO&&tzz2||''7=2K)9)9&)ABhNS[_kSk2243G3G3N3NO44\(5KL TlNr1   c                   U R                   S   nU R                   S   nU R                   S   nXE-  nXd-  nXG-  n	UR                  SS5      nUR                  S5      (       d  UR                  S5      (       a  / $ UGbJ  SU S	3U;   Ga?  Un
U
R                  XS
-   X45      n
U
S S 2S U24   U
S S 2S4   U
S S 2S4   pn[        R                  UR                  SUR                  S   45      XD5      n[        R                  UR                  SUR                  S   45      XE5      nUR                  SUR                  S   45      nU R                  [        R                  R                  U5      U4U R                  [        R                  R                  U5      U4U R                  [        R                  R                  U5      U4/$ U R                  U5      U4/$ )Nr  r  r  r  r  r+  r  r  z.attention.wqkvr    r2  r  )rL   r4  r}  r  r|  r  r!  r   ri   r%  r  r  r  r   )rt   r   rd   r   ra  r,  r  q_per_kvr  
num_groupsr5  r6  r   rg  s                 r2   r   InternLM2Model.modify_tensors  s   LL!67	||$9:m,,&*
||-r2??5!!T__^%D%DI?se?CtKC++za<JKC!ZxZ-(#ae*c!R%j!A ""199b!''"+->#?VA""199b!''"+->#?YA		2qwwr{+,A (():):)A)A3GK(():):)A)A3GK(():):)A)A3GK  ))$/<==r1   r%   Nr  )r&   r'   r(   r)   ri   r  	INTERNLM2rU   r  r   r   r0   r%   r1   r2   r  r    s#    **J|4|M>r1   r  InternLM3ForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
SrU =r$ )InternLM3Modeli6  c                   U R                  5       u  pnU R                  R                  S5        U R                  R                  S5        U R                  R	                  U5        U R                  R                  U5        U R                  R                  U5        [        R                  " U R                  [        U5      S9nU R                  S-  nUR                  5       (       a  [        USSS9 n[        R                  " U5      nSU;   a  U R                  R                  US   5        S	U;   a}  US	   R!                  5        Hf  u  pU	R#                  S
5      (       d  M  [%        U5      nU	S   n
UR'                  X5        U
S:X  d  MF  SUR(                  ;   d  MX  XR(                  S'   Mh     S S S 5        UR+                  U R                  5        g ! , (       d  f       N*= f)Nr  r  r  r  r   r   r   r  r-  r3  r  r  r  )r  rN   r  r  r  r  r  ri   r  r?   r   r   r   r   r   r  ro   r   rV   r  r  r  )rt   r5  r  r6  r  r  r   r  r  r  r  s              r2   r  InternLM3Model.set_vocab:  s   #'#C#C#E ,,W5**95''/))&1((2))$..#f+N $1H H ((**+S7Cq(,		!%%)>>$$99:OPb:cd)-BB0EF\0]0c0c0e,%>>)44'*8}H$.y$9E)<<UM$4-BaBa9aIQ ? ? F 1f D 	!!$"2"23 DCs   2A-G#%GGG
G"c                .  > [         TU ]  5         U R                  nU R                  R	                  US   5        UR                  S5      =nc  US   US   -  nU R                  R                  U5        U R                  R                  S5      =(       d    0 nUR                  SUR                  S5      5      S:X  aY  S	U;   aR  U R                  R                  [        R                  R                  5        U R                  R                  US	   5        g g g r  )r  r   rL   rN   r  r   r  r  ri   r  r  r  r  s       r2   r   "InternLM3Model.set_gguf_parametersX  s    #%,,''(=>J//H8}-9N1OOH11(;||''7=2K)9)9&)ABhNS[_kSk2243G3G3N3NO44\(5KL TlNr1   c                   U R                   S   nU R                   R                  S5      nUR                  SS5      nUR                  S5      (       d  UR                  S5      (       a  / $ UR	                  S5      (       a  [
        R                  XU5      nUR	                  S5      (       a  [
        R                  XU5      nU R                  U5      U4/$ )	Nr  r  r  r  r+  r  r  r  )rL   r   r4  r}  r  r|  r  r   r  s         r2   r   InternLM3Model.modify_tensorsf  s    34LL$$%:;	||-r2??5!!T__^%D%DI==9::#++JGJ==9::#++J	JJ%%d+Z899r1   r%   r  )r&   r'   r(   r)   ri   r  r  rU   r  r   r   r0   rR  rS  s   @r2   r  r  6  s'    &&J4<M: :r1   r  	BertModelBertForMaskedLMCamembertModelBertForSequenceClassificationc                     ^  \ rS rSr\R
                  R                  rU 4S jrU 4S jr	S r
S	S jrS
S jrS
S jrSrU =r$ )r  it  c                   > [         TU ]  " U0 UD6  S U l        U R                  R	                  S5      =n(       a  [        U5      S:X  a  US   S:X  a  S nX0l        g )Nid2labelr    r   LABEL_0)r  r   r"  rL   r   r   cls_out_labels)rt   r  r  r  r  s       r2   r   BertModel.__init__x  sZ    $)&)!\\--j99>9>"a'N1,=,J!%,r1   c                J  > [         TU ]  5         U R                  R                  S5        U R	                  5         U R
                  (       aR  U R                  R                  [        U R
                  R                  5       5       VVs/ s H  u  pUPM	     snn5        g g s  snnf r   )	r  r   rN   r=  rL  r  add_classifier_output_labelsr   ro   )rt   r   rg  r  s      r2   r   BertModel.set_gguf_parameters  s{    #%--e4""$99PTPcPcPiPiPkIl:mIl1Il:mn :ms   B
c                @   U R                  5       u  pn[        U5      U l        U R                  R	                  U R
                  R                  SS5      5        S n[        [        XA5      5      nU R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        [        R                  " U R                  [        U5      S9nUR!                  U R                  5        g )Ntype_vocab_sizer   c                    U R                  S5      (       a  U R                  S5      (       a  U $ U R                  S5      (       a  U SS  $ SU -   $ )N[r$  z##r    u   ▁)r}  r  )toks    r2   phantom$BertModel.set_vocab.<locals>.phantom  sH    ~~c""s||C'8'8
~~d##12wc>!r1   bertr  )r?  r   r"  rN   add_token_type_countrL   r   rm  r  r  r  r  r  ri   r  r?   r  )rt   r5  r6  r8  r  r  s         r2   r  BertModel.set_vocab  s    #'#6#6#8 &f+
 	--dll.>.>?PRS.TU	" c'*+ 	,,V4**62''/((2 ))$..#f+N!!$"2"23r1   c                   AUR                  S5      (       a  USS  nUR                  S5      (       a  US S S-   nUR                  S5      (       a  US S S-   nUS	;   a  / $ UR                  S
5      (       a  / $ UR                  S5      (       a  / $ U R                  (       a  US:X  a  SnUS:X  a  SnU R                  U5      U4/$ )Nzbert.r#   z.gammair  z.betar  )zembeddings.position_idszpooler.dense.weightzpooler.dense.biaszcls.predictionszcls.seq_relationshipzclassifier.weightzclassifier.out_proj.weightzclassifier.biaszclassifier.out_proj.bias)r}  r  r  r   r   s       r2   r   BertModel.modify_tensors  s    ??7##8D==""9y(D==!!9w&D ZZI??,--I??122I**3((1%%d+Z899r1   c                    U R                   R                  S5      =nb=  SU-   U l        SU R                   ;   a"  U R                   S==   U R                  -  ss'   g g S U l        g Npad_token_idr   r  )rL   r   _position_offset)rt   r  s     r2   _xlmroberta_tokenizer_init$BertModel._xlmroberta_tokenizer_init  s_     LL,,^<<LI$%$4D!(DLL8674;P;PP7 9 %)D!r1   c                ,   S[         R                  S'   SSKJn  SSKJn  U R
                  S-  n0 n0 nUR                  5       (       Gd(  U R
                  S-  nU R
                  S-  nUR                  5       (       d  [        S	U 35      eSS
KJ	n  SSK
Jn  UR                  U R
                  5      n	[        USSS9 n
[        R                  " U
5      nS S S 5        UR                  5       (       a*  [        USSS9 n
[        R                  " U
5      nS S S 5        U	R                   nU	R"                  nU" US   S   5      n[%        U R&                  R)                  SS5      U	R*                  5      nOUR-                  5       nUR/                  [        US5      R1                  5       5        UR2                  R4                  S:X  d   eUR6                  R8                  nUR6                  R:                  nUR6                  R<                  nU" 5       n	U	R?                  [A        U5      5        [%        U R&                  R)                  SS5      U	R+                  5       5      n[C        U5       Vs/ s H  nSU S3RE                  S5      PM     nnS/U-  n[F        RH                  /U-  n[K        X5      (       Ga  [C        U	R+                  5       5       H  nU	RM                  U5      nURE                  S5      nU	RO                  U5      n[F        RP                  nU	RS                  U5      (       a  [F        RT                  nOtU	RW                  U5      (       a  [F        RX                  nOMU	R[                  U5      (       a  [F        RH                  nO&U	R]                  U5      (       a  [F        R^                  nUUU'   UUU'   UUU'   M     GO#U	Ra                  5       nUR)                  S5      nUR)                  UUS   R)                  SS5      5      n[C        U	R*                  5       H  nU	Rc                  U5      nU	Rc                  U5      =nc  M*  URE                  S5      nUS   S   U   S   n[F        RP                  nUU:X  a  [F        RT                  nOEUU	Rd                  ;   a  [F        RX                  nO$UURg                  5       ;   a  [F        Rh                  nUUU'   UUU'   UUU'   M     [K        X5      (       a  / SQUSS -   n/ SQUSS -   n[F        RX                  [F        RX                  [F        RX                  [F        RT                  /USS -   nU Rj                  [l        Rn                  Rp                  :X  a  SUS '   S!US '   [F        RX                  US '   U Rr                  Ru                  S"5        U Rr                  Rw                  S#5        U Rr                  Ry                  U5        U Rr                  R{                  U5        U Rr                  R}                  U5        U Rr                  R                  U5        U Rr                  R                  U R&                  R)                  S$S5      5        U Rr                  R                  U5        U(       a  U Rr                  R                  U5        [l        R                  " U R
                  [        U5      S%9nUR                  U Rr                  5        g ! , (       d  f       GN!= f! , (       d  f       GN= fs  snf )&Npython&PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATIONr   r  r  zsentencepiece.bpe.modelr  r  r  )	b64decoder   r   r   r   
normalizerprecompiled_charsmapr"  r  r   r#  r$  r  r  rw   r  r!   r  )s   <s>s   <pad>s   </s>s   <unk>r  )r  r  r  r  s   <mask>i r  t5r  r  r  )Fr{  environr  r  r  r?   r   r  base64r  r*  r!  r  r   r   r   r  clean_up_tokenization_spacesr  rL   r   r"  r  r  r  trainer_specr  r  r  remove_extra_whitespacesr  r  r   r.  r1  r   r.   r   r  r  r*   r  r+   r  r,   r  r  r/   r,  _convert_id_to_tokenall_special_idsr  r-   rU   ri   r  NOMIC_BERT_MOErN   r  r  r  r  r  r  r   add_remove_extra_whitespacesadd_precompiled_charsmapr  r   r  )rt   r  rw   r  rY  r  r  r  r!  r7  fpr  remove_whitespacesr  r"  r  r=  r5  r  r6  r  r  r  r  r  r<  r  unk_token_idr  s                                r2   _xlmroberta_set_vocabBertModel._xlmroberta_set_vocab  s    @H

;<8B*CC "%%''!^^.>>N$(NN5L$L!!))++'*:>:J(KLL(2%55dnnEIncG<!%2 = %,,../wG2,0IIbM) H #33J!*!G!G#,^L-IJ`-a#b T\\--lA>	@T@TUJ"'"2"2"4//^T0J0O0O0QR&33>>!CCC,<<MMJ!4!D!D!]!]#6#F#F#[#[ .0I""3~#67T\\--lA>	@T@T@VWJDI*DUVDUqaS{11':DUV'j:56==>Ki88!)"6"6"89!++H5||G,!**84188&&x005==G((225==G''115<<G%%h//5::G#'x #(x %,"# :& $335K-11+>I&??9nW6M6Q6QRZ\]6^_L!)"6"67!66x@&;;HEEER <<0D*73G<XFqIE5<<G</"9"A"A!Y%>%>>"9"A"A![%7%7%99"9"F"F
 (,F8$',F8$)0HX&' 8* i88:VAb\IF)F1RL8F'//'//'//'//	
 2H $//"@"@@!*v!$v#:#B#B ,,T2**95''/))&1((2--j9--dll.>.>?PRS.TU556HI556JK))$..#f+N!!$"2"23Q =< HG, Ws   <[-;[?*\-
[<?
\)r  r  r"  r  rP  )r&   r'   r(   r)   ri   r  BERTrU   r   r   r  r   r	  r  r0   rR  rS  s   @r2   r  r  t  s9    %%J-o48:@)~4 ~4r1   DistilBertModelDistilBertForMaskedLM#DistilBertForSequenceClassificationc                  d   ^  \ rS rSr\R
                  R                  rU 4S jrSU 4S jjr	Sr
U =r$ )r"  iP  c                   > U R                   R                  S5        [        R                  S5        [        TU ]  5         g )Ng-q=z gguf: layer norm epsilon = 1e-12)rN   r  rg   rh   r  r   r(  s    r2   r   #DistilBertModel.set_gguf_parametersT  s/    ++E267#%r1   c                   > UR                  S5      (       a  USS  nUR                  S5      (       a  / $ [        TU ]	  XU5      $ )Nzdistilbert.   vocab_r}  r  r   rZ  s       r2   r   DistilBertModel.modify_tensorsY  sE    ??=))9D ??8$$Iw%j<<r1   r%   r  )r&   r'   r(   r)   ri   r  r!  rU   r   r   r0   rR  rS  s   @r2   r"  r"  P  s!    %%J&
= =r1   RobertaModel RobertaForSequenceClassificationc                  p   ^  \ rS rSr\R
                  R                  rU 4S jrU 4S jr	SU 4S jjr
SrU =r$ )r-  id  c                   > [         TU ]  " U0 UD6  U R                  R                  S5      =nb=  SU-   U l        SU R                  ;   a"  U R                  S==   U R                  -  ss'   g g S U l        g r  )r  r   rL   r   r  )rt   r  r  r  r  s       r2   r   RobertaModel.__init__h  st    $)&) !LL,,^<<LI$%$4D!(DLL8674;P;PP7 9 %)D!r1   c                   > U R                   S-  nUR                  5       (       aF  U R                  5         U R                  R	                  U R
                  R                  SS5      5        g[        TU ]!  5       $ )z)Support BPE tokenizers for roberta modelsr  r  r   N)	r?   existsr  rN   r   rL   r   r  r  )rt   bpe_tok_pathr  s     r2   r  RobertaModel.set_vocabs  sf    ~~(88    "
 11$,,2B2BCTVW2XY 7$&&r1   c                   > UR                  S5      (       a  USS  nUS:X  a!  U R                  b  XR                  S 2S S 24   n[        TU ]  XU5      $ Nzroberta.r  z%embeddings.position_embeddings.weightr}  r  r  r   rZ  s       r2   r   RobertaModel.modify_tensors  ^     ??:&&8D ::$$0'(=(=(>q(@A
w%j<<r1   )r  r  r&   r'   r(   r)   ri   r  r!  rU   r   r  r   r0   rR  rS  s   @r2   r-  r-  d  s&    %%J	)'= =r1   NomicBertModelc                     ^  \ rS rSr\R
                  R                  rSU 4S jjrS	U 4S jjr	S
S jr
U 4S jrSS jrSrU =r$ )r<  i  c                v  > UR                  SS 5      nUc  [        R                  US5      n[        UR	                  S5      5      U l        U R
                  (       a  [        R                  R                  O[        R                  R                  U l
        [        TU ]0  " XU4SU0UD6  U R                  5       U l        U R                  (       a  U R                  5         U R                   S   U R                   R	                  SS5      pvUS:X  a  US:X  a  SU R                   S'   O-US:X  a  US:X  a  SU R                   S'   O[#        S	U S
U 35      eU R
                  (       a  U R                   S   S:X  d   e U R                   S   SL d   eU R                   S   U R
                  :X  d   eU R                   S   U R
                  :X  d   eU R                   S   U R
                  :X  d   eU R                   S   SL d   eU R                   S   S:X  d   eU R                   S   SL d   eU R                   S   b   eg )NrL   Fmoe_every_n_layersr  max_trained_positionsr-  r     z%unrecognized parameters: n_positions=z, max_trained_positions=activation_functionr  causalqkv_proj_biasmlp_fc1_biasmlp_fc2_biasprenormrotary_emb_fractionr  rotary_emb_interleavedrotary_emb_scale_base)popr<   r   rC   r   is_moeri   r  r  
NOMIC_BERTrU   r  r   _is_tokenizer_xlmroberta_tokenizer_is_xlmrobertar	  rL   r   )	rt   r?   rA   rB   r  rL   nposmtpr  s	           r2   r   NomicBertModel.__init__  s   **Y-?,,Y>G7;;';<=<@KK$//88T__MgMg9PgPP(,(E(E(G%((++-LL/1A1ABY[_1`c4<C4K*.DLL'T\cTk*-DLL'DTFJbcfbghii@Dt||12f<YYQY ||H%...||O,;;;||N+;;;||N+;;; ||I&%///||12c999||45>>>||34<<<r1   c                b   > U R                   (       a  U R                  5       $ [        TU ]  5       $ rb   )rO  r  r  r  r(  s    r2   r  NomicBertModel.set_vocab  s)    ((--//w ""r1   c                r   SU;   a  / $ SU;   a?  UR                  U R                  S   U R                  S   U R                  S   5      nUS-  nSU;   aQ  UR                  U R                  S   U R                  S   U R                  S   5      nUR                  SS	5      nUS-  nU R                  U5      U4/$ )
Nzmlp.experts.biaszmlp.experts.mlp.w1r  r  r  r  zmlp.experts.mlp.w2r   r    )r3  rL   rE  r   r   s       r2   r   NomicBertModel.modify_tensors  s    %I4'#m)DdllS\F]_c_k_klt_uvJID4'#m)DdllS\F]_c_k_klt_uvJ#--a3JID%%d+Z899r1   c                  > [         TU ]  5         U R                  R                  U R                  S   5        U R
                  (       ay  U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        g g )Nr  r?  r  r  )	r  r   rN   r   rL   rL  add_moe_every_n_layersr  r  r(  s    r2   r   "NomicBertModel.set_gguf_parameters  s    #%++DLL9J,KL;;33DLLAU4VW--dll=.IJ224<<3LM r1   c                    [        U R                  S-  5       n[        R                  " U5      nS S S 5        WS   S   nUS:X  a  gUS:X  a  g[	        SU 35      e! , (       d  f       N2= f)	Nr  rw   r   UnigramT	WordPieceFzunknown tokenizer: )r   r?   r   r   r   )rt   r   rY  toktyps       r2   rN  'NomicBertModel._is_tokenizer_xlmroberta  si    $..#334!YYq\N 5(0Y[ .vh788 54s   A
A*)rO  rL  rU   )r?   r   rA   r@   rB   r   r  r   rP  )r   ztorch.Tensorrd   r   r   r  r~   z"Iterable[tuple[str, torch.Tensor]])r~   rC   )r&   r'   r(   r)   ri   r  r!  rU   r   r  r   r   rN  r0   rR  rS  s   @r2   r<  r<    s2    %%J$=L#
: N9 9r1   NeoBERTNeoBERTLMHead NeoBERTForSequenceClassificationc                  `   ^  \ rS rSr\R
                  R                  rU 4S jrU 4S jr	Sr
U =r$ )NeoBerti  c                0  > [         TU ]  5         U R                  R                  [	        SU R
                  S   -  S-  5      5        U R                  R                  S5        U R                  R                  [        R                  R                  5        U R
                  R                  SS5      nU R                  R                  U5        [        R                  SU 35        U R                  R                  [        R                   R"                  5        g )Nr    r  r!   r  r  r  r  )r  r   rN   r  rV   rL   r   r  ri   r  NONEr   r  rg   rh   rE  rA  rC  )rt   r
  r  s     r2   r   NeoBert.set_gguf_parameters  s    #% 	00QFY9Z5Z]^5^1_`++G4..t/C/C/H/HILL$$Z6	//	:/	{;<))$*:*:*>*>?r1   c                   > UR                  S5      (       a  / $ UR                  S5      (       a  USS  n[        TU ]	  XU5      $ )Nzdecoder.r  r$   r+  rZ  s       r2   r   NeoBert.modify_tensors  sC    ??:&&I??8$$8Dw%j<<r1   r%   )r&   r'   r(   r)   ri   r  NEO_BERTrU   r   r   r0   rR  rS  s   @r2   rc  rc    s"    ))J@= =r1   rc  XLMRobertaModel#XLMRobertaForSequenceClassificationc                  j   ^  \ rS rSr\R
                  R                  rU 4S jrS r	SU 4S jjr
SrU =r$ )rj  i  c                F   > [         TU ]  " U0 UD6  U R                  5         g rb   )r  r   r	  r  s      r2   r   XLMRobertaModel.__init__  s!    $)&)'')r1   c                $    U R                  5         g rb   )r  r   s    r2   r  XLMRobertaModel.set_vocab      ""$r1   c                   > UR                  S5      (       a  USS  nUS:X  a!  U R                  b  XR                  S 2S S 24   n[        TU ]  XU5      $ r7  r8  rZ  s       r2   r   XLMRobertaModel.modify_tensors  r:  r1   r%   r  r;  rS  s   @r2   rj  rj    s&    %%J*%= =r1   GemmaForCausalLMc                  V    \ rS rSr\R
                  R                  rS rS r	SS jr
Srg)
GemmaModeli  c                   U R                  5         [        R                  " U R                  S/ SQS9nUR	                  SS5        UR	                  SS5        UR	                  SS	5        UR	                  S
S5        UR	                  SS5        S Ul        UR                  U R                  5        U R                  R                  S5        g )NF)r   r   rD  fsepr  rE  r   C   r   E   rD  D   rx  F   r  k   )	r  ri   r  r?   r  r  r  rN   r  )rt   r  s     r2   r  GemmaModel.set_vocab  s    %%' ))$..e@mo((26((26((26((26((37&*#!!$"2"23--e4r1   c                   U R                   nUS   nU R                  R                  US   5        U R                  R                  US   5        U R                  R	                  U5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  SU;   a  U R                   S   OUS   5        U R                  R                  U R                   S   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  U R                  5        g )	Nr  r  r  r  r  r  r  r  )rL   rN   r  r  r  r  r  r  r  r  r  r  rA   r{  s      r2   r   GemmaModel.set_gguf_parameters*  s3   ,,12++G4M,NO--gm.DE((5009L1MN''0E(FG**RgkrRr4<<8M+Nx  AV  yW  	X//^0LM''
(;<))'**=>&&tzz2r1   c                    AUS:X  a  [         R                  SU< S35        / $ UR                  S5      (       a  US-   nU R                  U5      U4/$ Nlm_head.weightzSkipping get tensor 1 in safetensors so that convert can end normally.norm.weightr   rg   r  r  r   r   s       r2   r   GemmaModel.modify_tensors9  _     ##LL/x7hijI ==''#aJ%%d+Z899r1   r%   Nr  )r&   r'   r(   r)   ri   r  GEMMArU   r  r   r   r0   r%   r1   r2   rv  rv    s     &&J5 3:r1   rv  Gemma2ForCausalLMc                  V    \ rS rSr\R
                  R                  rS rS r	SS jr
Srg)Gemma2ModeliI  c                Z    U R                  5         U R                  R                  S5        g r   r  rN   r  r   s    r2   r  Gemma2Model.set_vocabM  "    %%'--e4r1   c                   U R                   nUS   nU R                  R                  US   5        U R                  R                  US   5        U R                  R	                  U5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  SU;   a  U R                   S   OUS   5        U R                  R                  U R                   S   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  U R                  5        U R                  R                  U R                   S	   5        U R                  R                  U R                   S
   5        U R                  R                  U R                   S   5        g )Nr  r  r  r  r  r  r  r  attn_logit_softcappingfinal_logit_softcappingr\  )rL   rN   r  r  r  r  r  r  r  r  r  r  rA   add_attn_logit_softcappingadd_final_logit_softcappingr]  r{  s      r2   r   Gemma2Model.set_gguf_parametersR  s   ,,12++G4M,NO--gm.DE((5009L1MN''0E(FG**RgkrRr4<<8M+Nx  AV  yW  	X//^0LM''
(;<))'**=>&&tzz233LL12	
 	44LL23	
 	++DLL9I,JKr1   c                    AUS:X  a  [         R                  SU< S35        / $ UR                  S5      (       a  US-   nU R                  U5      U4/$ r  r  r   s       r2   r   Gemma2Model.modify_tensorsh  r  r1   r%   Nr  )r&   r'   r(   r)   ri   r  GEMMA2rU   r  r   r   r0   r%   r1   r2   r  r  I  s!    ''J5
L,:r1   r  Gemma3ForCausalLMGemma3ForConditionalGenerationc                  Z    \ rS rSr\R
                  R                  rSrS r	S r
SS jrSrg)	Gemma3Modelix  r  c                Z    U R                  5         U R                  R                  S5        g r   r  r   s    r2   r  Gemma3Model.set_vocab}  r  r1   c                   U R                   nUS   nU R                  R                  UR                  SS5      5        U R                  R	                  US   5        U R                  R                  U5        U R                  R                  US   5        U R                  R                  UR                  SS5      5        U R                  R                  U R                   R                  SS	5      5        U R                  R                  UR                  S
S5      5        U R                  R                  UR                  S
S5      5        U R                  R                  U R                  5        U R                  R                  UR                  SS5      5        UR                  S5      b   eU R                  R                  US   5        U R                  R                  UR                  SS5      5        UR                  S5      bc  US   S   S:X  d   eU R                  R!                  ["        R$                  R&                  5        U R                  R)                  US   S   5        g g )Nr  r  i   r  r  r  r  r  r  r  rI  r  g    .Ar  r\  r  r"   r  r  r  r  )rL   rN   r  r   r  r  r  r  r  r  r  r  rA   r   r]  r  r  ri   r  r  r  r{  s      r2   r   Gemma3Model.set_gguf_parameters  s   ,,12 	++GKK8QSY,Z[--gm.DE((5009L1MN''4I1(MN//0@0@QU0VW''J(DE))'++j#*FG&&tzz2++GKKk,RS{{34<<<++G4D,EF**7;;7La+PQ;;~&2>*;78CCC2243G3G3N3NO44W^5LX5VW	 3r1   c                   ASU;   a  UR                  SS5      nOZUR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  / $ SU;   a#  U R                  5       nUS   nUS [        U5       nUR	                  S	5      (       a  XR
                  -   nU R                  U5      U4/$ )
Nr  r  r  r  multimodal_projector.vision_model.r  r   r  )r4  r}  r  r   r  
norm_shiftr   )rt   r   rd   r   r  r5  s         r2   r   Gemma3Model.modify_tensors  s    $<< 126D__566$///:Z:Z??#:;;t?_?_I !D(446E1XF#LS[1J
 ==''#oo5J%%d+Z899r1   r%   Nr  )r&   r'   r(   r)   ri   r  GEMMA3rU   r  r  r   r   r0   r%   r1   r2   r  r  x  s&    ''JJ5
X2:r1   r  c                  8   ^  \ rS rSrU 4S jrS rSS jrSrU =r$ )Gemma3VisionModeli  c                  > [         TU ]  5         U R                  nU R                  R	                  [
        R                  R                  5        U R                  R                  UR                  SS5      5        U R                  R                  S5        U R                  R                  SS5      n[        US-  5      nU R                  S   nU R                  S   nXE-  U-  nUS	:  a#  US
:w  a  U R                  R                  U5        g g g )Nr  r  Timage_seq_lengthrI  r  rt  ru  r   r"   )r  r   rL   rN   r  ri   r	  r  r  r   r  rU  rV   r'  )rt   rL   r  
n_per_sidert  ru  proj_scale_factorr  s          r2   r   %Gemma3VisionModel.set_gguf_parameters  s    #%,,001I1I1P1PQ;;GKKHXZ^<_`,,T233778JCP)S01
\\,/
\\,/
'5*Dq %6!%; >>?PQ &< r1   c                    AAASU;   a  [         R                  R                  $ SU;   a  [         R                  R                  $ g)Ninput_projectionr+  Fr  r   s        r2   r   $Gemma3VisionModel.tensor_force_quant  s@    6%,,000T!,,000r1   c                \   ASU;   a  / $ UR                  S5      (       dB  UR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       aJ  UR                  SS5      nSU;   a  [        R                  S	U S
35        US-   nU R	                  U5      U4/$ / $ )Nzvision_model.head.r  r  r  r  _weightr  zsoft_emb_norm.weightzCorrecting norm value for 'r   r   )r}  r4  rg   rh   r   r   s       r2   r    Gemma3VisionModel.modify_tensors  s    4'I??3448X8X??#:;;t?_?_<<	95D
 &-9$qAB'!^
))$/<==	r1   r%   r  )	r&   r'   r(   r)   r   r   r   r0   rR  rS  s   @r2   r  r    s    R$ r1   r  Gemma3nForConditionalGenerationc                     ^  \ rS rSr% \R
                  R                  rSr/ r	S\
S'   / rS\
S'   U 4S jrU 4S jrU 4S jrSS	 jrSU 4S
 jjrSrU =r$ )Gemma3NModeli  r  list[Tensor]_altup_proj_altup_unembdc                f  > [         TU ]  " U0 UD6  U R                  S   S:X  d   S5       e[        R                  " 5       [        R                  " 5       [        R                  " 5       /U l        [        R                  " 5       [        R                  " 5       [        R                  " 5       /U l        g )Naltup_num_inputsr"   z/Current conversion only supports 4 altup inputs)r  r   rL   r   r   r  r  r  s      r2   r   Gemma3NModel.__init__  s    $)&)||./14g6gg4LLNLLNLLN
 LLNLLNLLN
r1   c                "   > [         TU ]  5         g rb   )r  r  r(  s    r2   r  Gemma3NModel.set_vocab  s    r1   c                L  > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        / nU R                  S    H~  n[        R                  R                  R                  SS5      nUR                  [        R                  " U[        R                  S95      nUR                  UR!                  5       5        M     U R                  R#                  U5        / nU R                  S	    H  nUR                  US
:H  5        M     U R                  R%                  U5        g )Naltup_active_idxr  hidden_size_per_layer_inputnum_kv_shared_layersactivation_sparsity_patternr   r   r  layer_typessliding_attention)r  r   rN   add_altup_active_idxrL   add_altup_num_inputs$add_embedding_length_per_layer_inputadd_shared_kv_layersr   distributionsnormalNormalicdfr  r  r~  itemadd_activation_sparsity_scaleadd_sliding_window_pattern)rt   activation_sparsity_scaler  normal_diststd_multipliersliding_window_patterntr  s          r2   r    Gemma3NModel.set_gguf_parameters  sM   #%--dll;M.NO--dll;M.NO==dllKh>ij--dll;Q.RS$&!;<A--44;;AqAK(--ell1EMM.RSN%,,^-@-@-BC = 	667PQ!#m,A"))!/B*BC -334JKr1   c                `    [        S U 5       5      nU(       d  g [        R                  " USS9$ )Nc              3  F   #    U  H  oR                  5       S :  v   M     g7fr   N)numel)rc   ms     r2   re   /Gemma3NModel._stack_matrices.<locals>.<genexpr>  s     6Xggi!mXs   !r   r  )allr   ri  )rt   matriceshas_alls      r2   _stack_matricesGemma3NModel._stack_matrices  s)    6X66;;xQ//r1   c                  > UR                  S5      (       a  US-   nSU;  a  / $ SU;   a  UR                  SS9nSU;   a  XR                  S'   O8S	U;   a  XR                  S
'   O#SU;   a  XR                  S'   O[        SU 35      eU R	                  U R                  5      nUb  U R                  S5      U4/$ / $ SU;   a  UR                  SS9nSU;   a  XR                  S'   O8S	U;   a  XR                  S
'   O#SU;   a  XR                  S'   O[        SU 35      eU R	                  U R                  5      nUb  U R                  S5      U4/$ / $ [        TU ]!  XU5      $ )N_scaler  r  altup_unembed_projectionsr   )r   z.0.r   z.1.r   z.2.r    zUnknown name: z&model.altup_unembed_projections.weightaltup_projectionszmodel.altup_projections.weight)	r  r  r  r   r  r   r  r  r   )rt   r   rd   r   outr  s        r2   r   Gemma3NModel.modify_tensors  s   =="")#D D(I&$.#e4J}(2""1%$(2""1%$(2""1% >$!899&&t'9'9:C--.VWY\]^^	$&#e4J}&0  #$&0  #$&0  # >$!899&&t'7'78C--.NOQTUVV	w%j<<r1   )r  r  )r  r  r~   zTensor | Noner  )r&   r'   r(   r)   ri   r  GEMMA3NrU   r  r  r  r  r   r  r   r  r   r0   rR  rS  s   @r2   r  r    sJ    ((JJ "K""$M<$
L&0)= )=r1   r  Starcoder2ForCausalLMc                  @    \ rS rSr\R
                  R                  rSrg)StarCoder2ModeliG  r%   N)	r&   r'   r(   r)   ri   r  
STARCODER2rU   r0   r%   r1   r2   r  r  G  s    ++Jr1   r  Rwkv6ForCausalLMc                  f    \ rS rSr% \R
                  R                  rS rS r	0 r
S\S'   S	S jrSrg)

Rwkv6ModeliL  c                $    U R                  5         g rb   r  r   s    r2   r  Rwkv6Model.set_vocabP  rq  r1   c                   U R                   S   nU R                   S   nU R                   S   nU R                   S   nU R                   S   nU R                   S   b  U R                   S   O[        US-  S-  S-  5      nUS	:X  a  S
OSnUS	:X  a  SOS
nU R                  R                  S5        U R                  R	                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                  5        U R                  R                  S5        g )Nr  	head_sizer  r  rescale_everyr  g      @r  rK  r  r`     r   )rL   rV   rN   r  r  r  r  add_rescale_every_n_layersadd_wkv_head_sizeadd_time_mix_extra_dimadd_time_decay_extra_dimr  r  rA   r  )	rt   rW   r  r  r  rescale_every_n_layersr  time_mix_extra_dimtime_decay_extra_dims	            r2   r   Rwkv6Model.set_gguf_parametersS  s   ll#67LL-	ll=1&:;!%o!>AENaAbAnDLL)<=tw  zE  HK  zK  PR  yR  UW  yW  uX#.$#6RB&1T&9sr 	++G4--k:((5++N;334JK**95//0BC112FG001BC&&tzz2 	''*r1   dict[int, dict[str, Tensor]]lerp_weightsc              #  f  ^ ^#    T R                  U5      nUR                  S5      (       d  UR                  S5      (       d  US-  nUR                  S5      (       d,  UR                  S5      (       d  UR                  S5      (       a  UR                  SS5      nUR                  S5      (       a  UR                  SS	S5      nUR                  S
5      (       d  SU;   a  UR	                  5       n T R
                  S   nUS:  aL  UR                  S5      (       d  UR                  S5      (       a   UR                  S	[        TU-  5      -  5      nTb  SU;   a  SU;  a   UT R                  T   U'   [        UU 4S jS 5       5      (       af  ST S3n[        R                  " S Vs/ s H+  nT R                  T   ST SU S3   R                  S5      PM-     snSS9R                  S5      nXG4v   g XA4v   g ! [         a     Nf = f! [         a    XA0T R                  T'    Nf = fs  snf 7f)Nr  r  time_mix_w1.weightztime_mix_decay_w1.weightztime_mix_decay_w2.weightr   r   time_mix_w2.weightr    ztime_mix_decay.weightlerpr  ztime_mix_output.weightzchannel_mix_value.weighttime_mix_lerptime_mix_lerp_xc              3  r   >#    U  H,  nS T SU S3TR                   T   R                  5       ;   v   M.     g7f)blk..time_mix_lerp_r  Nr	  rn   rc   r=  r   rt   s     r2   re   ,Rwkv6Model.modify_tensors.<locals>.<genexpr>  s<     }c|^_T#oaS8D<M<Mc<R<W<W<YYc|s   47)wr   rg  r   gr		  .time_mix_lerp_fused.weightr
	  r  )r   r  rE  r  r  rL   div_rV   r   r	  r  r   ri  r  )rt   r   rd   r   r   r  r=  r   s   `  `    r2   r   Rwkv6Model.modify_tensorsn  sj    ''-!!),,0A0A'0J0J	!H122h6G6GHb6c6cgogxgx  zT  hU  hU#--a3J122#++Aq!4J45589K#++-J	%)\\/%B"%)$$%=>>(BSBSTnBoBo!+c#AW:W6X1X!YJ ?(:?PX`?`@3=!!#&x0 }c|}}}!#&AB{{  yR  $S  yRstD$5$5c$:T#oVWUXX_;`$a$k$klm$n  yR  $S  YZ  [  e  e  fg  h&&$$!  		  @*2)?!!#&@ $Ss[   C,H11A!G< H1"H 45H1)2H,!H1<
H	H1H		H1H)&H1(H))H1r%   Nr  )r&   r'   r(   r)   ri   r  RWKV6rU   r  r   r	  r  r   r0   r%   r1   r2   r  r  L  s-    &&J%+2 24L.3$%r1   r  RWKV6Qwen2ForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rS rS r	SU 4S jjr
SrU =r$ )RWKV6Qwen2Modeli  c                f     U R                  5         g ! [         a    U R                  5          g f = frb   r$  r   s    r2   r  RWKV6Qwen2Model.set_vocab  r&  r'  c                   U R                   S   nU R                   S   nU R                   S   nU R                   S   nXB-  nU R                   S   nU R                   S   nU R                   R                  SUS:  a  S	OS
5      nU R                   R                  SUS:  a  SOS	5      n	U R                  R                  S5        U R                  R	                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U	5        U R                  R                  U5        U R                  R                  U R                  5        U R                  R                  U5        U R                  R                  S5        U R                  R                  U5        U R                  R                  S5        g )Nr  r  r  r  r  r  lora_rank_tokenshiftrK  r  r  lora_rank_decayr`  r  r   r   )rL   r   rN   r  r  r  r  r  r  r  r  rA   r  add_token_shift_countr  r  )
rt   rW   r  r  r  r  r  r  r  r  s
             r2   r   #RWKV6Qwen2Model.set_gguf_parameters  s   ll#67"ll+@A"ll+@All=16	||N3 LL)<=!\\--.DK[_L_begh#||//0A+Y]J]3cef 	++G4--k:((5**95//0BC112FG001BC&&tzz2 	//=..q1**+>? 	''*r1   c           	   #    >#    [         TU ]  XU5       H  u  pESU;   d  SU;   a  UR                  SSUR                  S   5      n[        R
                  " US   US   US   US   US	   /SS
9R                  SUR                  S   5      nSU;   a   UR                  SSUR                  S   5      nXE4v   M  XE4v   M     g 7f)Ntime_mix_w1time_mix_w2r#   r  r!   r   r    r   r"   r  r  )r  r   r3  r!  r   ri  )rt   r   rd   r   r   r   r  s         r2   r   RWKV6Qwen2Model.modify_tensors  s     #g4ZsKNH(MX,EyyB

27 {{DGT!Wd1gtAwQ#PVWX]]^`bfblblmobpq8#99QDJJrN;D&&"" Ls   B?Cr%   r  )r&   r'   r(   r)   ri   r  
RWKV6QWEN2rU   r  r   r   r0   rR  rS  s   @r2   r	  r	    s&    ++J#+<# #r1   r	  Rwkv7ForCausalLMRWKV7ForCausalLMc                  z    \ rS rSr% \R
                  R                  rS rS r	S r
0 rS\S'   SrS\S	'   SS
 jrSrg)
Rwkv7Modeli  c                $    U R                  5         g rb   r  r   s    r2   r  Rwkv7Model.set_vocab  rq  r1   c                B    [        S[        X-  U-  S-  5      5      S-  $ )Nr   r  )r  r  )rt   r  exponentru  s       r2   calc_lora_rankRwkv7Model.calc_lora_rank  s&    1eK3j@2EFG"LLr1   c                   U R                   S   n U R                   S   nU R                   S   nU R                   S   nU R                   S   b  U R                   S   OUS-  n U R                   S	   b  U R                   S	   OU R                  US
S5      nU R                   S   b  U R                   S   OU R                  US
S5      nU R                   S   b  U R                   S   OU R                  US
S5      nU R                   S   b  U R                   S   OU R                  USS5      n	U R                  R	                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U	5        U R                  R                  U5        U R                  R                  U R                  5        U R                  R!                  S5        g ! [         a"    U R                   S   nU R                   S   n GNvf = f! [         a    U R                   S   b  U R                   S   OU R                  US
S5      nU R                   S   b  U R                   S   OU R                  US
S5      nU R                   S   b  U R                   S   OU R                  US
S5      nU R                   S   b  U R                   S   OU R                  USS5      n	 GNSf = f)Nr  r  r  r  r  r  r  r"   r	  r  g?lora_rank_iclrlora_rank_value_residual_mixg?lora_rank_gateg?g333333?decay_low_rank_dima_low_rank_dimv_low_rank_dimgate_low_rank_dimr  r   )rL   r   r+	  rN   r  r  r  r  r  add_decay_lora_rankadd_iclr_lora_rank add_value_residual_mix_lora_rankadd_gate_lora_rankr  r  rA   r  )
rt   rW   r  r  r  r  r	  r.	  r/	  r0	  s
             r2   r   Rwkv7Model.set_gguf_parameters  s'   ll#67	6[1I!\\*>?N ll=1AENaAbAnDLL)<=  vA  DE  vE		`AEN_A`Aldll+<=rv  sF  sF  GR  TW  Y\  s]O?C||L\?]?iT\\*:;os  pC  pC  DO  QT  VY  pZN[_[g[g  iG  \H  \T4<<8V+W  Z^  Zm  Zm  ny  {~  @C  ZD(?C||L\?]?iT\\*:;os  pC  pC  DO  QT  VY  pZN 	++G4--k:((5++N;**95,,_=++N;99:VW++N;001BC&&tzz2 	''*A  	6Z0I!\\*5N	6  	`DHLLQeDfDrdll+?@x|  yL  yL  MX  Z]  _b  ycO?C||L\?]?iT\\*:;os  pC  pC  DO  QT  VY  pZNMQ\\ZjMkMw4<<8H+I  ~B  ~Q  ~Q  R]  _b  dg  ~h(BF,,ObBcBoT\\*=>uy  vI  vI  JU  WZ  \_  v`N		`s%   I: #CJ) :(J&%J&)CM?>M?r 	  r	  TrC   lora_needs_transposec           
   #  l  ^ ^^#    UR                  SS5      R                  SS5      nUR                  SS5      R                  SS5      nUR                  SS	5      nS
U;   a  ST l        UR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nSU;   a  ST R                  U5      ;  a  TS:X  a  g T R                  R	                  SS5      nU(       a  / SQO/ SQnTb  SU;   a  SU;   a*  ST S 3mUR                  [        U5      S!S!S"5      nTU4v   g  UT R                  T   U'   [        UU 4S# jU 5       5      (       aH  ST S 3m[        R                  " U Vs/ s H  nT R                  T   S$T S%U 3   PM     snSS&9nTU4v   g UR                  5       nT R                  U5      mTR                  S'5      (       d  TR                  S(5      (       d  TS'-  mT R                  (       a,  [        U4S) jS* 5       5      (       a  UR                  SS!5      nS+T;   a  UR!                  5       nTS:X  a  S,T;   a  TR                  S,S-5      U4v   TU4v   g ! [         a    X!0T R                  T'    GNOf = fs  snf 7f).Nblockslayersrl  feed_forward	self_attnri  attnztime_mixer.r  z
_lora.loraFz_lora.lora.0.weightz1.weightz_lora.lora.2.weightz2.weightz_lora.lora.2.biasz0.weightfeed_forward_normln2g_normln_xzattention.vvaluer   wkv_has_gateT)r   r	  r   rg  ar	  )r   r	  r   rg  rG	  zattention.x_zattention.x_xr		  r	  r   r  c              3  p   >#    U  H+  nS T SU 3TR                   T   R                  5       ;   v   M-     g7f)r  .attention.x_Nr	  r	  s     r2   re   ,Rwkv7Model.modify_tensors.<locals>.<genexpr>!  s;     qgpbcse=<@Q@QRU@V@[@[@]]gps   36r  rI	  r  r  r  c              3  F   >#    U  H  nTR                  U5      v   M     g 7frb   )r  )rc   r  r   s     r2   re   rJ	  -  s'      1/!!!$$ /r  )r	  r	  ztime_mix_a1.weightztime_mix_a2.weightztime_mix_v1.weightztime_mix_v2.weightztime_mix_g1.weightztime_mix_g2.weightr_k
time_mix_a
time_mix_v)r4  r:	  r   rL   r   r  r   r	  r   r  r   ri  r  r  r$  rE  flatten)	rt   r   rd   r   rF	  	lerp_listr   r=  r   s	   `  `    @r2   r   Rwkv7Model.modify_tensors  s    ||Hh/77~N||K5==fkR||M2.4(-D%||1:>||1:>||/<||/7||Hf-D WD4H4H4N%NSVZ[S[ ||''=6B2Ha	?~5$&!#&AB!))#i.!QC&& @3=D%%c*40 qgpqqq!%cU*EFH ;;ox'yoxjk(9(9#(>seS`ab`c?d(eox'y  @A  BD#T**#++-J++D1H%%i00H4E4Eg4N4NI%((S 1/1 . . (11!Q7
 '//1
axLH4  ''lCZPPZ((A   @.2-?D%%c*@ (zs7   EJ4
J 5J4"J/3CJ4J,(J4+J,,J4)r:	  Nr  )r&   r'   r(   r)   ri   r  RWKV7rU   r  r+	  r   r	  r  r:	  r   r0   r%   r1   r2   r&	  r&	    s@    &&J%M%+N 24L.3!%$%@)r1   r&	  RwkvHybridForCausalLMc                  L    \ rS rSr\R
                  R                  rS rS r	Sr
g)ARwkv7ModeliB  c                f     U R                  5         g ! [         a    U R                  5          g f = frb   r$  r   s    r2   r  ARwkv7Model.set_vocabF  r&  r'  c                   U R                   S   nU R                   S   nU R                   S   nU R                   S   nU R                   S   nU R                   S   nU R                   S   S:X  d   eS	nS	nS
n	U(       a  SOSn
U R                  R                  S5        U R                  R                  U5        U R                  R	                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U	5        U R                  R                  U
5        U R                  R                  U5        U R                  R                  U R                  5        U R                  R                  S5        U R                  R                  S5        g )Nr  r  r  r  r  rF	  wkv_version   r  r  r`  r   r  r   )rL   rN   r  r  r  r  r  r5	  r6	  r7	  r8	  r  r  rA   r	  r  )rt   rW   r  r  r  r  rF	  r	  r.	  r/	  r0	  s              r2   r   ARwkv7Model.set_gguf_parametersL  s   ll#67ll=1LL-	||N3 LL)<=||N3||M*a/// ')$ ,! 	++G4--k:((5//=**95,,_=++N;99:VW++N;001BC&&tzz2..q1 	''*r1   r%   N)r&   r'   r(   r)   ri   r  ARWKV7rU   r  r   r0   r%   r1   r2   rU	  rU	  B  s    ''J#+r1   rU	  MambaForCausalLMMambaLMHeadModelFalconMambaForCausalLMc                  r   ^  \ rS rSr\R
                  R                  rSU 4S jjrS r	S r
SrS	S jrSrU =r$ )

MambaModelim  c                   > UR                  SS 5      nUc-  [        US-  SSS9 n[        R                  " U5      nS S S 5        [        TU ]  " U/UQ7SU0UD6  g ! , (       d  f       N%= f)NrL   r  r   r   r   )rK  r   r   r   r  r   rt   r?   r  r  rL   r   r  s         r2   r   MambaModel.__init__q  sd    **Y-?i-/wG1))A, HETE7EfE HGs   A
A)c                x   U R                   S   nU R                   R                  SS5      nX* -  * U-  nXR                   S'   U R                  S-  R                  5       (       a  U R	                  5         g U R                  S-  R                  5       (       a  U R                  5         g U R                  SU5        g )Nr"  pad_vocab_size_multipler  r  r  r  )rL   r   r?   r   r  r  r;  rt   r"  	pad_vocabs      r2   r  MambaModel.set_vocaby  s    \\,/
LL$$%>B	 "Z/09<
%/\"NN--6688  "nn0099;;))+ ##J
;r1   c                >   U R                  SS/5      nU R                  SS/SS9=(       d    SnU R                  SS	/SS9=(       d    S
U-  nU R                  SS/SS9=(       d    SnU R                  SS/SS9=(       d    US-  * nU R                  SS/SS9=(       d    SnSnU R                  S/SS9S;   a  SnUS
U-  :X  d   eU R                  R                  S5        U R                  R                  U5        U R                  R	                  S5        U R                  R                  S5        U R                  R                  U R                  5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                  5        g )Nr  r  conv_kerneld_convTr  r"   r  d_innerr    
state_sized_stater"  time_step_rankdt_rankr  r  r  Fr  )falcon_mambar  r   )r   rN   r  r  r  r  r  rW   r  r  r  r  r  add_ssm_dt_b_c_rmsr  rA   )rt   r  rl	  rm	  ro	  rq	  r  use_dt_b_c_norms           r2   r   MambaModel.set_gguf_parameters  s   ""M#CD""M#Bd"SXWX""$7#Cd"SbWX[bWb""L#Cd"SYWY '')9y(IY]'^sdkordrbs'')=~(NY]'^fbf\NT:>OO"O!g+%%%++E2--g6003''*(()9)9:,,V4++G4++G4//8//=++O<&&tzz2r1   Nc                   U R                  [        R                  R                  5      nU R                  [        R                  R                  5      nU R                  U5      nUR                  S5      (       a/  [        R                  SU-   5        [        R                  " U5      * nU R                  U[        R                  R                  U5      (       a  UR                  5       nU R                  bI  Xd:X  aD  [        R                  " U R                  U5      (       a  [        R                  U SU S35        / $ OXe:X  a  Xl        Xa4/$ )Nr  A_log --> A ==> z is equivalent to z
, omitting)r   ri   r%  r9  r7  r   r  rg   r  r   r  r   r)  r  	_tok_embdequalr  s          r2   r   MambaModel.modify_tensors  s   --d.?.?.F.FG//0A0A0L0LM''-==""LL+h67))J//J ''$2C2C2N2NPSTT#++-J >>%(*A{{4>>:66},>}oZXY	 7 &'N&''r1   )ry	  r?   r   r  )r&   r'   r(   r)   ri   r  MAMBArU   r   r  r   ry	  r   r0   rR  rS  s   @r2   ra	  ra	  m  s3    &&JF<"3< I( (r1   ra	  Mamba2ForCausalLMc                  n   ^  \ rS rSr\R
                  R                  rSU 4S jjrS r	S r
SS jrSrU =r$ )	Mamba2Modeli  c                  > UR                  SS 5      nUc-  [        US-  SSS9 n[        R                  " U5      nS S S 5        [        TU ]  " U/UQ7SU0UD6  U R                  / SQ5      U l        U R                  / SQSS	9=(       d    S
U R                  -  U l        U R                  S/SS	9=(       d    SU l	        g ! , (       d  f       N= f)NrL   r  r   r   r   )r  r  r  )mamba_d_ssmr  rm	  Tr  r    n_groupsr   )
rK  r   r   r   r  r   r   r  rm	  n_grouprc	  s         r2   r   Mamba2Model.__init__  s     **Y-?i-/wG1))A, HETE7EfE''(IJ''(Wbf'g{kloso{o{k{''t'DI HGs   B??
Cc                   U R                   S   nU R                   R                  SS5      nX* -  * U-  nXR                   S'   U R                  S-  R                  5       (       a  U R	                  5         g U R                  S-  R                  5       (       a+  [        SU R                  S-   SU R                  S-   35      eU R                  S-  R                  5       (       a  U R                  5         g U R                  S	U5        g )
Nr"  rf	  r"  r  ztokenizer.model.v3zPlease rename z to r  r  )rL   r   r?   r   r  r   r  r;  rg	  s      r2   r  Mamba2Model.set_vocab  s   \\,/
LL$$%>C	 "Z/09<
%/\"NN..7799))+nn33<<>>%t~~H\7\6]]abfbpbp  tE  cE  bF  'G  H  Hnn//88::  " ##J
;r1   c                   U R                  SS/SS9=(       d    SnU R                  SS/SS9=(       d    SnU R                  S	S
/SS9=(       d    SnU R                  SS/SS9=(       d    SnU R                  [        R                  R                  :w  a4  U R
                  SU R                  -  :X  d   eU R
                  U-  S:X  d   eU R                  R                  S5        U R                  R                  U R                  5        U R                  R                  S5        U R                  R                  S5        U R                  R                  U R                  5        U R                  R                  U5        U R                  R                  U R
                  5        U R                  R!                  U5        U R                  R#                  U R
                  U-  5        U R                  R%                  U R&                  5        U R                  R)                  U5        U R                  R+                  U R,                  5        g )Nrk	  rl	  Tr  r"   rn	  ro	  r`  mamba_d_headr  r  r  r  r  r    r   r  )r   rU   ri   r  	FALCON_H1rm	  r  rN   r  r  r  r  r  rW   r  r  r  r  r  r	  r  r  rA   )rt   rl	  ro	  r  r  s        r2   r   Mamba2Model.set_gguf_parameters  s   ""M8#<4"PUTU""L9#=4"PWTW##^Z$@4#PVTV'')=~(NY]'^fbf
 ??doo777<<1t||#3333<<(*a///++E2--dll;003''*(()9)9:,,V4++DLL9++G4//0HI,,T\\://=&&tzz2r1   c              #    ^ ^^#    UR                  S5      (       d  UR                  S5      (       a  UR                  S5      nUR                  S5      (       a  UR                  S5      S   S-   nT R	                  U5      mT R                  T[        R                  R                  T5      (       a  UR                  5       nO[        UUU 4S j[        R                  R                  [        R                  R                  4 5       5      (       a!  UR                  / UR                  QSP75      nOdT R                  T[        R                  R                  T5      (       a4  UR                  T R                   T R"                  T R                   -  45      nUR                  S	5      (       a/  [$        R'                  S
T-   5        [(        R*                  " U5      * nTU4v   g 7f)Nzmodel.backbonezmodel.lm_headr  r  r   r  c              3  H   >#    U  H  nTR                  TUTS S9v   M     g7f)r  )r   Nr  )rc   r  r   r   rt   s     r2   re   -Mamba2Model.modify_tensors.<locals>.<genexpr>  s/       U
q--h3r-J U
s   "r   r  rx	  )r}  removeprefixr  r  r   r   ri   r%  r)  r  r$  SSM_ASSM_Dr  r!  SSM_NORMr	  rm	  rg   r  r   r  r  s   `  `@r2   r   Mamba2Model.modify_tensors  s~    ??+,,0P0P$$X.D==$$??:.q1OCD''-''$2C2C2N2NPSTT#++-J ####U
    $++,Bj.>.>,B,BCJ))(D4E4E4N4NPSTT#++T\\4<<4<<;W,XYJ==""LL+h67))J//J$$s   GG!)rm	  r  r	  r|	  r  )r&   r'   r(   r)   ri   r  MAMBA2rU   r   r  r   r   r0   rR  rS  s   @r2   r	  r	    s,    ''J
J<(36% %r1   r	  JambaForCausalLMc                     ^  \ rS rSr% \R
                  R                  rSS jrS r	S r
SrS\S'   SS jrU 4S	 jrS
rU =r$ )
JambaModeli   c                    Ag)Nra  r%   )rt   r7  s     r2   r+  JambaModel.get_vocab_base_pre$  s    r1   c                    U R                   S-  R                  5       (       a  U R                  5         g U R                  5         g )Nr  )r?   r   r  r  r   s    r2   r  JambaModel.set_vocab)  s7    NN..7799 ))+   "r1   c                   U R                  SS/5      nU R                  S/SS9=(       d    SnU R                  S   U-  nU R                  S/SS9=(       d    S	nU R                  S
/SS9=(       d    US-  * nU R                  SS/SS9=(       d    SnU R                  S   nU R                  S   nU R                  S   n	[        U5       V
s/ s H  n
SPM     sn
[        XR                  5       Vs/ s H  oU-
  U	-  S:X  a  UOSPM     sn-   nU R                  R                  U R                  5        U R                  R                  U R                  SS/5      5        U R                  R                  U5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R!                  U R                  S   5        U R                  R#                  U R                  S   5        U R                  R%                  U R&                  5        g s  sn
f s  snf )Nr  mamba_d_modelr  Tr  r"   mamba_expandr  r"  mamba_dt_rankrr	  r  r  r  r  attn_layer_offsetattn_layer_periodr   r  r  r  r  r  r  )r   rL   r.  rW   rN   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rA   )rt   r  rl	  rm	  ro	  rq	  r  r  attn_offsetattn_periodr   r=  n_kv_vecs                r2   r   JambaModel.set_gguf_parameters3  s   ""M?#CD""N#3t"DI,,~.8""O#4t"DJ ''(9D'I^wZ]~M^'')=~(NY]'^fbfLL!67	ll#67ll#67$[121!A12NST_aqaqNr6
Nrk/[8A=I1DNr6
 
 	(()9)9:++D,<,<>WY`=a,bc--g600>Q1RS''5J(KL**84,,V4++G4++G4//8//=))$,,}*EF..t||<Q/RS&&tzz2# 3 6
s   K$2K)Nr_  r  c           	   #    #    UR                  SS5      nUb@  U R                  S   nU R                  S   nX4:  a  X4-
  U-  S:X  d  UR                  SS5      nSU;   Ga  U R                  S	   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US
-  :  a  S H  n/ n	[        U5       H@  n
SU SU
 SU S3nU	R                  U R                  U   U   5        U R                  U   U	 MB     [        R                  " U	SS9nSU SU S3nU R                  U5      nX4v   M     g U R                  U5      nU R                  U[        R                  R                  U5      (       a  UR                  5       nUR                  S5      (       a/  [         R#                  SU-   5        [        R$                  " U5      * nX4v   g s  snf 7f)Nr  z.feed_forward.expert_layer_offsetexpert_layer_periodr   z.experts.0.r	  r  r  r!   r  r  r  r  r  r  rx	  )r4  rL   r  r.  rW   r   r~  r   ri  r   r   ri   r%  r)  r  r  rg   r  r  )rt   r   rd   r   
moe_offset
moe_periodr  r   r  rl  rm  rn  ro  r   s                 r2   r   JambaModel.modify_tensorsU  s     ||G%56?&;<J&;<J%3+;z*IQ*N||M37 $t+]3I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-7 AC*,E$Y/"/u4J3%qQTPUU\ ]T]]3%7%>? MM#.u5  0
 "'U!:J %2#mC5"PK#33K@H".. A  ''-''$2C2C2N2NPSTT#++-J==""LL+h67))J//J$$E !Fs   BHH#E(Hc                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  JambaModel.prepare_tensors  r  r  r  rO  r  )r&   r'   r(   r)   ri   r  JAMBArU   r+  r  r   r  r  r   rV  r0   rR  rS  s   @r2   r	  r	     sA    &&J
#3@ 04H,34%lD Dr1   r	  CohereForCausalLMc                  `   ^  \ rS rSr\R
                  R                  rU 4S jrU 4S jr	Sr
U =r$ )CommandR2Modeli  c                f   > [         TU ]  " U0 UD6  U R                  SS/5      U R                  S'   g )Nr  r  )r  r   r   rL   r  s      r2   r   CommandR2Model.__init__  s8    $)&)
 372B2BDVXqCr2s./r1   c                   > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  [        R                  R                  5        g )Nr  )	r  r   rN   r  rL   r  ri   r  re  r(  s    r2   r   "CommandR2Model.set_gguf_parameters  sK    #%((m)DE..t/C/C/H/HIr1   r%   )r&   r'   r(   r)   ri   r  	COMMAND_RrU   r   r   r0   rR  rS  s   @r2   r	  r	    s$    **JtJ Jr1   r	  Cohere2ForCausalLMc                  T   ^  \ rS rSr\R
                  R                  rU 4S jrSr	U =r
$ )Cohere2Modeli  c                $  > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  S   nU R                  S   nU R                  S   nU R                  R                  [        XU-  -  5      5        U R                  R                  [        R                  R                  5        g )Nr  r\  r"  r  r  r  )r  r   rN   r  rL   r]  r  r  rV   r  ri   r  re  )rt   r  r  r  r  s       r2   r    Cohere2Model.set_gguf_parameters  s    #%((m)DE++DLL9I,JK''\(BC\\,/
ll=1"ll+@A11#jSfDf6g2hi..t/C/C/H/HIr1   r%   )r&   r'   r(   r)   ri   r  COHERE2rU   r   r0   rR  rS  s   @r2   r	  r	    s    ((JJ Jr1   r	  OlmoForCausalLMOLMoForCausalLMc                  ^   ^  \ rS rSr\R
                  R                  rU 4S jrSS jr	Sr
U =r$ )	OlmoModeli  c                   > [         TU ]  5         U R                  R                  S5        U R                  R                  S5      nUb  U R                  R                  U5        g g )Nr  r  )r  r   rN   r  rL   r   r  )rt   r  r  s     r2   r   OlmoModel.set_gguf_parameters  sU    #%++D1<<##J/**84  r1   c                0   AU R                   S   nU R                   R                  S5      nUR                  S5      (       a  [        R	                  XU5      nUR                  S5      (       a  [        R	                  XU5      nU R                  U5      U4/$ r   r  r  s         r2   r   OlmoModel.modify_tensors  s    34LL$$%:;	==))#++JGJ==))#++J	JJ%%d+Z899r1   r%   r  )r&   r'   r(   r)   ri   r  OLMOrU   r   r   r0   rR  rS  s   @r2   r	  r	    s#     %%J5: :r1   r	  Olmo2ForCausalLMc                  @    \ rS rSr\R
                  R                  rSrg)
Olmo2Modeli  r%   N)	r&   r'   r(   r)   ri   r  OLMO2rU   r0   r%   r1   r2   r	  r	    r&  r1   r	  OlmoeForCausalLMc                  z   ^  \ rS rSr% \R
                  R                  rU 4S jrSr	S\
S'   S	S jrU 4S jrSrU =r$ )

OlmoeModeli  c                   > [         TU ]  5         U R                  R                  S5        U R                  R                  S5      =nb  U R                  R                  U5        g g )Nr  r  )r  r   rN   r  rL   r   r  )rt   r  r  s     r2   r   OlmoeModel.set_gguf_parameters  sV    #%//5))-88IE--i8 Fr1   Nr_  r  c           	        UR                  S5      S:w  Ga  U R                  S   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US-  :  a  / nS H  n/ n[        U5       H@  n	SU SU	 SU S	3n
UR                  U R                  U   U
   5        U R                  U   U
	 MB     [        R                  " US
S9nSU SU S	3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Nr  r  r  r!   r  r  r  r	  r  r   r  r  r  s                r2   r   OlmoeModel.modify_tensors  s_   99Y2%]3I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 DF*,E$Y/"/uM#axw WT]]3%7%>? MM#.u5  0
 "'U!:J$1#mF87"SK#33K@HNNH#9: D 	%%d+Z8997 !Fr  c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  OlmoeModel.prepare_tensors  r  r  r  r  )r&   r'   r(   r)   ri   r  OLMOErU   r   r  r  r   rV  r0   rR  rS  s   @r2   r	  r	    s6    &&J9 04H,3":JD Dr1   r	  JinaBertModelJinaBertForMaskedLMc                  T   ^  \ rS rSr\R
                  R                  rU 4S jrSr	U =r
$ )JinaBertV2Modeli  c                J  > Sn[        U R                  S-  SSS9 n[        R                  " U5      S   nS S S 5        US:X  a  [        TU ]  5         g US:X  a,  U R                  5         U R                  R                  S5        g [        S	U S
35      e! , (       d  f       Nd= f)NBertTokenizerr  r   r   r   rR  RobertaTokenizerr    z
Tokenizer z# is not supported for JinaBertModel)
r   r?   r   r   r  r  r  rN   r   r   )rt   rR  r   r  s      r2   r  JinaBertV2Model.set_vocab  s    )$..#::C'RVW"iil+<=O S o-G 22  "11!4%
?2CCf&ghh SRs   B
B"r%   )r&   r'   r(   r)   ri   r  JINA_BERT_V2rU   r  r0   rR  rS  s   @r2   r	  r	    s    --Ji ir1   r	  OpenELMForCausalLMc                     ^  \ rS rSr\R
                  R                  r\S	S j5       r	U 4S jr
S rS rS
SU 4S jjjrSS jrSrU =r$ )OpenELMModeli(  c                `    [        U[        XS-  -   5      U-  U-  5      nUSU -  :  a  X!-  nU$ )Nr    g?)r  rV   )rg  divisornew_vs      r2   _make_divisibleOpenELMModel._make_divisible,  s=     GSq[1W<wFG37?Er1   c                `  > [         TU ]  " U0 UD6  U R                  S   nU R                  S   nU R                  S   U l        U R                  S   U l        U R                  S   U l        U Vs/ s H%  n[        R                  XPR                  -  U5      PM'     snU l        [        U R                  [        5      (       a"  [        U R                  S   [        5      (       d   e[        U R
                  [        5      (       a"  [        U R
                  S   [        5      (       d   eg s  snf )Nffn_multipliersffn_dim_divisor	model_dimr,  num_query_headsr   )r  r   rL   _n_embdrn  _num_query_headsr	  r	  rq  r   rm  rV   )rt   r  r  r	  r	  ru  r  s         r2   r   OpenELMModel.__init__5  s	   $)&)'+||4E'F#||,=> LL5(,^(D+/<<8I+J .%
-
 ((ll)BOT-%
 $,,d33
4CUCUVWCXZ]8^8^^^$//66:dF[F[\]F^`c;d;ddd;d%
s   0,D+c                     U R                  5         g ! [         a"    U R                  SU R                  S   5         g f = f)Nr  r"  )r  r  r;  rL   r   s    r2   r  OpenELMModel.set_vocabE  s>    	M))+  	M##Kl1KL	Ms    )??c                R   U R                   nU R                  S   nSnU R                  [        U R                  5      :X  d   eU R                  [        U R
                  5      :X  d   eU R                  [        U R                  5      :X  d   eU R                  R                  U R                  5        U R                  R                  U R                  S   5        U R                  R                  U5        U R                  R                  U R                  5        U R                  R                  U R
                  5        U R                  R                  U R                  5        U R                  R                  U R                  S   5        U R                  R                  S5        U R                  R!                  [#        X2-  5      5        U R                  R%                  U5        U R                  R'                  U5        U R                  R)                  U R*                  5        g )Nr  r  max_context_lengthrope_freq_constantr  )r	  rL   rW   r   rn  r	  rq  rN   r  r  r  r  r  r  r   r  r  rV   r  r  r  rA   )rt   r  r  rK  s       r2   r    OpenELMModel.set_gguf_parametersK  s   <<
+3t'9'9#::::3t'<'<#====3t~~#6666(()9)9:++DLL9M,NO--f500@''(=(=>**4+=+=>++DLL9M,NO//511#g6H2IJ''1))(3&&tzz2r1   c                L   > SU;   a  U R                   S   $ [        TU ]	  X5      $ )Nr  num_transformer_layers)rL   r  r   )rt   rn   r   r  s      r2   r   OpenELMModel.find_hparama  s+    << 899w"422r1   c              #  2  #    Ub{  USU S3:X  aq  U R                   U   nU R                  [        R                  R                  U5      US U 4v   U R                  [        R                  R
                  U5      XS  4v   g U R                  U5      U4v   g 7f)Nztransformer.layers.z.ffn.proj_1.weight)rq  r   ri   r%  rO  rP  r   )rt   r   rd   r   rL  s        r2   r   OpenELMModel.modify_tensorsg  s      ?t)<SEAS'TT^^C(F**4+<+<+E+EsKZX_Y_M`aa**4+<+<+C+CSI:V]K^__##D):66s   BB)rq  r	  rn  r	  )rg  zfloat | intr	  rV   r~   rV   r  r  r  )r&   r'   r(   r)   ri   r  OPENELMrU   r  r	  r   r  r   r   r   r0   rR  rS  s   @r2   r	  r	  (  sI    ((J e M3,3 3	7 	7r1   r	  ArcticForCausalLMc                     ^  \ rS rSr% \R
                  R                  rS rU 4S jr	Sr
S\S'   S
S jrU 4S jrS	rU =r$ )ArcticModelis  c                   SSK Jn  U R                  S-  nUR                  5       (       d.  [        R                  SU 35        [        R                  " S5        U" 5       nUR                  [        U5      5        U R                  R                  SUR                  5       5      n[        U5       Vs/ s H  nSU S3R                  S	5      PM     nnS
/U-  n[        R                   /U-  n[        UR                  5       5       H  n	UR#                  U	5      n
U
R                  S	5      nUR%                  U	5      n[        R&                  nUR)                  U	5      (       a  [        R*                  nOtUR-                  U	5      (       a  [        R.                  nOMUR1                  U	5      (       a  [        R                   nO&UR3                  U	5      (       a  [        R4                  nXU	'   XU	'   XU	'   M     U R                  S-  nUR                  5       (       Ga  [7        USS	S9 n[8        R:                  " U5      nSU;   a  US   nUR=                  5        H  u  n	n[?        U	5      n	X:  a   [        RA                  SU	 SUS-
   35        M6  US   n[        RB                  nS
nSU;   a6  US   (       a,  UUS   :X  a  [        R*                  nO[        R.                  nSn[        RE                  SU	 SU SU SUS S3	5        UR                  S	5      Xi'   UX'   UXy'   M     S S S 5        U RF                  RI                  S5        U RF                  RK                  S5        U RF                  RM                  U5        U RF                  RO                  U5        U RF                  RQ                  U5        [R        RT                  " U R                  [W        U5      S9nURY                  U RF                  5        g s  snf ! , (       d  f       N= f)Nr   r  r  rT  r   r"  r#  r$  r   r  r  r   r   r-  r  r  r  r3  r  r  zSetting added token z to 'z	' (type: z	, score: z.2frz   r  r  r  )-r  r  r?   r   rg   r  r  r  r  r   rL   r   r"  r.  r1  r   r.   r  r  r*   r  r+   r  r,   r  r  r/   r   r   r   ro   rV   r  r-   rh   rN   r  r  r  r  r  ri   r  r   r  )rt   r  r  r7  r"  r=  r5  r  r6  r  r  r  r  r  r  r   r  r-  
token_jsontoken_content
token_typetoken_scorer  s                          r2   r  ArcticModel.set_vocabw  s    	9*;;%%''LL?>*:;<HHQK +,	s>23\\%%lI4H4H4JK
DI*DUVDUqaS{11':DUV'j:56==>Ki2245H''1E<<(D&&x0E-44G""8,,199$$X..199##H--188!!(++166#8$8!(X% 6, !%1H H ((**+S7Cq(,		!%)-BB+@AW+X(0D0J0J0L,*#&x=#1"LL=
B\]gjk]k\l)mn$(29(=%<%I%I
&. &3I9N,0Ek0RR-D-L-L
-D-L-L
*-K&:8*E-Xablammv  xC  DG  wH  HI  %J  K+8+?+?+H(-7*+6(- 1M D: 	,,W5**95''/))&1((2))$..#f+N!!$"2"23A W8 DCs   1O6&C=O;;
P	c                   > [         TU ]  5         U R                  nU R                  R	                  US   5        U R                  R                  US   US   -  5        g )Nr"  r  r  )r  r   rL   rN   r  r  r  s     r2   r   ArcticModel.set_gguf_parameters  sT    #%,,''(=>11'-2HGTiLj2jkr1   Nr_  r  c           	        U R                   S   nU R                   R                  S5      nUR                  S5      (       a  [        R	                  XU5      nUR                  S5      (       a  [        R	                  XU5      nUR                  S5      S:w  Ga  U R                   S   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US-  :  a  / nS	 H  n	/ n
[        U5       H@  nS
U SU SU	 S3nU
R                  U R                  U   U   5        U R                  U   U	 MB     [        R                  " U
SS9nSU SU	 S3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Nr  r  r!  r"  r  r  r  r!   r  r  r  r	  r  r   r  r  r  )rL   r   r  r|  r  re  r  r.  rW   r   r~  r   ri  r   )rt   r   rd   r   r  r  r  r   r  r  rl  rm  rn  ro  r   s                  r2   r   ArcticModel.modify_tensors  s   34LL$$%:;	==))#++JGJ==))#++J	JJ 99/0B6%89I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 .C*,E$Y/"/u4NseSTUXTYY` aT]]3%7%>? MM#.u5  0
 "'U!:J$+C50Fse7"SK#33K@HNNH#9: . 	%%d+Z8997 !F   G
c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  ArcticModel.prepare_tensors   r  r  r  r  )r&   r'   r(   r)   ri   r  ARCTICrU   r  r   r  r  r   rV  r0   rR  rS  s   @r2   r	  r	  s  s>    ''JR4hl 04H,3+:ZD Dr1   r	  DeepseekForCausalLMc                     ^  \ rS rSr% \R
                  R                  rS rU 4S jr	Sr
S\S'   \SS j5       rSS jrU 4S	 jrS
rU =r$ )DeepseekModeli
  c                f     U R                  5         g ! [         a    U R                  5          g f = frb   r$  r   s    r2   r  DeepseekModel.set_vocab  r&  r'  c                v  > [         TU ]  5         U R                  nUR                  S5      =nc  US   US   -  nU R                  R                  U5        U R                  R                  [        R                  R                  5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  S5        U R                  R                  US   5        U R                  R                  US	   5        g )
Nr  r  r  first_k_dense_replacer"  rv  r  n_routed_expertsn_shared_experts)r  r   rL   r   rN   r  r  ri   r  re  rx  r  r>  add_expert_weights_scaler  ry  )rt   rL   r  r  s      r2   r   !DeepseekModel.set_gguf_parameters  s	   #%,,J//H8}-9N1OOH11(;..t/C/C/H/HI66w?V7WX''(=>77@W8XY11#6))'2D*EF009K1LMr1   Nr_  r  c                    Ub  X:w  a  UnU R                   " USU R                  S   U-  S-  /U R                  SS  Q76 R                  SS5      R                  U R                  5      $ r  r  r  s      r2   r  DeepseekModel.permute%  r  r1   c           	        U R                   S   nU R                   R                  S5      nUR                  S5      (       a  [        R	                  XU5      nUR                  S5      (       a  [        R	                  XU5      nUR                  S5      S:w  Ga  U R                   S   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US-  :  a  / nS	 H  n	/ n
[        U5       H@  nS
U SU SU	 S3nU
R                  U R                  U   U   5        U R                  U   U	 MB     [        R                  " U
SS9nS
U SU	 S3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Nr  r  r  r  r  r  r
  r!   r  r  r  r	  r  r   r  )rL   r   r  r
  r  re  r  r.  rW   r   r~  r   ri  r   )rt   r   rd   r   r  r  r  r   r  r  rl  rm  rn  ro  r   s                  r2   r   DeepseekModel.modify_tensors-  s   34LL$$%:;	==9::&..z6JJ==9::&..z9MJ 99]#r)%78I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 DF*,E$Y/"/uM#axw WT]]3%7%>? MM#.u5  0
 "'U!:J$1#mF87"SK#33K@HNNH#9: D 	%%d+Z8997 !Fr
  c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  DeepseekModel.prepare_tensorsY  r  r  r  r  r  )r&   r'   r(   r)   ri   r  DEEPSEEKrU   r  r   r  r  r  r  r   rV  r0   rR  rS  s   @r2   r
  r
  
  sN    ))J#N 04H,3) )*:XD Dr1   r
  DeepseekV2ForCausalLMDeepseekV3ForCausalLMKimiVLForConditionalGenerationc                     ^  \ rS rSr% \R
                  R                  rS rU 4S jr	Sr
S\S'   S
S jrU 4S jrS	rU =r$ )DeepseekV2Modelic  c           	         U R                  5         g ! [         a     Of = fSSKJn  UR	                  U R
                  SS9nU R                  U5      nUS:X  Ga  / n0 nUR                  R                  nUR                  5        H  u  pxX[        R                  U5      '   [        U5      S:X  a  M-  [        R                  XgUS9n	[        U	5      S:X  d  MR  UR                  S	R                  [!        [        R                  U	5      5      5        M     U R"                  S
   n
UR$                  n0 UEUER                  5        VVs0 s H  u  pX_M	     Os  snnf nnn/ n/ n['        U
5       H  nUU;  a@  UR                  SU S35        UR                  [(        R*                  R,                  5        MI  UU   nUR                  U5        UUR/                  5       ;   a+  UR                  [(        R*                  R0                  5        M  UR                  [(        R*                  R2                  5        M     U R4                  R7                  S5        U R4                  R9                  U5        U R4                  R;                  U5        U R4                  R=                  U5        U R4                  R?                  U5        [(        R@                  " U R
                  SS9nURC                  U R4                  5        g [E        SU< S35      e)Nr   r   Tr  rP  r   r  r    r  r"  r#  r$  r  Fr  zDeepseek pre-tokenizer z is not supported yet!)#r  r  r*  r!  r  r?   r+  rw   _mergeable_ranksro   r  r  r   r  r~  rM  r  rL   r  r.  ri   r/  r.   r  r,   r*   rN   r  r  r  r  r+  r  r  r   rt   r!  r7  r8  r  r  r  r  r  r  r"  r  r9  r:  r;  r5  r6  r=  r  s                      r2   r  DeepseekV2Model.set_vocabi  s   	  " 		 	/!11$..TX1Y	((3YFE'oo>>O.446@Di55e<=u:?"Mv;!#MM#((3y/N/NPV+W"XY  7 l3J&55NGb%GbSaGbGhGhGjkGj3C;S.GjkMk "F"$H:&M)MMD1+.OODNN$9$9:)!,EMM%(N1133 (>(>? (=(=> ' 008..v6++F3,,X6--f5 --dnn%PM%%d&6&67%(?zI_&`aas    
  Ec                  > SU R                   S'   [        TU ]	  5         U R                   nU R                  R	                  US   5        U R                  R                  US   5        SU;   a$  US   b  U R                  R                  US   5        U R                  R                  US   5        U R                  R                  US   US   -   5        U R                  R                  US   5        U R                  R                  US   US   -   5        U R                  R                  US	   5        U R                  R                  US
   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R!                  US   5        US   S:X  a4  U R                  R#                  [$        R&                  R(                  5        ONUS   S:X  a4  U R                  R#                  [$        R&                  R*                  5        O[-        SUS    35      eU R                  R/                  US   5        U R                   R1                  S5      =(       d    0 nUR1                  SUR1                  S5      5      S:X  a  SU;   a  U R                  R3                  [$        R4                  R6                  5        U R                  R9                  US   5        U R                  R;                  US   5        U R                  R=                  SUS   -  5        g g g )Nr   r  r
  r"  r  r  r  r  
v_head_dimrv  r
  r
  routed_scaling_factornorm_topk_probscoring_funcsigmoidsoftmax Unsupported scoring_func value: r  r  r   r  r  r  rd  mscale_all_dim)rL   r  r   rN   rx  r  r  r  r  r  add_key_length_mlaadd_value_length_mlar>  r  ry  r
  add_expert_weights_normadd_expert_gating_funcri   ExpertGatingFuncTypeSIGMOIDSOFTMAXr   r  r   r  r  r  r  r  add_rope_scaling_yarn_log_mul)rt   rL   r  r  s      r2   r   #DeepseekV2Model.set_gguf_parameters  s    /0*+#%,,66w?V7WX''(=>G#(>(J,,W]-CD))'.*AB 	''(?'J\B](]^))'.*AB++G4F,G'RdJe,ef--gl.CD77@W8XY))'2D*EF009K1LM11':Q2RS009I1JK>"i/33D4M4M4U4UV^$	133D4M4M4U4UV?@W?XYZZ11':L2MN||''7=2K)9)9&)ABfLQY]iQi2243G3G3L3LM44\(5KL::<Hj;kl::3N^A_;_`	 RjLr1   Nr_  r  c           	        SU;   d  SU;   a  / $ UR                  S5      (       a  UR                  SS5      nUR                  S5      (       a  UR                  SS5      nU R                  S   n[        R
                  " SU5      nU(       a   [        UR                  S	5      5      U:  a  / $ UR                  S
5      S:w  Ga  U R                  S   nUc   eU R                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l	        XR                  U   U'   [        U R                  U   5      US-  :  a  / nS H  n	/ n
[        U5       H@  nSU SU SU	 S3nU
R                  U R                  U   U   5        U R                  U   U	 MB     [        R                  " U
SS9nSU SU	 S3nU R!                  U5      nUR                  X45        M     U$ / $ UR                  S5      (       a  UR                  SS5      nUR                  SS5      nU R                  S   nU R                  S   nU R                  S   nUR"                  S   UUU-   -  :X  d   eUR%                  UUU-   UR"                  S   5      n[        R&                  " UUU/S	S9u  nnUR)                  S	S5      nU R!                  U5      U4U R!                  U5      U4/$ U R!                  U5      U4/$ s  snf )Nr  r  r  r  r  r  r  zmodel.layers.(\d+)r   r  r  r
  r!   r  r  r  r	  r  r   r  zkv_b_proj.weight	kv_b_projk_b_projv_b_projr  r&
  r  r    )r}  r4  r  rL   r  r  rV   groupre  r  r.  rW   r   r~  r   ri  r   r!  r3  r  rE  )rt   r   rd   r   rW   r  r  r   r  r  rl  rm  rn  ro  r   name_kbname_vbr	  r&
  r  kv_bk_bv_bs                          r2   r   DeepseekV2Model.modify_tensors  s   T!%<%DI??,--<< 126D ==233<< 9;TUD ll#67.5SQ(K7I 99]#r)%78I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 DF*,E$Y/"/uM#axw WT]]3%7%>? MM#.u5  0
 "'U!:J$1#mF87"SK#33K@HNNH#9: D 	 ==+,,ll;
;Gll;
;G%:;Il3J#||,>?##A&)zDT7T*UUUU??9j;K.KZM]M]^`MabD{{4*:J)GQOHC--1%C %%g.4%%g.4 
 %%d+Z899_ !Fs   :K+c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  DeepseekV2Model.prepare_tensors  r  r  r  r  )r&   r'   r(   r)   ri   r  	DEEPSEEK2rU   r  r   r  r  r   rV  r0   rR  rS  s   @r2   r 
  r 
  c  sB     **J4bl(aT 04H,3G:RD Dr1   r 
  Dots1ForCausalLMc                  p   ^  \ rS rSr\R
                  R                  rU 4S jrU 4S jr	SU 4S jjr
SrU =r$ )
Dots1Modeli  c                ^   > [         TU ]  " U0 UD6  U R                  S   U R                  S'   g )Nr
  r  r7  r  s      r2   r   Dots1Model.__init__"  s-    $)&)&*ll3E&F]#r1   c                $  > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  S   S:X  a4  U R                  R                  [        R                  R                  5        g [        SU R                  S    35      e)Nr
  r
  r'
  r(
  r)
  noaux_tcr,
  )r  r   rN   rx  rL   ry  r
  r0
  r1
  ri   r2
  r3
  r   r(  s    r2   r   Dots1Model.set_gguf_parameters&  s    #%66t||D[7\]00>P1QR11$,,?V2WX00>N1OP<<':533D4M4M4U4UV?^@\?]^__r1   c                   > UR                  S5      (       a  UR                  SS5      nSU;   a  U R                  U5      U4/$ [        TU ]  XU5      $ )Nr  r  shared_experts)r  r4  r   r  r   rZ  s       r2   r   Dots1Model.modify_tensors2  sX    ==233<< 9;TUDt#))$/<==w%j<<r1   r%   rL  )r&   r'   r(   r)   ri   r  DOTS1rU   r   r   r   r0   rR  rS  s   @r2   rG
  rG
    s(    &&JG
`= =r1   rG
  PLMForCausalLMc                  p   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
U 4S jrSrU =r$ )PLMModeli:  c                $    U R                  5         g rb   r  r   s    r2   r  PLMModel.set_vocab>  r  r1   c                r  > [         TU ]  5         U R                  nU R                  R	                  US   5        U R                  R                  US   5        U R                  R                  US   US   -   5        U R                  R                  US   5        U R                  R                  US   5        g )Nr"  r  r  r  r&
  )	r  r   rL   rN   r  r  r  r  r  r  s     r2   r   PLMModel.set_gguf_parametersA  s    #%,,''(=>))'.*AB''0B(CgN`Fa(ab))',*?@11':L2MNr1   c                *    U R                  U5      U4/$ rb   r   r   s       r2   r   PLMModel.modify_tensorsJ  s    %%d+Z899r1   c                "   > [         TU ]  5         g rb   r  r(  s    r2   rV  PLMModel.prepare_tensorsM  r  r1   r%   r  )r&   r'   r(   r)   ri   r  PLMrU   r  r   r   rV  r0   rR  rS  s   @r2   rS
  rS
  :  s,    $$JO:" "r1   rS
  T5WithLMHeadModelT5ForConditionalGenerationMT5ForConditionalGenerationUMT5ForConditionalGenerationc                  j   ^  \ rS rSr\R
                  R                  rU 4S jrS r	S r
SS jrSrU =r$ )T5ModeliQ  c                4   > [         TU ]  " U0 UD6  SU l        g r   r  r   shared_token_embeddings_foundr  s      r2   r   T5Model.__init__X      $)&)-2*r1   c           	     
   S[         R                  S'   SSKJn  SSKJn  U R
                  S-  nUR                  5       (       d  U R
                  S-  nUR                  5       (       d  [        SU 35      eUR                  5       nUR                  [        US	5      R                  5       5        UR                  R                  S
:X  a"  UR                  S:X  d   eU R                  5       $ UR                  R                  S:X  d   eUR                   R"                  nUR                   R$                  nUR                   R&                  nU" 5       nUR)                  [+        U5      5        U R,                  R/                  SUR1                  5       5      n	[3        U	5       V
s/ s H  n
SU
 S3R5                  S5      PM     nn
S/U	-  n[6        R8                  /U	-  n[3        UR1                  5       5       H  nUR;                  U5      nUR5                  S5      nUR=                  U5      n[6        R>                  nURA                  U5      (       a  [6        RB                  nOtURE                  U5      (       a  [6        RF                  nOMURI                  U5      (       a  [6        R8                  nO&URK                  U5      (       a  [6        RL                  nUX'   UX'   UX'   M     U R
                  S-  nUR                  5       (       a  [        USSS9 n[N        RP                  " U5      nU HV  nUU   nX:  a   [R        RU                  SU SU	S-
   35        M-  UR5                  S5      X'   SX'   [6        RV                  X'   MX     S S S 5        U	[Y        U5      :  a  U	[Y        U5      -
  n[R        R[                  SU SU S35        [3        SUS-   5       HP  n
UR]                  [_        SU
 S3SS95        UR]                  S5        UR]                  [6        R8                  5        MR     U R`                  Rc                  S5        U R`                  Re                  S5        U R`                  Rg                  U5        U R`                  Ri                  U5        U R`                  Rk                  U5        U R`                  Rm                  U5        U R`                  Ro                  U5        U(       a  U R`                  Rq                  U5        [r        Rt                  " U R
                  [Y        U5      S9nURw                  U R`                  5        g s  sn
f ! , (       d  f       GN= fNr  r  r   r  r  r  zspiece.modelr  r  r    r   r"  r#  r$  r   r  r  r   r   r  r  r  r  r  r  r  r  <r{  r  r  r  r  r?   r   r  r  r  r   r  r  r  rd   r  r  r  r  r  r  r   rL   r   r"  r.  r1  r   r.   r  r  r*   r  r+   r  r,   r  r  r/   r   r   rg   rI  r-   r   r  r~  r  rN   r  r  r  r  r  r  r  r  ri   r  r  rt   r  rw   r  r  r  r  r  r7  r"  r=  r5  r  r6  r  r  r  r  r  r  r   r  r   r  r  s                            r2   r  T5Model.set_vocab\      @H

;<8B*;; %%''!^^n<N%%''#&6~6F$GHH#..0++D,F,K,K,MN ++66!;!&&*;;;;0022&33>>!CCC(88II
0@@YY2BBWW*,	s>23\\%%lI4H4H4JK
DI*DUVDUqaS{11':DUV'j:56==>Ki2245H''1E<<(D&&x0E-44G""8,,199$$X..199##H--188!!(++166#F$F!(H# 6& !NN-@@$$&&'w?1$(IIaL!,C05H-xj@Z[ehi[iZj'kl '*zz'':F$'.F$)@)M)MH& - @ F#"S[0ILL.yk9XYbXccdef1i!m,ed1#QK'BCg& 7 > >? -
 	,,T2**95''/))&1((2--j9556HI556JK))$..#f+N!!$"2"23q W2 @?   !UA3U
U#c                   U R                  S/SS9=nc  [        R                  S5        SnU R                  R	                  U5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S	   5        U R                  R                  U R                  S
   5        U R                  R                  U R                  S
   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R!                  U R"                  5        g )Nr  Tr  JCouldn't find context length in config.json, assuming default value of 512rA  r  d_ffr  ra  d_kvr  relative_attention_num_bucketsdecoder_start_token_id)r   rg   rI  rN   r  r  rL   r  r  r  r  r  r  add_relative_attn_buckets_countr  add_decoder_start_token_idr  rA   rt   r  s     r2   r   T5Model.set_gguf_parameters  s   %%}o%EEENNNghE++E2--dll9.EF00f1EF((l)CD''[(AB''V(<=))$,,v*>?++DLL9M,NO88Ff9gh//=Q0RS33DLLAY4Z[&&tzz2r1   c                    AUS;   a7  U R                   (       d
  SnSU l         O[        R                  SU< S35        / $ U R                  U5      U4/$ N)zdecoder.embed_tokens.weightzencoder.embed_tokens.weightshared.weightr{
  TzSkipping shared tensor r  re
  rg   r  r   r   s       r2   r   T5Model.modify_tensors  [     bb55&5926th>opq	%%d+Z899r1   re
  r  )r&   r'   r(   r)   ri   r  T5rU   r   r  r   r   r0   rR  rS  s   @r2   rb
  rb
  Q  s/    
 ##J3\4|3": :r1   rb
  T5EncoderModelc                  j   ^  \ rS rSr\R
                  R                  rU 4S jrS r	S r
SS jrSrU =r$ )r
  i  c                4   > [         TU ]  " U0 UD6  SU l        g r   rd
  r  s      r2   r   T5EncoderModel.__init__  rg
  r1   c           	     
   S[         R                  S'   SSKJn  SSKJn  U R
                  S-  nUR                  5       (       d  U R
                  S-  nUR                  5       (       d  [        SU 35      eUR                  5       nUR                  [        US	5      R                  5       5        UR                  R                  S
:X  a"  UR                  S:X  d   eU R                  5       $ UR                  R                  S:X  d   eUR                   R"                  nUR                   R$                  nUR                   R&                  nU" 5       nUR)                  [+        U5      5        U R,                  R/                  SUR1                  5       5      n	[3        U	5       V
s/ s H  n
SU
 S3R5                  S5      PM     nn
S/U	-  n[6        R8                  /U	-  n[3        UR1                  5       5       H  nUR;                  U5      nUR5                  S5      nUR=                  U5      n[6        R>                  nURA                  U5      (       a  [6        RB                  nOtURE                  U5      (       a  [6        RF                  nOMURI                  U5      (       a  [6        R8                  nO&URK                  U5      (       a  [6        RL                  nUX'   UX'   UX'   M     U R
                  S-  nUR                  5       (       a  [        USSS9 n[N        RP                  " U5      nU HV  nUU   nX:  a   [R        RU                  SU SU	S-
   35        M-  UR5                  S5      X'   SX'   [6        RV                  X'   MX     S S S 5        U	[Y        U5      :  a  U	[Y        U5      -
  n[R        R[                  SU SU S35        [3        SUS-   5       HP  n
UR]                  [_        SU
 S3SS95        UR]                  S5        UR]                  [6        R8                  5        MR     U R`                  Rc                  S5        U R`                  Re                  S5        U R`                  Rg                  U5        U R`                  Ri                  U5        U R`                  Rk                  U5        U R`                  Rm                  U5        U R`                  Ro                  U5        U(       a  U R`                  Rq                  U5        [r        Rt                  " U R
                  [Y        U5      S9nURw                  U R`                  5        g s  sn
f ! , (       d  f       GN= fri
  rj
  rk
  s                            r2   r  T5EncoderModel.set_vocab  rm
  rn
  c                   U R                  S/SS9=nc  [        R                  S5        SnU R                  R	                  U5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S	   5        U R                  R                  U R                  S
   5        U R                  R                  U R                  S
   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                   5        g )Nr  Tr  rp
  rA  r  rq
  r  ra  rr
  r  rs
  )r   rg   rI  rN   r  r  rL   r  r  r  r  r  r  ru
  r  r  rA   rw
  s     r2   r   "T5EncoderModel.set_gguf_parametersC  se   %%}o%EEENNNghE++E2--dll9.EF00f1EF((l)CD''[(AB''V(<=))$,,v*>?++DLL9M,NO88Ff9gh//=Q0RS&&tzz2r1   c                    AUS;   a7  U R                   (       d
  SnSU l         O[        R                  SU< S35        / $ U R                  U5      U4/$ rz
  r|
  r   s       r2   r   T5EncoderModel.modify_tensorsS  r~
  r1   r
  r  )r&   r'   r(   r)   ri   r  	T5ENCODERrU   r   r  r   r   r0   rR  rS  s   @r2   r
  r
    s-    **J3\4|3 : :r1   JAISLMHeadModelc                  v   ^  \ rS rSr\R
                  R                  rU 4S jrS r	S r
SS jrU 4S jrSrU =r$ )		JaisModelie  c                  > [         TU ]  " U0 UD6  U R                  S   S:X  d   eU R                  S   S:X  d   eSU l        SU R                  ;   a  U R                  S   U l        O'SU R                  ;   a  U R                  S   U l        O eSU l        SU R                  ;   a7  S	U R                  ;   d   eU R                  S   U R                  S	   -  U l        O'S
U R                  ;   a  U R                  S
   U l        O eSU l        g )NrB  swigluposition_embedding_typer  r  mup_embeddings_scaleembeddings_scalemup_output_alphamup_width_scalewidth_scaler  )r  r   rL   r
  r
  max_alibi_biasr  s      r2   r   JaisModel.__init__i  s   $)&) ||12h>>>||56'AAA !$!T\\1$(LL1G$HD!4<</$(LL1C$DD!5-$444#||,>?$,,O`BaaDdll*#||M:D5!r1   c                $    U R                  5         g rb   r  r   s    r2   r  JaisModel.set_vocab  r  r1   c                .   U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R	                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  S   5        U R                   R                  U R                  5        g )Nr  r  r  r  r  r  r>  r   s    r2   r   JaisModel.set_gguf_parameters  s    ((i)@A++DLL,GH--dll8.DE00i1HI''X(>?++DLL9M,NO&&tzz2r1   c                2   A/ nUR                  S5      (       a  U$ UR                  S5      (       a  S[        R                  " [        R                  " U R                  S   5      5      -  n[        US   R                  5       5      n[        [        R                  " U5      U-  5      * U l        U$ UR                  S5      (       a  UR                  SS5      nU R                  U5      nXpR                  [        R                  R                  5      :X  a!  UR                  XqU R                   -  45        U$ XpR                  [        R                  R"                  5      :X  a!  UR                  XqU R$                  -  45        U$ UR                  Xq45        U$ )NrA  zrelative_pe.slopesr    r  r   )rB  rC  rD  z.c_fc2.weightr   )r  r  floorlog2rL   rp  r  r  r
  rE  r   r   ri   r%  r7  r~  r
  r9  r
  )rt   r   rd   r   r  n_head_closest_log2	first_valr   s           r2   r   JaisModel.modify_tensors  sY   ,. ==,((N==.00
 #$tzz$))DLL<R2S'T"Tjm0023I#(9)=@S)S#T"TDN==^__#--a3J''-..t/@/@/K/KLLNNH43H3H&HIJ  001B1B1I1IJJNNH43C3C&CDE  NNH12r1   c                l   > [         TU ]  5         U R                  R                  U R                  5        g rb   )r  rV  rN   r  r
  r(  s    r2   rV  JaisModel.prepare_tensors  s(    !++D,?,?@r1   )r
  r
  r
  r  )r&   r'   r(   r)   ri   r  JAISrU   r   r  r   r   rV  r0   rR  rS  s   @r2   r
  r
  e  s3    %%J"83 DA Ar1   r
  Glm4ForCausalLMGlm4vForConditionalGenerationc                  j   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SU 4S jjr
SrU =r$ )	Glm4Modeli  c                   SSK Jn  UR                  U R                  SS9n[        R
                  " U R                  SS9nU R                  5       u  pEnU R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        [        R
                  " U R                  SS9nUR                  SUR                  5       S   5        UR                  S	UR                  5       S
   5        UR                  SUR                  5       S   5        UR                  SUR                  5       S   5        UR                  U R                  5        g )Nr   r   Tr  r  r  r  r  r  <|user|>r  r  )r*  r!  r  r?   ri   r  r?  rN   r  r  r  r  r  r,  r  rt   r!  r7  r  r5  r6  r8  s          r2   r  Glm4Model.set_vocab  s:   .!11$..TX1Y	))$..dK#'#6#6#8 &,,V4**62''/((2))$..dK((	0I0I0KO0\]((	0I0I0KJ0WX((	0I0I0KO0\]((	0I0I0KO0\]!!$"2"23r1   c           	       > [         TU ]  5         U R                  R                  S5      =nc  U R                  S   U R                  S   -  nU R                  R                  [        XR                  R                  SS5      -  5      5        U R                  R                  S5      =(       d    0 nUR                  SUR                  S5      5      S	:X  aw  S
U;   ap  U R                  R                  [        R                  R                  5        U R                  R                  US
   5        U R                  R                  US   5        g g g )Nr  r  r  r[  r  r  r  r   r  r  r  )r  r   rL   r   rN   r  rV   r  ri   r  r  r  r  )rt   r  r  r  s      r2   r   Glm4Model.set_gguf_parameters  s   #%((44H=||M2dllCX6YYH11#hAQAQRiknAo6o2pq||''7=2K)9)9&)ABfLQY]iQi2243G3G3L3LM44\(5KL::<Hj;kl RjLr1   c                   > UR                  S5      (       a  / $ UR                  S5      (       a  UR                  SS5      n[        TU ]  XU5      $ )Nmodel.visual.model.language_model.r  r  )r}  r4  r  r   rZ  s       r2   r   Glm4Model.modify_tensors  sJ    ???++I__455<< 126Dw%j<<r1   r%   r  )r&   r'   r(   r)   ri   r  GLM4rU   r  r   r   r0   rR  rS  s   @r2   r
  r
    s'    %%J4 	m= =r1   r
  Glm4MoeForCausalLMc                     ^  \ rS rSr% \R
                  R                  rU 4S jrS r	U 4S jr
SrS\S'           SS jrU 4S	 jrS
rU =r$ )Glm4MoeModeli  c                   > [         TU ]  " U0 UD6  U R                  S   U R                  R                  SS5      -   U l        [
        R                  " U R                  U R                  5      U l        g )Nr  num_nextn_predict_layersr   )	r  r   rL   r   rW   ri   r  rU   rX   r  s      r2   r   Glm4MoeModel.__init__  s]    $)&)<<(;<t||?O?OPjlm?nn224??DDTDTUr1   c                p   SSK Jn  UR                  U R                  5      n[        R
                  " U R                  SS9nU R                  5       u  pEnU R                  R                  S5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        UR                  SUR                  5       S   5        UR                  SUR                  5       S	   5        UR                  S
UR                  5       S   5        UR                  SUR                  5       S   5        [        UR                  [         5      (       a1  SUR                  ;   a!  UR                  R#                  SS5      Ul        UR%                  U R                  5        g )Nr   r   Tr  r  r  [gMASK]r  r
  r  r  eom<|observation|>z visible_text(m.content).endswithz{{ visible_text(m.content) }}
{{- '/nothink' if (enable_thinking is defined and not enable_thinking and not visible_text(m.content).endswith("/nothink")) else '' -}}z{% set content = visible_text(m.content) %}{{ content }}
{{- '/nothink' if (enable_thinking is defined and not enable_thinking and not content.endswith("/nothink")) else '' -}})r*  r!  r  r?   ri   r  r?  rN   r  r  r  r  r  r,  r   r  r   r4  r  r
  s          r2   r  Glm4MoeModel.set_vocab  sm   .!11$..A	))$..dK#'#6#6#8 &,,V4**62''/((2 	((	0I0I0KI0VW((	0I0I0KJ0WX((	0I0I0KO0\]((	0I0I0KL]0^_ m11377<^bob}b}<}*7*E*E*M*M } H+IM' 	!!$"2"23r1   c           	       > [         T	U ]  5         U R                  R                  S5      =nc  U R                  S   U R                  S   -  nU R                  R                  [        XR                  R                  SS5      -  5      5        U R                  R                  S5      =nb  U R                  R                  U5        U R                  R                  S5      =nb  U R                  R                  U5        U R                  R                  S5      =nb  U R                  R                  U5        U R                  R                  S	5      =nb  U R                  R                  U5        U R                  R                  [        R                  R                  5        U R                  R                  S
5      =nb  U R                  R                  U5        U R                  R                  S5      =nb  U R                  R!                  U5        U R                  R                  S5      =nb  U R                  R#                  U5        g g )Nr  r  r  r[  r  r
  rv  r
  r
  r'
  r(
  r
  )r  r   rL   r   rN   r  rV   r  r>  ry  rx  r1
  ri   r2
  r3
  r
  r0
  add_nextn_predict_layers)
rt   r  r
  rv  r
  r
  r'
  r(
  r
  r  s
            r2   r    Glm4MoeModel.set_gguf_parameters  s    #%((44H=]+t||<Q/RR  	11<<++,CSIIJ	

 !% 0 01C DDQ--.>?%)\\%5%56M%NN![;;<QR $ 0 01C DDQ445EF%)\\%5%56M%NN![::;PQ 	//0I0I0Q0QR &*\\%5%56M%NN![556KL #ll../?@@NM44^D )-(8(89S(TT$a556NO br1   Nr_  r  c           	        UR                  S5      (       a  / $ UR                  S5      (       a  UR                  SS5      nUS:X  a  SU;  a  U R                  S5      U4/$ UR                  S5      S	:w  Ga  U R                  S
   nUc   eU R
                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR
                  U   U'   [        U R
                  U   5      US-  :  a  / nS H  n/ n[        U5       H@  n	SU SU	 SU S3n
UR                  U R
                  U   U
   5        U R
                  U   U
	 MB     [        R                  " USS9nSU SU S3nU R                  U5      nUR                  X45        M     U$ / $ UR                  S5      (       a  UR                  SS5      nU R                  U5      nX4/$ s  snf )Nr
  r
  r  r  zmodel.embed_tokens.weightz.layers.ztoken_embd.weightr  r  r
  r!   r  r  r  r	  r  r   r  r  r  )r}  r4  r   re  rL   r  r.  rW   r   r~  r   ri  r  r  s                r2   r   Glm4MoeModel.modify_tensors(  s    ???++I__455<< 126D ..:T3I))*=>
KLL 99]#r)%78I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 DF*,E$Y/"/uM#axw WT]]3%7%>? MM#.u5  0
 "'U!:J$1#mF87"SK#33K@HNNH#9: D 	==233<< 9;TUD''-&''? !Fs   /Gc                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  Glm4MoeModel.prepare_tensors[  sh    !==$"&--B-QAqq-GB7|a #8	!BCC   %Br  )r  rW   rX   r  )r&   r'   r(   r)   ri   r  GLM4_MOErU   r   r  r   r  r  r   rV  r0   rR  rS  s   @r2   r
  r
    sc    ))JV44!PF 04H,31( 1((+1(2<1(	%1(fD Dr1   r
  GlmForCausalLMChatGLMModelChatGLMForConditionalGenerationc                      \ rS rSr\R
                  R                  rS r\	S 5       r
\	S
SS jj5       rS rS rSS jrS	rg)r
  id  c                   U R                   nU R                  n/ n/ n/ nSSKJn  UR	                  USS9nUR                  S[        UR                  5       5      5      n[        UR                  5       R                  5       5      U:  d   e/ SQn	/ SQU	-   n
[        U5       GH  nUR                  U5      nUS:X  a  SnOUS	:X  a  S
nOUS:X  a  SnUR                  S5      nSn[        U5      S:w  aL  XR                  R                  R                  5       :  a%  UR                  R                  R!                  U5      nXR                  R                  R                  5       :  a  X;   a  ["        R$                  nOE[        U5      S:X  a&  SU S3R                  S5      n["        R&                  nO["        R(                  nUR+                  U5        UR+                  U5        UR+                  U5        GMU  ["        R,                  nUR                  R                  R/                  U5      (       a  ["        R0                  nOUR                  R                  R3                  U5      (       a  ["        R$                  nOuUR                  R                  R5                  U5      (       a  ["        R&                  nO:UR                  R                  R7                  U5      (       a  ["        R8                  nUR+                  U5        UR+                  U5        UR+                  U5        GM     U R:                  R=                  S5        U R:                  R?                  S5        U R:                  RA                  U5        U R:                  RC                  U5        U R:                  RE                  U5        [F        RH                  " U R                   [        U5      S9nURK                  U R:                  5        g )Nr   r   Tr  padded_vocab_size)z
<|system|>r
  z<|assistant|>r
  )z[MASK]r
  z[sMASK]sopeopz<unk>r   z<bos>r    z<eos>r   r  r#  r$  r  zchatglm-spmr  )&r?   rL   r*  r!  r  r   r   r  r  r  r.  r  r1  r7  sp_modelr"  	get_scorer   r,   r.   r-   r~  r*   
is_unknownr+   
is_control	is_unusedis_byter/   rN   r  r  r  r  r  ri   r  r  )rt   r?   rL   r5  r6  r  r!  r7  r"  role_special_tokensr  r  r  r  r  r  r  s                    r2   set_vocab_chatglm3ChatGLMModel.set_vocab_chatglm3h  s   NN	,,   .!11)t1T	[[!4c):M:M:O6PQ
9&&(//12Z???\GJ]]j)H228<E1}QQ<<(DE 5zQ8.A.A.J.J.U.U.W#W!++44>>xH..77BBDD*5==GZ1_!(1-44W=D5<<G5BBGd#e$(-44G""++66x@@199$$--88BB199$$--77AA188$$--55h??166MM$MM% OOG$S *V 	,,W5 	**=9''/))&1((2))$..#f+N!!$"2"23r1   c           	         SSK Jn  U" 5       nSR                  U R                  S5       Vs/ s H  o2[	        U5         PM     sn5      $ s  snf r   r  r  s       r2   r  "ChatGLMModel.token_bytes_to_string  r
  r  Nc                P   U Vs/ s H  n[        U/5      PM     nn S nS n[        [        US S USS  5      5       H2  u  pxU R                  US   US   -   5      n	U	c  M$  Ub  X:  d  M.  UnU	nM4     Ub  Ub  Xb:  a   U$ Uc   eUS U XE   XES-      -   /-   XES-   S  -   nM  s  snf r  r  r  s
             r2   r  ChatGLMModel.bpe  r  r  c                   SU R                   R                  SS5      ;   a  U R                  5         g U R                  nU R                   n/ n/ nSSKJn  UR                  USS9nUR                  SUS	   5      n[        UR                  5       R                  5       5      U:  d   eU R                  5       u  p4nU R                  R                  S
5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        [         R"                  " U R                  SS9n	U	R%                  SUR'                  5       S   5        U	R%                  SUR'                  5       S   5        U	R%                  SUR'                  5       S   5        U	R)                  U R                  5        g )NzTHUDM/chatglm3-6b_name_or_pathr  r   r   Tr  r
  r"  r  r  r  r  r  r
  r  )rL   r   r
  r?   r*  r!  r  r  r  r  r?  rN   r  r  r  r  ri   r  r  r,  r  )
rt   r?   rL   r5  r6  r!  r7  r"  r8  r  s
             r2   r  ChatGLMModel.set_vocab  s   $,,"2"2?B"GG##%NN	,, .!11)t1T	[[!4W\5JK
9&&(//12Z???#'#6#6#8 &,,V4**62''/((2))$..dK((	0I0I0KO0\]((	0I0I0KJ0WX((	0I0I0KO0\]!!$"2"23r1   c           
        U R                   R                  SU R                   R                  S5      5      nU R                   R                  SU R                   R                  S5      5      nU R                   R                  SU R                   R                  SU5      5      nU R                  R                  U R                   R                  SU5      5        U R                  R	                  U5        U R                  R                  U R                   R                  SU R                   R                  S	S
U-  5      5      5        U R                  R                  U R                   R                  SU R                   S   5      5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                   R                  SS5      5        U R                  R                  U R                  5        SU R                   ;   a  U R                   S   nOU R                   S   U R                   S   -  nU R                  R                  [        X@R                   R                  SS5      -  5      5        U R                  R                  S5        SnSU R                   ;   a  XPR                   S   -  nU R                  R                  U5        g )Nr  r  r  r  multi_query_group_numr  r  r  r  r"   r  r  layernorm_epsilonr  attention_dimr[  r  Fr  
rope_ratio)rL   r   rN   r  r  r  r  r  r  r  r  rA   r  rV   r5  r   )rt   r  r  r	  r  	rope_freqs         r2   r    ChatGLMModel.set_gguf_parameters  sJ   ,,""=$,,2B2B92MN!!(DLL,<,<=R,STLL$$%<dll>N>NOdfl>mn	++DLL,<,<\7,ST--g6001A1ABSUYUaUaUeUefy{|  @G  |G  VH  2I  	J(()9)9,UhHi)jk''/**95//0@0@ATUY0Z[&&tzz2dll*||O4H||M2dllCX6YYH11#hAQAQRiknAo6o2pq**51	4<<'!LL$>>I++I6r1   c                    AUR                  S5      (       d  UR                  S5      (       a  / $ UR                  S5      nU R                  U5      U4/$ )Nz.rotary_pos_emb.inv_freqzmodel.vision.ztransformer.)r  r}  r	  r   r   s       r2   r   ChatGLMModel.modify_tensors  sQ    ==3448X8XI  0%%d+Z899r1   r%   rb   r  r  )r&   r'   r(   r)   ri   r  CHATGLMrU   r
  r  r  r  r  r   r   r0   r%   r1   r2   r
  r
  d  sQ    ((JA4F R R
   487.:r1   NemotronForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
SrU =r$ )NemotronModeli  c                    U R                  5         U R                  R                  S5        U R                  R                  S5        g )Nr   r   )r  rN   r3  r1  r   s    r2   r  NemotronModel.set_vocab  s6    %%'))!,))!,r1   c                  > [         TU ]  5         U R                  nU R                  R	                  US   5        U R                  / SQ5      nU R                  R                  U5        U R                  / SQ5      nU R                  SS/5      nU R                  SS/5      nU R                  R                  [        X4-  5      U-  5        SU R                  ;  d  U R                  S   c4  U R                  R                  [        R                  R                  5        g U R                  R                  [        R                  R                  5        U R                  R                  U R                  S	   5        g )
Nr"  )r  r  r  r  )r[  r\  rope_percentr  r  r  r  r  r  )r  r   rL   rN   r  r   r  r  rV   r  ri   r  re  r  r  )rt   rL   r  rK  r  r  r  s         r2   r   !NemotronModel.set_gguf_parameters  s-   #%,,''(=>%%&jk
++J7 ""#XY!!=(";<!!#8("CD11#g6F2G62QR -n1M1U2243G3G3L3LM2243G3G3N3NO44T\\(5KLr1   c                `    UR                  S5      (       a  US-   nU R                  U5      U4/$ )Nr  r   )r  r   r   s       r2   r   NemotronModel.modify_tensors  s5    
 ==''#aJ%%d+Z899r1   r%   r  )r&   r'   r(   r)   ri   r  NEMOTRONrU   r  r   r   r0   rR  rS  s   @r2   r
  r
    s'    ))J-
M*: :r1   r
  ExaoneForCausalLMc                  P    \ rS rSr\R
                  R                  rS rSS jr	Sr
g)ExaoneModeli(  c                   U R                   nUS   S:X  d   eUS   nUS   nUS   nUR                  SU5      nUS   nSU;   a  US   OS	U-  nUS
   nU R                  R                  U5        U R                  R	                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U5        U R                  R                  U R                  5        U R                   R                  S5      =n	b  U R                  R                  U	5        U R                  SS/SS9n
U
b  U
OSn
U R                  R                  [        XS   US   -  -  5      5        U R                   R                  S5      =(       d    0 nUR                  SUR                  S5      5      S:X  aY  SU;   aR  U R                  R!                  ["        R$                  R&                  5        U R                  R)                  US   5        g g g )NrB  r  r  r  r  r  r  r  r"   r  r  r[  r\  Tr  r  r  r  r   r  r  )rL   r   rN   r  r  r  r  r  r  r  r  rA   r   r   r  rV   r  ri   r  r  r  )rt   rL   r  r  ra  r,  r  r  r  r  r]  r  s               r2   r   ExaoneModel.set_gguf_parameters,  s<   ,,-.&898")*C"DM*	12	{{#8)D !56<OSZ<ZG$78`adm`m\*

 	--i8''	2**<8++,CD//?001BC((4&&tzz2,,**<88JE//
;((*A:)NY](^)6)B11#m}G]ahi~aG  7A  3B  	C||''7=2K)9)9&)ABhNS[_kSk2243G3G3N3NO44\(5KL TlNr1   c           	   #    #    U R                  S/SS9=n(       Ga  UR                  SS5      R                  5       S:X  Ga  U R                  R                  SS5      nU R                  R                  S	5      =nc  U R                  S
   U R                  S   -  nSU[        R
                  " SUS[        R                  S9U-  -  -  nUR                  SS5      nUR                  SS5      nUR                  SS5      nU R                  R                  SS5      nX-  n	X-  n
X:w  d   e/ nU Hr  nS[        R                  -  U-  nX:  a  UR                  S5        M1  X:  a  UR                  U5        MI  X-  U-
  Xv-
  -  nUR                  SSU-
  U-  U-   -  5        Mt     U R                  [        R                  R                  5      [        R                  " U[        R                  S94v   g g g 7fr  r  r  s                  r2   r  "ExaoneModel.generate_extra_tensorsO  r  r  r%   Nr  )r&   r'   r(   r)   ri   r  EXAONErU   r   r  r0   r%   r1   r2   r
  r
  (  s    ''J!MFr1   r
  Exaone4ForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
SrU =r$ )Exaone4Modelin  c                v   U R                  5       u  pnU R                  R                  S5        U R                  R                  U5        U R                  R	                  U5        U R                  R                  U5        [        R                  " U R                  SS9nUR                  U R                  5        g r  r  r  s        r2   r  Exaone4Model.set_vocabr  r  r1   c           	     @  > [         TU ]  5         U R                  nU R                  R	                  US   5        UR                  S5      Gb+  U R                  R                  US   5        SU;   a2  U R                  R                  US    Vs/ s H  o"S:H  PM	     sn5        OSU;   a  / n[        US   [        5      (       a>  [        US   5       H,  nUR                  US   U[        US   5      -     S:H  5        M.     [        US   [        5      (       a2  [        US   5       H   nUR                  US-   US   -  S	:g  5        M"     [        U5      US   :X  a  U R                  R                  U5        U R                  R                  S
5      =(       d    0 nUR                  SUR                  S5      5      S:X  aY  SU;   aR  U R                  R                  [        R                   R"                  5        U R                  R%                  US   5        g g g s  snf )Nr"  r\  r  r  r  r  Lr   r   r  r  r   r  r  )r  r   rL   rN   r  r   r]  r  r   r   r.  r~  r   rV   r  ri   r  r  r  )rt   rL   r  r  r=  r  r  s         r2   r    Exaone4Model.set_gguf_parameters|  s   #%,,''(=>;;'(4//8H0IJ'  ;;_fgt_u<v_uZ[BU=U_u<vw)W4)+&g&>?EE"7+>#?@.55g>V6WXY\_`g  iA  aB  ]C  YC  7D  HK  7K  L Ag&>?EE"7+>#?@.55q1uH`@a6aef6fg A-.':M2NN$$??@VW||''7=2K)9)9&)ABhNS[_kSk2243G3G3N3NO44\(5KL TlN =ws   Hc           	   #    #    U R                  S/SS9=n(       Ga  UR                  SS5      R                  5       S:X  Ga  U R                  R                  SS5      nU R                  R                  S	5      =nc  U R                  S
   U R                  S   -  nSU[        R
                  " SUS[        R                  S9U-  -  -  nUR                  SS5      nUR                  SS5      nUR                  SS5      nU R                  R                  SS5      nX-  n	X-  n
/ nU Hr  nS[        R                  -  U-  nX:  a  UR                  S5        M1  X:  a  UR                  U5        MI  X-  U-
  Xv-
  -  nUR                  SSU-
  U-  U-   -  5        Mt     U R                  [        R                  R                  5      [        R                  " U[        R                  S94v   g g g 7f)Nr  Tr  r  r  r  r  r  r  r  r  r  r   r    r  r  g      0@r  r  r  r  r  r   r  r  s                  r2   r  #Exaone4Model.generate_extra_tensors  s    ++^,<t+LL<LR0668HD||''h?<<++J77C@,,}5F[9\\CtQQemm(TWZ(Z[\%))(D9"."2"23Dc"J#/#3#34F#L "&,,"2"23UW["\#2#D $3$F!!!D$''kD0G2$++A. 3$++F3"1";o"MRbRt!u$++A!f*1F1O,PQ " ..t/@/@/K/KLell[goto|o|N}~~3 E Mr  r%   r  )r&   r'   r(   r)   ri   r  EXAONE4rU   r  r   r  r0   rR  rS  s   @r2   r
  r
  n  s)    ((J4M2 r1   r
  GraniteForCausalLMc                  X   ^  \ rS rSrSr\R                  R                  rU 4S jr	Sr
U =r$ )GraniteModeli  z'Conversion for IBM's GraniteForCausalLMc                .  > U R                   R                  SS5      =n(       a  [        R                  SU5        [        TU ]  5         U R                   R                  S5      =n(       a1  U R                  R                  U5        [        R                  SU5        U R                   R                  S5      =n(       a1  U R                  R                  U5        [        R                  SU5        U R                   R                  S5      =n(       a1  U R                  R                  U5        [        R                  S	U5        U R                   R                  S
5      =n(       a2  U R                  R                  U5        [        R                  SU5        gg)zGranite uses standard llama parameters with the following differences:

- No head_dim support
- New multiplier params:
    - attention_scale
    - embedding_scale
    - residual_scale
- logits_scaling
r  Nz.Ignoring head_dim (%s) from config for Graniteattention_multiplierz$gguf: (granite) attention_scale = %sembedding_multiplierz$gguf: (granite) embedding_scale = %sresidual_multiplierz#gguf: (granite) residual_scale = %slogits_scalingz!gguf: (granite) logits_scale = %s)rL   rK  rg   rI  r  r   r   rN   add_attention_scalerh   r  r  r  )rt   r  attention_scaler  r  logits_scaler  s         r2   r    GraniteModel.set_gguf_parameters  s:    ||''
D9989NNKXV#% #ll../EFF?F00AKK>P"ll../EFF?F00AKK>P!\\--.CDD>D//?KK=~N<<++,<==<=,,\:KK;\J >r1   r%   )r&   r'   r(   r)   __doc__ri   r  GRANITErU   r   r0   rR  rS  s   @r2   r
  r
    s!    1((JK Kr1   r
  GraniteMoeForCausalLMGraniteMoeSharedForCausalLMc                  h   ^  \ rS rSrSr\R                  R                  rU 4S jr	SU 4S jjr
SrU =r$ )GraniteMoeModeli  z*Conversion for IBM's GraniteMoeForCausalLMc                   > [         TU ]  5         U R                  R                  S5      =n(       a2  U R                  R                  U5        [        R                  SU5        gg)z[GraniteMoeShared uses GraniteMoe parameters plus the following:
- shared_intermediate_size
shared_intermediate_sizez8gguf: (granitemoeshared) shared_feed_forward_length = %sN)r  r   rL   r   rN   rz  rg   rh   )rt   shared_feed_forward_lengthr  s     r2   r   #GraniteMoeModel.set_gguf_parameters  sW     	#%)-)9)9:T)UU%UBBC]^KKRTno Vr1   c                n  > UR                  S5      (       a  U R                  S   nUR                  S   SU-  :X  d   S5       eUR                  USS9u  pVU R	                  [
        R                  R                  U5      U4U R	                  [
        R                  R                  U5      U4/$ [        U R                  R                  S5      5      nUR                  S5      (       a  U R                  S	   nUR                  S   SU-  :X  d   S
5       eUR                  USS9u  pVU(       aX  U R	                  [
        R                  R                  U5      U4U R	                  [
        R                  R                  U5      U4/$ U R	                  [
        R                  R                  U5      U4U R	                  [
        R                  R                  U5      U4/$ U(       dC  UR                  S5      (       a-  U R	                  [
        R                  R                  U5      U4/$ [         TU ]E  XU5      $ )a  In modeling_granitemoe, the JetMoe implementation of parallel experts
is used. This essentially merges w1 and w3 into a single tensor with 2x
the hidden size that is then split during forward. To keep compatibility
with existing mixtral support, we pull them apart here.
$block_sparse_moe.input_linear.weightr  r2  r    z4Merged FFN tensor size must be 2 * intermediate_sizer  r  zshared_mlp.input_linear.weightr  z;Merged FFN tensor size must be 2 * shared_intermediate_sizezshared_mlp.output_linear.weight)r  rL   r!  r  r   ri   r%  FFN_GATE_EXP
FFN_UP_EXPrC   r   FFN_GATE_SHEXPFFN_UP_SHEXPrO  rP  r  r  r   )	rt   r   rd   r   ffn_dimgateuphas_expertsr  s	           r2   r   GraniteMoeModel.modify_tensors  s    ==?@@ll#67G##B'1w;6n8nn6!''R'8HD(():):)G)GMtT(():):)E)EsKRP 
 4<<++,?@A==9::ll#=>G##B'1w;6u8uu6!''R'8HD,,T->->-M-MsSUYZ,,T->->-K-KSQSUV 
 (():):)C)CSI4P(():):)A)A3GL 
 t}}-NOO(():):)C)CSI:V  w%j<<r1   r%   r  )r&   r'   r(   r)   r  ri   r  GRANITE_MOErU   r   r   r0   rR  rS  s   @r2   r  r    s%    4,,Jp%= %=r1   r  GraniteMoeHybridForCausalLMBambaForCausalLMc                     ^  \ rS rSrSr\R                  R                  rSr	U 4S jr
S rSS jr        SS jrS rS	 rS
rU =r$ )GraniteHybridModeli  zvGraniteHybrid is a hybrid SSM + Attention model that uses Mamba2 SSM
layers and optionally uses MoE w/ a shared expertTc                  > S/U l         [        TU ]  " U0 UD6  U R                  5       U l        [        U R                  5       Vs/ s H  nX0R                  ;  d  M  UPM     snU l        U R                  SS/5      U l	        U R                  S/5      U l
        U R                  S/5      U R                  -  U l        g s  snf )Nmambar  r  r	  expand)hparam_prefixesr  r   get_attn_layers_attn_layersr.  rW   _ssm_layersr   r  r	  rm	  )rt   r  r  r=  r  s       r2   r   GraniteHybridModel.__init__  s     !(y$)&) !002T--.
.!))) .
 ''	(BC''5''
3dllB
s   B?B?c                   U R                   R                  S5      =n(       a(  [        U5       VVs/ s H  u  p#US:X  d  M  UPM     snn$ U R                   R                  S/ 5      nU(       d}  U R                   R                  S5      nU(       d   S5       eU R                   R                  S5      nUc   S5       e[        U R                  5       Vs/ s H  nX%-  U:X  d  M  UPM     nnU$ s  snnf s  snf )Nr  ri  attn_layer_indicesr	  z3Didn't find attn_layer_indices or attn_layer_periodr	  z4No attention layer offset set with attn_layer_period)rL   r   r  r.  rW   )rt   r  r=  typattn_layersr	  r	  s          r2   r2  "GraniteHybridModel.get_attn_layers&  s    ,,**=99;9 )+ 6 6fa+%  6  ll&&';R@,,**+>?KU UU;,,**+>?K*b,bb* !1!122a?k1 2   !s   C-C-C3#C3c                   ^ / nU R                    H  mUR                  U4S jU 5       5        M      [        U5      U-   n[        R                  " X/UQ70 UD6$ )Nc              3  J   >#    U  H  nS R                  TU/5      v   M     g7fr   NrM  rc   r   pfxs     r2   re   1GraniteHybridModel.find_hparam.<locals>.<genexpr>>  (      A #q""r  )r1  extendrm  r	  r   )rt   rn   r  r  prefixedr@  s        @r2   r   GraniteHybridModel.find_hparam;  s\    ''COO   (
 DzH$&&tCDCFCCr1   c                "   UR                  S5      (       d  SU;   a  [        R                  XX#5      $ X0R                  ;   a  [        R                  XX#5      $ X0R
                  ;   a  [        R                  XX#5      $ U R                  U5      U4/$ )Nr  
shared_mlp)r  r  r   r4  r	  r3  r   r   s       r2   r   !GraniteHybridModel.modify_tensorsE  s     MM@AAt#"11$DNN """--dJJ%%%"11$DNN%%d+Z899r1   c                   [         R                  U 5        U R                  R                  U R	                  SS/5      5        U R                  R                  U R	                  SS/5      5        U R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R	                  S/5      5        U R	                  SS/5      n[        U R                  5       Vs/ s H  o"U R                  ;   a  UOSPM     nnU R                  R                  S	5      =n(       a  U R                  R!                  U5        U R                  R#                  U5        S
U R                  S   ;   nU R                  R%                  U5        U(       d  U R                  R'                  S5        U R	                  S/SS9=(       d    SnU R                  R                  S5      S;   d   S5       eU R                  U-  S:X  d   SU R                   SU 35       egs  snf )aG  This method merges params from both parents and some that are
specific to this model. The result is some duplication of how the params
get set. The following warnings are expected during conversion:

WARNING:Duplicated key name 'granitehybrid.attention.head_count_kv'
WARNING:Duplicated key name 'granitehybrid.context_length'
rk	  rl	  rn	  ro	  r  r  r	  r   attn_rotary_embr+  r+  r  d_headTr  r  r  Nr  Only SILU activation supportedSSM inner size  not a multiple of head dim N)r  r   rN   r  r   r  r  r	  r  rm	  r  r.  rW   r3  rL   r   r  r  add_rope_scaling_finetunedr  )rt   r  r=  head_count_kv_vecr  use_roperK  s          r2   r   &GraniteHybridModel.set_gguf_parametersU  s    	++D1 	,,T-=-=}h>W-XY++D,<,<lI=V,WX,,T\\:++DLL9 	//0@0@)0MN ((*?)MNDI$JZJZD[
D[q$"3"33M:D[ 	 
 ||''(9::8:55h?**+<= &o)FF33H=//6 !!8*t!<B||-?aAaa?||f$)o_T\\NJfgmfn+oo)!
s   H>c                L    SU R                   S'   [        R                  U 5        g )Nr  rf	  )rL   r	  r  r   s    r2   r  GraniteHybridModel.set_vocab|  s    23./d#r1   )r3  r4  rm	  r  r1  r	  rn   r  r~   r   r  )r&   r'   r(   r)   r  ri   r  GRANITE_HYBRIDrU   r  r   r2  r   r   r   r  r0   rR  rS  s   @r2   r-  r-    sc    9//JLC(*D: :(+:2<:	%: %pN$ $r1   r-  BailingMoeForCausalLMc                     ^  \ rS rSr% \R
                  R                  rS rU 4S jr	Sr
S\S'   \SS j5       rSS jrU 4S	 jrS
rU =r$ )BailingMoeModeli  c                $    U R                  5         g rb   r  r   s    r2   r  BailingMoeModel.set_vocab  r  r1   c                0  > [         TU ]  5         U R                  nUR                  S5      =nc  US   US   -  nU R                  R                  U5        U R                  R                  S5      =(       d    0 nUR                  SUR                  S5      5      S:X  av  SU;   ap  U R                  R                  [        R                  R                  5        U R                  R                  US   5        U R                  R                  US	   5        O3U R                  R                  [        R                  R                  5        U R                  R                  US
   5        U R                  R                  US   5        U R                  R                  US   5        U R                  R!                  S5        U R                  R#                  US   5        U R                  R%                  US   5        U R                  R'                  US   5        g )Nr  r  r  r  r  r   r  r  r  r
  r"  rv  r  r  num_shared_expertsr(
  )r  r   rL   r   rN   r  r  ri   r  r  r  r  re  rx  r  r>  r
  r  ry  r0
  r  s       r2   r   #BailingMoeModel.set_gguf_parameters  s   #%,,J//H8}-9N1OOH11(;||''7=2K)9)9&)ABfLQY]iQi2243G3G3L3LM44\(5KL::<Hj;kl2243G3G3L3LM66w?V7WX''(=>77@W8XY11#6))'-*@A009M1NO009I1JKr1   Nr_  r  c                    Ub  X:w  a  UnU R                   " USU R                  S   U-  S-  /U R                  SS  Q76 R                  SS5      R                  U R                  5      $ r  r  r  s      r2   r  BailingMoeModel.permute  r  r1   c           	        U R                   S   nU R                   R                  S5      nU R                   S   nU R                   R                  S5      =nc  Xd-  nU R                  [        R                  R
                  5      nUR                  S5      (       a-  U R                  [        R                  R                  U5      U4/$ UR                  S5      (       a  UR                  XG-  XW-  XW-  /SS9u  pnU R                  [        R                  R                  U5      [        R                  XU5      4U R                  [        R                  R                  U5      [        R                  XU5      4U R                  [        R                  R                  U5      U4/$ UR                  S	5      S
:w  Ga  U R                   S   nUc   e/ nU R                  c+  [!        U R"                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [%        U R                  U   5      US-  :  a  S H  n/ n[!        U5       H@  nSU SU SU S3nUR'                  U R                  U   U   5        U R                  U   U	 MB     [(        R*                  " USS9nSU SU S3nU R-                  U5      nUR'                  UU45        M     U$ U R-                  U5      nUU:X  aM  U R                   R                  S5      (       a-  UR/                  5       nU[(        R0                  " USSSS9S-   -  nUU4/$ s  snf )Nr  r  r  r  zattention.dense.weightzquery_key_value.weightr2  r  r  r  r  r!   r  r  r  r	  r  r   	norm_headr    T)pr  keepdimgHz>)rL   r   r   ri   r%  r9  r  r  r  r  rZ  r  r  r  re  r  r.  rW   r   r~  r   ri  r   rp  norm)rt   r   rd   r   r  r  r  r  r  r6  r   rg  r  r  r   r  rl  rm  rn  ro  r   s                        r2   r   BailingMoeModel.modify_tensors  s   34LL$$%:;	m,((44H='H--d.?.?.F.FG==122,,T->->-G-GMzZ[[]]344 &&(99;OQZQe'fln&oGA! (():):)A)A3GI`I`ablrIst(():):)A)A3GI`I`abluIvw(():):)A)A3GK 
 YY}%+]3I?"?02G}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-7CF*,E$Y/"/uM#axw WT]]3%7%>? MM#.u5  0
 "'U!:J$1#mF87"SK#33K@HNNHj#9: D  N''-{"t||'7'7'D'D#))+J%**Z1!TJTQQJ:&''= !Fs   5M c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  BailingMoeModel.prepare_tensors  r  r  r  r  r  )r&   r'   r(   r)   ri   r  
BAILINGMOErU   r  r   r  r  r  r  r   rV  r0   rR  rS  s   @r2   rZ  rZ    sN    ++JL, 04H,3) )8(tD Dr1   rZ  !ChameleonForConditionalGenerationChameleonForCausalLMc                  t   ^  \ rS rSr\R
                  R                  rU 4S jrS r	SS jr
\S 5       rSrU =r$ )ChameleonModeli  c                   > [         TU ]  5         U R                  R                  U R                  R                  SS5      5        g )N	swin_normF)r  r   rN   add_swin_normrL   r   r(  s    r2   r   "ChameleonModel.set_gguf_parameters  s3    #%&&t||'7'7U'KLr1   c                $    U R                  5         g rb   r  r   s    r2   r  ChameleonModel.set_vocab  r  r1   c                D   UR                  S5      (       a  / $ U R                  S   nU R                  R                  S5      nU R                  R                  S5      nUR                  S5      (       a  [        R                  XU5      nUR                  S5      (       a  [        R                  XU5      nUR                  S5      (       a  [        R                  XU5      nUR                  S5      (       a  [        R                  XU5      nU R                  U5      U4/$ )	Nzmodel.vqmodelr  r  r  r  r  )zq_norm.weightzq_norm.bias)zk_norm.weightzk_norm.bias)	r}  rL   r   r  r|  r  rn  r  r   )rt   r   rd   r   r  r  r  s          r2   r   ChameleonModel.modify_tensors  s     ???++I34LL$$%:;	\\%%m4
==9::#++JGJ==9::#++J	JJ==9::';;JPZ[J==9::';;JS]^J%%d+Z899r1   c                    X!-  nU S   R                  SUS-  5      R                  5       R                  SS5      n U R                  US5      n U $ )Nr   r    r   r  )r3  r  r  repeat_interleave)r   r  r  r  s       r2   r  "ChameleonModel._reverse_hf_permute  sR    (]''8q=9;;=EEaL
11'1=
r1   r%   r  )r&   r'   r(   r)   ri   r  	CHAMELEONrU   r   r  r   r  r  r0   rR  rS  s   @r2   rn  rn    s8     **JM:,  r1   rn  UltravoxModelc                  T   ^  \ rS rSr\R
                  R                  rU 4S jrSr	U =r
$ )r{  i  c                :   > [         TU ]  " U0 UD6  [        S5      e)NzUltravox does not have text decoder. Instead, it uses Llama or other models for text. If you want to get the audio encoder, please use --mmproj argument)r  r   r   r  s      r2   r   UltravoxModel.__init__  s*    $)&)!  #}  ~  	~r1   r%   )r&   r'   r(   r)   ri   r  r  rU   r   r0   rR  rS  s   @r2   r{  r{    s    &&J~ ~r1   c                  L   ^  \ rS rSrSrSrU 4S jrU 4S jrS rS	S jr	Sr
U =r$ )
WhisperEncoderModeli  FTc                  > [         TU ]  " U0 UD6  SU R                  ;  af  SU R                  ;  aU  U R                  S   U R                  S'   U R                  S   U R                  S'   U R                  S   U R                  S'   g g g )Nr  r  r  r  r  r  r7  r  s      r2   r   WhisperEncoderModel.__init__$  s    $)&),1DDLL1X*.,,y*ADLL'04=N0ODLL,-26,,?X2YDLL./ 2Y,r1   c                B  > [         TU ]  5         U R                  R                  [        R
                  R                  5        U R                  R                  U R                  S   5        U R                  R                  U R                  R                  SS5      5        g r  )r  r   rN   r  ri   r	  QWEN2Ar  rL   r  r   r(  s    r2   r   'WhisperEncoderModel.set_gguf_parameters+  sr    #%001I1I1P1PQ//^0LM::4<<;K;KL\^b;cdr1   c                V    AAASU;   a   SU;   a  [         R                  R                  $ gr  r  r   s        r2   r   &WhisperEncoderModel.tensor_force_quant1  r  r1   c                    AUR                  S5      (       a  / $ UR                  S5      (       a  SU-   nSU;   d  SU;   a  UR                  S5      nU R                  U5      U4/$ )Nr  r  zaudio.r  r  r  )r}  r  r   r   s       r2   r   "WhisperEncoderModel.modify_tensors7  sm    ??,--I ??233d?D4<4#7#--b1J%%d+Z899r1   r%   r  )r&   r'   r(   r)   rX  rY  r   r   r   r   r0   rR  rS  s   @r2   r  r    s*    Ze: :r1   r  c                  0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )UltravoxWhisperEncoderModeliI  FTc                   > [         TU ]  5         U R                  R                  [        R
                  R                  5        U R                  R                  U R                  S   5        g )Nstack_factor)	r  r   rN   r  ri   r	  ULTRAVOXadd_audio_stack_factorrV  r(  s    r2   r   /UltravoxWhisperEncoderModel.set_gguf_parametersN  sM    #%001I1I1R1RS//0B0B>0RSr1   r%   	r&   r'   r(   r)   rX  rY  r   r0   rR  rS  s   @r2   r  r  I  s    T Tr1   r  c                  0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )VoxtralWhisperEncoderModeliT  FTc                   > [         TU ]  5         U R                  R                  [        R
                  R                  5        U R                  R                  S5        g )Nr"   )r  r   rN   r  ri   r	  VOXTRALr  r(  s    r2   r   .VoxtralWhisperEncoderModel.set_gguf_parametersY  sB    #%001I1I1Q1QR//2r1   r%   r  rS  s   @r2   r  r  T  s    3 3r1   r  FalconH1ForCausalLMc                     ^  \ rS rSr\R
                  R                  rU 4S jrSU 4S jjr	S r
S	U 4S jjrU 4S jrSrU =r$ )
FalconH1Modeli_  c                F  > S/U l         [        TU ]  " U0 UD6  [        U l        U R                  S/5      U l        U R                  S/5      U l        U R                  S/5      U l        SU l	        U R                  S/SS9U l
        U R                  S/SS9U l        U R                  S	/SS9U l        U R                  S
/SS9U l        U R                  S/SS9U l        U R                  S/SS9U l        U R                  S/5      U l        U R                  S/SS9U l        g )Nr/  r	  r	  rK  Tattention_in_multiplierr  attention_out_multiplierssm_in_multiplierssm_out_multipliermlp_multipliersssm_multipliersr  key_multiplier)r1  r  r   r|  _transformer_model_classr   r	  rm	  rK  has_attentionr  r  r  r  r  r  r  r  r  s      r2   r   FalconH1Model.__init__c  sT    'y 	$)&) )3% ''5''8&&z2 " (,'7'79R8S^b'7'c$(,(8(8:T9U`d(8(e%!%!1!13F2GRV!1!W"&"2"24H3ITX"2"Y#//1B0Cd/S#//1B0Cd/S!%!1!13F2G!H"..0@/AD.Qr1   c                   >^ / nU R                    H  mUR                  U4S jU 5       5        M      [        U5      U-   n[        TU ]  " U/UQ70 UD6$ )Nc              3  J   >#    U  H  nS R                  TU/5      v   M     g7fr=  r>  r?  s     r2   re   ,FalconH1Model.find_hparam.<locals>.<genexpr>  rB  r  )r1  rC  rm  r  r   )rt   rn   r  r  rD  r@  r  s        @r2   r   FalconH1Model.find_hparam  s[    ''COO   (
 DzH$w"49$9&99r1   c                $    U R                  5         g rb   r  r   s    r2   r  FalconH1Model.set_vocab  r  r1   c                R  > [        [        T	U ]	  XU5      5      nUS   S   nSU;   a  XPR                  S   -  nGOSU;   a  XPR                  S   -  nGOSU;   a  XPR                  -  U R
                  -  nGOSU;   a  XPR
                  -  nGOSU;   a  XPR
                  -  nGOxSU;   a  XPR                  -  nGObS	U;   a  XPR                  -  nGOLS
U;   a  XPR                  -  nU R                  S   nU R                  S   nU R                  S   U R                  S   -  nUS U2S S 24==   US   -  ss'   XWSU-  2S S 24==   US   -  ss'   USU-  SU-  U-   2S S 24==   US   -  ss'   USU-  U-   SU-  SU-  -   2S S 24==   US   -  ss'   USU-  SU-  -   S 2S S 24==   US   -  ss'   OiSU;   a  XPR                  S   -  nOQSU;   a  XPR                  S   -  nO9SU;   a3  UR                  U R                  U R                  U R                  -  5      nUS   S   U4/nU$ )Nr   r   rD  r  k_projq_projv_projo_projout_projin_projr  r	  mamba_n_groupsr  r    r!   r"   lm_headlm_head_multiplierembed_tokensr  z
mamba.norm)rm  r  r   r  r  r  r  r  r  rL   r  r	  rm	  )
rt   r   rd   r   r  r  zxbcdt_multipliersr  groups_time_state_sizer  s
            r2   r   FalconH1Model.modify_tensors  s   uw-jDEA$33A66FD 22155F111D4P4PPF:::F:::F;;;F4555F$444F!%.?!@ $] ;%)\\2B%CdllSbFc%c"%%%q()-?-BB)Q):%::A=>BTUVBWW>1((->)>AW)WWYZZ[_qrs_tt[1((+AA!FWBWZ[^tZtBttvwwx  }O  PQ  }R  Rx1((1/E+EEFIJN`abNccJ$ll+?@@Ft#ll+ABBFT!^^DLL$,,$,,2NOFAJqM6*+r1   c                  > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  5        U R                  R                  U R                  R                  SS5      5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  S5      S	;   d   S
5       eU R                  U R                  -  S:X  d!   SU R                   SU R                   35       eU R                  R!                  U R#                  S/5      5        g )Nr"  r  r   r  r  r  r  r  rL  rM  rN  rO  r  )r  r   rN   r  rL   r  rW   r  r   r  r  r  r  r  rm	  rK  r   r   r(  s    r2   r   !FalconH1Model.set_gguf_parameters  s   #% 	''\(BC(()9)9:++DLL,<,<=VXY,Z[00>Q1RS 	''5J(KL**4<<8M+NO''Z(@A))$,,z*BC ||-?aAaa?||dkk)Q.y/$,,Oklplwlwkx0yy. 	++D,<,<l^,LMr1   )r  r  r  rK  rm	  r  r1  r  r  r  r	  r  r  r  rV  r  )r&   r'   r(   r)   ri   r  r	  rU   r   r   r  r   r   r0   rR  rS  s   @r2   r  r  _  s4    **JR8:$LN Nr1   r  HunYuanMoEV1ForCausalLMc                     ^  \ rS rSr% \R
                  R                  rS rU 4S jr	Sr
S\S'   S
S jrU 4S jrS	rU =r$ )HunYuanMoEModeli  c           	        SSK Jn  UR                  U R                  SS9nU R	                  U5      n/ n0 nUR
                  nUR                  5        H  u  pxX[        R                  U5      '   [        U5      S:X  a  M-  [        R                  XgUS9n	[        U	5      S:X  d  MR  UR                  SR                  [        [        R                  U	5      5      5        M     U R                  S	   n
UR                  U
:X  d   eUR                   n0 UEUER                  5        VVs0 s H  u  pX_M	     nnn/ n/ n[#        U
5       H  nUU;  a@  UR                  S
U S35        UR                  [$        R&                  R(                  5        MI  UU   nUR                  U5        UUR+                  5       ;   a+  UR                  [$        R&                  R,                  5        M  UR                  [$        R&                  R.                  5        M     U R0                  R3                  S5        U R0                  R5                  U5        U R0                  R7                  U5        U R0                  R9                  U5        U R0                  R;                  U5        [$        R<                  " U R                  SS9nUR?                  U R0                  5        U R0                  RA                  S5        g s  snnf )Nr   r   Tr  r   r  r    r  r"  r#  r$  r  Fr  i )!r*  r!  r  r?   r+  r  ro   r  r  r   r  r~  rM  r  rL   r"  r  r.  ri   r/  r.   r  r,   r*   rN   r  r  r  r  r+  r  r  r-  r#
  s                      r2   r  HunYuanMoEModel.set_vocab  sf   .!11$..TX1Y	 ((3 #33*002KE<@)11%895zQ]]?D]IF6{achhs9+J+JF'STU 3 \\,/
##z111"11C^eC^~C^CdCdCfgCf/?{*Cfg z"A%QCqk* 5 56%a(e$--//OODNN$:$:;OODNN$9$9: # 	,,V4**62''/((2))&1 ))$..eL!!$"2"23))&15 hs   $K,c                  >^^^	 [         T
U ]  5         U R                  nU R                  R	                  US   5        U R                  R                  US   5        US   m[        U4S jT 5       5      (       d   eU R                  R                  TS   5        US   m	[        U	4S jT	 5       5      (       d   eU R                  R                  T	S   5        US   m[        U4S	 jT 5       5      (       d   eU R                  R                  TS   5        UR                  S
0 5      nUR                  S5      S:X  Ga  UR                  SS5      nUR                  SS5      nUS   US   -  nXCXUS-
  -  -  -  nU R                  R                  U5        U R                  R                  [        R                  R                  5        U R                  R!                  S5        U R                  R#                  S5        U R                  R%                  S5        US:X  a  US:X  a  US:X  a  U R                  S   S;   d   S5       eg g )Nr  r  rv  c              3  2   >#    U  H  oTS    :H  v   M     g7fr  r%   )rc   r   rv  s     r2   re   6HunYuanMoEModel.set_gguf_parameters.<locals>.<genexpr>	  s     P:OQ-a00:O   r   moe_topkc              3  2   >#    U  H  oTS    :H  v   M     g7fr  r%   )rc   topkr  s     r2   re   r    s     <848A;&8r  num_shared_expertc              3  2   >#    U  H  oTS    :H  v   M     g7fr  r%   )rc   r   moe_shared_experts     r2   re   r    s     H6G)!,,6Gr  r  r   dynamicalpha  r  r  r  r  r    r      r`  r  i   r  dHunYuan dynamic RoPE scaling assumptions changed, please update the logic or context length manually)r  r   rL   rN   r  rz  r  r>  r  ry  r   r   r  ri   r  re  r  r  r  )rt   rL   r  r  r  r  scaled_baserv  r  r  r  s          @@@r2   r   #HunYuanMoEModel.set_gguf_parameters  s0   #%,,))'-*@A>>wGZ?[\ '(? @P:OPPPPP778Ma8PQ:&<8<<<<<..x{;#$78H6GHHHHH001B11EF {{>26F#y0 !$$Wd3E;;|W5D=)W5J-KKCC7O"<=K//<2243G3G3L3LM44Q7:::F//
; D=TW_UnHo  tK  IK wvw  K  IK 1r1   Nr_  r  c           	        US:X  a8  U R                   R                  SS5      (       a  [        R                  S5        / $ UR	                  S5      S:w  Ga  U R                   S   nUc   eU R
                  c+  [        U R                  5       Vs/ s H  n0 PM     snU l        XR
                  U   U'   [        U R
                  U   5      US-  :  a  / nS	 H  n/ n[        U5       H@  n	S
U SU	 SU S3n
UR                  U R
                  U   U
   5        U R
                  U   U
	 MB     [        R                  " USS9nS
U SU S3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Nr  tie_word_embeddingsF+Skipping tied output layer 'lm_head.weight'r  r  r  r!   r  r  r  r	  r  r   r  )rL   r   rg   rh   re  r  r.  rW   r   r~  r   ri  r   r  s                r2   r   HunYuanMoEModel.modify_tensors*  s   ##|| 5u==IJ	99]#r)]3I?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746CF*,E$Y/"/uM#axw WT]]3%7%>? MM#.u5  0
 "'U!:J$1#mF87"SK#33K@HNNH#9: D 	%%d+Z8991 !Fs   Fc                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  HunYuanMoEModel.prepare_tensorsO  sh    !==$"&--B-QAqq-GB7|a #8	!BCC   %Br  r  r  )r&   r'   r(   r)   ri   r  HUNYUAN_MOErU   r  r   r  r  r   rV  r0   rR  rS  s   @r2   r  r    s>    ,,J12f%wN 04H,3#:JD Dr1   r  HunYuanDenseV1ForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
SrU =r$ )HunYuanModeliW  c           	     r   U R                   S-  R                  5       (       a  U R                  5         g SSKJn  UR                  U R                   SS9nU R                  U5      n/ n0 nUR                  nUR                  5        H  u  pxX[        R                  U5      '   [        U5      S:X  a  M-  [        R                  XgUS9n	[        U	5      S:X  d  MR  UR                  S	R                  [        [        R                  U	5      5      5        M     U R                   S
   n
UR"                  U
:X  d   eUR$                  n0 UEUER                  5        VVs0 s H  u  pX_M	     nnn/ n/ n['        U
5       H  nUU;  a@  UR                  SU S35        UR                  [(        R*                  R,                  5        MI  UU   nUR                  U5        UUR/                  5       ;   a+  UR                  [(        R*                  R0                  5        M  UR                  [(        R*                  R2                  5        M     U R4                  R7                  S5        U R4                  R9                  U5        U R4                  R;                  U5        U R4                  R=                  U5        U R4                  R?                  U5        [(        R@                  " U R                   SS9nURC                  U R4                  5        U R                   S   S:X  a  U R4                  RE                  S5        g g s  snnf )Nr  r   r   Tr  r   r  r    r  r"  r#  r$  r  Fr  r  rK  i )#r?   r   r  r*  r!  r  r+  r  ro   r  r  r   r  r~  rM  r  rL   r"  r  r.  ri   r/  r.   r  r,   r*   rN   r  r  r  r  r+  r  r  r-  r#
  s                      r2   r  HunYuanModel.set_vocab[  s   NN--6688  "2%55dnnX\5]I ,,Y7F FE'77O.446@Di55e<=u:?"Mv;!#MM#((3y/N/NPV+W"XY  7 l3J'':555&55NGb%GbSaGbGhGhGjkGj3C;S.GjMk "F"$H:&M)MMD1+.OODNN$9$9:)!,EMM%(N1133 (>(>? (=(=> ' 008..v6++F3,,X6--f5 !--dnn%PM%%d&6&67||M*d2  11&9 35 ls   L3c                r  > [         TU ]  5         U R                  nUR                  S0 5      nUR                  S5      S:X  a  UR                  SS5      nUR                  SS5      nUS   nXCXUS	-
  -  -  -  nU R                  R                  U5        U R                  R                  [        R                  R                  5        U R                  R                  S
5        U R                  R                  S5        U R                  R                  S5        US:X  a  U R                  S   S;   d   S5       eg g )Nr  r   r  r  2   r  r  r  r    r   r  r  r  r  )r  r   rL   r   rN   r   r  ri   r  re  r  r  r  )rt   rL   r  r  r  r  r  r  s          r2   r    HunYuanModel.set_gguf_parameters  s"   #%,, {{>26F#y0 !$$Wb1E;;|W5D*%CC7O"<=K//<2243G3G3L3LM44Q7:::F//
; 7?t||4M'NRi'i wvwi'i 1r1   c                    US:X  a8  U R                   R                  SS5      (       a  [        R                  S5        / $ U R	                  U5      U4/$ )Nr  r  Fr  )rL   r   rg   rh   r   r   s       r2   r   HunYuanModel.modify_tensors  sN    ##|| 5u==IJ	%%d+Z899r1   r%   r  )r&   r'   r(   r)   ri   r  HUNYUAN_DENSErU   r  r   r   r0   rR  rS  s   @r2   r  r  W  s(    ..J5:nw0: :r1   r  SmolLM3ForCausalLMc                  T   ^  \ rS rSr\R
                  R                  rU 4S jrSr	U =r
$ )SmolLM3Modeli  c                   > [         TU ]  5         SSKJn  UR	                  U R
                  5      nUR                  b8  UR                  R                  SS5      nU R                  R                  U5        g g )Nr   r   z[:]r  )
r  r  r*  r!  r  r?   r  r4  rN   r  )rt   r!  r7  r  r  s       r2   r  SmolLM3Model.set_vocab  sd     	/!11$..A	"".%33;;E2FM..}= /r1   r%   )r&   r'   r(   r)   ri   r  SMOLLM3rU   r  r0   rR  rS  s   @r2   r  r    s    ((J> >r1   r  GptOssForCausalLMc                  ~   ^  \ rS rSr\R
                  R                  rS rS	S jr	S
S jr
SS jrS rU 4S jrSrU =r$ )GptOssModeli  c                X   UR                   [        R                  :X  d   eUR                  S   S:X  d   eUS-  nUS-  nUS-  US-	  -  nUnUR	                  SSS9u  pVUS-  R                  SS5      nUS-  R                  SS5      n[        R                  " Xx4SS9R                  UR                  5      nUS-	  R                  SS5      n	US-  R                  SS5      n
[        R                  " X4SS9R                  UR                  5      nXV-  nUS-  nUS-  nUS-	  US-  -  nU$ )	Nr  r"        r"   r    r  r   )r   r   rK  r!  chunkr3  ri  )rt   r  t_lot_hi	t_swappedblk_ablk_bblk_a0blk_a1blk_b0blk_b1r  out_hout_ls                 r2   transform_nibble_layout#GptOssModel.transform_nibble_layout  s8   ||u{{***||B2%%%}}QY419-	||A2|.$,$$R+1*""2q)V,!499&,,G1*""2q)$,$$R+V,!499&,,Gmd
d
zeqj)
r1   c                   UR                   [        R                  :X  d   eUR                   [        R                  :X  d   eUR                  S5      n[	        UR
                  5      S:X  d   e[	        UR
                  5      S:X  d   eU R                  U5      n[        R                  " X24SS9nUR
                  S   UR
                  S   UR
                  S   S-  /n[        R                  SU S	U S
35        UR                  UR
                  S   UR
                  S   UR
                  S   UR
                  S   -  5      nUR                  5       nU R                  R                  X[        R                  R                   S9  g )Nr  r"   r  r   r   r    r  z	Repacked z with shape z and quantization MXFP4r!   r  )r   r   rK  r  r   r!  r  concatrg   rh   r3  r   rN   rO  ri   r"  MXFP4)rt   r   r<	  r  new_data	new_shapes         r2   repack_mxfp4GptOssModel.repack_mxfp4  sH   ||u{{***||u{{***!!"%6<< A%%%6<< A%%%--f5<< 0b9^^A&q(98>>!;Lr;QR	izi[@WXY==!2HNN14Ex~~VWGX[c[i[ijk[lGlm>>###H$B[B[BaBa#br1   c                   [         R                  " S5      n[         R                  " S5      nU R                  5        GH  u  p4SU;   a  UnM  SU;   a5  U R                  UR	                  SS5      5      nU R                  XQU5        MK  SU;   a%  US S 2S S S2S S 2S S 24   US S 2SS S2S S 2S S 24   p!Mv  SU;   d  M~  US S 2S S S2S S 24   US S 2SS S2S S 24   pvU R                  UR	                  S	S
5      5      nU R                  UR	                  S	S5      5      n	U R                  XU5        U R                  XU5        GM     / $ )Nr   zmlp.experts.down_proj_blockszmlp.experts.down_proj_scales_scalesr  zmlp.experts.gate_up_proj_blocksr    zmlp.experts.gate_up_proj_scalesgate_up_proj_scalesrC  rB  )r   zerosr   r   r4  r  )
rt   blocks0blocks1rd   r   r   scales0scales1new_name_gatenew_name_ups
             r2   r  "GptOssModel.generate_extra_tensors  s7   ++a.++a. $ 0 0 2D-5$/47//Y	0RS!!(Z@2d:#-a1al#;Z14a4QRTU=V2d:#-a1ai#8*Q1aZ:P $ 4 4T\\BWYk5l m"224<<@UWg3hi!!-'B!!+@ !3 	r1   c                h   ASU;   a  US-  nSU;   at  UR                  S5      (       a  UR                  SS5      nOKSU;  aC  SU;  a=  [        R                  U S	35        UR                  SS
5      nUR	                  SS5      nO/ $ SU;   Ga  UR                  S5      (       a]  UR                  SS5      nUR                  SS5      nUSS S S24   USSS S24   pvU R                  U5      U4U R                  U5      U4/$ SU;  a  SU;  a  [        R                  U S	35        UR                  SS5      nUR                  SS5      nUR	                  SS5      nUS S 2S S S2S S 24   US S 2SS S2S S 24   pU R                  U5      U4U R                  U5      U	4/$ / $ U R                  U5      U4/$ )Nsinksr  rD  _biasdown_proj_biaszdown_proj.bias_blocksr  z- is not in MXFP4, performance may be degradedzdown_proj.weightr  r2  rA  gate_up_proj_biaszup_proj.biaszgate_proj.bias.r    r   rB  rC  )r  r4  rg   rI  rE  r   )
rt   r   rd   r   rF  rG  gate_proj_biasup_proj_biasrI  rJ  s
             r2   r   GptOssModel.modify_tensors   s   d?ID $}}W%%||$46FG$&9D+@$'TUV||K1CD'11"b9
 	 T!}}W%%,,':NK LL)<>NO	/9#ss(/CZPSUVUYXYUYPYEZ)))4nE))'2LA  $&9D+@$'TUV,,~7GH LL9KL	'11"b9
3=a1ai3H*UVXYX\[\X\^_U_J`.)))46FG))'2NC  	%%d+Z899r1   c                $    U R                  5         g rb   r  r   s    r2   r  GptOssModel.set_vocab.   r  r1   c                d  > [         TU ]  5         U R                  R                  U R                  S   5        U R                  R                  U R                  S   5        U R                  R                  S5      =(       d    0 nUR                  SUR                  S5      5      nUS:X  d
   SU 35       eU R                  R                  [        R                  R                  5        U R                  R                  US   5        U R                  R                  UR                  S	S
5      5        g )Nr\  r  r  r  r   r  z-GPT-OSS only supports yarn rope scaling, got r  r  rK  )r  r   rN   r]  rL   r>  r   r  ri   r  r  r  r  )rt   r  r  r  s      r2   r   GptOssModel.set_gguf_parameters1   s    #%++DLL9I,JK77EX8YZ||''7=2 $$[,2B2B62JK	F"_&ST]S^$__"..t/C/C/H/HI00h1GH66|7G7GHjlp7qrr1   r%   )r   r   r<	  r   r  r   r  r  )r&   r'   r(   r)   ri   r  GPT_OSSrU   r  r  r  r   r  r   r0   rR  rS  s   @r2   r  r    s9    ((J2c(*:X
s 
sr1   r  Lfm2ForCausalLMLFM2ForCausalLMc                  d   ^  \ rS rSr\R
                  R                  rS rU 4S jr	SS jr
SrU =r$ )	LFM2Modeli>   c                :   U R                   S   nU R                   S   nU R                   S   nU R                   S   nU R                   S   nU(       a.  [        SU-  S-  5      nUb  [        X1-  5      nXAU-   S-
  U-  -  nU R                  R                  U5        g )Nblock_ff_dimblock_auto_adjust_ff_dimblock_ffn_dim_multiplierblock_multiple_ofr    r!   r   )rL   rV   rN   r  )rt   rL  auto_adjust_ff_dimffn_dim_multiplierrK  s        r2   _add_feed_forward_length"LFM2Model._add_feed_forward_lengthC   s    n-!\\*DEn-!\\*DEll#67Va(F!-/89 k%9A%=+$MNF008r1   c                  > U R                   S    Vs/ s H  nUS:X  a  U R                   S   OSPM     snU R                   S'   [        TU ]	  5         U R                  R	                  U R                   S   5        U R                  R                  U R                   S   5        U R                  R                  U R                   S   5        U R                  5         g s  snf )Nr  full_attentionr  r   r"  conv_L_cacher  )rL   r  r   rN   r  add_shortconv_l_cacher  r)  )rt   
layer_typer  s     r2   r   LFM2Model.set_gguf_parametersT   s     #ll=9/
9
 4>AQ3QDLL./WXX9/
*+
 	#%''\(BC..t||N/KL//Z0HI%%'/
s   !Cc                X    SU;   a  UR                  S5      nU R                  U5      U4/$ )Nz	conv.convr   )r  r   r   s       r2   r   LFM2Model.modify_tensorsa   s3    $#++A.J%%d+Z899r1   r%   r  )r&   r'   r(   r)   ri   r  LFM2rU   r)  r   r   r0   rR  rS  s   @r2   r!  r!  >   s(     %%J9"(: :r1   r!  SmallThinkerForCausalLMc                  z   ^  \ rS rSr% \R
                  R                  rU 4S jrSr	S\
S'   S	S jrU 4S jrSrU =r$ )
SmallThinkerModelii   c                  > [         TU ]  5         U R                  R                  SU R                  R                  S5      5      =nb  U R                  R                  U5        U R                  R                  SU R                  R                  S5      5      =nb  U R                  R                  U5        U R                  R                  S5      =nbN  U R                  R                  U5        U R                  R                  U5        [        R                  SU 35        U R                  R                  S5      (       a4  U R                  R                  [        R                  R                  5        O3U R                  R                  [        R                  R                  5        U R                  R                  S5      =(       d    0 nUR                  S	UR                  S
5      5      S:X  au  SU;   ao  U R                  R!                  [        R"                  R$                  5        U R                  R'                  US   5        U R                  R)                  US   5        U R                  R                  S5      nU(       aO  U HH  nUS:w  d  M  U R                  R                  S5      nU(       a  U R                  R+                  U5          g    g g )Nr  moe_num_primary_expertsr  moe_num_active_primary_expertsmoe_ffn_hidden_sizer   moe_primary_router_apply_softmaxr  r  r   r  r  r  sliding_window_layoutr   sliding_window_size)r  r   rL   r   rN   r  r  r>  r  rg   rh   r1
  ri   r2
  r4
  r3
  r  r  r  r  r  r]  )	rt   r  r  rv  r  r<  r=  r\  r  s	           r2   r   %SmallThinkerModel.set_gguf_parametersm   s9   #%))-9I9IJc9deeIr--i8"ll../DdllFVFVWwFxyyN  G22>B%)\\%5%56K%LL!Y;;<QR445JKKK=>S=TUVLL?@@33D4M4M4U4UV33D4M4M4U4UV ||''7=2K)9)9&)ABfLQY]iQi2243G3G3L3LM44\(5KL::<Hj;kl $ 0 01H I *6%)\\%5%56K%LN%((;;NK + !r1   Nr_  r  c           	        UR                  S5      S:w  GaC  U R                  R                  SU R                  R                  S5      5      nUc   eU R                  c+  [	        U R
                  5       Vs/ s H  n0 PM     snU l        XR                  U   U'   [        U R                  U   5      US-  :  a  / nS H  n/ n[	        U5       H@  n	SU SU	 S	U S
3n
UR                  U R                  U   U
   5        U R                  U   U
	 MB     [        R                  " USS9nSU SU S
3nU R                  U5      nUR                  X45        M     U$ / $ U R                  U5      U4/$ s  snf )Nr  r  r  r8  r!   )downr%  r&  r  r  r	  r  r   r  )re  rL   r   r  r.  rW   r   r~  r   ri  r   r  s                r2   r    SmallThinkerModel.modify_tensors   s~   99Y2%((8H8HIb8cdI?"?}}$-243C3C-D E-D-D E'1MM#t$4==%&)a-746 5F*,E$Y/"/u4NseSTU[T\\c dT]]3%7%>? MM#.u5  0
 "'U!:J$1#6PQWPXX_"`K#33K@HNNH#9: 5 	%%d+Z8997 !Fs   5E.c                   > [         TU ]  5         U R                  bR  U R                   VVs/ s H  oR                  5         H  o"PM     M     nnn[	        U5      S:  a  [        SU 35      eg g s  snnf r  r  r  s       r2   rV  !SmallThinkerModel.prepare_tensors   r  r  r  r  )r&   r'   r(   r)   ri   r  SMALLTHINKERrU   r   r  r  r   rV  r0   rR  rS  s   @r2   r6  r6  i   s6    --J> 04H,3":HD Dr1   r6  c                  d    \ rS rSr\R
                  R                  rSrSr	Sr
Sr\S	S j5       rSrg)
r  i   Mistralr  TFc                   [         c   S5       e[        U R                  [        [        45      (       d   S[        U R                  5       35       eU R                  R                  [         R                  :X  a  gU R                  R                  [         R                  :X  a  U R                  [        R                  :X  a  gU R                  R                  [         R                  :X  a  U R                  [        R                  :X  a  gU R                  R                  [         R                  :X  a  U R                  [        R                  :X  a  gU R                  R                  [         R                  :X  a  U R                  [        R                  :X  a  gU R                  R                  [         R                  :X  a  SnOZU R                  R                  [         R                  :X  a  S	nO/[!        S
U R                   SU R                  R                   35      eX-  nUR#                  5       (       d  [%        SU 35      e['        USSS9 nUR)                  5       nS S S 5        U$ ! , (       d  f       W$ = f)Nzmistral_common is not installedz3Expected Tekkenizer or SentencePieceTokenizer, got z
mistral-v1z
mistral-v3zmistral-v3-tekkenz
mistral-v7zmistral-v7-tekkenz)Mistral-Small-3.2-24B-Instruct-2506.jinjaz)unsloth-mistral-Devstral-Small-2507.jinjazUnknown tokenizer type: z and version zTemplate file not found: r   r   r   )r   r   r7  r   r   r   r  v1v3r  r   spmrx  v7v11v13r   r3  r  r   r  )r  templates_dirtemplate_filer  r   r  s         r2   r  (MistralModel.get_community_chat_template   s   +N-NN+%//J8N+OPP 	
A$uBWAXY	
P ??""&6&9&99__$$(8(;(;;@T@TXlXpXp@p__$$(8(;(;;@T@TXlXsXs@s&__$$(8(;(;;@T@TXlXpXp@p__$$(8(;(;;@T@TXlXsXs@s&__$$(8(<(<<GM__$$(8(<(<<GM78L8L7M][`[j[j[r[rZstuu%5##%%#&?$OPP-w71vvxH 8  87 s   I((
I7r%   N)r  r   rN  r   )r&   r'   r(   r)   ri   r  r  rU   rP   r  rY   r  r  r  r0   r%   r1   r2   r  r     s8    &&JJGL r1   r  c                  H   ^  \ rS rSrSrSrSrU 4S jrSS	U 4S jjjrSr	U =r
$ )
PixtralModeli   Pixtralr  Tc                  > [         TU ]  5         U R                  R                  [        R
                  R                  5        U R                  R                  U R                  S/5      5        U R                  R                  U R                  S/5      5        U R                  R                  S5        U R                  S/5      S:X  a,  U R                  R                  U R                  S/5      5        g g )Nr  r  Tmm_projector_idpatch_merger  )r  r   rN   r  ri   r	  r
  r  r   r   r{  r  r  r(  s    r2   r    PixtralModel.set_gguf_parameters   s    #%001I1I1Q1QR;;j\*	
 	++D,<,<l^,LM,,T2 ./0MA::  "6!78 Br1   c                >   > US:X  a  gUS:X  a  g[         TU ]  X5      $ )Nz#vision_language_adapter.w_in.weightzmm.1.weightz$vision_language_adapter.w_out.weightzmm.2.weight)r  r   )rt   rd   r   r  s      r2   r   PixtralModel.map_tensor_name   s+    88 ;; w&t::r1   r%   r  r  )r&   r'   r(   r)   rP   r  rY   r   r   r0   rR  rS  s   @r2   rR  rR     s"    JG"; ;r1   rR  c                  F   \ rS rSr% \R
                  rS\S'   S\S'   \R                  \	R                  \R                  \	R                  \R                  \	R                  0rS\S'   \R                  \R                  \R                  \R                  \R                  \R                   \R"                  \R                  \R$                  \R&                  \R(                  \R*                  S.rS	\S
'   SS jr\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)rp   i!  torch.dtyper   z
torch.Sizer!  zdict[torch.dtype, type]
_dtype_map)F64r#  rA  r?  I64I32I16U8I8BOOLF8_E4M3F8_E5M2zdict[str, torch.dtype]_dtype_str_mapc                    U R                   U R                     n[        R                  " [        R                  R	                  XR
                  5      U 4S S9$ )Nc                "    U R                  5       $ rb   )r   r  s    r2   <lambda>'LazyTorchTensor.numpy.<locals>.<lambda>-!  s
    AGGIr1   metar  r  )r\  r   ri   LazyNumpyTensormeta_with_dtype_and_shaper!  )rt   r   s     r2   r   LazyTorchTensor.numpy(!  sG    

+##%%??zzR%
 	
r1   c                ,    [         R                  " X!SS9$ )Nrm  )r  r   r   )r   empty)r   r   r!  s      r2   ro  )LazyTorchTensor.meta_with_dtype_and_shape0!  s    {{6BBr1   c                    U R                   UR                  5          n[        UR                  5       5      nU " U R	                  X#5      U4S S9n[        [        R                  U5      $ )Nc                    U S S  $ rb   r%   ri  s    r2   rj  8LazyTorchTensor.from_safetensors_slice.<locals>.<lambda>8!  s    fghifjr1   rl  )rf  	get_dtypetuple	get_shapero  r   r   r   )r   st_slicer   r!  rG   s        r2   r   &LazyTorchTensor.from_safetensors_slice4!  s[    ""8#5#5#78!&x'9'9';!<55eC8+\jkELL$''r1   c                   ^^ U R                   UR                     mUR                  mU R                  TT5      nU " X!4UU4S jS9n[	        [
        R                  U5      $ )Nc                h   > [         R                  " U R                  5       TS9R                  T5      $ )Nr  )r   
frombufferr   r  )r   r   r!  s    r2   rj  4LazyTorchTensor.from_remote_tensor.<locals>.<lambda>@!  s)    EDTDTUVU[U[U]ejDkDsDstyDzr1   rl  )rf  r   r!  ro  r   r   r   )r   rs   rm  rG   r   r!  s       @@r2   rq   "LazyTorchTensor.from_remote_tensor;!  sW    ""=#6#67##,,UE:#3:z{ELL$''r1   r%   Nc                    AUc  0 nU[         R                  R                  L a  US   R                  5       $ U R                  U5      " U0 UD6$ re  )r   r   r   _wrap_fn)r   r  typesr  r  s        r2   __torch_function__"LazyTorchTensor.__torch_function__C!  sJ    >F5<<%%%7==?"||D!42622r1   )r~   zgguf.LazyNumpyTensor)r   r[  r!  ztuple[int, ...]r~   r   )rz  r   r~   r   )rs   zgguf.utility.RemoteTensor)r%   N)r&   r'   r(   r)   r   r   _tensor_typer  r   rJ  r  rK  r\  float64bfloat16int64int32int16int8rC   float8_e4m3fnfloat8_e5m2rf  r   r  ro  r   rq   r  r0   r%   r1   r2   rp   rp   !  s   <<L 	rzzrzzRXX+J'  }}}}}}{{{{{{kkjj

&&$$.N* $
 C C ( ( ( ( 	3 	3r1   rp   c                 X   [         R                  " SS9n U R                  SSSS9  U R                  S[        SS	9  U R                  S
[        / SQSSS9  U R                  SSSS9  U R                  S[        SSS9  U R                  SSSS9  U R                  SSSS9  U R                  S[        S SS9  U R                  SSSS9  U R                  S[
        SS S9  U R                  S![        S"S#S9  U R                  S$SS%S9  U R                  S&SS'S9  U R                  S([        S)S	9  U R                  S*SS+S9  U R                  S,SS-S9  U R                  S.SS/S9  U R                  S0SS1S9  U R                  5       nUR                  (       d  UR                  c  U R                  S25        U$ )3Nz5Convert a huggingface model to a GGML compatible file)descriptionz--vocab-only
store_truezextract only the vocab)actionhelpz	--outfilezSpath to write to; default: based on input. {ftype} will be replaced by the outtype.)r   r  z	--outtypef32f16bf16q8_0tq1_0tq2_0autor  zoutput format - use f32 for float32, f16 for float16, bf16 for bfloat16, q8_0 for Q8_0, tq1_0 or tq2_0 for ternary, and auto for the highest-fidelity 16-bit float type depending on the first loaded tensor type)r   choicesr  r  z--bigendianz'model is executed on big endian machinerw   zJdirectory containing model file or huggingface repository ID (if --remote)?)r   r  nargsz--use-temp-filez^use the tempfile library while processing (helpful when running out of memory, process killed)z	--no-lazyz\use more RAM by computing all outputs before writing (use in case lazy evaluation is broken)z--model-namezname of the model)r   r  r  z	--verbosezincrease output verbosityz--split-max-tensorsr   zmax tensors in each splitz--split-max-size0zmax size per split N(M|G)z	--dry-runzConly print out a split plan and exit, without writing any new filesz--no-tensor-first-splitz;do not add tensors to the first split (disabled by default)z
--metadataz9Specify the path for an authorship metadata override filez--print-supported-modelszPrint the supported modelsz--remoteaq  (Experimental) Read safetensors file remotely without downloading to disk. Config and tokenizer files will still be downloaded. To use this feature, you need to specify Hugging Face model repo name instead of a local directory. For example: 'HuggingFaceTB/SmolLM2-1.7B-Instruct'. Note: To access gated repo, set HF_TOKEN environment variable to your Hugging Face token.z--mmprojz(Experimental) Export multimodal projector (mmproj) for vision models. This will only work on some vision models. A prefix 'mmproj-' will be added to the output file name.z--mistral-formatz9Whether the model is stored following the Mistral format.z+the following arguments are required: model)
argparseArgumentParseradd_argumentr   r   rV   
parse_argsprint_supported_modelsrw   r  )parserr  s     r2   r  r  P!  sj   $$KMF
|%   $b   #'_in a   l6   cY  
 ,m   Lk   S$    L(   C(   c(   LR   !,J   4H   "<)   < A   < {   <H  
 D&&4::+=BCKr1   c                   U R                  S5      (       a  [        U S S 5      S-  nOU R                  S5      (       a  [        U S S 5      S-  S-  nO^U R                  S5      (       a  [        U S S 5      S-  S-  S-  nO0U R                  5       (       a  [        U 5      nO[        SU  S35      eUS:  a  [        SU  S	35      eU$ )
NKr  r  MGzInvalid split size: z5, must be a number, optionally followed by K, M, or Gr   z, must be positive)r  rV   	isnumericr   )	split_strr   s     r2   split_str_to_n_bytesr  !  s    #	#2$&			C	 	 	#2$&-			C	 	 	#2$&-4						N/	{:opqq1u/	{:LMNNHr1   c                   U R                  S0 5      nU R                  S0 5      nS nU R                  S5      =nb  [        U5      S:  a  US   nOSU ;   a  U S   R                  SS5      S-   nU[        R                  :X  a  UR                  S5      b	  US   S   nO.U[        R                  :X  a  UR                  S5      b  US   S   nUc  [        S	5      eU$ )
Nr  rk  r+  r   ssm_cfglayerMambaForCausalLMz#Failed to detect model architecture)r   r   r4   r6   r7   r   )rL   r  r  rk  r|   archess         r2   r  r  !  s     ++mR0KKK4MD++o..;Faay	g	y!%%gw7-G Y^^#(H(T?+A.	y''	'M,=,=o,N,Z_-a0|>??Kr1   c                 >   [        5       n U R                  (       a?  [        R                  S5        [        R                  5         [        R                  " S5        U R                  (       a#  [        R                  " [        R                  S9  O"[        R                  " [        R                  S9  U R                  (       a?  U R                  nSSKJn  U" U/ SQS9n[#        U5      n[        R%                  SU 35        OS n[#        U R                  5      nUR'                  5       (       d/  [        R                  SU S	35        [        R                  " S
5        [(        R*                  R,                  [(        R*                  R.                  [(        R*                  R0                  [(        R*                  R2                  [(        R*                  R4                  [(        R*                  R6                  [(        R*                  R8                  S.nU R:                  S:  =(       d    U R<                  S:g  nU R>                  (       a2  U(       a+  [        R                  S5        [        R                  " S
5        U R@                  b  U R@                  nO+U(       a"  [#        SURC                  SS5      -   S-   5      nOUn[        R%                  SURD                   35        U RF                  (       a&  SURD                  ;  a  [        RI                  US5      nU RJ                  n[L        RN                  " 5          XPRP                     n	U RF                  (       a  [R        RT                  O[R        RV                  n
[        RY                  XH5      nU(       d8  [[        X5      n[        R%                  SU 35         [        R]                  XS9nO7U RF                  (       a   URa                  S5      c   S5       e[b        nO[d        nW" XIUU Rf                  U R>                  U Rh                  U Rj                  U Rl                  U R:                  [o        U R<                  5      U Rp                  U Rr                  US9nU Rt                  (       aH  [        R%                  S5        URw                  5         [        R%                  SURx                   35        Ox[        R%                  S5        UR{                  5         U(       a(  URx                  R|                   [~        R                   3OURx                  n[        R%                  SU 35        S S S 5        g ! [^         a3    [        R                  SU S35        [        R                  " S
5         GNf = f! , (       d  f       g = f) NzSupported models:r   )level)snapshot_download)LICENSEz*.jsonz*.mdz*.txtr  )repo_idallow_patternsz#Downloaded config and tokenizer to zError: z is not a directoryr   r  r  z*Error: Cannot use temp file when splittingz.//-z-{ftype}.ggufzLoading model: mmprojzmmproj-zModel architecture: r  zModel z is not supportedr^  z&This model does not support multimodal)
rD   rF   rZ   rR   rP   r[   r\   r]   r^   rT   zExporting model vocab...z%Model vocab successfully exported to zExporting model...zModel successfully exported to )Ar  r  rg   r  r<   r  r  r  verboseloggingbasicConfigDEBUGINFOremoterw   huggingface_hubr  r   rh   r  ri   r   r@  r   r   rB  r=  r>  r   r[   r\   rF   outfiler4  rd   r  r   mistral_formatr   inference_modeouttyper4   r7   r6   r   r  r  r   r   rR  r  	bigendianno_lazyra  rP   r  r]   no_tensor_first_splitrf  rn  rB   rx  r  r{  sep)r  
hf_repo_idr  	local_dirr?   	ftype_mapis_splitrB   rY   r  r  rL   model_architecturemodel_classmodel_instanceout_paths                   r2   mainr  !  s	   <D""()))+||'--0',,/{{ZZ
5%TV	 O	9)EF
$	wyk)<=> !!))!!,,""..""..##00##00""**0I %%)GT-@-@C-GHhAB||LL		
 2 23 <<NO		
KK/)..!123{{9>>)!88INI++				-)-Y%%)..
((F !7!LKK./A.BCD'??@R?j [[;;/0<f>ff<&K&K$YY37>>QUQcQc+/<<7;}}QUQ`Q`7;7M7M4HI\I\4]gkgsgs7;7Q7Q8B' ??KK23&&(KK?@X@X?YZ[KK,-  "GO.2299:266(CUcUmUmHKK9(DEI 
 	 ' v&8%99JKL 
 	s2   5A?V5UE=V9VV
VV
V__main__)r~   zargparse.Namespace)r  r   r~   rV   )rL   rK   r  r4   r~   r   rP  )
__future__r   r  r  r  r   r   r{  r  r  enumr   pathlibr   hashlibr   typingr   r   r	   r
   r   r   r   r   r   r   	itertoolsr   r*  r   r  r   rJ  r   r   r  r{   insertr   r  r  ri   
gguf.vocabr   r   %mistral_common.tokens.tokenizers.baser   +mistral_common.tokens.tokenizers.multimodalr   r   'mistral_common.tokens.tokenizers.tekkenr   .mistral_common.tokens.tokenizers.sentencepiecer   	getLoggerrg   r   r4   r8   r<   r   r   r  r  r  r  r  r  r  r*  r;  rA  rW  r|  r  r  r  r3  rO  rX  r^  r  r  r  r  r  r  r  r.  rE  rY  ro  r  r  r  r  r   r  r$  r)  r<  rI  rP  rm  rw  r  r  r  r  r  r"  r-  r<  rc  rj  rv  r  r  r  r  r  r  r	  r&	  rU	  ra	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r 
  rG
  rS
  rb
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r  r-  rZ  rn  r{  r  r  r  r  r  r  r  r  r!  r6  r  rR  LazyBaserp   r  r  r  r  r&   r%   r1   r2   <module>r     s.   # 
     	 	 
    u u u  #   "**$HHOOAs4>009<=>  9 B Q >
 
		<	(
g  
 :%67lY lY^N<	 N<by9) y9x ()59 5 *5p &55 5 65p $%((y (( &((V &'J J (JD )+@AL7I L7 BL7^ '(g
) g
 )g
T '92:) 2: :2:j +,3Y 3 -3  *+<) < ,<~ )+EGfgV@I V@ hV@r #%kD kDkD\ &'
m 
m (
m #&N{ N	Nb 68YZ;  [B 45'=* '= 6'=T 45  6, 67=J = 8= '(m"	 m" )m"` '(%%) %% )%%P %&1:	 1: '1:h %&A	 A 'AH ()3:9 3: *3:l )*1
I 1
 +1
h %&&3	 &3 '&3R L"46Z[A A \A< L!BA BA "BAJ N#aA aA $aAH *++:I +: ,+:\ -.SD} SD /SDl %(	:9 ::4 N$EGklN N mNb &'8=( 8= (8=v '(J J )JZ %&"59 "5 '"5J )*FDI FD +FDR &'' ' (' )*P4M P4 +P4f %&	  '> $%2	 2 &2. %&n@I n@ 'n@b '(5D- 5D )5Dp &',( ,( (,(^ ')<=e() e( >e(P *+%(Y %( ,%(P *+n>Y n> ,n>b *+::Y :: ,::z K!24DFefX4	 X4 gX4v %'>@ef=i = g=& N$FG'=9 '= H'=T $%N9Y N9 &N9b I0RS=i = T=6 %'LM=i = N=0 &'/: /: (/:d '(+:) +: )+:\ ')IJ8:) 8: K8:v 450 0 60f 56[=; [= 7[=| +,,i , -, &'E% E% (E%P +,2#j 2# -2#j &(:;s) s) <s)l +,'+* '+ -'+T &(:<TUR( R( VR(j '(Y%) Y% )Y%x &'qD qD (qDh '(JY J )J" ()J9 J *J" %&
%&:	 : ' ':4 &'' ' (' &'8D 8D (8Dv O%:;ii i <i" ()G79 G7 *G7T '(SD) SD )SDl )*UDI UD +UDp +,
+,
45uDi uD 6 - -uDp &'= = (=6 $%"y " &", '(
01
12
23E:i E: 4 3 2 )E:P $%D:Y D: &D:N %&OA	 OA 'OAd %'FG#=	 #= H#=L ()AD9 AD *ADH $n6WXW:9 W: YW:t )*%:I %: +%:P '(B) B )BJ ()A9 A *AH ()K: K *KB +-JK2=l 2= L2=j 13EFr$o r$ Gr$j +,gDi gD -gDT 78
*+%Y % , 9%P O$~I ~ %~ 89&:+ &: :&:R O$T"5 T %T 563!4 3 73 )*gNK gN +gNT -.IDi ID /IDX /0X:9 X: 1X:v ()>: > *> '(xs) xs )xsv %&
%&&:	 &: ' '&:R -.OD	 OD /ODd&: &R;# ;BG3dmm G3TPf$,`FF zF r1   