趋近智
对于机器学习模型而言,在训练和序列化之后,实际要考虑的问题是这些通常被称为“工件”的文件应该存放在哪里,FastAPI 应用如何可靠地访问它们?有效地管理这些工件,有助于维持整洁的项目结构、保证结果可重现性以及实现顺畅的部署。
模型文件的存放位置取决于应用的复杂程度、部署环境和团队工作流程。我们来看看一些常见方法:
在应用目录内:
对于较简单的项目或在开发阶段,您可以直接将模型工件存储在FastAPI项目结构中,通常是在一个专门的目录,比如 models/ 或 artifacts/。
专用文件服务器或网络共享: 在某些组织环境中,模型可能会存储在共享网络驱动器或专用的内部文件服务器上。您的应用需要适当的权限和网络访问来获取这些文件。
云存储服务: 像Amazon S3、Google Cloud Storage (GCS) 或 Azure Blob Storage 这样的服务是生产环境的常用选择。它们提供可扩展、持久且高可用的存储,与您的应用服务器解耦。
boto3、GCP的google-cloud-storage)来访问文件。存储和数据传输可能产生费用。模型注册中心: MLflow Model Registry、DVC(数据版本控制)、Vertex AI Model Registry 或 SageMaker Model Registry 等平台专门用于管理机器学习生命周期,包括模型工件存储、版本控制和阶段管理(例如,测试阶段、生产阶段)。
无论存储位置如何,您的FastAPI应用都需要一种方式来找到并加载正确的模型工件。
.env文件)或环境变量来指定模型工件的位置。这使得您的应用在不同环境(开发、测试、生产)中更具适应性。机器学习模型是不断发展的。您会使用新数据重新训练它们,尝试不同的架构,或者更新预处理步骤。对模型工件进行版本控制对于以下几点来说非常重要:
版本控制策略:
sentiment_model_v1.2.pkl、forecast_model_2024-03-15.joblib)。这很简单,但对于在本地存储模型的小项目来说可行。models/v1/model.pkl、models/v2/model.pkl)。清晰的目录结构有助于管理工件,特别是当它们本地存储时。考虑采用如下布局:
这是一个示例项目结构,展示了一个专门的
models/目录,用于在app/中的应用代码旁边存储序列化的模型工件。
在此结构中,app/内的应用代码将被配置为从同级models/目录加载模型。
请谨慎对待您的模型工件,特别是当它们是专有信息,或者内部嵌入的预处理步骤会显示关于训练数据的敏感信息时。
您选择的工件管理策略直接影响如何为部署打包您的应用,特别是当使用容器时(第6章将涵盖此内容)。
COPY指令)。选择正确的方法需要平衡简易性、可扩展性、安全性和与MLOps工作流程的集成。对于生产系统,通常建议借助云存储或专用的模型注册中心,而不是直接将模型与应用代码打包在一起。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造