recommenders-addons icon indicating copy to clipboard operation
recommenders-addons copied to clipboard

How can I remove Horovod ops from the savedModel to use with TF Serving?

Open alykhantejani opened this issue 1 year ago • 2 comments

Title basically says it, I have trained a model using HorovodAllToAllEmbeddings and saved by doingg:


    de.keras.models.de_save_model(
        model,
        export_dir,
        overwrite=True,
        include_optimizer=False,
        options=save_options,
        signatures={
            "serving_default": model.get_tf_examples_serving_signature(
                feature_config,
                integrate_transform_layer=True,
                rename_serving_feature_names=rename_serving_feature_names,
            ),
            "serving_common_feature": model.get_tf_examples_serving_signature(
                feature_config,
                parse_sequence_example=True,
                integrate_transform_layer=True,
                rename_serving_feature_names=rename_serving_feature_names,
            ),
            "vanilla_serving": model.get_tf_examples_serving_signature(
                feature_config,
                integrate_transform_layer=False,
                rename_serving_feature_names=rename_serving_feature_names,
            ).get_concrete_function(*args, **kwargs),
        },
    )
    
   if hvd.rank() == 0:
       tf_save.save_and_return_nodes(
              obj=export_model,
              export_dir=export_dir,
              options=save_options,
              experimental_skip_checkpoint=True,
              signatures={
                  "serving_default": export_model.get_tf_examples_serving_signature(
                      feature_config,
                      parse_sequence_example=False,
                      integrate_transform_layer=True,
                      rename_serving_feature_names=rename_serving_feature_names,
                  ),
                  "serving_common_feature": export_model.get_tf_examples_serving_signature(
                      feature_config,
                      parse_sequence_example=True,
                      integrate_transform_layer=True,
                      rename_serving_feature_names=rename_serving_feature_names,
                  ),
                  "vanilla_serving": export_model.get_tf_examples_serving_signature(
                      feature_config,
                      integrate_transform_layer=False,
                      rename_serving_feature_names=rename_serving_feature_names,
                  ).get_concrete_function(*args, **kwargs),
              },
          )
          
          ```
          
          But I still end up with HorovodAlltoAll ops in the savedModel graph (which cant run at inference)

alykhantejani avatar Sep 19 '24 11:09 alykhantejani

bots have hit github

alykhantejani avatar Sep 19 '24 11:09 alykhantejani

According to the demo, rebuilding the model with mpi_rank=0 and mpi_size=1. https://github.com/tensorflow/recommenders-addons/blob/653330c2bf08a670dd0ebfd38e309936051f8c47/demo/dynamic_embedding/movielens-1m-keras-with-horovod/movielens-1m-keras-with-horovod.py#L670

MoFHeka avatar Nov 16 '24 00:11 MoFHeka

Have you tried rebuilding model and enabling inference mode? If it's OK, I would close this issue.

MoFHeka avatar Jun 16 '25 10:06 MoFHeka