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.")