云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

轻量服务器_99百度云_怎么样

小七 141 0

ApacheSpark2.0预览:机器学习模型持久化

在数据库里试试这个笔记本介绍考虑以下机器学习(ML)用例:数据科学家生成ML模型并将其交给工程团队以在生产环境中进行部署。数据工程师将Python中的模型训练工作流与Java中的模型服务工作流集成在一起。数据科学家创造工作机会来训练许多ML模型,这些模型将在以后保存和评估。所有这些用例都更容易使用模型持久性,即保存和加载模型的能力。随着apachespark2.0即将发布,Spark的机器学习库MLlib将在基于数据帧的API中包含对ML持久性的近乎完全的支持。这篇博客文章给出了MLlib的持久性API的早期概述、代码示例和一些细节。ML持久性的关键特性包括:支持Spark中的所有语言API:Scala、Java、Python&R在基于数据帧的API中支持几乎所有的ML算法支持单个模型和完整管道,包括未安装("配方")和已安装(结果)使用可交换格式的分布式存储感谢所有帮助MLlib实现飞跃的社区贡献者!有关贡献者的完整列表,请参阅针对Scala/Java、Python和R的JIRAs。学习API在apachespark2.0中,MLlib的基于数据帧的API占据了mlonspark的前面。(关于这个API和它引入的"管道"概念,请参阅前面的博客文章。)这个基于数据帧的MLlib API提供了保存和加载模型的功能,这些模型模仿了我们熟悉的Spark数据源API。我们将使用流行的用于手写数字识别的MNIST数据集演示几种语言的保存和加载模型(LeCun等人,1998;可从LibSVM数据集页面获得)。这个数据集包含手写数字0-9,加上基本事实标签。以下是一些示例:我们的目标是拍摄手写数字的新图像并识别数字。有关加载此数据、拟合模型以及保存和加载它们的完整示例代码,请参见此笔记本。保存并加载单个模型我们首先展示如何保存和加载单个模型以在语言之间共享。我们将使用Python装配一个随机森林分类器,保存它,然后使用Scala加载相同的模型。培训=sqlContext.read…数据:功能、标签rf=随机森林分类器(numTrees=20)型号=射频配合(培训)我们可以简单地调用save方法来保存这个模型,然后调用load方法来重新加载它:模型.保存("myModelPath")sameModel=随机预测tClassificationModel.load类("myModelPath")我们还可以将相同的模型(保存在Python中)加载到Scala或Java应用程序中://在Scala中加载模型val sameModel=随机预测tClassificationModel.load类模型路径("MyPath")对于小型模型(如K模型)和分布式模型(如K模型)都有效。加载的模型具有相同的参数设置和数据,因此即使加载到完全不同的Spark部署上,它也将返回相同的预测。保存并加载完整的管道到目前为止,我们只讨论了保存和加载一个ML模型。在实践中,ML工作流包括许多阶段,从特征提取和转换到模型拟合和调整。MLlib提供管道来帮助用户构建这些工作流。MLlib允许用户保存和加载整个管道。让我们看看如何在示例管道上执行此操作,步骤如下:特征提取:将图像转换为黑白的二值化器模型拟合:随机森林分类器获取图像并预测数字0-9调优:交叉验证来调整森林中树的深度以下是我们笔记本中构建此管道的片段://构建管道:Binarizer+Random Forest管道数组(binarizes,setsrf())//在CrossValidator中包装管道以进行模型调优。val cv=新的CrossValidator().setEstimator(管道)…在我们安装这个管道之前,我们将展示我们可以保存整个工作流(在安装之前)。以后可以加载此工作流以在另一个数据集、另一个Spark群集上运行。简历保存("myCVPath")值sameCV=交叉验证程序.load("myCVPath")最后,我们可以安装管道,保存它,稍后再重新加载。这样就节省了特征提取步骤、通过交叉验证调整的随机林模型以及模型调整中的统计信息。val cvModel=等速配合(培训)cvModel.save("myCVModelPath")val sameCVModel=CrossValidatorModel.load("myCVModelPath")了解细节Python调整Spark 2.0中缺少的一项是Python调优。Python还不支持保存和加载CrossValidator和TrainValidationSplit,它们用于优化模型超参数;这个问题针对的是Spark 2.1(Spark-13786)。但是,仍然可以保存来自CrossValidator的结果和Python的TrainValidationSplit。例如,让我们使用交叉验证来优化随机林,然后保存优化过程中找到的最佳模型。定义工作流rf=随机森林分类器()cv=交叉验证器(估计器=rf,…)拟合模型,运行交叉验证cvModel=等速配合(培训数据)提取结果,即最佳随机森林模型最佳型号=cvModel.bestModel公司保存RandomForest模型最佳模型保存("rfModelPath")完整代码请参阅笔记本。可交换存储格式在内部,我们将模型元数据和参数保存为JSON,将数据保存为Parquet。这些存储格式是可交换的,可以使用其他库读取。Parquet允许我们同时存储小模型(例如用于分类的朴素Bayes)和大型的分布式模型(比如用于推荐的ALS)。存储路径可以是Dataset/DataFrame save and load支持的任何URI,包括到S3的路径、本地存储等。语言交叉兼容性可以轻松地跨Scala、Java和Python保存和加载模型。R有两个限制。首先,并不是所有的MLlib模型都支持R,所以并不是所有用其他语言训练过的模型都可以加载到R中。其次,当前的R模型格式存储了R特有的额外数据,使用其他语言加载在R中训练和保存的模型有点麻烦(参见随附的笔记本电脑中的破解)。更好的跨语言支持R将在不久的将来添加。结论随着即将发布的2.0版本,基于数据帧的mllibapi将为持久化模型和管道提供近乎完整的覆盖。持久性对于团队之间共享模型、创建多语言ML工作流以及将模型移动到生产环境中至关重要。这个特性是准备基于数据帧的mllibapi成为apachespark中机器学习的主要API的最后一部分。下一步是什么?高优先级的项目包括完整的持久性覆盖范围,包括Python模型调优算法,以及R和其他语言api之间改进的兼容性。开始使用Scala和Python中的本教程笔记本。也可以只更新当前MLlib工作流以使用save and load。在Databricks Community Edition beta程序中使用apachespark branch-2.0预览版来测试这个API。阅读更多阅读这篇博文中引用的完整代码的笔记本。了解MLlib和ML管道的基于数据帧的API:介绍ML管道的笔记本:自行车共享数据集分析教程关于ML管道的原始博客文章免费试用Databricks。今天就开始吧