メインコンテンツまでスキップ

サーバレス環境の設定

この記事では、サーバレス ノートブックの [環境 ] サイド パネルを使用して、依存関係、サーバレス 予算ポリシー、メモリ、および環境バージョンを設定する方法について説明します。 このパネルでは、ノートブックのサーバレス設定を 1 か所で管理できます。 このパネルでの設定は、ノートブックがサーバレス コンピュートに接続されている場合にのみ適用されます。

[環境 ] サイド パネルを展開するには、ノートブックの右側にある [環境] ボタンをクリックします。

サーバレス environment panel with サーバレス 予算ポリシー

非ノートブック ジョブ タスクの環境設定の構成に関する情報については、「 非ノートブック ジョブ タスクの環境の構成」を参照してください。

Use high memory サーバレス コンピュート

備考

プレビュー

この機能は パブリック プレビュー段階です。

ノートブックでメモリ不足エラーが発生した場合は、より高いメモリ サイズを使用するようにノートブックを構成できます。 この設定により、ノートブックでコードを実行するときに使用される REPL メモリのサイズが増加します。Spark セッションのメモリ サイズには影響しません。メモリの多いサーバレス使用量は、標準メモリよりも DBU 排出量が高くなります。

  1. ノートブック UI で、サイドパネルの [ 環境 ] 環境サイドパネルをクリックします。
  2. [メモリ] で [ ハイ メモリ ] を選択します。
  3. [適用] をクリックします。

この設定は、ノートブックのメモリ設定を使用して実行されるノートブック ジョブ タスクにも適用されます。ノートブックのメモリ設定を更新すると、次のジョブ実行に影響します。

Select a サーバレス 予算ポリシー

備考

プレビュー

この機能は パブリック プレビュー段階です。

サーバレス 予算ポリシー を使用すると、組織はサーバレスの使用状況にカスタムタグを適用して、詳細な請求属性を実現できます。

ワークスペースでサーバレス予算ポリシーを使用してサーバレスの使用法を属性付けしている場合は、ノートブックに適用するサーバレス 予算ポリシーを選択できます。 ユーザーが 1 つのサーバレス 予算ポリシーのみに割り当てられている場合、そのポリシーはデフォルトによって選択されます。

ノートブックをサーバレス コンピュートに接続した後、 環境 サイドパネルを使用して、サーバレス 予算ポリシーを選択できます。

  1. ノートブック UI で、サイドパネルの [ 環境 ] 環境サイドパネルをクリックします。
  2. [予算ポリシー ] で、ノートブックに適用するサーバレス 予算ポリシーを選択します。
  3. [適用] をクリックします。

サーバレス ノートブック environment panel with サーバレス 予算ポリシー

この設定が完了すると、すべてのノートブックの使用はサーバレス 予算ポリシーのカスタムタグを継承します。

注記

ノートブックが Git リポジトリから作成されている場合、 またはサーバレス 予算ポリシーが割り当てられていない場合、次にサーバレス コンピュートにアタッチされるときに、最後に選択したサーバレス 予算ポリシーにデフォルトになります。

環境バージョンの選択

環境バージョンを使用すると、サーバレスワークロードは、アプリケーションの互換性に影響を与えることなく、独立したエンジンアップグレードを受け取ることができます。 各環境バージョンの詳細については、 サーバレス環境バージョンを参照してください。 Databricks では、最新のノートブック機能を利用するために、最新バージョンを選択することをお勧めします。

環境バージョンを選択するには:

  1. ノートブック UI で、サイドパネルの [ 環境 ] 環境サイドパネルをクリックします。
  2. [環境バージョン ] で、バージョンを選択します。
  3. [適用] をクリックします。

ノートブックに依存関係を追加する

サーバレスはコンピュート ポリシーや initスクリプトをサポートしていないため、カスタム ライブラリの依存関係は [Environment ] サイド パネルを使用して追加する必要があります。 ライブラリを個別に追加することも、共有可能な基本環境を使用して複数のライブラリをインストールすることもできます。

ライブラリの依存関係を個別に追加するには:

  1. ノートブック UI で、サイドパネルの [ 環境 ] 環境サイドパネルをクリックします。
  2. 「依存関係 」セクションで、「 依存関係の追加 」をクリックし、ライブラリの依存関係のパスをフィールドに入力します。依存関係は、 requirements.txt ファイルで有効な任意の形式で指定できます。
  3. 適用 をクリックします。これにより、ノートブックの仮想環境に依存関係がインストールされ、Python プロセスが再起動されます。

