3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricksサーバレスノートブックで %uv pip が使えるようになりました

3
Posted at

はじめに

Databricksノートブックで、ついに uv が使えるようになりました。

ノートブックスコープのPythonライブラリインストールに、これまで使われてきた %pip に加えて、新たに %uv pip マジックコマンドが追加されています。uvはAstral社 (Ruffの開発元) が開発したRust製のPythonパッケージマネージャーで、近年のPythonエコシステムにおける最大のゲームチェンジャーの一つです。

この機能はサーバレスノートブックの環境バージョン5以降で利用可能です。実際に試してみたら、依存ツリーが深いパッケージでは 約3倍の高速化 を確認できました。

ドキュメントは以下です。

%uv pip とは

%uv pip は、%pip の高速な代替手段として提供されるマジックコマンドです。次のような特徴があります。

  • uvパッケージマネージャーがバックエンド: Rust製の高速なパッケージインストーラ
  • %pip と同じ仮想環境を共有: 一方でインストールしたパッケージはもう一方からも参照可能
  • 既存の %pip パターンと互換: ボリューム、ワークスペースファイル、requirements ファイル、バージョン管理システム、プライベートリポジトリといったインストール方法もすべて利用可能
  • 読み取り専用操作 (例: list) も高速化
  • 依存解決のステージが明示的に表示される: Resolved / Prepared / Installed の各フェーズで所要時間が表示されるため、ボトルネックが分かりやすい

利用要件

%uv pip は以下の環境でのみ利用できます。

  • サーバレスノートブック
  • 環境バージョン5以降

クラシックコンピュート、および環境バージョン4以前のサーバレスではサポートされていません。これからuvを試したい方は、ノートブック右側の 環境 サイドパネルから 基本環境Standard v5 に切り替えてください。

Screenshot 2026-05-11 at 7.37.28.png

なお、サーバレス環境バージョン5に切り替えても ValueError: %uv pip magic is not enabled. というエラーが出る場合があります。%uv pip は段階的にロールアウトされている機能のため、ワークスペースやリージョンによってはドキュメント記載済みでもまだ利用できない可能性があります。エラーが出た場合は、しばらく経ってから再度試してみてください。

実際に試してみた

軽量パッケージから依存ツリーが深いパッケージまで、3パターンで比較しました。

検証1: プリインストール済みパッケージ (simplejson)

simplejson はサーバレスにプリインストール済みのため、両者とも実質的なインストール作業は発生しません。

%pip install simplejson

出力:

Requirement already satisfied: simplejson in /local_disk0/...

コマンド所要時間: 2.90秒

%uv pip install simplejson

出力:

Using Python 3.12.3 environment at: /local_disk0/...
Audited 1 package in 52ms

コマンド所要時間: 2.31秒

Screenshot 2026-05-11 at 7.27.31.png

%uv pip の出力に注目すると、Audited 1 package in 52ms と表示されています。つまりuv自体の処理は52ミリ秒で完了しており、残りの時間はマジックコマンドやカーネルとのやり取りのオーバーヘッドです。プリインストール済みパッケージへの操作ではセル全体の体感差はあまりありません。

検証2: 実ダウンロードが発生するケース (polars)

プリインストールされていない polars で本格的に比較します。約56MBのwheelを実ダウンロードするケースです。

%pip install polars

コマンド所要時間: 4.60秒

%uv pip install polars

出力:

Using Python 3.12.3 environment at: /local_disk0/...
Resolved 2 packages in 55ms
Downloading polars-runtime-32 (53.6MiB)
 Downloaded polars-runtime-32
Prepared 2 packages in 713ms
Installed 2 packages in 158ms
 + polars==1.40.1
 + polars-runtime-32==1.40.1

コマンド所要時間: 3.01秒

Screenshot 2026-05-11 at 7.29.57.png

%uv pip の方が約35%短縮されました。uvのフェーズ別所要時間 (Resolved 55ms + Prepared 713ms + Installed 158ms) の合計は約926msで、uv自体の正味処理は1秒未満で完了しています。

検証3: 依存ツリーが深いケース (LangChain系)

これがuvの真価が発揮されるケースです。langgraphlangchainlangchain-community の3つを同時インストールします。これらは依存関係が深く、合計55個のパッケージを解決する必要があります。

%pip install langgraph langchain langchain-community

コマンド所要時間: 10.31秒

%uv pip install langgraph langchain langchain-community

出力:

Using Python 3.12.3 environment at: /local_disk0/...
Resolved 55 packages in 520ms
Downloading langchain-community (2.4MiB)
Downloading sqlalchemy (3.2MiB)
 Downloaded sqlalchemy
 Downloaded langchain-community
Prepared 18 packages in 251ms
Uninstalled 2 packages in 1ms
Installed 18 packages in 125ms
 + greenlet==3.5.0
 + httpx-sse==0.4.3
 + langchain==1.2.18
 + langchain-classic==1.0.7
 + langchain-community==0.4.1
 - langchain-core==1.2.6
 + langchain-core==1.3.3
 + langchain-protocol==0.0.15
 + langchain-text-splitters==1.1.2
 + langgraph==1.1.10
 + langgraph-checkpoint==4.0.3
 + langgraph-prebuilt==1.0.13
 ...

