加藤  七夏

加藤 七夏

1658831460

如何在 Python 中構建和部署機器學習管道

發現您需要了解的有關 Kubeflow 的所有信息,並探索如何構建和部署機器學習管道

介紹

在構建機器學習模型時,您可能忘記考慮在生產中訓練和服務模型所需的基礎設施。對於端到端機器學習工作流,管理所有應用程序、平台和資源考慮因素可能具有挑戰性。 

與傳統的 Web 部署相比,機器學習應用程序具有不同的足跡。例如,訓練階段是資源密集型的,而推理階段是輕量級和快速的。您還需要工具和框架來運行所有這些部分。Kubeflow是一個非常流行的開源框架,可用於開發交付端到端機器學習應用程序的標準。

什麼是 Kubeflow?

Kubeflow 是一個開源項目,其中包含一組精選的工具和框架。Kubeflow 的主要目標是使開發、部署和管理可移植、可擴展的機器學習工作流變得容易。 

Kubeflow 建立在 Kubernetes 之上,Kubernetes 是一個用於運行和編排容器的開源平台。Kubernetes 被構建為在不同的環境中一致地運行,這是 Kubeflow 運行方式的關鍵。Kubeflow 旨在讓 Kubernetes 做它擅長的事情,讓您專注於定義和運行 ML 工作流,包括管理數據、運行筆記本、訓練模型和服務它們。 

Kubeflow 是從 Google 的內部項目 TensorFlow Extended 演變而來的。它最初只是在 Kubernetes 上運行 TensorFlow 作業的一種更簡單的方法,但後來擴展為用於運行端到端機器學習工作流的多架構、多雲框架。 

Kubeflow 和機器學習工作流

Kubeflow 是一個面向數據科學家和機器學習工程師的平台,包含兩全其美的功能。數據科學家可以使用 Kubeflow 來試驗 ML 模型,並以最有效的方式在 Kubernetes 上編排他們的實驗。 

機器學習工程師可以使用 Kubeflow 將 ML 系統部署到各種環境中,以進行開發、測試和生產服務。

下圖是機器學習項目中兩個不同階段的示例:(i) 實驗階段和 (ii) 生產階段。 

Kubeflow 有很多不同的組件來支持下面管道中的幾乎所有步驟。例如,為了調整模型的超參數,Kubeflow 有一個名為“Katib”的組件。我們將在本教程後面討論 Kubeflow 的關鍵組件。

機器學習工作流程

Kubeflow - 機器學習工作流程

安裝 Kubeflow

有兩種方法可以啟動和運行 Kubeflow:

  1. 使用打包發行版安裝它(簡單明了)。
  2. 使用清單安裝它(高級)。

打包發行版由各自的維護者開發和支持。例如,Azure 上的 Kubeflow 由 Microsoft 維護。請參閱下表中的完整分佈列表:

Kubeflow 打包發行版

Kubeflow 打包發行版

Kubeflow 的三個原則

可組合性

可組合性是處理組件相互關係的系統設計原則。Kubeflow 具有高度可組合性,因此如果需要,您可以輕鬆地將不同版本的 TensorFlow 用於機器學習管道的不同部分。 

可移植性

可移植性意味著您可以在運行 Kubeflow 的任何地方運行整個機器學習項目。它與平台無關,為用戶消除了所有困難。您只需編寫一次代碼,Kubeflow 將處理抽象,因此您可以在筆記本電腦或云中的集群上運行代碼。

可擴展性

可擴展性意味著您的項目可以在需要時訪問更多資源,並在不需要時釋放它們。每個環境都可以有不同的計算資源,例如 CPU、GPU 和 TPU。

Kubeflow 概念實體

Kubeflow 概念實體

Kubeflow 組件

Kubeflow 組件是共同構成 Kubeflow 的邏輯塊。通常,您會發現自己在機器學習項目中使用了一個或多個組件。

儀表板

最重要的是,中央儀表板提供對其他 Kubeflow 組件的快速訪問。一些有用的組件是:

 

Kubeflow 儀表板 UI 視圖

Kubeflow 儀表板 UI 視圖

筆記本

Kubeflow 帶有一個集成的 Jupyter 筆記本環境。筆記本對於進行快速測試、開發模型甚至編寫 ML 應用程序都很有用。 

ML 工程師和數據科學家在本地運行筆記本並受到資源限制的情況並不少見。在集群中擁有筆記本可以輕鬆運行可以動態擴展資源的作業。 

Kubeflow 筆記本

Kubeflow 筆記本

管道

