机器学习PAI EasyRec训练时,如何导出直接去除这些没有意义的辅助任务的模型,用于部署?[阿里云机器学习PAI]

机器学习PAI EasyRec训练时,多个辅助任务提高训练效果。如何导出直接去除这些没有意义的辅助任务的模型,用于部署?有简便方式吗?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 可以使用PLE(Progressive Layered Extraction)来导出直接去除没有意义的辅助任务的模型,用于部署。PLE是一种解决多任务学习中跷跷板现象的方法,可以提升一部分任务的效果而不影响其他任务。通过逐层提取的方式,PLE可以得到一个只包含有意义任务的模型。具体的配置说明可以参考PLE的配置说明文档。使用PLE可以简化导出模型的过程,提高部署的效率。,此回答整理自钉群“【EasyRec】推荐算法交流群”

  2. 在PAI EasyRec中,辅助任务是为了提高主任务的训练效果而添加的,但是有时候在部署时可能并不需要这些辅助任务。导出直接去除没有意义的辅助任务的模型需要进行以下步骤:

    1. 在训练时,将需要去除的辅助任务标记为“无用”或“无效”。
    2. 训练完成后,导出训练好的模型文件。
    3. 在导出模型文件时,需要确保只导出主任务相关的模型参数,而去除辅助任务相关的参数。这可以通过在导出模型时指定参数名称或使用过滤器来实现。
    4. 导出的模型文件可以用于部署,不再需要辅助任务的支持。

    请注意,由于PAI EasyRec的设计中,辅助任务和主任务是相互关联的,因此在去除辅助任务时可能会影响主任务的性能。因此,在导出模型之前,请确保已经充分测试和验证了模型的性能。

  3. 楼主你好,看了你的描述,在阿里云机器学习PAI EasyRec训练时想去除辅助任务并导出模型进行部署,有一种简单的方式是使用 TensorFlow 的 SavedModel 格式。使用 SavedModel 格式将允许你从 EasyRec 中导出仅包含主任务模型的模型文件。

    下面分享一下大概的步骤:
    使用 EasyRec 训练模型并保存模型。在训练时,在“其他参数”中,将--export_model_dir参数设置为你要将导出的模型保存到的目录。

    然后从 EasyRec 导出你的模型,并将其转换为 TensorFlow SavedModel 格式。可以使用 TensorFlow 的 Python API 或 TensorFlow Serving 工具完成此操作,其中 TensorFlow Serving 是一种专门用于将 TensorFlow 模型部署到生产环境中的方式。

    • 比如使用 TensorFlow 的 Python API 进行转换:

    import tensorflow as tf# Replace `{saved_model_dir}` with the path to the directory containing your EasyRec modelmodel = tf.saved_model.load(f"{saved_model_dir}/serve")# Replace `{export_dir}` with the path to the directory where you want to save the converted modeltf.saved_model.save(model, f"{export_dir}/converted_model")

    • 或者使用 TensorFlow Serving 进行转换:

    # Replace `{saved_model_dir}` with the path to the directory containing your EasyRec model# Replace `{export_dir}` with the path to the directory where you want to save the converted modeltensorflow_model_server --port=9000 --model_name=my_model --model_base_path="{saved_model_dir}/serve" --export_path="{export_dir}/converted_model"

    最后就可以将这个转换后的模型用于部署到生产环境中,比如使用 TensorFlow Serving 进行模型服务。

    注意:本回答参考了阿里云机器学习官方网站