代码之家  ›  专栏  ›  技术社区  ›  Luis Ramon Ramirez Rodriguez

如何保存和加载googlenlp改型器模型

  •  0
  • Luis Ramon Ramirez Rodriguez  · 技术社区  · 4 年前

    我正在使用最近的NLP模型 Google

    example 具有所有的模型步骤和测试功能。我现在的问题是,由于模型需要很长时间来训练,即使使用谷歌TPU,我也需要保存训练过的模型,我的猜测是它的工作原理与GPT-2模型相似,因为它可以在任何时候停止训练,所以可以通过几次训练来训练:

    This will take at least 30 minutes to run to completion, but can safely
    # be interrupted by selecting "Runtime > Interrupt Execution" 
    

    但是我还没有找到一个关于如何保存和加载模型的例子。在GPT-2的情况下,每个新模型都会自动创建一个新目录,要使用它,只需要指向新目录,但是对于这个目录,我没有找到如何加载以前训练过的模型。

    我在笔记本上看到了这样的代码:

    # Set up a Trainer.
    output_dir = os.path.expanduser('~/train_dir/')
    !rm -f ~/train_dir/model.pkl  # Remove old model
    trainer = trax.supervised.Trainer(
        model=trax.models.ReformerLM,
        loss_fn=trax.layers.CrossEntropyLoss,
        optimizer=trax.optimizers.Adam,
        lr_schedule=trax.lr.MultifactorSchedule,
        inputs=trax.supervised.inputs.Inputs(my_inputs),
        output_dir=output_dir,
        has_weights=True)
    

    它正在删除以前的模型,我在目录中找到了这个:

    enter image description here

    我用泡菜装这个型号.pkl文件,我也复制到我的Gdrive文件夹:

    with open('model.pkl', 'rb') as handle:
        reformer_model = pickle.load(handle)
    
    reformer_model
    

    但这只是一本有重量的字典,不是可以直接使用的模型:

    enter image description here

    0 回复  |  直到 4 年前
        1
  •  1
  •   blackmage999    4 年前

    如果你把线“!房间-f~/列车方向/型号.pkl#删除旧模型”并将output_dir更改为指向保存的模型所在的文件夹,它将加载该模型并从上次停止的位置继续培训。如果该目录中没有模型,它将创建一个新的模型。

    from google.colab import drive
    drive.mount('/content/gdrive',  force_remount=True)
    %cd /content/gdrive/My\ Drive/
    
    
    # Train tiny model with Trainer.
    output_dir = "CornellMovieDialog/Model/"
    trainer = trax.supervised.Trainer(
        model=tiny_transformer_lm,
        loss_fn=trax.layers.CrossEntropyLoss(),
        optimizer=trax.optimizers.Adafactor,  # Change optimizer params here.
        lr_schedule=trax.lr.MultifactorSchedule,  # Change lr schedule here.
        inputs=copy_inputs,
        output_dir=output_dir)