Spaces:
Sleeping
Sleeping
File size: 2,373 Bytes
65224b2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# 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.")
|