コマンド所要時間: 3.40秒

Screenshot 2026-05-11 at 7.30.55.png

約3倍の高速化 です。uvのフェーズ別所要時間に注目すると、

フェーズ 所要時間
55パッケージの依存解決 (Resolved) 520ms
18パッケージの準備 (Prepared) 251ms
2パッケージのアンインストール (Uninstalled) 1ms
18パッケージのインストール (Installed) 125ms
uv正味の処理時間 (合計) 約897ms

55パッケージの依存解決を520msで完了 しています。pipではこのフェーズに数秒かかるのが普通であり、依存ツリーが深いほどuvの優位性が顕著になることが分かります。LLMアプリやデータエンジニアリングのプロジェクトのように、多数のライブラリを組み合わせる開発では、毎回数秒〜十秒以上の時間が短縮されることになります。

その他のインストールパターン

ドキュメントで紹介されている %pip のインストールパターンは、すべて %uv pip でも使用できます。%pip%uv pip に置き換えるだけです。

基本的なサブコマンド

%uv pip は、標準的な pip のサブコマンドをサポートしています。

  • install
  • uninstall
  • list
  • show
  • freeze
  • check
  • tree

Python wheelパッケージのインストール

%uv pip install /path/to/my_package.whl

バージョン管理システムからのインストール

%uv pip install git+https://github.com/databricks/databricks-cli

requirements ファイルからのインストール

%uv pip install -r /Workspace/shared/prod_requirements.txt

Unity Catalogボリュームからのインストール

%uv pip install /Volumes/<catalog>/<schema>/<path-to-library>/mypackage-0.0.1-py3-none-any.whl

ワークスペースファイルからのインストール

%uv pip install /Workspace/<path-to-whl-file>/mypackage-0.0.1-py3-none-any.whl

プライベートリポジトリからのインストール (シークレット利用)

token = dbutils.secrets.get(scope="scope", key="key")
%uv pip install --index-url https://<user>:$token@<your-package-repository>.com/<path/to/repo> <package>==<version> --extra-index-url https://pypi.org/simple/

%uv pip の制限事項

便利な %uv pip ですが、いくつかの制限事項があります。導入前に把握しておきましょう。

段階的ロールアウト中

冒頭でも触れましたが、%uv pip はサーバレス環境バージョン5以降で利用可能とドキュメントには記載されているものの、実際の有効化は段階的にロールアウトされています。サーバレスv5に切り替えても %uv pip magic is not enabled. が出る場合は、しばらく時間をおいてから再度試してみてください。

プリインストール済みライブラリの完全アンインストール不可

%uv pip uninstall では、サーバレス環境にプリインストール済みのライブラリを完全に削除できません。パッケージのメタデータは削除されますが、基となるファイルはファイルシステム上に残り、引き続きインポート可能な状態となります

プリインストール済みライブラリとの依存関係競合チェックなし

%uv pip は、プリインストール済みライブラリとの依存関係の競合をチェックしません。インストール時に意図しないバージョン不整合が発生する可能性があるため、特にプロダクション利用前には十分な検証が必要です。

環境サイドパネルの表示上の問題

%uv pip コマンド実行後、ノートブックの 環境 サイドパネルに、プリインストール済みライブラリの一部が「ユーザーインストール済み」と表示される場合があります。これは表示上の問題であり、パッケージの実際の機能には影響しません。

用途の切り分け

%uv pip は、高速な対話型反復処理を目的としたツールとして位置付けられています。再現可能な環境をセットアップしたい場合は、ノートブックの 環境 サイドパネルで依存関係を追加することが推奨されています。

まとめ

Databricksノートブックで %uv pip が使えるようになったことで、特にライブラリの試行錯誤フェーズにおける開発体験が大きく改善されます。

実測値の総まとめは以下の通りです。

ケース %pip %uv pip 短縮率
simplejson (プリインストール済み) 2.90秒 2.31秒 約20%
polars (約56MBの実ダウンロード) 4.60秒 3.01秒 約35%
LangChain系3パッケージ (55依存) 10.31秒 3.40秒 約67% (3倍速)

機能面の比較は以下の通りです。

観点 %pip %uv pip
バックエンド pip uv (Rust)
依存解決の可視化 なし Resolved / Prepared / Installed のフェーズ別表示
利用可能環境 クラシック、サーバレス全般 サーバレス環境バージョン5以降のみ (段階的ロールアウト中)
プリインストール済みライブラリのアンインストール 制限あり 不可 (メタデータのみ)
依存関係競合チェック あり プリインストール済みに対してはなし

%pip%uv pip の体感差は、インストール対象のパッケージサイズや依存ツリーの深さに大きく依存します。LangChainやTransformersのような依存ツリーが深いライブラリを扱う場合、uvの効果は劇的です。一方、プリインストール済みライブラリの再確認では大きな差は出ません。

サーバレスをお使いの方は、まず %pip install%uv pip install に置き換えて、その違いを体感してみてください。特にLLMアプリ開発やMLパイプラインの試行錯誤フェーズで、日々の開発体験が大きく改善されるはずです。

参考リンク:

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?