在云计算的下一个阶段,无服务器计算(Serverless Computing)将服务器管理抽象化,使得开发者可以专注于应用或代码本身,而无需关心服务器的配置和管理。这种计算模式对于全栈数据科学家来说是一个重要的发展方向,因为它简化了模型部署流程。
无服务器部署是云计算的一个新阶段,它隐藏了服务器的细节,由平台来管理服务器和应用的分离。平台或无服务器提供商负责管理应用的所有需求和配置。这些平台在后台管理服务器的配置,使得开发者可以专注于构建或部署应用或代码。
机器学习模型部署与软件开发有所不同,因为模型需要持续的数据流来保持良好的工作状态。模型需要根据现实世界的变化进行调整,比如添加新的类别、新的级别等。部署模型只是开始,模型常常需要重新训练和检查性能。因此,使用无服务器部署可以节省时间和努力,特别是在每次重新训练模型时,这一点非常酷!
要理解无服务器部署,需要具备以下基础知识:
可以以三种方式部署机器学习模型:
以下是无服务器部署架构的概述。首先,将模型存储在Google Cloud Storage桶中,然后编写Google Cloud Functions。使用Python从桶中检索模型,并使用HTTP JSON请求获取给定输入的预测值,借助Google Cloud Function实现。
1. 关于数据、代码和模型:以电影评论数据集为例进行情感分析,解决方案可以在中找到,数据和模型也存放在同一仓库中。
2. 创建存储桶:通过执行“ServerlessDeployment.ipynb”文件,将得到3个机器学习模型:决策分类器、线性SVC和逻辑回归。点击“存储”选项创建一个新的桶,如下所示:
3. 创建新函数:创建一个新的桶,然后创建一个文件夹并上传3个模型到该文件夹中,创建3个子文件夹,如下所示。这里“models”是主文件夹名称,子文件夹是:
4. 创建函数:然后转到Google Cloud Functions并创建一个函数,选择触发类型为HTTP,选择语言为Python(可以选择任何语言):
5. 在编辑器中编写云函数:检查仓库中的云函数,这里导入了调用Google云桶中模型所需的库和其他用于HTTP请求GET方法的库,用于测试URL响应和POST方法。删除默认模板并粘贴代码,然后使用pickle反序列化模型。如果传入的请求是GET,简单地返回“欢迎来到分类器”。如果传入的请求是POST,访问请求正文中的JSON数据,获取JSON后,可以实例化存储客户端对象并从桶中访问模型,这里有3个分类模型在桶中。如果用户指定了“决策分类器”,从相应的文件夹中访问模型,对于其他模型也是如此。如果用户没有指定任何模型,默认模型是逻辑回归模型。blob变量包含对正确模型.pkl文件的引用。将.pkl文件下载到在此云函数运行的本地计算机上。现在每次调用可能在不同的VM上运行,只访问/临时文件夹,这就是为什么保存model.pkl文件。通过调用pickle.load反序列化模型,访问传入请求中的预测实例,并调用model.predict对预测数据进行预测。从无服务器函数返回的响应是原始文本,即想要分类的评论和预测类别。在编写main.py后,编写requirement.txt,列出所需的库和版本。
6. 部署模型:绿色勾号代表模型部署成功。