之前,试着在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 训练模型。
前情提要 前一篇带各位在 Selenium 中透过执行 JavaScript 语句达到向下卷动的效果...
你有在吃自己的狗食吗? 上一篇我们提到了,派一个人专门等在那边解决问题。这里的一个人最好不要是要同一...
标注资料与特徵工程是处理资料重要的步骤,目的都是为了让模型效果最佳化,标注的一致性、特徵工程到位都对...
前言 通过Hero,我们可以在两个路由之间做出流畅的转场动画,Hero会在Source、Overla...
中介软件为组成应用程序管线的软件,用以处理要求与回应, .net core中定义的中介则可以说是用来...