我有一个 500MB 的模型,我正在使用 Git。这是一个非常糟糕的做法,因为对于较新的模型版本,存储库将是巨大的。同样,它会减慢部署的所有构建。
我想使用另一个包含所有模型的存储库,然后在运行时获取它们。
有人知道干净的方法或替代方法吗?
我有一个 500MB 的模型,我正在使用 Git。这是一个非常糟糕的做法,因为对于较新的模型版本,存储库将是巨大的。同样,它会减慢部署的所有构建。
我想使用另一个包含所有模型的存储库,然后在运行时获取它们。
有人知道干净的方法或替代方法吗?
在大多数情况下,您会使用文件存储解决方案,例如Amazon S3或Google 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 的工件存储,如果您可以设置和维护跟踪服务器,这将是非常棒的。