Kubeflow Pipelines 是一個強大的 Kubeflow 組件,用於構建基於 Docker 容器的端到端可移植和可擴展的機器學習管道。 

機器學習管道是一組步驟,能夠處理從收集數據到服務機器學習模型的所有事情。管道中的每個步驟都是一個 Docker 容器,因此具有可移植性和可擴展性。管道中的每個步驟都是獨立的,允許您重用管道組件。 

Kubeflow 流水線用戶界面

Kubeflow 流水線用戶界面

在本教程中,我們將詳細介紹 Kubeflow Pipelines 組件,並查看如何使用 Kubeflow 構建和執行機器學習管道的代碼示例。

秘書

Katib 是一個 Kubeflow 組件,專為大規模自動調整超參數而設計。超參數調優在開發良好模型中起著重要作用,因為手動搜索超參數空間可能需要付出很多努力。 

Katib 可幫助您圍繞定義的指標(例如 AUC 或 RMSE)優化超參數值。這是查找和可視化最佳配置以準備生產模型的有用方法。 

Kubeflow 秘書 UI

Kubeflow 秘書 UI

Kubeflow 管道

機器學習工作流程可能涉及許多步驟,從數據準備到模型訓練再到模型評估等等。很難以特別的方式跟踪這些。 

沒有適當工具的實驗記錄和模型版本跟踪是數據科學家需要克服的另一個挑戰。Kubeflow Pipelines 讓數據科學家可以使用可組合、可共享和可重現的標准開發機器學習工作流。

Kubeflow 是一種 Kubernetes 原生解決方案,可幫助數據科學家在開發機器學習代碼並將其擴展到雲端時採用規範的管道思維方式。Kubeflow Pipelines 的最終目標是:

  • 大規模簡化機器學習管道的編排 
  • 通過多租戶實現更快的實驗、可重複性和協作。Kubeflow UI 可用於創建組並將用戶添加到具有訪問控制的組。
  • 可重用並提供不同 ML 組件(管道中的步驟)的標準化。

使用 Kubeflow,您可以創建端到端的機器學習解決方案,而無需每次都重新構建,例如構建塊。Kubeflow 還支持其他一些功能,例如執行監控、工作流調度、元數據日誌記錄和版本控制。

架構概述

Kubeflow 架構概述

Kubeflow 流水線中的重要概念

管道

管道是機器學習 (ML) 工作流程中一系列明確定義的步驟。管道必須定義運行管道所需的輸入(參數)以及每個組件的輸入和輸出。管道中的每個組件都接受一個輸入,對其進行處理,然後將輸出提供給下一個組件。

這裡要理解的一個非常重要的概念是 Kubeflow 管道中的每個步驟(組件)基本上都是一個 Docker 容器。當您執行管道時,Kubeflow 會啟動一個或多個與管道中的組件對應的 Kubernetes Pod。然後 Pod 啟動 docker 容器,該容器反過來執行您在組件中編寫的代碼。

零件

管道組件是在機器學習工作流中執行一個步驟的自包含代碼,例如缺失值插補、數據縮放或機器學習模型擬合。

Kubeflow 管道中的組件類似於函數。因此,每個組件都有一個名稱、輸入參數和一個輸出。 

管道中的每個組件都必須打包為 Docker 映像,以便管道的每個步驟彼此獨立,並且您可以在 ML 工作流程的不同部分混合和匹配不同的框架和工具。

實驗

實驗允許您運行同一管道的不同配置並比較和分析結果。通常在機器學習中,你必須嘗試不同的參數來看看哪一個效果最好。Kubeflow Pipeline Experiment 旨在實現這一目標。

圖形

圖表是 Kubeflow UI 中的可視化呈現。它顯示了管道運行已執行或正在執行的步驟,箭頭指示每個步驟表示的管道組件之間的父/子關係。 

在 Kubeflow 中構建管道的三種方式 

希望現在清楚什麼是 Kubeflow 管道,以及使用該框架在生產中設計和部署機器學習工作流的好處是什麼。讓我們快速回顧一下使用 Kubeflow 構建和部署管道的三種方式。

用戶界面 (UI)

您可以使用 Kubeflow UI 運行管道、上傳有人與您共享的管道、查看工件和運行輸出,並安排自動運行。這是 Pipeline UI 的樣子:

Kubeflow 管道

Kubeflow 管道接口

官方 Python SDK

Kubeflow 提供了一組 Python 庫,您可以使用它們以編程方式開發和執行 ML 管道。這是 Kubeflow 管道最常見的使用方式。

REST API

