Databricks機械学習ランタイム

[Databricks Runtime for Machine Learning \| Databricks on AWS](https://docs.databricks.com/runtime/mlruntime.html) [2021/9/30時点]の翻訳です。

> [Databricksクイックスタートガイド](https://qiita.com/taka_yayoi/items/125231c126a602693610)のコンテンツです。

Databricks機械学習ランタイム(Databricks Runtime ML)は、機械学習に最適化されたクラスターの作成を自動化します。Databricks Runtime MLクラスターには、TensorFlow、PyTorch、Keras、XGBoostのような最も人気のある機械学習ライブラリや、Horovodのような分散トレーニングに必要なライブラリが含まれています。Databricks機械学習ランタイムは、クラスターの作成スピードを改善し、互換性のあるライブラリがインストールされることを保証します。

Databricksにおける機械学習とディープラーニングの利用方法に関しては、[Databricks機械学習ガイド](https://qiita.com/taka_yayoi/items/2d8ebdc9374696b24e0f)を参照ください。

Databricks機械学習ランタイムそれぞれのバージョンに関しては、[リリースノート](https://docs.databricks.com/release-notes/runtime/releases.html)を参照ください。

Databricks機械学習ランタイムは、Databricksランタイムをベースとしています。例えば、Databricks機械学習ランタイム 7.3 LTSは、Databricksランタイム7.3 LTSをベースとしています。ベースのDatabricksランタイムに含まれるライブラリの一覧は[リリースノート](https://docs.databricks.com/release-notes/runtime/releases.html)にあります。

> **警告!**
HIPAAコンプライアンスが必要な場合には、[HIPAA\-compliant deployment](https://docs.databricks.com/security/privacy/hipaa-compliant-deployment.html#hipaa-compliant-deployment)をご覧ください。

# Databricks機械学習ランタイムのご紹介

このチュートリアルは、Databricks機械学習ランタイムを使い始める方向けに設計されています。表形式データをロードし、モデルをトレーニングし、分散ハイパーパラメーターチューニングを行い、モデルによる推論までをウォークスルーするのに10分程度必要とします。また、MLflow APIとMLflowモデルレジストリの使い方も説明します。

## Databricksチュートリアルノートブック

https://github.com/taka-yayoi/public_repo/tree/main/mlflow_end_to_end

# Databricks機械学習ランタイムに含まれるライブラリ

Databricks機械学習ランタイムには、人気のMLライブラリが含まれています。これらのライブラリは、それぞれのリリースで新機能、バグフィックスを取り込むようにアップデートされます。

Databricksトップ階層のライブラリとしてサポートするライブラリのサブセットを規定しています。これらのライブラリに関しては、Databricksは短い周期でアップデートを行い、(依存関係の競合が起きないように)それぞれのランタイムリリースで最新のパッケージが含まれるようにしています。Databricksでは、これらトップ階層のライブラリに対するアドバンスドなサポート、テスト、最適化を行っています。

トップ階層、その他のライブラリの完全なリストについては、それぞれのランタイムのドキュメントを参照ください。

- [原文](https://docs.databricks.com/runtime/mlruntime.html#libraries-included-in-databricks-runtime-ml)を参照ください。

# Databricks機械学習ランタイムの使い方

インストール済みのライブラリに加え、Databricks機械学習ランタイムは、クラスターの設定、そして、どのようにPythonパッケージを管理するのかと言う点で、従来のDatabricksランタイムと異なります。

## Databricks機械学習ランタイムを用いたクラスターの作成

[クラスターを作成](https://qiita.com/taka_yayoi/items/d36a469a1e0c0cebaf1b)する際、Databricks Runtime Versionのドロップダウンから、Databricks Runtime MLのバージョンを選択します。CPUおよびGPUの機械学習ランタイムを選択することができます。
![](https://docs.databricks.com/_images/mlruntime-dbr-dropdown.png)

GPUが有効化されたMLランタイムを選択した際、互換性のある**Driver Type**と**Worker Type**を選択するように指示が表示されます。互換性のないインスタンスタイプはドロップダウンでグレーになります。GPUが有効化されているインスタンスタイプは、**GPU-Accelerated**ラベルの下に表示されます。

> **警告!**
自動で全てのクラスターにインストールされるワークスペース上のライブラリは、Databricks機械学習ランタイムと競合する可能性があります。Databricks機械学習ランタイムを用いてクラスターを作成する前に、競合するライブラリの**Install automatically on all clusters**のチェックボックスを解除してください。

## Pythonパッケージの管理

Databricksランタイム 9.0ML以降では、Pythonパッケージをインストールするのに[virtualenv](https://virtualenv.pypa.io/en/latest/)パッケージマネージャが使用されます。全てのPythonパッケージは単一の環境`/databricks/python3`にインストールされます。

Databricksランタイム 8.4ML以前では、Pythonパッケージのインストールに[Conda](https://conda.io/docs/)パッケージマネージャが使用されています。全てのPythonパッケージは、Python 2を使用したクラスターの場合には単一の環境`/databricks/python2`、Python 3を使用したクラスターの場合には単一の環境`/databricks/python3`にインストールされます。Conda環境のスイッチ(アクティベート)はサポートされていません。

Pythonライブラリの管理に関しては、[ライブラリ](https://qiita.com/taka_yayoi/items/d3a46efdc1ad01a581d0)を参照ください。

# 機械学習の自動化のサポート

Databricks機械学習ランタイムには、モデル開発プロセスを自動化し、ベストのパフォーマンスを示すモデルを効率的に探し出す支援をするためのツールが含まれています。

- [AutoML](https://qiita.com/taka_yayoi/items/0ed860131a02aeade14f)を用いることで、一連のモデルの作成、チューニング、評価を自動化し、それぞれのランをレビュー、再現、コード修正できるように対応するソースコードを含むPythonノートブックを作成します。
- [マネージドMLflow](https://docs.databricks.com/applications/mlflow/index.html)は、実験的なランの追跡、モデルのデプロイ、シェア、集中管理されたモデルレジストリの管理を提供することで、エンドツーエンドのモデルのライフサイクルを管理します。
- `SparkTrials`クラスで拡張された[Hyperopt](https://docs.databricks.com/applications/machine-learning/automl-hyperparam-tuning/index.html#hyperopt-overview)を用いることで、MLモデルのパラメーターチューニングを自動化かつ分散処理できるようになります。

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)