雖然上一篇文章有提到,在工作區- workspace
執行實驗時,需要先設定環境,也需要上傳需要用到的資料,但是這一篇文章要執行的實驗十分簡單,只是要印出Hello, world!
,所以不需要額外的資料,環境也可以直接用預設的環境。在workspace
預設的環境中,用的Python
版本是3.6.2,套件則是只安裝了azureml-defaults
。
在workspace
執行實驗時,至少需要兩個Python
script:
workspace
利用計算叢集執行的程式碼:hello.py
run_experiment.py
在本機執行,用來通知workspace
開始執行上述的 scripthello.py
print("Hello, Azure!")
run_experiment.py
import os
from azureml.core import Workspace, Experiment, ScriptRunConfig
from azureml.core.authentication import InteractiveLoginAuthentication
def main():
"""
Hello on Azure machine learning.
"""
interactive_auth = InteractiveLoginAuthentication(tenant_id=os.getenv("TENANT_ID"))
work_space = Workspace.from_config(auth=interactive_auth)
# 建立實驗
experiment = Experiment(workspace=work_space, name="hello-experiment")
# 設定 config
config = ScriptRunConfig(
source_directory=".", # code放在哪個資料夾
script="hello.py", # 要上傳的code
compute_target="cpu-cluster" # 指定計算叢集
)
# 讓實驗依照 config 執行
run = experiment.submit(config)
aml_url = run.get_portal_url()
print(aml_url)# 此連結可以看到 log
run.wait_for_completion(show_output=True)# 過程中的紀錄都會列出
if __name__ == "__main__":
main()
準備好上述程式碼後,我們就能執行:
python3.7 run_experiment.py
執行之後,程式碼會把程式碼上傳執行。執行的時間大概要十幾分鐘左右,這時候你會想,為什麼要這麼久?因為......
Azure 會從 build docker image 開始,build 完,然後再推到 Azure Container Registry- ACR 存放,這一步應該就是最花時間的步驟了。到workspace
,進入實驗
(下圖中,左側 燒杯 圖示)中查看輸出 + 紀錄檔
,可以看到20_image_build_log.txt
,這檔案紀錄上述過程。
接著,會把 dcoker image 拉到虛擬機器中展開成 container(記錄在55_azureml-excution-tvmp_xxxxx.txt
)。
然後,把需要執行的程式碼放入 container 之中(記錄在65_jobp_prep-tvmp_xxxxx.txt
)。
終於可以執行print("Hello Azure!")
了。如果上傳的程式碼出錯,也可以從這裡的紀錄發現錯誤訊息。通常會出問題的地方,多半是在使用者想要執行的程式碼上,所以可以透過觀察 70_driver_log.txt
發現問題所在。
最後結束實驗,把運算資源釋放出來。
這篇文章只是先觀察執行實驗的時候,實際上在workspace
會做些什麼。往後的文章,會從資料上傳開始,一一演示每項工作。