| import os
|
| os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
|
| import tensorflow as tf
|
| import numpy as np
|
| from layers import TransformerBlock, PositionalEmbedding, create_causal_mask
|
| from tokenizer import HFTokenizer
|
| from model import GPT, generate_text, sample_top_p, sample_top_k, sample_with_temperature
|
|
|
|
|
| if __name__ == "__main__":
|
|
|
| tokenizer = HFTokenizer()
|
| tokenizer.load(os.path.join(
|
| os.path.dirname(os.path.abspath(__file__)),
|
| "..", "saved_models", "tinystories_tokenizer.json",
|
| ))
|
|
|
| seq_len = 256
|
| vocab_size = tokenizer.vocab_size
|
| print("Vocab size:", vocab_size)
|
|
|
|
|
| model = GPT(vocab_size=vocab_size,
|
| d_model=640,
|
| num_heads=10,
|
| dff=2560,
|
| num_layers=10,
|
| max_len=seq_len)
|
|
|
|
|
| dummy = tf.constant(np.zeros((1, seq_len), dtype=np.int32))
|
| model(dummy, training=False)
|
|
|
|
|
| WEIGHTS_PATH = os.path.join(
|
| os.path.dirname(os.path.abspath(__file__)),
|
| "..", "saved_models", "tinystories_model.weights.h5",
|
| )
|
| model.load_weights(WEIGHTS_PATH)
|
| print("Model weights loaded")
|
|
|
|
|
| import sys
|
| prompt = " ".join(sys.argv[1:]) if len(sys.argv) > 1 else "Once upon a time there was a little girl"
|
| prompt_tokens = tokenizer.encode(prompt)
|
| start_tokens = tf.constant([prompt_tokens], dtype=tf.int32)
|
|
|
| print("\nGenerating...\n")
|
| output = generate_text(
|
| model,
|
| start_tokens,
|
| max_new_tokens=200,
|
| top_p=0.85,
|
| temperature=0.5,
|
| eos_token_id=tokenizer.eos_id,
|
| repetition_penalty=1.3,
|
| )
|
| print(tokenizer.decode(output[0].numpy().tolist())) |