如何将机器学习模型 pickle 存储到 azure blob 并检索它/
Posted
技术标签:
【中文标题】如何将机器学习模型 pickle 存储到 azure blob 并检索它/【英文标题】:How to store the machine learning model pickle to azure blob and retrieve it/ 【发布时间】:2020-06-02 20:50:05 【问题描述】:我从我的机器学习模型中创建了一个泡菜,它正在本地保存。我想将它推送到 azure blob 存储并想稍后检索它。我该如何使用 python 3 来完成。请帮忙。
'''
#model
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, random_state = 100)
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
#Creating the pickle file finalized_model.sav on my local
mypickle = 'finalized_model.sav'
pickle.dump(regressor, open(mupickle, 'wb'))
'''
I tried following for .csv importing and pushing from azure, but don't know how to do with pickle files.
'''
with BytesIO() as input_blob:
block_blob_service = BlockBlobService(account_name='*****',
account_key='*********************************************************************')
block_blob_service.get_blob_to_stream('blobcontainer', 'claims.csv', input_blob)
input_blob.seek(0)
dataframe_blobdata = pd.read_csv(input_blob)
#transforming the data in between
output = dataframe_blobdata.to_csv (index_label="idx", encoding = "utf-8")
block_blob_service.create_blob_from_text('secondforblobcontainer', 'OutFilePy.csv', output)
'''
【问题讨论】:
请问我的回答是否有帮助? 【参考方案1】:根据我的理解,您只想将名称为 finalized_model.sav
的图片文件上传到 Azure 存储。
那么我建议你使用azure-storage-blob
SDK 来上传一个blob。这是官方示例:Code examples。
具体来说,首先你需要从portal获取你的存储账户的连接字符串,然后用连接字符串创建一个BlobServiceClient
,之后你可以通过blob_service_client.create_container(container_name)
创建一个容器客户端。
最后,您可以创建一个 blob 客户端,然后根据其路径上传本地文件。
从 Azure 存储下载回来也很容易。 downloading blobs的示例:
with open(download_file_path, "wb") as download_file:
download_file.write(blob_client.download_blob().readall())
【讨论】:
如果你使用老版本的SDK,还有一个教程供你参考:Manage blobs with Python v2.1 SDK。基本上,重点是block_blob_service.create_blob_from_path( container_name, blob_name, full_path_to_local_file)
以上是关于如何将机器学习模型 pickle 存储到 azure blob 并检索它/的主要内容,如果未能解决你的问题,请参考以下文章
使用pickle保存机器学习模型详解及实战(picklejoblib)