Kubeflow 還為持續集成/部署系統提供 REST API。想像一個用例,您希望將任何 Kubeflow Pipeline 功能集成到下游企業系統或流程中。

Kubeflow 流水線教程

開始使用 Kubeflow 的最簡單方法是使用打包發行版,它基本上類似於雲上的託管服務。在這裡,我們在 GCP 上使用 Kubeflow 服務。您可以按照這個官方指南學習如何在 GCP 上部署服務。 

部署成功後,您可以從 GCP 端點訪問此儀表板。

Kubeflow 儀表板

Kubeflow 儀表板 - 在 GCP 上部署

Kubeflow Pipelines 附帶了一些示例管道。讓我們在 Python 中嘗試一個基本的數據預處理管道。單擊左側工具欄上的管道。

Kubeflow 管道接口

Kubeflow 管道 - 在 GCP 上部署

點擊創建實驗: 

Kubeflow 流水線-GCP

Kubeflow 管道 - 在 GCP 上部署

按照提示操作,然後單擊運行屏幕上的開始按鈕以運行管道。

Kubeflow 管道 - 在 GCP 上部署

Kubeflow 管道 - 在 GCP 上部署

實驗將顯示在儀表板中:

Kubeflow Pipelines - 第一次實驗

Kubeflow 管道 - 在 GCP 上部署

運行完成後,單擊實驗以查看輸出:

管道首次運行

Kubeflow 管道 - 在 GCP 上部署

現在您知道瞭如何使用 Kubeflow UI 執行管道。上面管道中的每個組件只是一個簡單的、自我隔離的 Python 腳本。在上面的示例中,步驟很簡單,例如“打印文本”或“求和”。 

讓我們看一個更複雜的示例,說明如何在 Python 中編碼和編譯這些組件。

通過 Python SDK 構建 Kubeflow 管道

在此示例中,我們將創建一個包含兩個組件的 Kubeflow 管道: 

  • 根據作為輸入傳遞的 url 下載壓縮的 tar 文件,
  • 提取所有 csv 文件並使用 `pd.concat` 函數創建單個 pandas 數據框。 

從理論上講,我們還可以創建一個函數來獲取 url,下載壓縮文件,然後將所有 csv 文件合併到一個文件中,而不是將這條管道分成兩個步驟。 

但是,分兩步完成的好處是您可以創建一個下載壓縮文件的步驟,然後您也可以在其他項目中重複使用它。 

在 Kubeflow 中,您可以將組件定義為 yaml 文件,並使用 `kfp.components.load_component_from_url` 函數直接從 url 加載組件。 

第一步,讓我們從這個開源url加載組件。

```

web_downloader_op = kfp.components.load_component_from_url(

    'https://raw.githubusercontent.com/kubeflow/pipelines/master/components/web/Download/component-sdk-v2.yaml')

```

第二步,我們將定義一個 Python 函數:

```

@component(

    packages_to_install=['pandas==1.1.4'],

    output_component_file='component.yaml'

)

def merge_csv(tar_data: Input[Artifact], output_csv: Output[Dataset]):

  import glob

  import pandas as pd

  import tarfile




  tarfile.open(name=tar_data.path, mode="r|gz").extractall('data')

  df = pd.concat(

      [pd.read_csv(csv_file, header=None) 

       for csv_file in glob.glob('data/*.csv')])

  df.to_csv(output_csv.path, index=False, header=False)




```

如您所見,該函數使用 `kfp.dsl.component` 註釋進行修飾。我們可以使用此註解來定義容器鏡像、任何包依賴項(在本例中為 pandas[1.1.4])以及將組件規範保存到的位置(component.yaml)

現在,您可以使用 `pipeline` 運算符在管道中將這兩個組件鏈接在一起。 

定義管道並從組件創建任務:

@dsl.pipeline(

    name='my-pipeline',

    # You can optionally specify your own pipeline_root

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

)

def my_pipeline(url: str):

  web_downloader_task = web_downloader_op(url=url)

  merge_csv_task = merge_csv(tar_data=web_downloader_task.outputs['data'])

  # The outputs of the merge_csv_task can be referenced using the

  # merge_csv_task.outputs dictionary: merge_csv_task.outputs['output_csv']

```

一旦定義了管道,我們就可以編譯它。有兩種編譯方法。第一個是通過 Kubeflow UI。

```

kfp.compiler.Compiler(mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE).compile(

    pipeline_func=my_pipeline,

    package_path='pipeline.yaml')

