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

サーバレス環境の設定

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

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

サーバレス 予算ポリシーとサーバレス環境パネル

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

メモリー容量の多いサーバレス コンピュートの利用

備考

プレビュー

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

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

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

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

サーバレス 予算ポリシーの選択

備考

プレビュー

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

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

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

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

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

サーバレス 予算ポリシーとサーバレスノートブック環境パネル

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

注記

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

環境バージョンの選択

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

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

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

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

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

依存関係を個別に追加するには:

  1. ノートブック UI で、サイドパネルの [ 環境 ] 環境サイドパネルをクリックします。

  2. 「依存関係 」セクションで、「 依存関係の追加 」をクリックし、フィールドに依存関係のパスを入力します。依存関係は、 requirements.txt ファイルで有効な任意の形式で指定できます。Python wheel ファイルまたは Python プロジェクト ( pyproject.tomlsetup.pyを含むディレクトリなど) は、ワークスペース ファイルまたは Unity Catalog ボリュームに配置できます。

    • ワークスペース ファイルを使用する場合、パスは絶対パスで、 /Workspace/で始まる必要があります。
    • Unity Catalog ボリューム内のファイルを使用する場合、パスは /Volumes/<catalog>/<schema>/<volume>/<path>.whl.
  3. 適用 をクリックします。これにより、ノートブックの仮想環境に依存関係がインストールされ、Python プロセスが再起動されます。

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

important

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

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

ワークスペース全体で共有する共通のユーティリティを作成する

次の例は、一般的なユーティリティをワークスペースファイルに保存し、それをサーバレスノートブックに依存関係として追加する方法を示しています。

  1. 次の構成でフォルダを作成します。プロジェクトのコンシューマーがファイル パスに適切なアクセス権を持っていることを確認します。

    Shell
    helper_utils/
    ├── helpers/
    │ └── __init__.py # your common functions live here
    ├── pyproject.toml
  2. 次のように pyproject.toml を入力します。

    Python
    [project]
    name = "common_utils"
    version = "0.1.0"
  3. init.pyファイルに関数を追加します。例えば:

    Python
    def greet(name: str) -> str:
    return f"Hello, {name}!"
  4. ノートブック UI で、サイドパネルの [ 環境 ] 環境アイコン。をクリックします。

  5. 「依存関係 」セクションで、「 依存関係の追加 」をクリックし、utilファイルのパスを入力します。たとえば、 /Workspace/helper_utilsのようになります。

  6. [適用] をクリックします。

これで、ノートブックで関数を使用できるようになりました。

Python
from helpers import greet
print(greet('world'))

これは次のように出力されます。

Hello, world!

基本環境を構成する

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

  1. Python仮想環境の設定を定義するYAMLファイルを作成します。次の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
  2. YAML ファイルをワークスペース ファイルとして、または Unity Catalog ボリュームにアップロードします。 ファイルのインポートまたはUnity Catalog ボリュームへのファイルのアップロードを参照してください。

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

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

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

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

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

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

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

注記

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

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

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

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

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

手順については、ワークスペース管理者の「 デフォルト Python パッケージ リポジトリの構成」を参照してください。

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

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. タスクを追加する場合は、[ タスクを作成 ] をクリックします。タスクを編集している場合は、[ タスクを保存 ] をクリックします。

シークレット 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 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