问题描述
我使用 Autogluon 在我的计算机上本地创建机器学习模型。 现在我想通过 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
解决方法
编辑:这解决了问题:如果我使用 AutoGluon 的 predictor = task.load(model_dir)
而不是加载 FINAL_MODEL.pkl(这似乎是硬编码路径),它应该正确地找到所有依赖项,无论是否AutoGluon 文件夹作为一个整体被移动。 This issue on github helped