如何在本地机器上加载和部署预先训练的 AWS Sagemaker XGBoost 模型?

DSe*_*rer 2 machine-learning xgboost amazon-sagemaker

我已经训练了一个 Sagemaker XGBoost 模型并将 model.tar.gz 文件从 S3 下载到我的本地机器上。如何加载此模型以使用 Flask 部署它?

我试过使用 pickle 加载解压后的模型文件,但它似乎不起作用。

import sagemaker
import boto3
import os
import pickle

with open('xgboost-model', 'r') as inp:
   cls.model = pkl.load(inp)
Run Code Online (Sandbox Code Playgroud)

回溯(最近一次调用):文件“”,第 2 行,在文件“C:\Anaconda3\lib\encodings\cp1252.py”中,第 23 行,在解码中返回 codecs.charmap_decode(input,self.errors,decoding_table) [0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 969: character maps to

DSe*_*rer 6

弄清楚了!下载的预训练 sagemaker 模型可以从其 tar.gz 格式提取到本地机器上。提取后,以字节格式在python中打开文件并使用pickle加载。

file = open(model_path, 'rb')
xgb_model = pickle.loads(file.read())
Run Code Online (Sandbox Code Playgroud)

然后读入要转换为 xgboost DMatrix 格式的输入数据,无需任何独立数据或标题进行预测。

data_input = xgb.DMatrix(data.iloc[:, 1:].values)
predictions = xgb_model.predict(data_input)
Run Code Online (Sandbox Code Playgroud)

  • 有什么方法可以更详细地解释您在这里所做的事情吗?我正在尝试做几乎同样的事情,但遇到了许多障碍。来自 @DavidFarrell 的链接现已失效,以防有额外信息(AWS 论坛已被弃用)。 (2认同)