• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    數據中心/云端

    實踐中的機器學習:在 Google 云平臺上部署 ML 模型

    本系列介紹 開發和部署? ( M L ) 模型?。在本文中, 你將學習?如何部署 ML 模型到 Google 云平臺?. 第 1 部分給出了 ML 工作流概括 ,考慮了使用機器學習和數據科學來實現商業價值所涉及的各個階段。在第 2 部分中,您將學習?訓練并保存 ML 模型?并將其部署為 ML 系統的一部分。

    在為 ML 系統構建端到端管道時,最后一步是將經過訓練的模型部署到生產環境中。成功的部署意味著 ML 模型已從研究環境中移出并集成到生產環境中,例如,作為一個實時應用程序。

    在本文中,您將學習使用 Google 云平臺( GCP )將 ML 模型投入生產的三種方法。雖然您可以使用其他幾種環境,例如 AWS 、 Microsoft Azure 或本地硬件,但本教程使用 GCP 部署 web 服務。

    正在設置

    通過您的 Google 帳戶注冊 Google Cloud Platform 。系統會提示您填寫一些信息,包括您的信用卡詳細信息。但是,您注冊該平臺將不收取任何費用。您還可以在前 90 天獲得價值 300 美元的免費信貸。

    創建帳戶后, 創建新的項目?并將其命名為 GCP-deployment-example 。不要將項目鏈接到組織。

    確保已將當前項目更改為新創建的項目。

    在 Google App Engine 上部署 ML 模型

    在您可以在 GoogleAppEngine 上部署模型之前,還有一些額外的模塊要添加到代碼中。

    本節中使用的代碼可以在 /kurtispykes/gcp-deployment-example GitHub repo 中找到。

    第一步是在predict.py模塊中創建推理邏輯:

    import joblib
    import pandas as pd

    model = joblib.load("logistic_regression_v1.pkl")

    def make_prediction(inputs):
    """
    Make a prediction using the trained model
    """
    inputs_df = pd.DataFrame(
    inputs,
    columns=["sepal_length_cm", "sepal_width_cm", "petal_length_cm", "petal_width_cm"]
    )
    predictions = model.predict(inputs_df)

    return predictions

    本模塊中的步驟包括:

    1. 將持久化模型加載到內存中。
    2. 創建一個將一些輸入作為參數的函數。
    3. 在函數中,將輸入轉換為 pandas DataFrame并進行預測。

    接下來,推理邏輯必須封裝在 web 服務中。我用 Flask 包裝模型。有關詳細信息,請參閱main.py

    import numpy as np
    from flask import Flask, request
    from predict import make_prediction

    app = Flask(__name__)

    @app.route("/", methods=["GET"])
    def index():
    """Basic HTML response."""
    body = (
    "<html>"
    "<body style='padding: 10px;'>"
    "<h1>Welcome to my Flask API</h1>"
    "</body>"
    "</html>"
    )
    return body

    @app.route("/predict", methods=["POST"])
    def predict():
    data_json = request.get_json()

    sepal_length_cm = data_json["sepal_length_cm"]
    sepal_width_cm = data_json["sepal_width_cm"]
    petal_length_cm = data_json["petal_length_cm"]
    petal_width_cm = data_json["petal_width_cm"]

    data = np.array([[sepal_length_cm, sepal_width_cm, petal_length_cm, petal_width_cm]])
    predictions = make_prediction(data)

    return str(predictions)

    if __name__ == "__main__":
    app.run()

    在代碼示例中,您創建了兩個端點:

    • index:可以看作是主頁
    • /predict:用于與部署的模型交互。

    您必須創建的最后一個文件是 app.yaml ,其中包含用于運行應用程序的運行時。

    runtime: python38

    在 Google Cloud 控制臺中,執行以下步驟:

    1. 在切換菜單上,選擇 App Engine 。您可能必須選擇 View all products 才能訪問 App Engine ,它與 Serverless 產品一起列出)。
    2. App Engine 頁面,選擇 Create Application
    3. 選擇要在其中創建應用程序的區域。
    4. 將應用程序語言設置為 Python 并使用 Standard 環境。

    在右上角,選擇終端圖標。這將激活云外殼,這意味著您不必下載云 SDK 。

    在部署應用程序之前,必須上載所有代碼。由于通過 web 服務與 ML 模型交互所需的所有代碼都上傳到 gcp-deployment-example/app_engine/ 中的 GitHub 上,因此您可以從云外殼中克隆此存儲庫。

    將代碼 URL 復制到剪貼板并導航回 GCP 上的云外殼。向 shell 輸入以下命令:

    git clone https://github.com/kurtispykes/gcp-deployment-example.git

    通過輸入以下命令導航到代碼存儲庫:

    cd gcp-deployment-example/app_engine

    接下來, initialize the application 。確保您選擇了最近創建的項目。

    現在,部署應用程序。從云 shell 運行以下命令。如果系統提示您繼續,請輸入Y

    gcloud app deploy

    部署完成后,您將獲得服務部署位置的 URL 。打開提供的 URL 以驗證應用程序是否正常運行。您應該看到 歡迎使用我的 Flask API 消息。

    接下來,測試/predict端點。

    使用 Postman 發送 POST 請求以測試成功部署

    您可以使用 Postman/predict端點發送 POST 請求。 Postman 是開發人員設計、構建、測試和迭代 API 的 API 平臺。

    要開始,請選擇 免費注冊 。有一個完整的教程,但為了本篇文章的目的,請直接跳到主頁。

    從那里,選擇 WorkspacesMy WorkspaceNew ,然后選擇 HTTP Request

    接下來,將 HTTP 請求從GET更改為POST,并在請求 URL 中插入到已部署服務的鏈接。

    之后,導航到Body標頭并選擇raw,以便插入示例實例。選擇send

    Screenshot of the results of using the deployed service to predict the output, given sample input data.
    圖 1 。 Postman 測試的預測終點

    您向/predict端點發送了 POST 請求,其中包含一些定義模型輸入的原始數據。在響應中,模型返回[‘Iris-setosa’],這是模型成功部署的積極指示。

    您還可以使用 GCP 上提供的其他服務部署模型。

    在 Google 云功能上部署 ML 模型

    云功能是 GCP 上可用的無服務器技術之一。我對代碼做了一些更改,以使部署到云功能無縫。第一個也是最明顯的區別是不再從本地存儲庫導入序列化模型。相反,您正在調用 Google 云存儲中的模型。

    將模型上傳到 Google 云存儲

    在 GCP 部署示例項目中,選擇切換菜單。導航到 Cloud Storage 并選擇 BucketsCreate Bucket 。這將提示您為存儲桶和其他配置提供名稱。我把我的名字命名為model-data-iris

    創建桶后,下一個任務是上傳持久化模型。選擇 Upload Files ,導航到存儲模型的位置,然后選擇它。

    現在,您可以使用 Google Cloud 中的各種服務來訪問此文件。要訪問云存儲,必須從google.cloud導入storage對象。

    下面的代碼示例顯示了如何從 Google 云存儲中訪問模型。您也可以在 gcp-deployment-example/cloud_functions/main.py 中看到完整的示例。

    import joblib
    import numpy as np
    from flask import request
    from google.cloud import storage

    storage_client = storage.Client()
    bucket = storage_client.get_bucket("model-iris-data") # remember to change the bucket name
    blob = bucket.blob("logistic_regression_v1.pkl")
    blob.download_to_filename("/tmp/logistic_regression_v1.pkl")
    model = joblib.load("/tmp/logistic_regression_v1.pkl")

    def predict(request):
    data_json = request.get_json()

    sepal_length_cm = data_json["sepal_length_cm"]
    sepal_width_cm = data_json["sepal_width_cm"]
    petal_length_cm = data_json["petal_length_cm"]
    petal_width_cm = data_json["petal_width_cm"]

    data = np.array([[sepal_length_cm, sepal_width_cm, petal_length_cm, petal_width_cm]])
    predictions = model.predict(data)

    return str(predictions)

    在 Google Cloud 控制臺的切換菜單上,選擇 Cloud Functions 。要查看菜單,您可能必須選擇 View all products 并展開 Serverless 類別。

    接下來,選擇 Create Function 。如果這是您第一次創建云函數,則要求您啟用 API 。選擇 Enable 繼續。

    還要求您進行以下配置設置:

    • 函數名稱= Predict
    • Trigger type = HTTP
    • Allow unauthenticated invocations =已啟用。

    在運行時、構建、連接和安全設置部分中還有其他配置,但對于本示例,默認值是可以的,因此選擇 Next

    在下一頁中,要求您設置運行時并定義源代碼的來源。在 Runtime 部分,選擇您正在使用的 Python 版本。我使用的是 Python 3.8 。確保在源代碼頭中選擇了 Inline Editor

    復制并粘貼云函數用作main.py文件入口點的以下代碼示例。

    {
      "sepal_length_cm" : 5.1,
      "sepal_width_cm" : 3.5,
      "petal_length_cm" : 1.4,
      "petal_width_cm" : 0.2
    } 

    使用內聯編輯器更新 requirements.txt :

    flask >= 2.2.2, <2.3.0
    numpy >= 1.23.3, <1.24.0
    scitkit-learn >=1.1.2, <1.2.0
    google-cloud-storage >=2.5.0, <2.6.0

    確保將 Entry point 值更改為端點的名稱。在這種情況下,它是predict

    完成所有更改后,選擇 Deploy 。部署可能需要幾分鐘的時間來安裝依賴項并啟動應用程序。完成后,您會看到成功部署的模型的函數名稱旁邊有一個綠色的勾號圖標。

    現在,您可以在 Testing 選項卡上測試應用程序是否正常工作。使用以下示例代碼進行測試:

    {
      "sepal_length_cm" : 5.1,
      "sepal_width_cm" : 3.5,
      "petal_length_cm" : 1.4,
      "petal_width_cm" : 0.2
    } 

    如果您使用與前面相同的輸入,則會得到相同的響應。

    現在,您已經學會了使用 GoogleCloudFunctions 部署 ML 模型。使用此部署,您不必擔心服務器管理。您的云功能僅在收到請求時執行,并且 Google 管理服務器。

    在 Google AI 云上部署 ML 模型

    之前的兩個部署要求您編寫不同程度的代碼。在谷歌人工智能云上,你可以提供經過訓練的模型,他們為你管理一切。

    在云控制臺上,從切換菜單導航到 AI Platform 。在 Models 選項卡上,選擇 Create Model

    您可能會注意到一條警告消息,通知您 Vertex AI ,這是另一個將 AutoML 和 AI 平臺結合在一起的托管 AI 服務。這一討論超出了本文的范圍。

    在下一個屏幕上,系統會提示您選擇一個區域。選擇區域后,選擇 Create Model 。為模型命名,相應地調整區域,然后選擇 Create

    轉到創建模型的區域,您應該可以看到模型。選擇型號并選擇 Create a Version

    接下來,您必須將模型鏈接到云存儲中存儲的模型。本節有幾個重要事項需要注意:

    • AI 平臺上scikit-learn的最新模型框架版本是 1.0.1 版,因此您必須使用此版本來構建模型。
    • 模型必須存儲為model.pklmodel.joblib

    為了遵守 GCP AI 平臺的要求,我使用所需的模型版本創建了一個新的腳本,將模型序列化為model.pkl,并將其上傳到谷歌云存儲。有關更多信息,請參閱 /kurtispykes/gcp-deployment-example GitHub repo 中的更新代碼。

    • Model name: logistic_regression_model
    • 選中 Use regional endpoint 復選框。
    • Region: 歐洲西部 2
    • models 部分,確保僅選擇 europe-west2 區域。

    為要創建的模型版本選擇 Save 。創建模型版本可能需要幾分鐘的時間。

    通過選擇模型版本并導航到 Test & Use 標題來測試模型。輸入輸入數據并選擇 Test

    總結

    祝賀現在您知道了使用 Google 云平臺( GCP )部署 ML 模型的三種不同方法。

    為了鞏固您從本教程中獲得的知識,我鼓勵您使用這三種部署創建自己的應用程序。此外,考慮什么選項最適合特定的用例。

    在以下任何平臺上與我連接:

    尋求從數據攝取到部署機器學習的幫助或指導?加入 Data Processing 論壇。

    ?

    +1

    標簽

    人人超碰97caoporen国产