def getValue():
    clear_session()
    if (request.form['submit_btn'] == "Submit"):
        text = request.form['user_str']
        length = request.form['user_len']
    elif (request.form['submit_btn'] == "Generate"):
        text = " "
        length = random.randint(1, 40)

    print('Load model from checkpoint...')
    model = load_trained_model_from_checkpoint(config_path, checkpoint_path)
    print('Load BPE from files...')
    bpe = get_bpe_from_files(encoder_path, vocab_path)

    #if(text!=None):
    print('Generate text...')
    #output = generate(model, bpe, ['From the day forth, my arm'], length=20, top_k=1)
    output = generate(model, bpe, [str(text)], length=int(length), top_k=2)

    #print(output)
    ind = output[0].rfind("\n")
    temp = output[0]
    temp = temp[0:ind]
    #print(temp)
    output[0] = temp
    #print(output)

    try:
        if (request.form['tweet'] == "post"):
            Tweet(str(output[0]))
    except:
        print("")

    return render_template('index.html', t=output)
예제 #2
0
 def test_load_from_checkpoint(self):
     current_path = os.path.dirname(os.path.abspath(__file__))
     toy_checkpoint_path = os.path.join(current_path, 'toy_checkpoint')
     config_path = os.path.join(toy_checkpoint_path, 'hparams.json')
     checkpoint_path = os.path.join(toy_checkpoint_path, 'model.ckpt')
     model = load_trained_model_from_checkpoint(config_path=config_path, checkpoint_path=checkpoint_path)
     model.summary()
예제 #3
0
    def _build_model(self, **kwargs):
        if self.embed_model is None and self.sequence_length != 'auto':
            config_path = os.path.join(self.model_folder, 'hparams.json')
            checkpoint_path = os.path.join(self.model_folder, 'model.ckpt')

            model = gpt2.load_trained_model_from_checkpoint(
                config_path, checkpoint_path, self.sequence_length)
            model.summary()
            self.embed_model = model
예제 #4
0
def load_model_and_bpe():
    model_folder = 'models/' + config_model
    config_path = os.path.join(model_folder, 'hparams.json')
    checkpoint_path = os.path.join(model_folder, 'model.ckpt')
    encoder_path = os.path.join(model_folder, 'encoder.json')
    vocab_path = os.path.join(model_folder, 'vocab.bpe')

    text_model = keras_gpt_2.load_trained_model_from_checkpoint(
        config_path, checkpoint_path)
    bpe = keras_gpt_2.get_bpe_from_files(encoder_path, vocab_path)

    return text_model, bpe
예제 #5
0
def get_gpt_model(config_path, checkpoint_path):
    model = load_trained_model_from_checkpoint(config_path, checkpoint_path)
    inputs = model.inputs[0]
    mask = Lambda(lambda x: K.reshape(K.sum(K.cast(K.greater(x, 0), 'float32'), axis=-1), [K.shape(x)[0], 1]) - 1,
                  name='Mask')(inputs)
    # mask = Lambda(lambda x: print(K.shape(x)),
    #               name='Mask')(inputs)
    layer = model.get_layer(name='Norm').output
    layer = Lambda(seq_gather, name='Gather')([layer, mask])
    predict = Dense(1, activation='sigmoid', name='Predict-Dense')(layer)
    aux = Dense(6, activation='sigmoid', name='Predict-Aux')(layer)

    model = Model(inputs=inputs, outputs=[predict, aux])
    model.summary()
    return model
예제 #6
0
    def build(self, **kwargs):
        self.embedding_type = 'gpt2'

        config_path = os.path.join(self.name, 'hparams.json')
        checkpoint_path = os.path.join(self.name, 'model.ckpt')
        encoder_path = os.path.join(self.name, 'encoder.json')
        vocab_path = os.path.join(self.name, 'vocab.bpe')

        self._model: Model = load_trained_model_from_checkpoint(
            config_path, checkpoint_path)
        for layer in self._model.layers:
            layer.trainable = False

        self.bpe: BytePairEncoding = get_bpe_from_files(
            encoder_path, vocab_path)

        word2idx = self.bpe.token_dict.copy()
        word2idx[k.PAD] = word2idx['pad']
        word2idx[k.UNK] = word2idx['unk']
        word2idx[k.BOS] = word2idx['pad']
        word2idx[k.EOS] = word2idx['pad']
        self.token2idx = word2idx
예제 #7
0
is_uuid_pkl = re.compile("^[a-f0-9]{40}.pkl$")