サーバレス コンピュートを使用するジョブは、ノートブックの環境仕様をインストールしてからノートブックのコードを実行します。 つまり、ノートブックをジョブとしてスケジュールするときに依存関係を追加する必要はありません。

important

PySpark や、サーバレス ノートブックへの依存関係として PySpark をインストールするライブラリはインストールしないでください。これを行うと、セッションが停止し、エラーが発生します。 これが発生した場合は、ライブラリを取り外し、 環境をリセットします

インストールされている依存関係を表示するには、 環境 サイドパネルの [インストール済み ] タブをクリックします。ノートブック環境の pip インストール ログは、パネルの下部にある [pip ログ ] をクリックしても使用できます。

基本環境を構成する

基本環境とは、ワークスペースファイルまたはUnity Catalogボリュームに格納されたYAMLファイルで、追加の環境依存関係を指定します。基本環境はノートブック間で共有できます。基本環境を構成するには以下を実行します。

  1. Python仮想環境の設定を定義するYAMLファイルを作成します。次のYAMLの例は、MLflowプロジェクトの環境仕様に基づいており、いくつかのライブラリ依存関係がある基本環境を定義しています。

    YAML
    client: '1'
    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
  2. YAML ファイルをワークスペース ファイルとして、または Unity Catalog ボリュームにアップロードします。 「ファイルのインポート」または「Unity Catalog ボリュームへのファイルのアップロード」を参照してください。

  3. ノートブックの右側にある [ 環境 ] ボタンをクリックして、[ 環境 ] サイド パネルを展開します。 このボタンは、ノートブックがサーバレス コンピュートに接続されている場合にのみ表示されます。

  4. Base Environment フィールドに、アップロードした YAML ファイルのパスを入力するか、そのファイルに移動して選択します。

  5. 適用 をクリックします。これにより、ノートブックの仮想環境に依存関係がインストールされ、Python プロセスが再起動されます。

依存関係を個別にインストールすることで、基本環境で指定された依存関係をユーザーが上書きすることができます。

環境の依存関係をリセットする

ノートブックがサーバレス コンピュートに接続されている場合、 Databricks はノートブックの仮想環境のコンテンツを自動的にキャッシュします。 つまり、通常、既存のノートブックを開くときに、非アクティブなために切断されているノートブックを [ 環境 ] サイド パネルで指定した Python 依存関係を再インストールする必要はありません。

Python 仮想環境のキャッシュは、ジョブにも適用されます。 ジョブが実行されると、必要な依存関係が既に使用可能であるため、その実行で完了したタスクと同じ依存関係のセットを共有するジョブのタスクは高速になります。

注記

サーバレスのジョブで使用されるカスタム Python パッケージの実装を変更する場合は、ジョブが最新の実装を選択できるように、バージョン番号も更新する必要があります。

環境キャッシュをクリアし、サーバレス コンピュートにアタッチされたノートブックの [Environment ] サイド パネルで指定した依存関係の新規インストールを実行するには、[ Apply ] の横にある矢印をクリックし、[ Reset environment ] をクリックします。

コア ノートブックまたは Apache Spark 環境を壊したり変更したりするパッケージをインストールする場合は、問題のあるパッケージを削除してから、環境をリセットします。ノートブックをデタッチしてから再度アタッチしても、環境キャッシュ全体がクリアされるわけではありません。

ノートブック以外のジョブタスクの環境を構成する

Python script、Python wheel、dbt タスクなどのジョブ タスク タイプの場合、ライブラリの依存関係はサーバレス環境バージョンから継承されます。インストールされているライブラリのリストを表示するには、使用している環境バージョンの 「インストールされている Python ライブラリ 」セクションを参照してください。タスクにインストールされていない Python ライブラリが必要な場合は、 ワークスペース ファイル、Unity Catalog ボリューム、またはパブリック パッケージ リポジトリからライブラリをインストールできます。