```

我們現在可以使用 Kubeflow Pipeline 的用戶界面上傳並運行這個 `pipeline.yaml` 文件。或者,我們可以使用 Kubeflow Pipeline 的 SDK 客戶端運行管道。

```

client = kfp.Client()




client.create_run_from_pipeline_func(

    my_pipeline,

    mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE,

    # You can optionally override your pipeline_root when submitting the run too:

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

    arguments={

        'url': 'https://storage.googleapis.com/ml-pipeline-playground/iris-csv-files.tar.gz'

    })

```

如果我們必須擴展此管道以包含機器學習模型,我們將創建一個 python 函數,該函數接受 `Input[Dataset]` 並使用我們想要的任何框架擬合模型,例如 sklearn、Tensorflow 或 PyTorch。 

創建函數後,我們必須編輯 `my_pipeline` 函數以包含第三個任務,然後使用 `kfp.Client` 或 UI 重新編譯管道。

教程轉載自Kubeflow 官方

結論

在 Jupyter Notebook 中試驗幾百萬行數據是一回事。在雲上遠程訓練數十億行的機器學習模型是另一回事。在可擴展和分佈式環境中訓練大型模型時,機器學習變得非常困難。 

Kubernetes 是機器學習作業中最流行和廣泛使用的編排框架之一;Kubeflow 是一個建立在 Kubernetes 之上的框架,可以為用戶抽像出許多困難的細節。但是,很高興知道這不是您唯一的選擇。就像其他一切一樣,還有其他選擇。 

這種平台的一個例子是Databricks。它有自己的專有編排引擎(與 Kubernetes 不同),並帶有一個漂亮的 UI,支持筆記本、實驗記錄、模型註冊表、作業調度和監控。 

鏈接:https ://www.datacamp.com/tutorial/kubeflow-tutorial-building-and-deploying-machine-learning-pipelines

#machinelearning #python

What is GEEK

Buddha Community

如何在 Python 中構建和部署機器學習管道
Ray  Patel

Ray Patel

1619510796

Lambda, Map, Filter functions in python

Welcome to my Blog, In this article, we will learn python lambda function, Map function, and filter function.

Lambda function in python: Lambda is a one line anonymous function and lambda takes any number of arguments but can only have one expression and python lambda syntax is

Syntax: x = lambda arguments : expression

Now i will show you some python lambda function examples:

#python #anonymous function python #filter function in python #lambda #lambda python 3 #map python #python filter #python filter lambda #python lambda #python lambda examples #python map

Shardul Bhatt

Shardul Bhatt

1626775355

Why use Python for Software Development

No programming language is pretty much as diverse as Python. It enables building cutting edge applications effortlessly. Developers are as yet investigating the full capability of end-to-end Python development services in various areas. 

By areas, we mean FinTech, HealthTech, InsureTech, Cybersecurity, and that's just the beginning. These are New Economy areas, and Python has the ability to serve every one of them. The vast majority of them require massive computational abilities. Python's code is dynamic and powerful - equipped for taking care of the heavy traffic and substantial algorithmic capacities. 

Programming advancement is multidimensional today. Endeavor programming requires an intelligent application with AI and ML capacities. Shopper based applications require information examination to convey a superior client experience. Netflix, Trello, and Amazon are genuine instances of such applications. Python assists with building them effortlessly. 

5 Reasons to Utilize Python for Programming Web Apps 

Python can do such numerous things that developers can't discover enough reasons to admire it. Python application development isn't restricted to web and enterprise applications. It is exceptionally adaptable and superb for a wide range of uses.

Robust frameworks 

Python is known for its tools and frameworks. There's a structure for everything. Django is helpful for building web applications, venture applications, logical applications, and mathematical processing. Flask is another web improvement framework with no conditions. 

Web2Py, CherryPy, and Falcon offer incredible capabilities to customize Python development services. A large portion of them are open-source frameworks that allow quick turn of events. 

Simple to read and compose 

Python has an improved sentence structure - one that is like the English language. New engineers for Python can undoubtedly understand where they stand in the development process. The simplicity of composing allows quick application building. 

The motivation behind building Python, as said by its maker Guido Van Rossum, was to empower even beginner engineers to comprehend the programming language. The simple coding likewise permits developers to roll out speedy improvements without getting confused by pointless subtleties. 

Utilized by the best 

Alright - Python isn't simply one more programming language. It should have something, which is the reason the business giants use it. Furthermore, that too for different purposes. Developers at Google use Python to assemble framework organization systems, parallel information pusher, code audit, testing and QA, and substantially more. Netflix utilizes Python web development services for its recommendation algorithm and media player. 

Massive community support 

Python has a steadily developing community that offers enormous help. From amateurs to specialists, there's everybody. There are a lot of instructional exercises, documentation, and guides accessible for Python web development solutions. 

Today, numerous universities start with Python, adding to the quantity of individuals in the community. Frequently, Python designers team up on various tasks and help each other with algorithmic, utilitarian, and application critical thinking. 

Progressive applications 

Python is the greatest supporter of data science, Machine Learning, and Artificial Intelligence at any enterprise software development company. Its utilization cases in cutting edge applications are the most compelling motivation for its prosperity. Python is the second most well known tool after R for data analytics.

The simplicity of getting sorted out, overseeing, and visualizing information through unique libraries makes it ideal for data based applications. TensorFlow for neural networks and OpenCV for computer vision are two of Python's most well known use cases for Machine learning applications.

Summary

Thinking about the advances in programming and innovation, Python is a YES for an assorted scope of utilizations. Game development, web application development services, GUI advancement, ML and AI improvement, Enterprise and customer applications - every one of them uses Python to its full potential. 

The disadvantages of Python web improvement arrangements are regularly disregarded by developers and organizations because of the advantages it gives. They focus on quality over speed and performance over blunders. That is the reason it's a good idea to utilize Python for building the applications of the future.

#python development services #python development company #python app development #python development #python in web development #python software development

Art  Lind

Art Lind

1602968400

Python Tricks Every Developer Should Know

Python is awesome, it’s one of the easiest languages with simple and intuitive syntax but wait, have you ever thought that there might ways to write your python code simpler?

In this tutorial, you’re going to learn a variety of Python tricks that you can use to write your Python code in a more readable and efficient way like a pro.

Let’s get started

Swapping value in Python

Instead of creating a temporary variable to hold the value of the one while swapping, you can do this instead

>>> FirstName = "kalebu"
>>> LastName = "Jordan"
>>> FirstName, LastName = LastName, FirstName 
>>> print(FirstName, LastName)
('Jordan', 'kalebu')

#python #python-programming #python3 #python-tutorials #learn-python #python-tips #python-skills #python-development

Art  Lind

Art Lind

1602666000

How to Remove all Duplicate Files on your Drive via Python

Today you’re going to learn how to use Python programming in a way that can ultimately save a lot of space on your drive by removing all the duplicates.

Intro

In many situations you may find yourself having duplicates files on your disk and but when it comes to tracking and checking them manually it can tedious.

Heres a solution

Instead of tracking throughout your disk to see if there is a duplicate, you can automate the process using coding, by writing a program to recursively track through the disk and remove all the found duplicates and that’s what this article is about.

But How do we do it?

If we were to read the whole file and then compare it to the rest of the files recursively through the given directory it will take a very long time, then how do we do it?

The answer is hashing, with hashing can generate a given string of letters and numbers which act as the identity of a given file and if we find any other file with the same identity we gonna delete it.

There’s a variety of hashing algorithms out there such as

  • md5
  • sha1
  • sha224, sha256, sha384 and sha512

#python-programming #python-tutorials #learn-python #python-project #python3 #python #python-skills #python-tips

How To Compare Tesla and Ford Company By Using Magic Methods in Python

Magic Methods are the special methods which gives us the ability to access built in syntactical features such as ‘<’, ‘>’, ‘==’, ‘+’ etc…

You must have worked with such methods without knowing them to be as magic methods. Magic methods can be identified with their names which start with __ and ends with __ like init, call, str etc. These methods are also called Dunder Methods, because of their name starting and ending with Double Underscore (Dunder).

Now there are a number of such special methods, which you might have come across too, in Python. We will just be taking an example of a few of them to understand how they work and how we can use them.

1. init

class AnyClass:
    def __init__():
        print("Init called on its own")
obj = AnyClass()

The first example is _init, _and as the name suggests, it is used for initializing objects. Init method is called on its own, ie. whenever an object is created for the class, the init method is called on its own.

The output of the above code will be given below. Note how we did not call the init method and it got invoked as we created an object for class AnyClass.

Init called on its own

2. add

Let’s move to some other example, add gives us the ability to access the built in syntax feature of the character +. Let’s see how,

class AnyClass:
    def __init__(self, var):
        self.some_var = var
    def __add__(self, other_obj):
        print("Calling the add method")
        return self.some_var + other_obj.some_var
obj1 = AnyClass(5)
obj2 = AnyClass(6)
obj1 + obj2

#python3 #python #python-programming #python-web-development #python-tutorials #python-top-story #python-tips #learn-python