pickled python 机器学习模型使用硬编码路径,而不是 运行 在其他机器上 - 怎么办?
pickled python machine learning model uses hardcoded paths, doesn't run on other machine - what to do?
我使用 AutoGluon 在我的计算机上本地创建 ML 模型。
现在我想通过 AWS 部署它们,但我意识到在此过程中创建的所有 pickle 文件都使用对其他 pickle 文件的硬编码路径引用:
/home/myname/Desktop/ETC_PATH/AutoGluon/
我使用 cloudpickle.dump(predictor, open('FINAL_MODEL.pkl', 'wb'))
来 pickle 最终的整体模型,但 AutoGluon 为各个模型创建了许多其他 pickle 文件,然后将其引用为 /home/myname/Desktop/ETC_PATH/AutoGluon/models/
和 /home/myname/Desktop/ETC_PATH/AutoGluon/models/specific_model/
等等...
我怎样才能实现所有地方的所有绝对路径都被相对路径替换,例如 root/AutoGluon/WHATEVER_PATH
,其中 root 可以设置为任何内容,具体取决于稍后保存模型的位置。
任何指示都会有所帮助。
编辑: 我很确定我找到了问题。如果我使用 AutoGluon 的 predictor = task.load(model_dir)
而不是加载 FINAL_MODEL.pkl(这似乎是硬编码路径),它应该正确找到所有依赖项,无论 AutoGluon 文件夹作为一个整体是否被移动。 This issue on github helped
编辑: 这解决了问题:如果不是加载 FINAL_MODEL.pkl(这似乎是硬编码路径)我使用 AutoGluon 的 predictor = task.load(model_dir)
它应该找到所有依赖关系是否正确,无论 AutoGluon 文件夹是否作为一个整体被移动。 This issue on github helped
我使用 AutoGluon 在我的计算机上本地创建 ML 模型。 现在我想通过 AWS 部署它们,但我意识到在此过程中创建的所有 pickle 文件都使用对其他 pickle 文件的硬编码路径引用:
/home/myname/Desktop/ETC_PATH/AutoGluon/
我使用 cloudpickle.dump(predictor, open('FINAL_MODEL.pkl', 'wb'))
来 pickle 最终的整体模型,但 AutoGluon 为各个模型创建了许多其他 pickle 文件,然后将其引用为 /home/myname/Desktop/ETC_PATH/AutoGluon/models/
和 /home/myname/Desktop/ETC_PATH/AutoGluon/models/specific_model/
等等...
我怎样才能实现所有地方的所有绝对路径都被相对路径替换,例如 root/AutoGluon/WHATEVER_PATH
,其中 root 可以设置为任何内容,具体取决于稍后保存模型的位置。
任何指示都会有所帮助。
编辑: 我很确定我找到了问题。如果我使用 AutoGluon 的 predictor = task.load(model_dir)
而不是加载 FINAL_MODEL.pkl(这似乎是硬编码路径),它应该正确找到所有依赖项,无论 AutoGluon 文件夹作为一个整体是否被移动。 This issue on github helped
编辑: 这解决了问题:如果不是加载 FINAL_MODEL.pkl(这似乎是硬编码路径)我使用 AutoGluon 的 predictor = task.load(model_dir)
它应该找到所有依赖关系是否正确,无论 AutoGluon 文件夹是否作为一个整体被移动。 This issue on github helped