File tree Expand file tree Collapse file tree 2 files changed +14
-6
lines changed Expand file tree Collapse file tree 2 files changed +14
-6
lines changed Original file line number Diff line number Diff line change @@ -299,12 +299,16 @@ def write_tensors(self):
299299                if  self .ftype  !=  gguf .LlamaFileType .ALL_F32  and  extra_f16  and  not  extra_f32 :
300300                    # TODO: cleaner model-specific per-tensor types 
301301                    # NOTE: Q1_3 is only relevant for BitNet 1.58b 
302-                     if  self .ftype  ==  gguf .LlamaFileType .MOSTLY_Q1_3  and  not  any (
303-                         self .match_model_tensor_name (new_name , key , None )
304-                         for  key  in  [
305-                             gguf .MODEL_TENSOR .TOKEN_EMBD ,
306-                             gguf .MODEL_TENSOR .OUTPUT ,
307-                         ]
302+                     if  (
303+                         self .ftype  ==  gguf .LlamaFileType .MOSTLY_Q1_3 
304+                         and  gguf .can_quantize_to_q1_3 (data )
305+                         and  not  any (
306+                             self .match_model_tensor_name (new_name , key , None )
307+                             for  key  in  [
308+                                 gguf .MODEL_TENSOR .TOKEN_EMBD ,
309+                                 gguf .MODEL_TENSOR .OUTPUT ,
310+                             ]
311+                         )
308312                    ):
309313                        data  =  gguf .quantize_q1_3 (data )
310314                        assert  data .dtype  ==  np .uint8 
Original file line number Diff line number Diff line change @@ -126,6 +126,10 @@ def quantize_q8_0(data: np.ndarray):
126126__q1_3_block_size , __q1_3_type_size  =  GGML_QUANT_SIZES [GGMLQuantizationType .Q1_3 ]
127127
128128
129+ def  can_quantize_to_q1_3 (n : np .ndarray ) ->  bool :
130+     return  n .shape [- 1 ] %  __q1_3_block_size  ==  0 
131+ 
132+ 
129133def  __quantize_q1_3_shape_change (s : tuple [int , ...]) ->  tuple [int , ...]:
130134    return  (* s [:- 1 ], s [- 1 ] //  __q1_3_block_size  *  __q1_3_type_size )
131135
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments