之前,試著在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 作為實驗的環境,這樣也可以事先在本地端測試,確保環境沒有問題。
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 訓練模型。