from keras_gpt_2 import load_trained_model_from_checkpoint, get_bpe_from_files, generate

global model
global bpe

model_folder = './models/117M'
config_path = os.path.join(model_folder, 'hparams.json')
checkpoint_path = os.path.join(model_folder, 'model.ckpt')
encoder_path = os.path.join(model_folder, 'encoder.json')
vocab_path = os.path.join(model_folder, 'vocab.bpe')

print('Load model from checkpoint...')
model = load_trained_model_from_checkpoint(config_path, checkpoint_path)
print('Load BPE from files...')
bpe = get_bpe_from_files(encoder_path, vocab_path)
print('Running...')

def cleanup_old_tasks(ttl=900):
    now = time.time()
    for job_type in ['jobs/pending','jobs/done']:
        jobs = os.listdir(job_type)
        jobs = cleanup_task_list(jobs)
        for job in jobs:
            job_path = job_type+"/"+job
            job_age = os.path.getmtime(job_path)
            if(now - ttl > job_age):
                os.remove(job_path)
                print("Delete too old "+job_path)
예제 #8
0
mc_token_ids = mc_token_ids[:index]

print(lm_labels.shape)
print(input_ids.shape)
print(mc_token_ids.shape)
print(mc_labels.shape)

if not os.path.isdir(model_folder):
    gpt2.download_gpt2(model_name = '117M')

strategy = tf.distribute.MirroredStrategy()

print('Number of devices: {}'.format(strategy.num_replicas_in_sync))
batch_size = 2
with strategy.scope():
    model = load_trained_model_from_checkpoint(config_path, checkpoint_path, batch_size=batch_size)
    print("starting fit")
    history_output = model.fit(
        {
            'LMInput': input_ids,
            'MCInput': mc_token_ids
        },
        {
            'LMOutput': lm_labels,
            'MCOutput': mc_labels
        },
        batch_size=batch_size * strategy.num_replicas_in_sync,
        epochs=2,
        callbacks=[tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_prefix,
                                       save_weights_only=True)]
    )
import os
import sys
from keras_gpt_2 import load_trained_model_from_checkpoint, get_bpe_from_files, generate

epoch_number = 2
already_trained = True
checkpoint_dir = './training_checkpoints'
checkpoint_path = os.path.join(checkpoint_dir, f"ckpt_{epoch_number}")

model_folder = 'models/117M'
config_path = os.path.join(model_folder, 'hparams.json')
checkpoint_path = os.path.join(model_folder, 'model.ckpt')
encoder_path = os.path.join(model_folder, 'encoder.json')
vocab_path = os.path.join(model_folder, 'vocab.bpe')

print('Load model from checkpoint...')
model = load_trained_model_from_checkpoint(config_path,
                                           checkpoint_path,
                                           already_trained=already_trained)
print('Load BPE from files...')
bpe = get_bpe_from_files(encoder_path, vocab_path)
print('Generate text...')
output = generate(model,
                  bpe, ['From the day forth, my arm'],
                  length=20,
                  top_k=40)

# If you are using the 117M model and top_k equals to 1, then the result would be:
# "From the day forth, my arm was broken, and I was in a state of pain. I was in a state of pain,"
print(output[0])
예제 #10
0
if epoch_number == 0:
    strategy = tf.distribute.MirroredStrategy()
elif epoch_number == 1:
    strategy = tf.distribute.MirroredStrategy(devices=[
        '/device:GPU:0', '/device:GPU:1', '/device:GPU:2', '/device:GPU:3'
    ])
else:
    strategy = tf.distribute.MirroredStrategy(devices=[
        '/device:GPU:4', '/device:GPU:5', '/device:GPU:6', '/device:GPU:7'
    ])

#print('Number of devices: {}'.format(strategy.num_replicas_in_sync))
with strategy.scope():
    model = load_trained_model_from_checkpoint(config_path,
                                               checkpoint_path,
                                               batch_size=None,
                                               already_trained=already_trained)
    timer = Timer()
    i = 0

    print(f"Time since last iteration to do: {timer()}")
    #print("Done")
    # print(input_ids[i:i+batch_size].shape)
    # print(mc_token_ids[i:i+batch_size].shape)
    # print(lm_labels[i:i+batch_size].shape)
    # print(mc_labels[i:i+batch_size].shape)
    metrics = model.evaluate(x={
        'LMInput': input_ids,
        'MCInput': mc_token_ids
    },
                             y={