Metaflow:Netflix 的 Python / R数据科学框架

全文共6522字,预计学习时长19分钟

图源:Unsplash

 

前不久,AWS re:Invent, Netflix 开源了一个自主开发的构建和管理数据科学项目的框架——Metaflow。在过去的两年里,他们内部数据科学团队迅速地应用它,使得许多项目能够缩短生产时间。

Netflix采用Metaflow

 

 

什么是Metaflow?

 

Metaflow是创建和执行数据科学工作流的框架,并配备了内置功能:

 

· 管理计算机资源,

· 执行容器化运行,

· 管理外部依赖,

· 版本、重播和恢复工作流运行

· 客户端 API 检查过去的运行适合笔记本电脑,

· 在本地,比如笔记本电脑,和远程云端执行模式之间切换

在内容寻址的数据存储中,Metaflow 自动对代码、数据和依赖关系进行快照,这通常由 S3支持,但也支持本地文件系统。这样就可以总结工作流,重现过去的结果,并检查关于工作流的任何东西,例如笔记本。—— Ycombinator上的vtuulos

基本上它旨在提高数据科学家的生产力,使他们能够专注于实际的数据科学工作,促进其交付成果的更快生产。

实际数据科学与基础设施需要

 

 

每天都有可能发生的事情

 

· 协作:帮助另一个数据科学家调试错误。希望可以在自己的笔记本电脑中按原样调出他失败的运行状态。

· 恢复运行: 运行失败或故意停止。修复代码中的错误后,希望可以从工作流失败、或停止的地方重新启动工作流。

· 混合运行:希望在本地运行工作流中的一个步骤,可能是数据加载步骤,因为数据集下载文件夹中;但是希望在云上运行另一个计算密集步骤:模型训练。

· 检查运行元数据: 三位数据科学家一直在调整超参数,以便在同一模型上获得更高的准确性。需要分析他们所有的训练运行情况,并选择性能最好的超参数集。

· 相同软件包的多个版本: 希望能够在项目中使用sklearn库的多个版本:0.20版本用于预处理步骤,0.22版本用于建模。

 

 

典型的Meta(工作)流是什么样子的?

 

概念

 

Metaflow工作流本质上是DAGs (有向无环图) 。下面的图像对其进行了最好的描述。图中的每个节点代表工作流中的一个处理步骤。

 

线性无环图

 

支化无环图

 

Metaflow在工作流程的每个步骤中执行惯用的 python 代码,在独立容器中与其相应的依赖项打包。

 

Metaflow架构的这个关键方面能够从 Metaflowsconda 生态系统中注入几乎所有的外部库,无需插件。这也是Metaflow 与其他通用解决方案(如Airflow)的不同之处。

 

程序

 

只要满足以下最低条件&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个Java程序抛出的异常,意思是在加载 com.netflix.loadbalancer.DummyPing 这个类的时候,发现该类的版本不受支持。可能是该类是用较高版本的Java编译器编译的,而运行该程序的Java虚拟机版本太低,不支持该类的版本。 解决方法是升级Java虚拟机版本,或者使用与该类版本匹配的Java编译器重新编译该类。 ### 回答2: 这个错误是由于使用了不受支持的Java类版本引起的。java.lang.UnsupportedClassVersionError是一个运行时异常,表示正在运行的Java虚拟机(JVM)无法加载特定类,因为该类的版本与JVM版本不兼容。 在这种情况下,错误信息中提到的类是com.netflix.loadbalancer.DummyPing。根据错误,这个类的版本不被当前JVM支持。可能的原因是该类是用一个高版本的Java编译器编译的,而当前JVM只支持低版本的类。 要解决这个问题,有以下几种方法可尝试: 1. 确保Java运行环境(JRE)或Java开发工具包(JDK)与编译该类的Java版本匹配。可以通过在命令行中运行java -version命令来检查JVM版本。 2. 如果使用的是Eclipse或其他IDE,确保项目的编译级别与JVM版本兼容。这可以通过在项目设置中更改编译级别来完成。 3. 重新编译或获取适用于当前JVM版本的com.netflix.loadbalancer.DummyPing类。这可能需要查看源代码或从合适的资源中获取适用于你的JVM版本的DummyPing类。 4. 更新JVM以支持较新版本的类。如果当前的JVM版本太低,可能需要升级到支持DummyPing类的更高版本的JVM。 总之,UnsupportedClassVersionError错误指示当前JVM无法加载特定类,因为类的版本与JVM版本不兼容。了解并解决当前JVM版本和类版本之间的不匹配问题是解决这个错误的关键。 ### 回答3: 这个错误是由于在Java虚拟机中加载Netflix的负载均衡库(com.netflix.loadbalancer)时,发现该库所依赖的类(DummyPing)的版本不被当前的Java运行环境所支持。 Java的版本通常以两部分表示,主版本号和次版本号,例如1.8、1.9、1.10等。当程序在运行时,如果加载的类的编译版本高于当前的Java环境版本,则会抛出UnsupportedClassVersionError异常。 在这种情况下,我们需要确认以下几点: 1. 检查当前Java环境的版本是否与负载均衡库所依赖的类的编译版本兼容。如果不兼容,则需要升级Java环境至与负载均衡库兼容的版本。 2. 确认是否正确地将负载均衡库添加到项目的构建路径中,并且相关的依赖项已经正确定义。 3. 检查是否存在多个版本的负载均衡库冲突。有时候,不同的库可能使用了相同的类但具有不同的版本,这可能导致加载冲突。解决方法是明确指定使用的版本或移除冲突的库。 在解决这个问题之前,我们需要详细了解项目的环境和配置。不同的项目和环境可能有不同的解决方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值