从外部源加载模型

数据挖掘 Python 机器学习模型 数据工程
2022-02-27 17:35:25

我有一个 500MB 的模型,我正在使用 Git。这是一个非常糟糕的做法,因为对于较新的模型版本,存储库将是巨大的。同样,它会减慢部署的所有构建。

我想使用另一个包含所有模型的存储库,然后在运行时获取它们。

有人知道干净的方法或替代方法吗?

2个回答

在大多数情况下,您会使用文件存储解决方案,例如Amazon S3Google Cloud等,它们为大型对象存储和检索提供指定的解决方案。

然后,您最好更新代码以直接从文件存储中检索模型。是否需要在每次运行或仅一次(将模型存储在本地以供将来运行)进行此下载,应根据您的特定需求来决定。

我也多次遇到这个问题,所以我创建了一个开源模型存储 Python 库,旨在解决简化版本控制、存储和从不同云存储提供商下载模型的最佳实践的问题。

modelstore库将 ML 模型的版本控制和保存统一到一个upload()命令中,并且还提供了download()从存储中取回该模型的功能。这是(大致)它的样子 -提供完整的文档

from modelstore import ModelStore

# To save the model in s3
modelstore = ModelStore.from_aws_s3(os.environ["AWS_BUCKET_NAME"])

model, optim = train() # Replace with your code

# Here's a pytorch example - the library currently supports 9 different ML frameworks
model_store.pytorch.upload(
   "my-model-domain",
   model=model,
   optimizer=optim
)

upload()命令将创建一个 tar 存档,其中包含您的模型和一些关于它的元数据,并将其上传到存储中的特定路径。

您可以稍后使用以下方法下载最新型号:

model_path = modelstore.download(
   local_path="/path/to/download/to", # Replace with a path
   domain="my-model",
)

注意:有一些可用的选项,例如MLFlow 的工件存储,如果您可以设置和维护跟踪服务器,这将是非常棒的。