사개월 7 일부터, 넷플릭스 오픈 소스 파이썬 프레임 워크는 마법 Metaflow 어떤 성능을 향상시키기 위해?

저자 | 루퍼트 토마스

번역기 | 케이는 숨겨진

편집 | 제인

제작 | AI 기술을베이스 캠프 (ID : rgznai100)

 

[리드] Metaflow 12 월 2019 년에, 넷플릭스, 과학적 데이터의 분야에서 파이썬 프레임 워크에 의해 공식적으로 개방 개발했다. 보고서에 따르면, Metaflow 데이터 과학자가 그려 일련의 단계에서 건설 될 파이프 라인을 처리, 확장 성 및 버전 관리에서 직면 한 문제 중 일부를 해결합니다. Metaflow 더 쉽게 실행하는 클라우드 선 지역 자원 이동 (그러나 현재는 AWS 클라우드를 지원) 할 수 있습니다. 응급실 노드의 흐름도의 각 단계는 독립적으로 작동하고, 고유 의존성을 가지고 Metaflow 노드 사이의 내부 통신을 처리한다. 오늘, 우리는 Metaflow을 소개합니다, 우리가 도와주고 싶어요. 

              

Metaflow 프로필

 

넷플릭스 내부 Metaflow는 광고 게재, 비디오 인코딩 최적화와 같은 기계 학습 작업의 모든 측면에서 사용되어왔다. 그것은하여 배포의 속도를 향상시키는 모델이 전체 모델의 개발, 배치, 체계적인 갱신 처리의 배치의 효율을 개선하기 위해 그 표시 Metaflow.

 

데이터 과학자를 위해, 그들은 더 직접 모델 설계의 성능에 관련된 일에 대해 우려하고 모델이 같은 환경으로, 프로덕션 환경에서 업그레이드 할 수 있는지 확인하기 위해 신속한 배치 모델에 대한 모델 엔지니어링, 희망을 특징으로하며에 의존하고 싶지 않아 버전 관리, 데이터웨어 하우스 관리 및 프로세스에서 다른 기본 작업 에너지의 낭비, Metaflow이 문제를 해결하는 것입니다 나타납니다.

              

Metaflow 단순화하거나 데이터 과학자들이보다 빠르고 쉽게 실제 엔지니어링 환경에서 모델의 성능과 성능을 향상에 초점을 맞출 모델을 배포 할 수 있도록도, 기본 작업을 자동화하고, 생산성을 향상시킬 수 있습니다. 그래서,이는 사람 중심의 프레임 워크이다. 최근 넷플릭스는 또한 밝혀, Metaflow 프로젝트를 단지 7 일 사개월에서 감소 평균 배포 시간을 학습 넷플릭스 기계가 있습니다. 에 초점을 맞출 것이다 다음은 Metaflow과 기능을 사용할 수 있습니다.

 

기본 작동 원리

              

如上图,可以用一个有向非循环图来表示工作流程,图中的每个节点都表示一个流程中的一个阶段,这些阶段可以是任意的 Python 代码,在上图的例子中,Metaflow 并行的训练两个不同版本的模型,并选择性能最好的那个。这是一种单机并行处理的方式,类似于 Python 中的  multiprocessing 包。如果要部署到云资源,只需要额外指定一个命令行参数 --with batch,即可告知 Metaflow 在云上运行代码。目前只支持亚马逊的 Web 服务器,不过应该很快就会支持更多云服务器。

 

每个阶段的末尾都有一个检查点,可以在以后的阶段中从任意检查点恢复执行,以帮助调试。但是你不能逐行检查您的代码。

 

版本控制

 

机器学习的版本控制颇具挑战性,因此 Metaflow 也特别照顾了这个问题。每个步骤的运行代码和数据都是散列(hash)的,图中每个节点的执行都被记录下来,并且超参数设置和运行结果都被存储:

from metaflow import FlowSpec, Parameter, step


class FitModelFlow(FlowSpec):
    alpha = Parameter('alpha',
                      help='Learning rate',
                      default=0.01)


    @step
    def start(self):
        print('alpha is %f' % self.alpha)
        self.data = load_data()
        self.next(self.fit)


    @step
    def fit(self):
        self.model = fit(self.data)
        self.next(self.end)


    @step
    def end(self):
        print(f'Results for LR={self.alpha}: {eval(self.model)}')


if __name__ == '__main__':
    FitModelFlow()

超参数的设置可以很容易地通过命令行参数来完成:

python metaflow_parameter.py run --alpha 0.001

元数据以 JSON 格式存储在文件系统中,可以访问存储在任何阶段的变量数据,也可以很容易地获取最后一次成功运行的结果。

run = Flow(flow_name).latest_successful_run

依赖管理

 

Metaflow 还提供了依赖管理机制,可以在图阶段或节点阶段通过装饰器来指定,并且可以指定特定的Python版本或特定的包:

from metaflow import FlowSpec, step, conda, conda_base


@conda_base(python='3.6.5')
class FitModelFlow(FlowSpec):


    @step
    def start(self):
        self.data = load_data()


    @conda(libraries={"scikit-learn": "0.19.2"})
    @step
    def fit(self):
        from sklearn import svm
        self.model = svm.LinearSVC( ... )


# ...

例如可以从命令行运行时指定 conda 环境标志:

python metaflow_conda.py --environment=conda run

开始使用Metaflow

 

可以通过pip命令来安装metaflow:

pip install metaflow

更多教程和详细介绍可以参考官方文档:

https://docs.metaflow.org/getting-started/tutorials

 

原文链接:

https://towardsdatascience.com/what-exactly-is-metaflow-c007e5b75b5

(*本文为AI科技大本营翻译文章,转载请微信联系 1092722531)

精彩推荐

2020年,由 CSDN 主办的「Python开发者日」活动(Python Day)正式启动。我们将与 PyCon 官方授权的 PyCon中国社区合作,联手顶尖企业、行业与技术专家,通过精彩的技术干货内容、有趣多元化的活动等诸多体验,共同为中国 IT 技术开发者搭建专业、开放的技术交流与成长的家园。未来,我们和中国万千开发者一起分享技术、践行技术,铸就中国原创技术力量。

【Python Day——北京站】现已正式启动,「新春早鸟票」火热开抢!2020年,我们还将在全国多个城市举办巡回活动,敬请期待!

活动咨询,可扫描下方二维码加入官方交流群~

CSDN「Python Day」咨询群 ????

来~一起聊聊Python

如果群满100人,无法自动进入,可添加会议小助手微信:婷婷,151 0101 4297(电话同微信)


推荐阅读

    你点的每个“在看”,我都认真当成了AI

发布了1307 篇原创文章 · 获赞 1万+ · 访问量 545万+

추천

출처blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/104079021