ReposとGithub Actionsを使ったCI/CD - Databricks

はじめに

機械学習モデルがビジネス価値としてスケールするには、システムに組み込み運用化していく必要があることはこ前回の記事でも紹介した。

ktksq.hatenablog.com

そこで今回はDatabricksにおけるCI/CDをGithub Actionsによって実現する方法についてまとめる。

使用環境

Databricks RunTime: 9.1 LTS (includes Apache Spark 3.1.2, Scala 2.12)

MLOpsとは何か

機械学モデルを組み込んだシステムの一連のワークフローを運用し、高速に開発とフィードバックループを回す仕組み。機械学習モデルをシステムに組み込むには大きく3つのステップが必要になる。

機械学習システムの構築フロー

1. モデルの開発

機械学習モデルの開発では、より良いモデルを開発するためにパラメータの調整などの多くの試行錯誤が前提となる。そのため、モデル開発プロセスは効率的に実施する必要がある。 一般的には、データ取得→前処理→学習→評価→ビルドのフローで定義され、データ、プログラム、モデルの3つのリソースを管理する必要がある。

2. モデルのリリース

開発した機械学習モデルを本番環境にリリースする。より良いモデルができたら容易にモデルを置き換えられるように、効率的なリリース手法の確立が必要である。モデルのリリース方法には大きく2通り存在し、モデルをサーバに含めてビルドするパターンと外部からモデルをロードするパターンがある。またモデルの配布場所としてサーバサイドまたはエッジサイドがある。

3. システム化

ビジネス課題を解決するためには機械学習モデルを推論器としてビジネスプロセスやアプリに組み込む必要がある。 学習済みモデルで本番データに対して推論を行い、その結果を外部システムから呼び出される仕組みを作ることで機械学習モデルを実用化する。 学習済みモデルを推論器として組み込む方法は多数あり、ユースケースや求められるパフォーマンスを考慮して選択する必要がある。

MLOpsにおける品質管理

機械学習システムにおいて、各フローが正しく動いていることを証明し、評価する仕組みを作ることで、ハイスピードでの開発と品質管理が可能になる。 各フローのテスト観点は以下の通りである。

機械学習システムの評価観点
今回はテストをGithub Actionsで実行し、各フローが正しく動いていることを証明し、評価する仕組みを作る。

ReposによるGit操作

DatabricksはReposという機能を使うことでGit連携ができる。Reposを使うことで特に意識することなくGit上でのノートブックの差分管理が可能になった。

Git連携方法

  1. DatabricksワークスペースのSettingをクリックし、メニューからUser Settingsを選択
  2. User Settingsページで、Git Integrationタブに移動
  3. Gitプロバイダーを選択し、ユーザ名とアクセストークンを記入
    ※対応しているGitプロバイダー:GitHub、Bitbucket Cloud、GitLab、Azure DevOps
    ※ノートブック以外のファイルを管理する場合は、Files in reposを有効化する必要がある。
    Git連携方法

Reposによるリモートリポジトリへのコミット、プッシュ方法

  1. 新規ファイルの作成、あるいは変更を加え、Gitダイアログに表示された変更点を確認
  2. 変更内容を入力し、Commit & Pushをクリック
    リモートレポジトリへのコミット&プッシュ
    ※マスターブランチへのプッシュ権限がない場合には、ブランチを新たに作成し、Gitプロバーダーのインタフェースで、マスターブランチにマージするためのプルリクエスト(PR)を作成する必要がある。

Github Actionsを用いたCI/CDの実現

Github Actionsは標準で有効になっているため設定ファイルを追加するだけでCIを自動的に走らせることが可能になっている。またCircle CIなどで必要な初期設定が不要なため、比較的容易にCI/CDを構築することができる。

Github Actionsを組み込んだGithub Flow
※引用元: GitHub Actions - Supercharge your GitHub Flow

Github Actionsとは

GitHubが提供してくれるサーバーレスの実行環境で、GitHub上でのpush、issueの作成などをトリガーとしてユーザーが独自で定義したワークフローを実行することが可能。

Github Actionsのフロー

簡単にGithub Actionsを試してみたい人にはこちらのコースがおすすめ。

docs.github.com

skills.github.com

ワークフローの構成

workflow: 1つ以上のジョブからなる設定可能な自動化プロセス(設定ファイル)
    ├──event: ワークフローの実行をトリガーするリポジトリ内の特定のアクティビティ
    ├──runner: ワークフローがトリガーされたときに、そのワークフローを実行するサーバー
    └── jobs: 同じランナーで実行されるワークフローのステップのセット
        └──steps: 実行されるシェルスクリプト、または実行されるアクションのセット
            └──action: 再利用可能なCIスクリプト

ワークフローの登録方法

.github/workflows/配下に作成したYAMLファイルがワークフローとして自動的に登録される。 ワークフローの作成方法は大きく2種類あり、自分でYAMLを書いて定義する方法と、すでに用意されているActionのテンプレートを用いて作成する方法がある。

まとめ

今回はDatabricksにおけるCI/CDをGithub Actionsによって実現する方法についてまとめた。

参考

www.shoeisha.co.jp

docs.databricks.com

docs.github.com