@@ -26,61 +26,44 @@ pub struct BlkStorage<T> {
2626
2727impl < ' a > Storage < & ' a [ u8 ] > {
2828 pub fn from_gguf ( gguf : & GGufModel < ' a > ) -> Self {
29- macro_rules! meta {
30- ( $key: ident) => {
31- gguf. $key( ) . unwrap( )
32- } ;
33- ( $key: ident; $default: expr) => {
34- match gguf. $key( ) {
35- Ok ( val) => val,
36- Err ( gguf:: GGufMetaError :: NotExist ) => $default,
37- Err ( e) => panic!( "failed to read meta: {e:?}" ) ,
38- }
39- } ;
40- }
41- macro_rules! tensor {
42- ( $name: expr) => {
43- & gguf. tensors[ & * $name]
44- } ;
45- }
46-
47- let token_embd = tensor ! [ "token_embd.weight" ] ;
48- let output_norm = tensor ! [ "output_norm.weight" ] ;
49- let qkv0 = tensor ! [ "blk.0.attn_qkv.weight" ] ;
29+ use gguf:: { meta, tensor} ;
30+ let token_embd = tensor ! [ gguf => "token_embd.weight" ] ;
31+ let output_norm = tensor ! [ gguf => "output_norm.weight" ] ;
32+ let qkv0 = tensor ! [ gguf => "blk.0.attn_qkv.weight" ] ;
5033 #[ rustfmt:: skip]
5134 let meta = LlamaMeta {
5235 dt_embd : token_embd. ty ,
5336 dt_norm : output_norm. ty ,
5437 dt_mat : qkv0. ty ,
5538
56- nblk : meta ! ( llm_block_count ) ,
57- nctx : meta ! ( llm_context_length ) ,
58- nvoc : meta ! ( tokenizer_ggml_tokens) . len ( ) ,
59- nh : meta ! ( llm_attention_head_count ) ,
60- nkvh : meta ! ( llm_attention_head_count_kv) ,
61- nexp : meta ! ( llm_expert_count ; 0 ) ,
62- nexp_use : meta ! ( llm_expert_used_count ; 0 ) ,
63- d : meta ! ( llm_embedding_length ) ,
64- dh : meta ! ( llm_rope_dimension_count ) ,
65- di : meta ! ( llm_feed_forward_length ) ,
66-
67- epsilon : meta ! ( llm_attention_layer_norm_rms_epsilon; 1e-5 ) ,
68- theta : meta ! ( llm_rope_freq_base ; 1e4 ) ,
39+ nblk : meta ! ( gguf => llm_block_count ) ,
40+ nctx : meta ! ( gguf => llm_context_length ) ,
41+ nvoc : meta ! ( gguf => tokenizer_ggml_tokens) . len ( ) ,
42+ nh : meta ! ( gguf => llm_attention_head_count ) ,
43+ nkvh : meta ! ( gguf => llm_attention_head_count_kv) ,
44+ nexp : meta ! ( gguf => llm_expert_count ; 0 ) ,
45+ nexp_use : meta ! ( gguf => llm_expert_used_count ; 0 ) ,
46+ d : meta ! ( gguf => llm_embedding_length ) ,
47+ dh : meta ! ( gguf => llm_rope_dimension_count ) ,
48+ di : meta ! ( gguf => llm_feed_forward_length ) ,
49+
50+ epsilon : meta ! ( gguf => llm_attention_layer_norm_rms_epsilon; 1e-5 ) ,
51+ theta : meta ! ( gguf => llm_rope_freq_base ; 1e4 ) ,
6952 } ;
7053
7154 #[ rustfmt:: skip]
7255 let blocks = ( 0 ..meta. nblk )
7356 . map ( |i| BlkStorage {
74- attn_norm : tensor ! [ format!( "blk.{i}.attn_norm.weight" ) ] . data ,
75- attn_qkv : tensor ! [ format!( "blk.{i}.attn_qkv.weight" ) ] . data ,
76- attn_o : tensor ! [ format!( "blk.{i}.attn_output.weight" ) ] . data ,
77- ffn_norm : tensor ! [ format!( "blk.{i}.ffn_norm.weight" ) ] . data ,
57+ attn_norm : tensor ! [ gguf => format!( "blk.{i}.attn_norm.weight" ) ] . data ,
58+ attn_qkv : tensor ! [ gguf => format!( "blk.{i}.attn_qkv.weight" ) ] . data ,
59+ attn_o : tensor ! [ gguf => format!( "blk.{i}.attn_output.weight" ) ] . data ,
60+ ffn_norm : tensor ! [ gguf => format!( "blk.{i}.ffn_norm.weight" ) ] . data ,
7861 ffn_gate_inp : if !meta. is_moe ( ) { None }
79- else { Some ( tensor ! [ format!( "blk.{i}.ffn_gate_inp.weight" ) ] . data ) } ,
80- ffn_gate_up : if !meta. is_moe ( ) { tensor ! [ format!( "blk.{i}.ffn_gate_up.weight" ) ] . data }
81- else { tensor ! [ format!( "blk.{i}.ffn_gate_up_exps.weight" ) ] . data } ,
82- ffn_down : if !meta. is_moe ( ) { tensor ! [ format!( "blk.{i}.ffn_down.weight" ) ] . data }
83- else { tensor ! [ format!( "blk.{i}.ffn_down_exps.weight" ) ] . data } ,
62+ else { Some ( tensor ! [ gguf => format!( "blk.{i}.ffn_gate_inp.weight" ) ] . data ) } ,
63+ ffn_gate_up : if !meta. is_moe ( ) { tensor ! [ gguf => format!( "blk.{i}.ffn_gate_up.weight" ) ] . data }
64+ else { tensor ! [ gguf => format!( "blk.{i}.ffn_gate_up_exps.weight" ) ] . data } ,
65+ ffn_down : if !meta. is_moe ( ) { tensor ! [ gguf => format!( "blk.{i}.ffn_down.weight" ) ] . data }
66+ else { tensor ! [ gguf => format!( "blk.{i}.ffn_down_exps.weight" ) ] . data } ,
8467 } )
8568 . collect ( ) ;
8669
0 commit comments