
    9i                          S SK r S SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
JrJrJr  S SKJr  SSKJr  S	 rS
 rS rS rS rS rg)    N)get_argsget_tokenizer)initialize_distributed)GLM130B)get_model_parallel_groupget_model_parallel_rankget_model_parallel_world_size)load_checkpoint   )quantizec                 v    U R                  S5      nUR                  SSSS9  UR                  S[        SSS	9  U $ )
zArguments for BMInfBMInfz--bminf
store_truez,Use BMInf to support low resource evaluationactionhelpz--bminf-memory-limit   z$Max memory for model per GPU (in GB)typedefaultr   )add_argument_groupadd_argumentintparsergroups     i/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/glm_130b/initialize.pyadd_bminf_argsr      sV    %%g.E	;  = 
3	  5
 M    c                 |    U R                  S5      nUR                  S[        SS9  UR                  S[        SSS9  g )	NQuantizationz--quantization-bit-width   )r   r   z--from-quantized-checkpointTz#Loading from a quantized checkpointr   )r   r   r   boolr   s     r   add_quantization_argsr$   "   sG    %%n5E	1QG	%2	  4r   c                 H    U R                  S5      nUR                  SSSS9  g )NInitializationz--sequential-initializationr   zTInitialize sequentially in tensor parallel group (reduce CPU RAM for initialization)r   )r   r   r   s     r   add_initialization_argsr'   -   s/    %%&67E	%^	  r   c                     SU l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        S	U l        S
U l	        S
U l
        SU l        U $ )Nr"   F   i 0  i   i L `   i   zicetk-glm-130BpostT	inference)model_parallel_size
num_layershidden_sizeinner_hidden_size
vocab_sizenum_attention_headsmax_sequence_lengthtokenizer_typelayernorm_order	skip_initfp16mode)argss    r   set_up_model_argsr:   8   sb     DDOD"DDO!D#D*D!DDNDIDIKr   c                    [         R                  " SS9n[        U5        [        U5        [	        U5        [
        R                  " U5        U " U5        UR                  5       u  p#U/ SQ-  n[        U5      n[        U5      n[         R                  " S0 [        U5      D[        U5      D6nSUl        [        U5        U$ )NF)add_help)z--model-parallel-size4z--moder,    )argparseArgumentParserr   r$   r'   r   add_model_specific_argsparse_known_argsr   r:   	Namespacevarsdo_trainr   )extra_args_providerr   known	args_listr9   s        r   
initializerI   H   s    $$e4F6&!F###F+..0EFFIIDT"D:T
:d5k:DDM4 Kr   c                    [        U 5      n[        R                  R                  5         [        R                  " 5       n[        [        5       5       GH  n[        5       U:X  GaH  [        U 5      R                  5       nU R                  (       a$  U R                  c   e[        X@R                  5      n[        X@5        U R                  b&  U R                  (       d  [        X@R                  5      nU R                  (       a  SS Kn[        R                  R                  5       S:X  a  [!        SU R"                   S35        [        R$                  R'                  U R&                  5         UR)                  USU R"                  S-  S9nS S S 5        OUR+                  U R&                  5      nU R,                  (       d  GMo  [        R                  R                  [/        5       S9  GM     [        R                  R                  5         [        R                  R                  5       S:X  a&  [!        S[        R                  " 5       U-
  S	 S
35        [        R$                  R1                  5         WR3                  5         UR4                  R6                  nSUR4                  l        [        R8                  " 5          U" [        R:                  " SU R<                  [        R$                  R?                  5       [        R@                  S9[        RB                  " U R<                  [        R$                  R?                  5       [        R@                  S9RE                  SS5      [        RF                  " SSU R<                  U R<                  [        R$                  R?                  5       S9S:  5      t  nS S S 5        XdR4                  l        [        R                  R                  5         XA4$ ! , (       d  f       GNM= f! , (       d  f       NQ= f)Nr   z!> BMInf activated, memory limit: z GBF   )quantizationmemory_limit)r   z> Model initialized in z.1fsTr   )devicedtype)rO   g      ?)$r   torchdistributedbarriertimeranger	   r   r   halffrom_quantized_checkpointquantization_bit_widthr   r
   bminfget_rankprintbminf_memory_limitcudarO   wrappertosequential_initializationr   empty_cacheevaltransformerparallel_outputno_gradonesr3   current_deviceint64arangeviewrandn)r9   	tokenizerstartimodelrZ   original_parallel_output_s           r   initialize_model_and_tokenizerrs   Y   s   d#I	IIKE023"$)DM&&(E--22>>> (C(CD E(**6t?]?] (C(CDzz$$--/14;D<S<S;TTWX ZZ&&t{{3!MM%*%)%<%<%B * DE 43 -)))%%,D,F%GA 4D 
!!#q('		e(;C'@BC	JJ	JJL  %00@@(,E%	JJ((zz002kk	#
 LL((zz002kk# $(42;KK((((zz002 
A 
& )A%	U 43( 
s   *O+;C7O=+
O:	=
P)r?   rU   rR   SwissArmyTransformerr   r   SwissArmyTransformer.argumentsr   SwissArmyTransformer.modelr   SwissArmyTransformer.mpur   r   r	   SwissArmyTransformer.trainingr
   rL   r   r   r$   r'   r:   rI   rs   r>   r   r   <module>ry      sL       8 A .E E : " 4 "Hr   