MCPcopy Index your code
hub / github.com/modelscope/modelscope / smart_tokenizer_and_embedding_resize

Function smart_tokenizer_and_embedding_resize

tools/weight_diff.py:32–51  ·  view source on GitHub ↗

Resize tokenizer and embedding. Note: This is the unoptimized version that may make your embedding size not be divisible by 64.

(special_tokens_dict: Dict, tokenizer,
                                         model)

Source from the content-addressed store, hash-verified

30
31
32def smart_tokenizer_and_embedding_resize(special_tokens_dict: Dict, tokenizer,
33 model):
34 """Resize tokenizer and embedding.
35
36 Note: This is the unoptimized version that may make your embedding size not be divisible by 64.
37 """
38 num_new_tokens = tokenizer.add_special_tokens(special_tokens_dict)
39 model.resize_token_embeddings(len(tokenizer))
40
41 if num_new_tokens > 0:
42 input_embeddings = model.get_input_embeddings().weight.data
43 output_embeddings = model.get_output_embeddings().weight.data
44
45 input_embeddings_avg = input_embeddings[:-num_new_tokens].mean(
46 dim=0, keepdim=True)
47 output_embeddings_avg = output_embeddings[:-num_new_tokens].mean(
48 dim=0, keepdim=True)
49
50 input_embeddings[-num_new_tokens:] = input_embeddings_avg
51 output_embeddings[-num_new_tokens:] = output_embeddings_avg
52
53
54def make_same_shape(model_raw: Model, model_convert: Model, tokenizer_raw,

Callers 1

make_same_shapeFunction · 0.85

Calls 4

get_input_embeddingsMethod · 0.45
get_output_embeddingsMethod · 0.45
meanMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…