首页 > 解决方案 > SageMaker 实验:UnpicklingError:无效的加载键,'\x1f'

问题描述

我是数据科学的新手,一直在尝试使用 SageMaker Experiments 创建一个极其简单的模型。使用 SageMaker Experiments,我使用 CSV 数据集训练了一个模型。该模型已输出到 S3,我现在正尝试将该模型加载到 Jupyter Notebook 并对其运行批量转换测试。

但是,在尝试使用 SageMaker 文档中提供的以下代码块时出现错误,该代码块应该可以帮助我导入模型。资源

import pickle as pkl
import tarfile
import xgboost

t = tarfile.open('model.tar.gz', 'r:gz')
t.extractall()

model = pkl.load(open(model_file_path, 'rb'))

错误发生在 pkl.load:

 ---------------------------------------------------------------------------
UnpicklingError                           Traceback (most recent call last)
<ipython-input-39-81639df86023> in <module>
      6 t.extractall()
      7 
----> 8 model = pkl.load(open(model_file_path, 'rb'))
      9 
     10 

UnpicklingError: invalid load key, '\x1f'.

注意: model_file_path 是 'model.tar.gz'

因为我在这方面还很陌生,所以我不知道这是否是我所做的错误,或者 SageMaker Experiments 是否有一些我遗漏的东西。我曾尝试引用包含此错误的其他 stackoverflow 帖子,但它们似乎并不直接适用于我的错误(据我的理解)。(这个这个

任何有关 SageMaker Experiments 或 SageMaker v2 SDK 的专家建议都会对这个试图闯入该领域的新手非常有帮助。谢谢!

标签: pythonmachine-learningpicklexgboostamazon-sagemaker

解决方案


您的问题似乎不是由 SageMaker Experiments 引起的。这要么是您的model.tar.gz文件本身的问题,要么是您使用pkl.

model.tar.gz应该包含模型本身的 pickle 文件。然后,您可以从中提取 pickle 文件model.tar.gz并将其加载到您的模型对象中。

或者,您可以使用XGBoostModel该类从model.tar.gz文件本身创建模型。有关加载预训练 XGBoost 模型的更多详细信息,请参阅以下文档。

我为 AWS 工作,我的意见是我自己的


推荐阅读