在这个演示中,我们将在Databricks上演示一个真实的数据科学和机器学习用例,展示数据团队的不同成员如何在Databricks平台上进行交互和协作。bob体育客户端下载
我们还展示了MLflow on Databricks简化和流线端到端机器学习工作流程,使用MLflow跟踪服务器跟踪和编目每个模型训练运行,以及MLflow模型注册中心引导ML模型通过测试和登台环境进入生产,直接从Databricks。
视频记录
欢迎来到数据库。lakehouse是一个简单开放的数据平台,用于存储和管理所有数据,支持所有分析bob体育客户端下载和人工智能用例。它是数据科学家和数据工程师、ML工程师和分析师合作准备和分析数据、构建模型并将其部署到生产中的地方。
今天,我们将重点关注数据科学家,正如你将在这里看到的,他们试图从健康指标数据解释预期寿命。在此过程中,我们将看到我们的平台如何支持从数据摄取到生产的整个生命周期。bob体育客户端下载
点击展开文字记录→
点击折叠文本→
您在这里看到的基于Notebook的环境是Databricks。您可以用多种语言编辑、运行和共享代码、文档、可视化和输出。Notebook可以附加到现有集群,如果有必要,也可以创建一个新的集群。
我们将分三个部分讨论这个问题:数据访问和准备、建模和解释,以及最后的部署。这里我们只简单回顾一下Databricks中数据工程师的工作。她的目标是使原始数据可用。这包括修复输入中的错误,或标准化表示,并连接不同的数据以生成可供建模人员和分析人员使用的表。
这里的输入只是来自世界卫生组织和世界银行的CSV文件,以及我们作为研究因素纳入的额外药物过量数据集。它们可以直接从分布式存储以Spark dataframe的形式读取。请注意,这些数据源也可以是SQL数据库、JSON文件或Parquet文件等等。模式是自动读取的,在CSV的情况下是自动推断的。
这些档案包含了过去几十年16个发达国家的大约2000种不同的健康和人口特征。我们的目标是了解这些特征如何预测预期寿命,以及哪一两个最重要。
所以数据工程师可能更喜欢使用SQL和Scala。除了Python和R之外,Databricks还支持这些,数据科学家可能更喜欢它们。所有这些都可以在一个笔记本中使用。
在此过程中,即使是数据工程师也可以使用SQL查询数据,并通过像这样的内置可视化查看结果。他们可能想要先看一下数据,我们清楚地看到,2000年至2016年美国人的预期寿命趋势看起来不同。它很低,而且还在下降。问题是为什么。
因此,在数据工程工作流的末尾,这三个数据源按国家和年份连接,并写入一个注册的Delta Lake表。因此,对于数据科学家来说,这种表示并没有太大的直接区别。它只是一个可以像其他数据源一样读取的表。但是Delta Lake提供事务性写入,并允许数据工程师更新和修复来自错误提要的数据,或优雅地修改模式或对数据实施某些约束。这对数据科学家来说很重要。
任何面对过数据库数据转储建模的人,都将认识到这些因素可能导致下游的真正数据科学问题,而Delta Lake有助于解决这些问题。
或者,例如,考虑需要准确地回忆用于生成治理或可再现性模型的数据。将数据管理为Delta Lake表允许数据科学家查询前一个时间点的数据。这当然有助于重现性。请注意,每个人都可以在这个笔记本上合作,也许可以留下这样的评论。
这里我们从数据科学家的世界中挑选。她的目标是探索数据,为这里的具体分析进一步丰富和完善数据,并为建模和生产部署生成另一个特征数据表。所以合作的开始很简单:读取数据工程师产生的数据表。本笔记本使用Python,对于数据科学来说,这个生态系统可能更熟悉也更有用。然而,Spark API是相同的,数据表以完全相同的方式可用。
现在你不必只使用Spark和Databricks。例如,在返回Spark之前,我们切换到Pandas填充一些缺失的值。您也可以为Spark定义有效的udf或用户自定义函数来利用Pandas。
Python生态系统也提供了用于可视化的库,同样地,在Databricks中,您可以使用这些库。像Matplotlib和Seaborn这样的常用库已经内置到ML运行时中,其他库也可以轻松添加。
在这里,数据科学家使用Seaborn生成了一些特征的一对图,如预期寿命、识字率和人均阿片类药物死亡率。它可以突出相关性,比如人均医疗支出与GDP之间的相关性,也可以揭示一个明显的异常值。所以在阿片类药物死亡方面的异常值将再次成为美国。
在一些附加特性之后,数据被写入另一个Delta Lake表。
现在,数据集足够小,可以使用XGBoost和Pandas等工具进行操作和建模,所有这些工具都已经在运行时中可用。但Spark在不久的将来仍将是重要的。
数据科学家正在使用XGBoost开发建模代码。它将把预期寿命作为输入中剩下的大约1000个特征的函数进行回归。但建立一个模型实际上意味着建立数百个模型,以便发现模型超参数的最佳设置。
通常情况下,数据科学家可能会对这些值执行网格或随机搜索,并在平台连续处理每个值时等待数小时。bob体育客户端下载然而,Databricks在其运行时提供了一个称为HyperOpt的贝叶斯优化框架,这是一种现代而有效的并行搜索方式。
因此,给定一个搜索空间,Hyperopt在集群中并行地运行模型的各种变体,在运行过程中学习哪些设置会产生越来越好的结果。HyperOpt可以使用Spark并行运行这些变化,尽管这里的简单建模不需要Spark本身。这种并行性可以显著降低这些超参数搜索所需的挂钟时间。
使用Databricks中的MLflow自动跟踪结果。这提供了在本笔记本中创建的建模运行的快速视图。我们可以钻到实验视图中。
这是MLflow跟踪服务器,这个实验展示了这些试验的更详细的概述。我们可以使用它来搜索运行,甚至像这里一样进行比较。例如,我们可能希望使用并行坐标图来比较所有的运行。通过这种方法,找出哪种超参数组合会产生最大的损失。
例如,这个详细信息视图还显示了谁创建了模型,使用了什么版本的笔记本,什么时候创建的,以及包括损失在内的超参数的所有详细信息。它还包括模型本身,以及数据科学家创建的特征重要性图。
该模型现在可以注册到模型注册表中,作为当前的“分期候选”模型,以供进一步分析。Model Registry是一个由Databricks管理的逻辑模型的集中式存储库。它管理此模型的工件和版本,并管理它们从登台到生产的升级。
这个特定的模型有几个版本被注册为同一个逻辑模型的版本,它们可以存在于类似于Staging和Production的状态中。模型注册表也可以在左侧导航栏中访问。
与管理模型不同的是,例如,在某个文件中写下的系数列表,或者存储在共享驱动器上的pickle文件,Model Registry提供了一个更正式的工作流,不仅跟踪模型的工件,而且还跟踪哪些工件已经为生产部署的哪个阶段做好了准备。
所以接下来,经理可能会检查模型和图表。这是一个由Shap创建的特征重要性图表,它显示了对预期寿命影响最大的特征是癌症,糖尿病和心脏病的死亡率。低死亡率,用蓝色表示,意味着更高的预期寿命,这似乎解释了预期寿命增加1到- 1.5年的原因。其次重要的是“年”,这毫不奇怪地反映了随着时间的推移,健康状况不断改善的许多累积效应。
所以请注意,与药物相关的死亡似乎并不是一个主要的解释特征——其他疾病仍然占主导地位。因此,在审查模型和其他图之后,经理可能最终批准该模型用于生产。
部署工程师接管这里。她从model Registry加载最新的生产模型,即已批准部署的生产模型。但是如果需要,MLflow会自动将其转换为Spark UDF或用户定义函数。这意味着只需一行代码,它就可以应用于Spark的大规模数据特性。
现在,这可以在批评分作业或流作业中同样有效。因此,先将此与例如将模型甚至只是系数交给软件工程师以尝试正确地重新实现为可以在生产中运行的代码进行比较。在这里,数据科学家创建的确切模型可以提供给生产工程师,在转换过程中没有任何损失。
因此,以这个生产工作为例,数据适用于2017年至2018年的输入,其中预期寿命数据未知。这可以与截至2016年的数据结合起来,完成我们之前看到的图表,展示了推断的趋势。
现在,请注意,这不仅可以在Python中注册为UDF,还可以在SQL中注册为UDF。所以请注意,这些预测看起来相当平淡。但这主要是因为超过一半的特征数据在后来的几年里丢失了。这个模型也可以作为REST API或服务部署在Amazon Sagemaker或Azure ML中。
因此,这是一个简单的例子,说明Databricks如何为整个生命周期提供动力,从数据工程到数据科学和建模,最后是模型管理和部署等MLOps任务。
准备开始了吗?