我正在使用 AWS Sage Maker 构建我的模型。我想将模型存储在 S3 中以备后用。如何使用 Amazon Sage Maker 将模型保存在 S3 中?我知道这似乎微不足道,但我不明白我读过的资料/文档。
将模型上传到 S3
数据挖掘
Python
scikit-学习
aws
贤者
2022-03-05 16:41:47
2个回答
您可以使用 pickle(或任何其他格式来序列化您的模型)和 boto3 库将您的模型保存到 s3。
要将模型保存为 pickle 文件,您可以使用:
import pickle
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3
model = LinearRegression().fit(X, y)
# save the model to disk
pkl_filename = 'pickle_model.pkl'
with open(pkl_filename, 'wb') as file:
pickle.dump(model, file)
并将您的模型作为泡菜文件保存到 s3,而不是 sagemaker 的本地:
# to save the model to s3
import boto3
# For aws credentials, if ~/.aws/credentials is missing
# access_key_id = '...'
# secret_access_key = '...'
# session = boto3.Session(
# aws_access_key_id=access_key_id ,
# aws_secret_access_key=secret_access_key,)
# s3_resource = session.resource('s3')
s3_resource = boto3.resource('s3')
bucket='your_bucket'
key= 'pickle_model.pkl'
pickle_byte_obj = pickle.dumps(model)
s3_resource.Object(bucket,key).put(Body=pickle_byte_obj)
扩展另一个答案:这是我自己多次遇到的问题,因此我构建了一个开源模型存储库,可以自动执行此步骤 - 以及执行其他操作,例如对模型进行版本控制和存储它在 s3 中具有结构化路径。
使用它的代码如下所示(这里有一个完整的示例):
from modelstore import ModelStore
# Train your model, as usual
model = LinearRegression()
model.fit(X, y)
# Create a model store that points to your s3 bucket
bucket_name = "your-bucket-name"
modelstore = ModelStore.from_aws_s3(bucket_name)
# Upload your model
model_domain = "your-model-domain"
modelstore.sklearn.upload(model_domain, model=model)
这会将您的模型转储到一个文件中,tar从中创建一个存档,然后为您将其上传到 s3。该函数将一些元数据作为字典返回;这包括您的模型的版本 ID。
其它你可能感兴趣的问题