ノートブックの依存関係をインストールする

プレビュー

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

環境 サイドパネルを使用して、 サーバレスノートブックにおけるPythonの依存関係をインストールできます。このパネルは、ノートブックのライブラリ要件を編集、表示、エクスポートするための単一の場所を提供します。 これらの依存関係は、基本環境を使用して追加することも、個別に追加することもできます。

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

ノートブック以外のタスクについては、 ノートブック以外のタスクの環境と依存関係を構成するを参照してください。

重要

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

基本環境を構成する

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

  1. Python 仮想環境の設定を定義する 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 プロセスが再起動されます。

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

ノートブック環境を構成する

環境パネルの依存関係タブを使用して、サーバレス コンピュートに接続されたコンピュータに依存関係をインストールすることもできます。

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

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

  3. 依存関係セクションで、 依存関係の追加をクリックし、フィールドにライブラリ依存関係のパスを入力します。 依存関係は、 requirements.txt ファイルで有効な任意の形式で指定できます。

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

注:

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

インストールされている依存関係と pip ログを表示する

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

環境をリセットする

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

Python 仮想環境のキャッシュはジョブにも適用されます。 つまり、必要な依存関係がすでに利用可能であるため、後続のジョブの実行が高速になります。

注:

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

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

注:

コアノートブックまたは Apache Spark 環境を破壊または変更するパッケージをインストールする場合は、仮想環境をリセットします。 コンピュータをサーバレス コンピュートから切り離して再度接続しても、必ずしも環境キャッシュ全体がクリアされるわけではありません。

ノートブック以外のタスクの環境と依存関係を構成する

Python script、Python wheel、dbt タスクなど、サポートされている他のタスクの種類の場合、デフォルト環境にはインストールされたPythonライブラリが含まれます。インストールされているライブラリのリストを表示するには、使用しているクライアントバージョンの 「インストールされている 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 パッケージリポジトリを設定するには、事前定義されたシークレットスコープを作成し、アクセス権限を設定してから、パッケージリポジトリのシークレットを追加します。

Predefined シークレットスコープ name

ワークスペース管理者は、事前定義されたキーの下で、指定されたシークレットスコープに、認証トークンとシークレットとともにデフォルト 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を使用して作成できます。シークレットスコープを作成したら、すべてのワークスペースユーザーに読み取りアクセス権を付与するように ACL を設定します。 これにより、リポジトリはセキュリティで保護され、個々のユーザーが変更できなくなります。

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 パッケージリポジトリの詳細を追加します。

# 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

注:

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