Update copy_weights.py
Browse files- copy_weights.py +14 -54
copy_weights.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
# =============================================================================
|
| 2 |
-
# COPYRIGHT Β© 2025 Konstantin Vladimirovich Grabko. ALL RIGHTS RESERVED.
|
| 3 |
# CMS Manhattan JiRack Technology β PATENT PENDING
|
| 4 |
#
|
| 5 |
# This code is proprietary.
|
|
@@ -18,24 +18,18 @@
|
|
| 18 |
#
|
| 19 |
# =============================================================================
|
| 20 |
|
|
|
|
| 21 |
import torch
|
| 22 |
from JiRackTernary_new import JiRackConfig, JiRackTernary1B
|
| 23 |
from transformers import AutoTokenizer
|
|
|
|
| 24 |
import os
|
| 25 |
|
| 26 |
print("π Copying embeddings and lm_head...")
|
| 27 |
|
| 28 |
old_model_path = "."
|
| 29 |
-
new_tokenizer_path = "./
|
| 30 |
-
|
| 31 |
-
from transformers import AutoTokenizer
|
| 32 |
-
import os
|
| 33 |
-
|
| 34 |
-
print("π Copying embeddings and lm_head...")
|
| 35 |
-
|
| 36 |
-
old_model_path = "." ## curent model
|
| 37 |
-
new_tokenizer_path = "./jirack_code_tokenizer" ## new JiRack tokenizer
|
| 38 |
-
save_path = "./JiRack_init_model_with_new_vocab" ## new safe bank model
|
| 39 |
|
| 40 |
os.makedirs(save_path, exist_ok=True)
|
| 41 |
|
|
@@ -43,57 +37,23 @@ os.makedirs(save_path, exist_ok=True)
|
|
| 43 |
tokenizer = AutoTokenizer.from_pretrained(new_tokenizer_path)
|
| 44 |
new_vocab_size = len(tokenizer)
|
| 45 |
|
| 46 |
-
|
| 47 |
-
config = JiRackConfig()
|
| 48 |
-
model = JiRackTernary1B(config)
|
| 49 |
-
|
| 50 |
-
# Load old model weights
|
| 51 |
-
old_state = torch.load(f"{old_model_path}/pytorch_model.bin", map_location="cpu")
|
| 52 |
-
|
| 53 |
-
old_vocab_size = 128256
|
| 54 |
-
|
| 55 |
-
with torch.no_grad():
|
| 56 |
-
# Copy old weights
|
| 57 |
-
model.token_emb.weight[:old_vocab_size] = old_state['token_emb.weight'][:old_vocab_size]
|
| 58 |
-
model.lm_head.weight[:old_vocab_size] = old_state['lm_head.weight'][:old_vocab_size]
|
| 59 |
-
|
| 60 |
-
# Initialize the new 3 tokens (FIM markers) with mean value
|
| 61 |
-
mean_emb = old_state['token_emb.weight'].mean(dim=0)
|
| 62 |
-
model.token_emb.weight[old_vocab_size:] = mean_emb
|
| 63 |
-
model.lm_head.weight[old_vocab_size:] = mean_emb
|
| 64 |
-
|
| 65 |
-
print(f"β
Copied {old_vocab_size} tokens")
|
| 66 |
-
print(f"β
Initialized {new_vocab_size - old_vocab_size} new tokens")
|
| 67 |
-
|
| 68 |
-
# Save
|
| 69 |
-
torch.save(model.state_dict(), f"{save_path}/pytorch_model.bin")
|
| 70 |
-
tokenizer.save_pretrained(save_path)
|
| 71 |
-
|
| 72 |
-
print(f"\nπ Done! New model saved to: {save_path}")
|
| 73 |
-
print("Use this folder as the starting weights for training from scratch.")izer_fixed"
|
| 74 |
-
save_path = "./JiRack_init_new_vocab"
|
| 75 |
-
|
| 76 |
-
os.makedirs(save_path, exist_ok=True)
|
| 77 |
-
|
| 78 |
-
# Load new tokenizer
|
| 79 |
-
tokenizer = AutoTokenizer.from_pretrained(new_tokenizer_path)
|
| 80 |
-
new_vocab_size = len(tokenizer)
|
| 81 |
|
| 82 |
-
# Create new model
|
| 83 |
config = JiRackConfig()
|
| 84 |
model = JiRackTernary1B(config)
|
| 85 |
|
| 86 |
-
# Load old model
|
| 87 |
-
old_state =
|
| 88 |
|
| 89 |
old_vocab_size = 128256
|
| 90 |
|
| 91 |
with torch.no_grad():
|
| 92 |
# Copy old weights
|
| 93 |
-
model.token_emb.weight[:old_vocab_size] = old_state['token_emb.weight'][:old_vocab_size]
|
| 94 |
-
model.lm_head.weight[:old_vocab_size] = old_state['lm_head.weight'][:old_vocab_size]
|
| 95 |
|
| 96 |
-
# Initialize
|
| 97 |
mean_emb = old_state['token_emb.weight'].mean(dim=0)
|
| 98 |
model.token_emb.weight[old_vocab_size:] = mean_emb
|
| 99 |
model.lm_head.weight[old_vocab_size:] = mean_emb
|
|
@@ -101,8 +61,8 @@ with torch.no_grad():
|
|
| 101 |
print(f"β
Copied {old_vocab_size} tokens")
|
| 102 |
print(f"β
Initialized {new_vocab_size - old_vocab_size} new tokens")
|
| 103 |
|
| 104 |
-
# Save
|
| 105 |
-
|
| 106 |
tokenizer.save_pretrained(save_path)
|
| 107 |
|
| 108 |
print(f"\nπ Done! New model saved to: {save_path}")
|
|
|
|
| 1 |
# =============================================================================
|
| 2 |
+
# COPYRIGHT Β© 2025-2026 Konstantin Vladimirovich Grabko. ALL RIGHTS RESERVED.
|
| 3 |
# CMS Manhattan JiRack Technology β PATENT PENDING
|
| 4 |
#
|
| 5 |
# This code is proprietary.
|
|
|
|
| 18 |
#
|
| 19 |
# =============================================================================
|
| 20 |
|
| 21 |
+
|
| 22 |
import torch
|
| 23 |
from JiRackTernary_new import JiRackConfig, JiRackTernary1B
|
| 24 |
from transformers import AutoTokenizer
|
| 25 |
+
from safetensors.torch import load_file, save_file
|
| 26 |
import os
|
| 27 |
|
| 28 |
print("π Copying embeddings and lm_head...")
|
| 29 |
|
| 30 |
old_model_path = "."
|
| 31 |
+
new_tokenizer_path = "./jirack_code_tokenizer"
|
| 32 |
+
save_path = "./JiRack_init_model_with_new_vocab"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
os.makedirs(save_path, exist_ok=True)
|
| 35 |
|
|
|
|
| 37 |
tokenizer = AutoTokenizer.from_pretrained(new_tokenizer_path)
|
| 38 |
new_vocab_size = len(tokenizer)
|
| 39 |
|
| 40 |
+
print(f"New vocab size: {new_vocab_size}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
+
# Create new model
|
| 43 |
config = JiRackConfig()
|
| 44 |
model = JiRackTernary1B(config)
|
| 45 |
|
| 46 |
+
# Load old model (SafeTensors)
|
| 47 |
+
old_state = load_file(f"{old_model_path}/model.safetensors")
|
| 48 |
|
| 49 |
old_vocab_size = 128256
|
| 50 |
|
| 51 |
with torch.no_grad():
|
| 52 |
# Copy old weights
|
| 53 |
+
model.token_emb.weight[:old_vocab_size] = old_state['token_emb.weight'][:old_vocab_size].clone()
|
| 54 |
+
model.lm_head.weight[:old_vocab_size] = old_state['lm_head.weight'][:old_vocab_size].clone()
|
| 55 |
|
| 56 |
+
# Initialize new 3 tokens (FIM) with mean value
|
| 57 |
mean_emb = old_state['token_emb.weight'].mean(dim=0)
|
| 58 |
model.token_emb.weight[old_vocab_size:] = mean_emb
|
| 59 |
model.lm_head.weight[old_vocab_size:] = mean_emb
|
|
|
|
| 61 |
print(f"β
Copied {old_vocab_size} tokens")
|
| 62 |
print(f"β
Initialized {new_vocab_size - old_vocab_size} new tokens")
|
| 63 |
|
| 64 |
+
# Save in SafeTensors
|
| 65 |
+
save_file(model.state_dict(), f"{save_path}/model.safetensors")
|
| 66 |
tokenizer.save_pretrained(save_path)
|
| 67 |
|
| 68 |
print(f"\nπ Done! New model saved to: {save_path}")
|