Run the sample_model. :model_name=124M : String, which model to use :nsamples=0 : Number of samples to return, if 0, continues to generate samples indefinitely. :batch_size=1 : Number of batches (only affects speed/memory). :length=None : Number of tokens in generated text, if
(
vocab_file="../models/gpt2-vocab.json",
bpe_file="../models/gpt2-merges.txt",
model_name='124M',
nsamples=1,
batch_size=2,
length=32,
temperature=1,
top_k=4,
top_p=0.0,
models_dir='../models/openai_gpt_model',
data_type='fp32',
beam_width=1
)
| 56 | from examples.tensorflow.decoder.utils.common import time_test |
| 57 | |
| 58 | def sample_model( |
| 59 | vocab_file="../models/gpt2-vocab.json", |
| 60 | bpe_file="../models/gpt2-merges.txt", |
| 61 | model_name='124M', |
| 62 | nsamples=1, |
| 63 | batch_size=2, |
| 64 | length=32, |
| 65 | temperature=1, |
| 66 | top_k=4, |
| 67 | top_p=0.0, |
| 68 | models_dir='../models/openai_gpt_model', |
| 69 | data_type='fp32', |
| 70 | beam_width=1 |
| 71 | ): |
| 72 | """Run the sample_model. |
| 73 | |
| 74 | :model_name=124M : String, which model to use |
| 75 | :nsamples=0 : Number of samples to return, if 0, continues to |
| 76 | generate samples indefinitely. |
| 77 | :batch_size=1 : Number of batches (only affects speed/memory). |
| 78 | :length=None : Number of tokens in generated text, if None (default), is |
| 79 | determined by model hyperparameters |
| 80 | :temperature=1 : Float value controlling randomness in boltzmann |
| 81 | distribution. Lower temperature results in less random completions. As the |
| 82 | temperature approaches zero, the model will become deterministic and |
| 83 | repetitive. Higher temperature results in more random completions. |
| 84 | :top_k=4 : Integer value controlling diversity. 1 means only 1 word is |
| 85 | considered for each step (token), resulting in deterministic completions, |
| 86 | while 40 means 40 words are considered at each step. 0 (default) is a |
| 87 | special setting meaning no restrictions. 40 generally is a good value. |
| 88 | :models_dir : path to parent folder containing model subfolders |
| 89 | (i.e. contains the <model_name> folder) |
| 90 | """ |
| 91 | np.random.seed(1) |
| 92 | tf.set_random_seed(1) |
| 93 | |
| 94 | if data_type == 'fp32': |
| 95 | tf_data_type = tf.float32 |
| 96 | elif data_type == 'fp16': |
| 97 | tf_data_type = tf.float16 |
| 98 | else: |
| 99 | assert(False) |
| 100 | models_dir = os.path.expanduser(os.path.expandvars(models_dir)) |
| 101 | vocab_file=os.path.join(models_dir, model_name, 'encoder.json') |
| 102 | bpe_file=os.path.join(models_dir, model_name, 'vocab.bpe') |
| 103 | enc = encoder.get_encoder(vocab_file, bpe_file) |
| 104 | hparams = HParams(n_vocab=0, |
| 105 | n_ctx=1024, |
| 106 | n_embd=768, |
| 107 | n_head=12, |
| 108 | n_layer=12) |
| 109 | |
| 110 | with open(os.path.join(models_dir, model_name, 'hparams.json')) as f: |
| 111 | hparams.override_from_dict(json.load(f)) |
| 112 | |
| 113 | if length is None: |
| 114 | length = hparams.n_ctx |
| 115 | elif length > hparams.n_ctx: |
nothing calls this directly
no test coverage detected