Saving/Loading hls4ml models

hls4ml model objects (instances of ModelGraph class) can be saved to disk and loaded at a later stage. The saved model doesn’t require original Keras/PyTorch/ONNX model for loading.

To save/load a model use the following API:

from hls4ml.converters import convert_from_keras_model, load_saved_model

model = convert_from_keras_model(keras_model, ...)

# Save a model to some path
model.save('some/path/my_hls4ml_model.fml')

# Load a model from a file
loaded_model = load_saved_model('some/path/my_hls4ml_model.fml')

Saved model will have a .fml extension, but is in fact a gzipped tar archive. Loaded model can be used in the same way as the original one. This includes modification of certain config parameters, for example output directory, layer reuse factor etc.

Linking with existing project

Once the project has been written to disk with ModelGraph.write(), it can also be linked with at later stage. Similarly to loading a saved model, this feature allows skipping the conversion step. Additionally, it may be used to test manual changes to the generated project.

Linking function will create a special instance of ModelGraph that only allows calls to compile(), predict() and build(). Other calls to the ModelGraph instance are disabled.

To link a model use the following API:

from hls4ml.converters import convert_from_keras_model, link_existing_project

model = convert_from_keras_model(keras_model, output_dir='/some/path/', ...)

# Generate the project files and write them to some path
model.write()

# Later on, link this path to the Python runtime
linked_model = link_existing_project('some/path/')
linked_model.compile()
linked_model.predict(...)
linked_model.build(...)