iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
AI & Data

我不太懂 AI,可是我會一點 Python 和 Azure系列 第 22

Day 22 Azure machine learning: set environment- 準備一個大家都能用的環境

Azure machine learning: set environment- 準備一個大家都能用的環境

之前,試著在workspace執行print("Hello World")時,會發現整體的執行時間非常長,主要是因為 Azure 需要準備 docker image 。但事實上,我們可以事先準備好環境,後續只會在第一次執行實驗時,需要建立 docker image ,之後每次執行實驗,只要選擇已經註冊好的環境,就可以省掉建立 docker image 的步驟了,大幅節省時間。

設定環境

create_environment.py

"""
Create and register the environment
"""
import os
from azureml.core import Workspace, Environment
from azureml.core.authentication import InteractiveLoginAuthentication


def main():
    """
    Create and register the environment
    """
    interactive_auth = InteractiveLoginAuthentication(tenant_id=os.getenv("TENANT_ID"))
    work_space = Workspace.from_config(auth=interactive_auth)

    # 把需要的套件寫進 requirements.txt
    environment = Environment.from_pip_requirements(
        name="train_lstm", file_path="requirements.txt"
    )
    # 設定 python 版本
    environment.python.conda_dependencies.set_python_version("3.7.7")
    # 最後註冊環境,以便後續使用
    environment.register(work_space)


if __name__ == "__main__":
    main()

為了讓訓練模型、收集數據和最後部署服務的環境都想同,列出所有需要用到的套件。另外,為了避免本地端使用的套件版本與workspace中有所差異,可以考慮直接鎖定版本。尤其是 keras 和 tensorflow ,版本有所差異,可能會讓部分語法有所不同,使得在執行實驗時發生各種錯誤。(謎之聲:懶得使用最新版的代價。)
requirements.txt

numpy
scikit-learn==0.23.2
pandas
tensorflow==1.13.1
Keras==2.2.4
azureml-defaults
investpy
h5py==2.10.0

註冊完之後,可以從環境的頁面看到自訂環境內,有剛剛註冊完的環境

環境被註冊之後,就可以透過以下作法取得

environment = work_space.environments["train_lstm"]

另外,也可以看到 Azure 準備好的環境

針對 Azure 準備好的策劃環境(Curated Environment),可以根據環境的名稱取用,例如:

from azureml.core import Workspace, Environment
from azureml.core.authentication import InteractiveLoginAuthentication

interactive_auth = InteractiveLoginAuthentication(tenant_id=os.getenv("TENANT_ID"))
work_space = Workspace.from_config(auth=interactive_auth)
env = Environment.get(workspace=work_space, name="AzureML-tensorflow-2.4-ubuntu18.04-py37-cpu-inference")

用 docker image 設定環境

也可以直接拿現成的 docker image 作為實驗的環境,這樣也可以事先在本地端測試,確保環境沒有問題。


from azureml.core import Environment

environment = Environment("my_env")
environment.docker.enabled = True
environment.docker.base_image = "mcr.microsoft.com/azureml/intelmpi2018.3-ubuntu16.04:20210301.v1"

Azure 也有提供一些已經事先準備好的docker image,可以直接拿來設定環境。


環境準備好之後,下一篇正式開始利用 Azure machine learning 訓練模型。


上一篇
Day 21 Azure machine learning: Upload data- 自己的資料自己傳
下一篇
Day 23 Azure machine learning: training experiment and register model- 以 LSTM 模型為例
系列文
我不太懂 AI,可是我會一點 Python 和 Azure30

尚未有邦友留言

立即登入留言