以下の手順に従ってセットアップをおこなってください。
このリポジトリ サンプルは、OpenHack の diabetes サンプルによる学習処理 が完了していることを想定しています。
特に、下記のプロビジョニングを済ませておいてください。(これらのオブジェクトを使用します。)
- Azure Machine Learning (以降、Azure ML) のワークスペースが作成済である
- Azure ML のデータアセットが、「diabetes_data_oh4ml」と「diabetes_query_oh4ml」の名前で登録済である
- Azure ML のコンピュートクラスターが、「demo-cpucluster1」の名前で作成済である
- Azure ML の環境 (environment) が、「diabetes-env-02」の名前で登録済である
- Azure DevOps にログインして、新規プロジェクトを作成します。
- 以下の手順で、このリポジトリを Azure DevOps のプロジェクトに clone します。
- サイドメニューから "Repos" を選択します
- "import repository" を選択します
- 表示される画面の "Clone URL" に "
https://github.com/tsmatsuz/amlv2-devops-pipeline
" と入力して "Import" ボタンを押します
- 以下の手順で、Azure DevOps から Azure に接続する際に使用する Service principal を作成します。
- Azure ポータルにログインして、"Azure Active Dorectory" (以降、Azure AD) を選択します
- サイドメニューから "アプリの登録" (App registrations) を選択して "新規登録" (New registration) ボタンを押します
- 名前を任意に設定し、App の登録をおこないます。
なお、account type は、今回、"Accounts in this organizational directory only (Microsoft only - Single tenant)" を選択します - 表示される App のブレード上の "Application (client) ID" をコピーします (この ID はあとで使用します)
- サイドメニューから "証明書とシークレット" (Certificate & secrets) を選択して、Client secrets を新規作成します。
作成された secret の値をコピーします (この secret の値はあとで使用します)
- 以下の手順で、service principal にロールを割り当てます。
(今回、サブスクリプション全体に共同作成者のロールを割り当てますが、より厳格に必要な権限のみの割り当ても可能です。)- Azure ポータル上で "サブスクリプション" (Subscriptions) のブレードを表示して、利用中のサブスクリプションを選択します
- サイドメニューの "アクセス制御 (IAM)" (Access control) を選択します
- 表示される画面上の "追加" (Add) - "ロール割り当ての追加" (Add role assignment) ボタンを選択します
- 上記で作成した service principal に対して、共同作成者 (Contributor) のロールを割り当てます
- 以下の手順で、Azure DevOps の Pipeline で使用する Azure 接続を構成します
- Azure DevOps のサイドメニュー下の "Project settings" を選択します
- 表示されるメニューの "Pipelines" - "Service connections" を選択し、"Create service connection" ボタンを押します
- 表示される画面で "Azure Resource Manager" を選択して "Next" ボタンを押します
- 表示される認証方法の一覧から "Service principal (manual)" を選択して "Next" ボタンを押します
- 表示される画面で以下を設定します
- Environment : Azure Cloud
- Scope Level : Subscription
- Subscription Id : {AML workspace resource の存在する Azure subscription Id}
- Subscription Name : {同 Azure subscription の名前}
- Service Principal ID : {上記でコピーした service principal の Application ID}
- Service Principal key : {上記でコピーした service principal の secret 値}
- Tenant ID : {Service principal を作成した Azure AD の Tenant ID}
- Service connection name : Azure-ARM-Dev
- サイドメニューから "Repos" を選択して、config.yml を開き、環境にあわせて値を書き換えます (編集完了後、コミットします)。
- 以下の手順で、サイドメニューから "Pipelines" を選択し、下記手順で Pipeline を新規作成します。
- "Create Pipeline" ボタンを押します
- "Where is your code?" で "Azure Repos Git" を選択します
- "Select a repository" で、上記の clone されたリポジトリを選択します
- "Configure your pipeline" で、"Existing Azure Pipelines YAML file" を選択します
- 表示される画面で、上記で clone した repository 内の devops-pipelines/model-training-pipeline.yml を選択します
- "Run" ボタンを押さずに、右の矢印をクリックして "Save" を選択してください (ここでは実行はおこなわず、保存のみをおこなってください)
- サイドメニューから "Repos" を選択し、
scripts/train-diabetes.py
のソースコードを変更 (例えば、コメントを追加するなど) してコミットしてください。 - ソースのコミットをトリガーとして、上記で登録した Azure Pipeline が実行 (Run) されます。
- 終了後、Azure ML 上でモデル「diabetes_model_oh4ml_devops」が登録されていることを確認します。
Note : Event Grid を用いて Azure Machine Learning 上のさまざまなトリガーに応じた処理を構築できます。(詳細は こちら を参照してください。)