Spaces:
Sleeping
Sleeping
# src/upload_to_hf.py | |
from transformers import PreTrainedTokenizerFast | |
import torch | |
from model import TransformerModel | |
from utils import load_vocab | |
import json | |
import os | |
# Configuration | |
MODEL_PATH = 'models/3ed0k4_model_epoch10.pth' # Update this path | |
VOCAB_PATH = 'vocab.json' | |
TOKENIZER_DIR = 'tokenizer' | |
HF_MODEL_REPO = '3ed0k4/3ed0k4' # Replace with your Hugging Face repo | |
# Initialize tokenizer | |
def init_tokenizer(vocab): | |
tokenizer = PreTrainedTokenizerFast(tokenizer_file=None) | |
tokenizer.add_tokens(list(vocab.keys())) | |
tokenizer.save_pretrained(TOKENIZER_DIR) | |
print(f"Tokenizer saved to {TOKENIZER_DIR}/") | |
# Prepare model | |
def prepare_model(vocab_size, embed_size, num_heads, hidden_dim, num_layers, dropout, model_path): | |
model = TransformerModel( | |
vocab_size=vocab_size, | |
embed_size=embed_size, | |
num_heads=num_heads, | |
hidden_dim=hidden_dim, | |
num_layers=num_layers, | |
dropout=dropout | |
) | |
model.load_state_dict(torch.load(model_path, map_location=torch.device('cpu'))) | |
model.eval() | |
# Save model | |
model.save_pretrained('.') # Saves state_dict; Hugging Face expects more | |
torch.save(model.state_dict(), 'pytorch_model.bin') | |
print("Model weights saved as pytorch_model.bin") | |
# Create config.json | |
def create_config(vocab_size, embed_size, num_heads, hidden_dim, num_layers, dropout): | |
config = { | |
"vocab_size": vocab_size, | |
"embed_size": embed_size, | |
"num_heads": num_heads, | |
"hidden_dim": hidden_dim, | |
"num_layers": num_layers, | |
"dropout": dropout | |
} | |
with open('config.json', 'w') as f: | |
json.dump(config, f, indent=4) | |
print("Config saved as config.json") | |
if __name__ == "__main__": | |
# Load vocabulary | |
vocab = load_vocab(VOCAB_PATH) | |
vocab_size = len(vocab) | |
# Initialize tokenizer | |
init_tokenizer(vocab) | |
# Model parameters | |
embed_size = 256 | |
num_heads = 8 | |
hidden_dim = 512 | |
num_layers = 4 | |
dropout = 0.1 | |
# Prepare and save model | |
prepare_model(vocab_size, embed_size, num_heads, hidden_dim, num_layers, dropout, MODEL_PATH) | |
# Create config.json | |
create_config(vocab_size, embed_size, num_heads, hidden_dim, num_layers, dropout) | |
print("Model preparation for Hugging Face completed.") | |