ジョブタスクを作成または編集するときにライブラリを追加するには:

  1. [環境とライブラリ ドロップダウン メニュー] で、編集アイコン デフォルト 環境の横にある [] をクリックするか、[ + 新しい環境の追加] をクリックします。

    デフォルト環境の編集

  2. [環境バージョン ] ドロップダウンから環境バージョンを選択します。サーバレス環境のバージョンを参照してください。Databricks では、最新の機能を利用するために、最新バージョンを選択することをお勧めします。

  3. 環境の設定 ダイアログで、 + ライブラリの追加 をクリックします。

  4. [ライブラリ ] の下のドロップダウン メニューから依存関係のタイプを選択します。

  5. ファイル パス テキスト ボックスに、ライブラリへのパスを入力します。

  • ワークスペース ファイル内の Python wheel の場合、パスは絶対パスで、/Workspace/ で始まる必要があります。

  • Python wheelボリューム内のUnity Catalog の場合、パスは/Volumes/<catalog>/<schema>/<volume>/<path>.whl である必要があります。

  • requirements.txtファイルの場合は、 PyPi を選択し、 -r /path/to/requirements.txtと入力します。

    タスクライブラリを追加する

  1. 別のライブラリを追加するには、 確認 または + ライブラリの追加 をクリックします。
  2. タスクを追加する場合は、 タスクの作成 をクリックします。 タスクを編集している場合は、 タスクを保存 をクリックします。

デフォルトの Python パッケージリポジトリを構成する

ワークスペース 管理者は、ワークスペース内のプライベートまたは認証済みパッケージリポジトリを、サーバレス ノートブックとサーバレス ジョブの両方のデフォルト pip 設定として設定できます。 これにより、ユーザーは index-urlextra-index-urlを明示的に定義せずに、内部の Python リポジトリからパッケージをインストールできます。ただし、これらの値がコードまたはノートブックで指定されている場合は、ワークスペース デフォルトよりも優先されます。

この構成 では、Databricks シークレット を活用して、リポジトリの URL と資格情報を安全に保存および管理します。 管理者は、ワークスペース管理設定ページを使用するか、定義済みのシークレットスコープと Databricks CLI secrets コマンド、または REST APIを使用してセットアップを構成できます。

ワークスペースのデフォルトの依存関係を設定する

ワークスペース管理者は、ワークスペース管理者設定ページを使用して、デフォルト Python パッケージ リポジトリを追加または削除できます。

  1. ワークスペース管理者として、Databricks ワークスペースにログインします。
  2. Databricksワークスペースの上部のバーにあるユーザー名をクリックし、 [設定] を選択します。
  3. コンピュート タブをクリックします。
  4. 「デフォルト・パッケージ・リポジトリ」 の横にある 「管理 」をクリックします。
  5. (オプション)インデックス URL、追加のインデックス URL、またはカスタム SSL 証明書を追加または削除します。
  6. [保存 ] をクリックして、変更を保存します。
注記

シークレットの変更または削除は、サーバレス コンピュートをノートブックに再アタッチした後、またはサーバレス ジョブを再実行した後に適用されます。

シークレット CLI または REST API を使用したセットアップ

CLI または REST API を使用してデフォルトの Python パッケージリポジトリを設定するには、事前定義されたシークレットスコープを作成し、アクセス権限を設定してから、パッケージリポジトリのシークレットを追加します。

定義済みのシークレットスコープ名

ワークスペース管理者は、事前定義されたキーの下で、指定されたシークレットスコープに、認証トークンとシークレットとともにデフォルト pip インデックス URL または追加のインデックス URL を設定できます。

  • シークレットスコープ name: databricks-package-management
  • シークレットキー for index-url: pip-index-url
  • シークレットキー for extra-index-urls: pip-extra-index-urls
  • シークレットキー for SSL certification content: pip-cert

シークレットスコープを作成する

シークレットスコープは、Databricks CLI secrets コマンドまたは REST APIを使用して作成できます。シークレットスコープを作成したら、すべてのワークスペースユーザーに読み取りアクセス権を付与するようにアクセス制御リストを設定します。 これにより、リポジトリはセキュリティで保護され、個々のユーザーが変更できなくなります。 シークレットスコープでは、事前定義されたシークレットスコープ名 databricks-package-managementを使用する必要があります。

Bash
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 つのフィールドはすべてオプションです。

Bash
# 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 を使用します。

Bash
# 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