移植预先训练的keras模型并在IPU上运行

移植预先训练的keras模型并在IPU上运行,keras,tensorflow2.0,ipu,Keras,Tensorflow2.0,Ipu,我正在尝试将两个经过预培训的keras模型移植到IPU机器中。我设法使用IPUstrategy.scope加载并运行了它们,但我不知道我的方法是否正确。我有我预先训练过的.h5文件格式的模型。 我这样加载它们: def first_model(): model = tf.keras.models.load_model("./model1.h5") return model 在搜索你的ipu.keras.models.py文件后,我找不到任何加载方法来加载我预先训练

我正在尝试将两个经过预培训的keras模型移植到IPU机器中。我设法使用IPUstrategy.scope加载并运行了它们,但我不知道我的方法是否正确。我有我预先训练过的.h5文件格式的模型。 我这样加载它们:

def first_model():
    model = tf.keras.models.load_model("./model1.h5")
return model 
在搜索你的ipu.keras.models.py文件后,我找不到任何加载方法来加载我预先训练过的模型,这就是为什么我使用tf.keras.models.load_model()

然后我使用此代码运行:

cfg=ipu.utils.create_ipu_config()
cfg=ipu.utils.auto_select_ipus(cfg, 1)
ipu.utils.configure_ipu_system(cfg)
ipu.utils.move_variable_initialization_to_cpu()

strategy = ipu.ipu_strategy.IPUStrategy()
with strategy.scope():
    model = first_model()

    print('compile attempt\n')
    model.compile("sgd", "categorical_crossentropy", metrics=["accuracy"])
    print('compilation completed\n')
    
    print('running attempt\n')
    res = model.predict(input_img)[0]
    print('run completed\n')
您可以在此处看到输出:

因此,我很难理解系统是如何以及是否正常工作的。 基本上model.compile不会编译我的模型,但当我使用model.predict时,系统首先编译,然后运行。为什么会这样?有没有其他方法可以在IPU芯片上运行经过预培训的keras模型

我的另一个问题是,是否可以在ipu.keras.model中加载预先训练的keras模型,然后使用model.fit/evaluate对其进行进一步训练和评估,然后将其保存以备将来使用

最后一个问题是关于图表的编译部分。是否有一种方法可以避免每次在不同的策略中使用model.predict()时重新编译图

我使用tensorflow2.1.2车轮


感谢您抽出时间

为了添加一些上下文,Graphcore TensorFlow控制盘包括一个用于IPU的Keras端口,可通过
TensorFlow.python.IPU.Keras
获得。您可以访问IPU Keras的API文档,网址为。此模块包含针对TensorFlow
型号和
顺序型
的特定IPU优化替换,以及更多高性能、多IPU类,例如
管道型号和
管道顺序型

根据您的具体问题,您提到目前没有IPU特定的方法加载预先培训的Keras模型是正确的。我鼓励您,因为您似乎可以访问IPU,寻求Graphcore支持。进行此操作时,请附上经过预培训的Keras型号
model1.h5
,以及代码的独立复制器

将主题切换到重新编译问题:使用可执行缓存可防止重新编译,您可以使用环境变量
TF\u paper\u FLAGS='--executable\u cache\u path=./cache'
设置它。我还建议查看以下资源:

  • 这收集了一些关于重新编译的注意事项,以及在IPU上使用TensorFlow2时如何避免重新编译
  • Graphcore TensorFlow文档解释了如何在IPU上使用预编译模式