ggerganov commited on
Commit
6c811ac
·
unverified ·
1 Parent(s): 8b90727

models : fix HF fine-tuned model conversion script (#157)

Browse files
Files changed (1) hide show
  1. models/convert-h5-to-ggml.py +27 -26
models/convert-h5-to-ggml.py CHANGED
@@ -9,27 +9,28 @@ import numpy as np
9
 
10
  from transformers import WhisperForConditionalGeneration
11
 
12
- conv_map = {'self_attn_layer_norm': 'attn_ln',
13
- 'encoder_attn.k_proj': 'attn.key',
14
- 'self_attn.out_proj': 'attn.out',
15
- 'encoder_attn.out_proj': 'cross_attn.out',
16
- 'self_attn.q_proj': 'attn.query',
17
- 'encoder_attn.q_proj': 'cross_attn.query',
18
- 'self_attn.v_proj': 'attn.value',
19
- 'encoder_attn.v_proj': 'cross_attn.value',
20
- 'encoder_attn_layer_norm': 'cross_attn_ln',
21
- 'fc1': 'mlp.0',
22
- 'fc2': 'mlp.2',
23
- 'final_layer_norm': 'mlp_ln',
24
- 'encoder.layer_norm.bias': 'encoder.ln_post.bias',
25
- 'encoder.layer_norm.weight': 'encoder.ln_post.weight',
26
- 'encoder.embed_positions.weight': 'encoder.positional_embedding',
27
- 'decoder.layer_norm.bias': 'decoder.ln.bias',
28
- 'decoder.layer_norm.weight': 'decoder.ln.weight',
29
- 'decoder.embed_positions.weight': 'decoder.positional_embedding',
30
- 'decoder.embed_tokens.weight': 'decoder.token_embedding.weight',
31
- 'proj_out.weight': 'decoder.proj.weight',
32
- }
 
33
 
34
  # ref: https://github.com/openai/gpt-2/blob/master/src/encoder.py
35
  def bytes_to_unicode():
@@ -95,12 +96,12 @@ fout.write(struct.pack("i", 0x67676d6c)) # magic: ggml in hex
95
  fout.write(struct.pack("i", hparams["vocab_size"]))
96
  fout.write(struct.pack("i", hparams["max_source_positions"]))
97
  fout.write(struct.pack("i", hparams["d_model"]))
98
- fout.write(struct.pack("i", hparams["decoder_attention_heads"]))
99
- fout.write(struct.pack("i", hparams["decoder_layers"]))
100
- fout.write(struct.pack("i", hparams["max_length"]))
101
- fout.write(struct.pack("i", hparams["d_model"]))
102
  fout.write(struct.pack("i", hparams["encoder_attention_heads"]))
103
  fout.write(struct.pack("i", hparams["encoder_layers"]))
 
 
 
 
104
  fout.write(struct.pack("i", hparams["num_mel_bins"]))
105
  fout.write(struct.pack("i", use_f16))
106
 
@@ -139,7 +140,7 @@ for name in list_vars.keys():
139
 
140
  if nn[1] == "layers":
141
  nn[1] = "blocks"
142
- if ".".join(nn[3:-1]) == "self_attn.k_proj":
143
  mapped = "attn.key" if nn[0] == "encoder" else "cross_attn.key"
144
  else:
145
  mapped = conv_map[".".join(nn[3:-1])]
 
9
 
10
  from transformers import WhisperForConditionalGeneration
11
 
12
+ conv_map = {
13
+ 'self_attn.k_proj' : 'attn.key',
14
+ 'self_attn.q_proj' : 'attn.query',
15
+ 'self_attn.v_proj' : 'attn.value',
16
+ 'self_attn.out_proj' : 'attn.out',
17
+ 'self_attn_layer_norm' : 'attn_ln',
18
+ 'encoder_attn.q_proj' : 'cross_attn.query',
19
+ 'encoder_attn.v_proj' : 'cross_attn.value',
20
+ 'encoder_attn.out_proj' : 'cross_attn.out',
21
+ 'encoder_attn_layer_norm' : 'cross_attn_ln',
22
+ 'fc1' : 'mlp.0',
23
+ 'fc2' : 'mlp.2',
24
+ 'final_layer_norm' : 'mlp_ln',
25
+ 'encoder.layer_norm.bias' : 'encoder.ln_post.bias',
26
+ 'encoder.layer_norm.weight' : 'encoder.ln_post.weight',
27
+ 'encoder.embed_positions.weight': 'encoder.positional_embedding',
28
+ 'decoder.layer_norm.bias' : 'decoder.ln.bias',
29
+ 'decoder.layer_norm.weight' : 'decoder.ln.weight',
30
+ 'decoder.embed_positions.weight': 'decoder.positional_embedding',
31
+ 'decoder.embed_tokens.weight' : 'decoder.token_embedding.weight',
32
+ 'proj_out.weight' : 'decoder.proj.weight',
33
+ }
34
 
35
  # ref: https://github.com/openai/gpt-2/blob/master/src/encoder.py
36
  def bytes_to_unicode():
 
96
  fout.write(struct.pack("i", hparams["vocab_size"]))
97
  fout.write(struct.pack("i", hparams["max_source_positions"]))
98
  fout.write(struct.pack("i", hparams["d_model"]))
 
 
 
 
99
  fout.write(struct.pack("i", hparams["encoder_attention_heads"]))
100
  fout.write(struct.pack("i", hparams["encoder_layers"]))
101
+ fout.write(struct.pack("i", hparams["max_length"]))
102
+ fout.write(struct.pack("i", hparams["d_model"]))
103
+ fout.write(struct.pack("i", hparams["decoder_attention_heads"]))
104
+ fout.write(struct.pack("i", hparams["decoder_layers"]))
105
  fout.write(struct.pack("i", hparams["num_mel_bins"]))
106
  fout.write(struct.pack("i", use_f16))
107
 
 
140
 
141
  if nn[1] == "layers":
142
  nn[1] = "blocks"
143
+ if ".".join(nn[3:-1]) == "encoder_attn.k_proj":
144
  mapped = "attn.key" if nn[0] == "encoder" else "cross_attn.key"
145
  else:
146
  mapped = conv_map[".".join(nn[3:-1])]