移植预先训练的keras模型并在IPU上运行
我正在尝试将两个经过预培训的keras模型移植到IPU机器中。我设法使用IPUstrategy.scope加载并运行了它们,但我不知道我的方法是否正确。我有我预先训练过的.h5文件格式的模型。 我这样加载它们:移植预先训练的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文件后,我找不到任何加载方法来加载我预先训练
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上使用预编译模式