この記事では、サーバーレス ノートブックの [環境 ] サイド パネルを使用して、依存関係、サーバーレス予算ポリシー、メモリ、環境バージョンを構成する方法について説明します。 このパネルには、ノートブックのサーバーレス設定を管理するための 1 つの場所が用意されています。 このパネルで構成された設定は、ノートブックがサーバーレス コンピューティングに接続されている場合にのみ適用されます。
[環境] サイド パネルを展開するには、ノートブックの右側にあるボタンをクリックします。
ノートブック以外のジョブ タスクで環境設定を構成する方法については、「ノートブック以外のジョブ タスク の環境を構成する」を参照してください。
高メモリ サーバーレス コンピューティングを使用する
重要
この機能は パブリック プレビュー段階です。
ノートブックでメモリ不足エラーが発生した場合は、より大きなメモリ サイズを使用するようにノートブックを構成できます。 この設定により、ノートブックでコードを実行するときに使用される REPL メモリのサイズが大きくなります。 Spark セッションのメモリ サイズには影響しません。 メモリが多いサーバーレス使用量は、標準メモリよりも DBU の放射率が高くなります。
- ノートブック UI で、 Environment サイド パネル
をクリックします。
- [メモリ] で、[ハイ メモリ] を選択します。
- [適用] をクリックします。
この設定は、ノートブックのメモリ設定を使用して実行されるノートブック ジョブ タスクにも適用されます。 ノートブックのメモリ設定を更新すると、次のジョブの実行に影響します。
サーバーレス予算ポリシーを選択する
重要
この機能は パブリック プレビュー段階です。
サーバーレス予算ポリシーを使用すると、組織はサーバーレス使用量にカスタム タグを適用して、詳細な課金属性を設定できます。
ワークスペースでサーバーレス予算ポリシーを使用してサーバーレス使用量を属性付けする場合は、ノートブックに適用するサーバーレス予算ポリシーを選択できます。 ユーザーが 1 つのサーバーレス予算ポリシーにのみ割り当てられている場合、そのポリシーは既定で選択されます。
ノートブックがサーバーレス コンピューティングに接続された後は、 環境 側パネルを使用して、サーバーレス予算ポリシーを選択できます。
- ノートブック UI で、 Environment サイド パネル
をクリックします。
- [ 予算ポリシー ] で、ノートブックに適用するサーバーレス予算ポリシーを選択します。
- [適用] をクリックします。
このセットアップが完了すると、すべてのノートブックの使用は、サーバーレス予算ポリシーのカスタム タグを継承します。
注
ノートブックが Git リポジトリから作成された場合、または サーバーレス予算ポリシーが割り当てられない場合、次にサーバーレス コンピューティングにアタッチされるときに、最後に選択したサーバーレス予算ポリシーが既定で適用されます。
環境のバージョンを選択する
環境バージョンを使用すると、サーバーレス ワークロードは、アプリケーションの互換性に影響を与えることなく、独立したエンジンのアップグレードを受け取ります。 各環境バージョンの詳細については、 サーバーレス環境のバージョンに関するページを参照してください。 Databricks では、最新バージョンを選択して最新のノートブック機能を入手することをお勧めします。
環境バージョンを選択するには:
- ノートブック UI で、 Environment サイド パネル
をクリックします。
- [ 環境のバージョン] で、バージョンを選択します。
- [適用] をクリックします。
ノートブックに依存関係を追加する
サーバーレスはコンピューティング ポリシーや init スクリプトをサポートしていないため、 環境 側パネルを使用してカスタム ライブラリの依存関係を追加する必要があります。 ライブラリを個別に追加することも、共有可能な基本環境を使用して複数のライブラリをインストールすることもできます。
ライブラリの依存関係を個別に追加するには:
- ノートブック UI で、 Environment サイド パネル
をクリックします。
- [依存関係] セクションの [依存関係の追加] をクリックして、フィールドにライブラリ依存関係のパスを入力します。 requirements.txt ファイルで有効な任意の形式で、依存関係を指定できます。
- [適用] をクリックします。 これにより、ノートブック仮想環境に依存関係がインストールされて、Python プロセスが再起動されます。
サーバーレス コンピューティングを使用するジョブは、ノートブック コードを実行する前にノートブックの環境仕様をインストールします。 つまり、ノートブックをジョブとしてスケジュールするときに依存関係を追加する必要はありません。
重要
サーバーレス ノートブックでの依存関係として PySpark または PySpark をインストールするライブラリはインストールしないでください。 これを行うと、セッションが停止しエラーが発生します。 これが発生した場合は、そのライブラリを削除し、環境をリセットしてください。
インストールされている依存関係を表示するには、[環境] サイド パネルの [インストール済み] タブをクリックします。 パネルの下部にある pip ログ をクリックして、ノートブック環境の pip インストール ログも使用できます。
基本環境を構成する
基本環境は、ワークスペース ファイルとして、または Unity Catalog ボリューム上に格納される YAML ファイルであり、環境の追加の依存関係を指定します。 基本環境はノートブック間で共有できます。 基本環境を構成するには:
Python 仮想環境の設定を定義する YAML ファイルを作成します。 次に示す MLflow プロジェクト環境仕様に基づく YAML の例では、いくつかのライブラリ依存関係を持つ基本環境が定義されています。
environment_version: '3' dependencies: - --index-url https://pypi.org/simple - -r "/Workspace/Shared/requirements.txt" - my-library==6.1 - /Workspace/Shared/Path/To/simplejson-3.19.3-py3-none-any.whl - git+https://github.com/databricks/databricks-cli
YAML ファイルを、ワークスペース ファイルとして、または Unity Catalog ボリュームにアップロードします。 「ファイルをインポートする」または「Unity Catalog ボリュームにファイルをアップロードする」をご覧ください。
ノートブックの右側にある [
] ボタンをクリックして、[環境] サイド パネルを展開します。 このボタンは、ノートブックがサーバーレス コンピューティングに接続されている場合にのみ表示されます。
[基本環境] フィールドで、アップロードした YAML ファイルのパスを入力するか、ファイルに移動してそれを選びます。
[適用] をクリックします。 これにより、ノートブック仮想環境に依存関係がインストールされて、Python プロセスが再起動されます。
ユーザーは、依存関係を個別にインストールして、基本環境で指定されている依存関係をオーバーライドできます。
環境の依存関係をリセットする
ノートブックがサーバーレス コンピューティングに接続されている場合、Databricks はノートブックの仮想環境のコンテンツを自動的にキャッシュします。 つまり、既存のノートブックを開くときに、環境 サイド パネルで指定されている Python 依存関係が非アクティブな状態で切断されている場合でも、通常は再インストールする必要はありません。
Python 仮想環境のキャッシュは、ジョブにも適用されます。 ジョブが実行されると、必要な依存関係は既に使用可能であるため、その実行において完了したタスクと同じ依存関係セットを共有するジョブのタスクは高速になります。
注
サーバーレス上のジョブで使用されるカスタム Python パッケージの実装を変更する場合は、ジョブが最新の実装を取得できるように、そのバージョン番号も更新する必要があります。
環境キャッシュをクリアし、サーバーレス コンピューティングに接続されているノートブックの Environment サイド パネルで指定された依存関係の新しいインストールを実行するには、[適用] の横にある矢印をクリックし、[環境 リセット] をクリックします。
コア ノートブックまたは Apache Spark 環境を中断または変更するパッケージをインストールする場合は、問題のあるパッケージを削除してから、環境をリセットします。 デタッチしてからノートブックを再アタッチしても、環境キャッシュ全体がクリアされるわけではありません。
ノートブック以外のジョブ タスクの環境を構成する
Python スクリプト、Python ホイール、dbt タスクなどのジョブ タスクの種類の場合、ライブラリの依存関係はサーバーレス環境バージョンから継承されます。 インストールされているライブラリの一覧を表示するには、使用している環境バージョンの「インストールされている Python ライブラリ」セクションを参照してください。 タスクにインストールされていない Python ライブラリが必要な場合は、ワークスペース ファイル、Unity カタログ ボリューム 、パブリック パッケージ リポジトリからライブラリをインストールできます。
ジョブ タスクを作成または編集するときにライブラリを追加するには:
[環境とライブラリ] ドロップダウン メニューで、
Edit Icon[既定] 環境の横にある をクリックするか、[+ 新しい環境を追加する] をクリックします。
[環境バージョン] ドロップダウンから環境バージョンを選択します。 「サーバーレス環境バージョン」を参照してください。 Databricks では、最新バージョンを選択して最新の機能を利用することをお勧めします。
[環境の構成] ダイアログで、[+ ライブラリの追加] をクリックします。
[ライブラリ] のドロップダウン メニューから依存関係の種類を選びます。
[ファイル パス] テキスト ボックスに、ライブラリへのパスを入力します。
ワークスペース ファイル内の Python Wheel の場合、パスは
/Workspace/
で始まる絶対パスである必要があります。Unity Catalog ボリューム内の Python Wheel の場合、パスは
/Volumes/<catalog>/<schema>/<volume>/<path>.whl
にする必要があります。requirements.txt
ファイルの場合は、PyPi を選んで「-r /path/to/requirements.txt
」と入力します。
- [確認] をクリックするか、[+ ライブラリの追加] をクリックして別のライブラリを追加します。
- タスクを追加する場合は、[タスクの 作成] をクリックします。 タスクを編集している場合は、[タスクの 保存] をクリックします。
既定の Python パッケージ リポジトリを構成する
ワークスペース管理者は、サーバーレス ノートブックとサーバーレス ジョブの両方の既定の pip 構成として、ワークスペース内のプライベートまたは認証済みのパッケージ リポジトリを構成できます。 これにより、ユーザーは、index-url
や extra-index-url
を明示的に定義することなく、内部 Python リポジトリからパッケージをインストールできます。 ただし、これらの値がコード内またはノートブック内に指定されている場合は、ワークスペースの既定値よりも優先されます。
この構成では、リポジトリの URL と資格情報を安全に格納および管理するために、Databricks シークレットを活用します。 管理者は、ワークスペース管理者設定ページを使用する、または定義済みのシークレット スコープと Databricks CLI シークレット コマンドか REST API を使用して、セットアップを構成できます。
ワークスペースの既定の依存関係を設定する
ワークスペース管理者は、ワークスペース管理者設定ページを使用して、既定の Python パッケージ リポジトリを追加または削除できます。
- ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
- Databricks ワークスペースの上部バーでユーザー名をクリックし、[設定] を選択します。
- [コンピューティング] タブをクリックします。
- [既定のパッケージ リポジトリ]の横にある[管理]をクリックします。
- (省略可能) インデックス URL、追加のインデックス URL、またはカスタム SSL 証明書を追加または削除します。
- [保存] をクリックして変更を保存します。
注
シークレットに対する変更または削除は、サーバーレス コンピューティングをノートブックに再アタッチ、またはサーバーレス ジョブを再実行した後に適用されます。
シークレット CLI または REST API を使用してセットアップする
CLI または REST API を使用して既定の Python パッケージ リポジトリを構成するには、定義済みのシークレット スコープを作成し、アクセス許可を構成してから、パッケージ リポジトリのシークレットを追加します。
定義済みのシークレット スコープ名
ワークスペース管理者は、定義済みキーの下で指定したシークレット スコープ内にある認証トークンとシークレットと併せて、既定の pip インデックス URL または追加のインデックス URL を設定できます。
- シークレット スコープ名:
databricks-package-management
- index-url のシークレット キー:
pip-index-url
- extra-index-urls のシークレット キー:
pip-extra-index-urls
- SSL 認定コンテンツのシークレット キー:
pip-cert
シークレット スコープを作成する
シークレット スコープは、Databricks CLI のシークレット コマンド、または REST API を使用して作成できます。 シークレット スコープを作成したら、すべてのワークスペース ユーザーに読み取りアクセス権を付与するようにアクセス制御リストを構成します。 これにより、リポジトリがセキュリティで引き続き保護されるとともに、個人ユーザーによる変更ができなくなります。 シークレット スコープでは、定義済みのシークレット スコープ名 databricks-package-management
使用する必要があります。
databricks secrets create-scope databricks-package-management
databricks secrets put-acl databricks-package-management admins MANAGE
databricks secrets put-acl databricks-package-management users READ
Python パッケージ リポジトリのシークレットを追加する
定義済みの秘密鍵名を使用して Python パッケージ リポジトリの詳細を追加します。3 つのフィールドはすべて省略可能です。
# Add index URL.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-index-url", "string_value":"<index-url-value>"}'
# Add extra index URLs. If you have multiple extra index URLs, separate them using white space.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-extra-index-urls", "string_value":"<extra-index-url-1 extra-index-url-2>"}'
# Add cert content. If you want to pip configure a custom SSL certificate, put the cert file content here.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-cert", "string_value":"<cert-content>"}'
プライベート PyPI リポジトリのシークレットを変更または削除する
PyPI リポジトリ シークレットを変更するには、put-secret
コマンドを使用します。 PyPI リポジトリ シークレットを削除するには、次に示すように delete-secret
を使用します。
# delete secret
databricks secrets delete-secret databricks-package-management pip-index-url
databricks secrets delete-secret databricks-package-management pip-extra-index-urls
databricks secrets delete-secret databricks-package-management pip-cert
# delete scope
databricks secrets delete-scope databricks-package-management