世界を動かす技術を、日本語で。

PYX: Pythonパッケージングの次のステップ

概要

uv の開発元が提供する Python専用パッケージレジストリ の特徴を解説。 PyPIPyTorch などのインストール速度向上。 専用インデックスURL によるパッケージ管理機能。 最先端標準への対応 やuvとのシームレス統合。 最適化されたビルド と一貫したメタデータ提供。

Python-native Package Registryの特徴

  • uv 開発元による Python専用パッケージレジストリ 提供
  • RampIntercomfalA などエンジニアリングチームからの信頼
  • PyPIPyTorch、および プライベートソース からのインストールを高速化
  • 最適化アーティファクトuvネイティブメタデータAPI 活用
  • 他のプライベートレジストリ よりも 桁違いの高速性

パッケージ管理とコンプライアンス

  • 専用インデックスURL でパッケージをフィルタリング
    • 人気度
    • リリース年齢
    • 脆弱性情報
  • 独自コンプライアンスルール のエンコード機能
  • サーバー上での再現可能なビルド の保証

Python特化による利点

  • Python への特化による 最先端標準 への迅速な対応
  • uv との直接統合により 設定不要認証のシームレス化
  • PyTorchvLLMFlashAttentionDeepSpeed などの 最適化済みビルド を提供
    • ハードウェアに応じた一貫したメタデータと最適な構成

体験・お問い合わせ

  • Pythonの未来 をいち早く体験可能
  • 問い合わせ詳細情報の取得 を推奨

Hackerたちの意見

おそらく、もっと役立つブログ記事だよ: https://astral.sh/blog/introducing-pyx

ありがとう、リンク先のページよりは少しわかりやすいね。でも、彼らが主張していることをどうやって解決しているのかはまだ理解できないな。

2、3週間前に言ったけど、彼らはいつか現金化しなきゃならないよ。動きはUvの周りじゃなくて、保護されたプライベートPyPiみたいな感じになるんじゃないかな。https://news.ycombinator.com/item?id=44712558 さて、ここには何があるんだろう?

まだuvを導入してないんだ。彼らの動きを見守ってるところ。最近、Anacondaツールの変更に伴って使い方を見直さなきゃいけなかったし、Qtのライセンス変更も確認したところなんだ。もう一度ライセンスの問題に巻き込まれるのは勘弁してほしいな。

何を言いたいのかよくわからないな。チャーリー・マーシュ自身がこれを言ってるし、例えば去年の9月に彼が投稿したこれを見てみて: > 「これがどうなるかの一例(やらないかもしれないけど、戦略の具体例を持つのは役に立つ)は、企業向けのプライベートパッケージレジストリみたいなものになるだろう。」https://hachyderm.io/@charliermarsh/113103605702842937 Astralは自分たちのビジネスモデルについてとても透明性があるよ。

キャッシュアウトってちょっとネガティブな言葉だね。彼らは明らかにカテゴリー的に優れたツールを作る能力を示してるから、たくさんの企業がさらに多くの問題を解決するために彼らにお金を払うのを喜んでいると思うよ。

こういうオープンソース製品を受け入れて、何度も痛い目にあったからさ。こういう約束は前にも聞いたことがある。結局、買収される運命だよ。何年分ものドキュメントや問題、プルリクエストが、ほとんど予告なしに消えちゃう。新しい会社から出てくる商業用の代替品には、最初に頼りにしていた機能がなぜか欠けてるってことになる。

参考までに、この懸念は理解できるよ。でも、pyxはAstralのツールとは意図的に異なることを強調したいんだ。発表記事から: > 「製品自体を超えて、pyxは私たちの戦略の具現化でもある。私たちのツールは永遠に無料でオープンソース、かつ許可されたライセンスのままだ。そこは何も変わらない。代わりに、私たちのツールを使っているときに必要になる『次の自然なもの』を表す有料のホスティングサービスを提供する予定だ。それがAstralプラットフォームだ。基本的には、オープンソースツールをマネタイズするのではなく、持続可能な商業製品を別に作ることでこの懸念に対処しようとしているんだ。」

同意する。もしその中のどれかが追求する価値があるなら、pipに統合されてるはずだよね。

これは、チャーリーが去年の9月にマストドンでビジネスモデルについて質問されたときに言ってたことと実質的に同じだね。https://hachyderm.io/@charliermarsh/113103564055291456

近いうちに: Pythonのパッケージ標準が14個もあるんだって。これは明らかに冗談だよ。もう何年も14個以上あるからね。

Pythonのパッケージングにはたくさんの基準があるけど、ほとんどは(特にここ10年くらい)お互いに競争してるわけじゃないと思う。むしろ「一般的に役立つ機能がゆっくりと増えていく」スタイルに寄ってる感じ。これ自体が、Pythonがパッケージングに関して比較的健全な合意形成に基づく標準化プロセスを持っているからだと思う。もしPythonがもっと権威的なアプローチを取っていたら、今のようにはうまくいかなかったんじゃないかな。(出典:少なくとも5つのPEPを書いたことがあるよ。)

レジストリにおけるGPU-awareってどういう意味?uvは僕のローカルGPUの仕様を調べて、Pyxから引っ張ってくるのに最適なパッケージのセットを決めてくれるの?これは企業向けのプライベートな有料レジストリなんだけど、そのレジストリを外部に公開するオプションはあるのかな?つまり、僕がベンダーとして自分のパッケージ用にPyxレジストリを支払って作って、それを顧客のための入り口として提供できるってこと?

uvは僕のローカルGPUの仕様を調べて、Pyxから引っ張ってくるのに最適なパッケージのセットを決めてくれるの?実は、今日の時点でこの基本的なアイデアはサポートしてるよ、pyxなしでもね。例えば、uv pip install --torch-backend=auto torchを実行すると、あなたのマシンのGPUに基づいてPyTorchのバージョンを自動でインストールしてくれる。pyxはそのアイデアをさらに進めて、単にPyTorchをサポートするだけじゃなくて、各サポートされているハードウェアアクセラレーターのためのキュレーションされたインデックスを持ってるんだ。そして、そのインデックスには幅広いパッケージ、バージョン、Pythonバージョン、PyTorchバージョンなどのプリビルドアーティファクトが一貫したメタデータと共に集められてる。だから、2つのポイントがあるんだ:(1) pyxを指すと、これらのものの正しいプリビルドで互換性のあるバージョンを得るのがずっと簡単になるし、インストールも早くなる;(2) uvクライアントは「正しい」pyxインデックスを自動で指し示してくれる(この部分はpyxを使っているかどうかに関係なく機能するけど、ちょっと制限がある)。 > これは企業向けのプライベートな有料レジストリなんだけど、そのレジストリを外部に公開するオプションはあるのかな?つまり、僕がベンダーとして自分のパッケージ用にPyxレジストリを支払って作って、それを顧客のための入り口として提供できるってこと?まだこれには対応していないけど、ユーザーから何度か話が出たことはあるよ。具体的に興味があれば、気軽にメールしてね(charlie@)。

なぜPyTorchやCUDA、またはPyTorchやCUDAに依存するFlashAttentionやDeepSpeedのようなライブラリをインストールするのがこんなに難しいの?本当にそうだよね!Windows(とWSL)では、古いVisual Studioのバージョンにバンドルされたコンパイラを使わなきゃいけないパッケージがあって、それが手動でダウンロードパスを作らないといけないものもあるから、余計に厄介なんだ。もっと良い開発体験が待ち遠しいよ。

こういうことがあって、Ruby(Railsのせいで)から完全に離れちゃったのが残念。Rubyを楽しんでる人たちの動画を見ると、楽しそうな言語だなって思うけど、Railsの開発環境をDigitalOceanのドロップレットを使う以外の方法でセットアップできないと、興味を失っちゃう。Rails用に何かをコンパイルするのがいつも失敗してたから。2012年にRailsの盛り上がりに参加したかったけど、インストールやセットアップのプロセスがいつも悪夢だった。Pythonにしたのは、そういう問題がなかったから。今はAIやCUDA関連のことがあって、誰かのセットアップシェルスクリプトを使う方がいいって感じになってる。

これは昔、anacondaを使う理由の基本だった。

Pythonのパッケージングにとって、特にGPUを多用するワークフローにはいい方向性だね。具体的に楽しみなことが2つあるよ。1つ目は、アクセラレーターごとにキュレーションされた互換性テスト済みのインデックス(CUDA/ROCm/CPU)ができること。これで、チームがtorch/cu*マトリックスについて無駄に議論するのをやめられるし、2つ目はメタデータをクエリ可能にして、クライアントが事前に解決して並行してインストールできるようにすること。もしpyxが、ハードウェアに特化したアーティファクト(例えば、SM/アーキテクチャ特有のビルド)や予測可能なハッシュを提供することで、MLの「pipの試行錯誤」ループを減らせるなら、それだけで環境ごとに何時間も節約できるよね。それに、ツールをOSSに保ちながらホスティングサービスを収益化するのも賛成だな—明確な分離が信頼を築くから。ちょっと気になるのは、pyxが依存関係グラフや逆依存関係のエンドポイント(例えば、「X→Yで何が壊れる?」)や、サプライチェーンチェックのためのSBOM/署名証明を公開するのかな?

Pythonのパッケージングに関するすべての課題が解決されたね。学んだ教訓は、すべての問題に対する単一の解決策はないってこと。VC資金を受けた企業と関わることで、より多くの制約がつくのは、FOSSコミュニティにとっては高リスクだよ。

この分野が熱くなっていくのを見るのは面白いね。リポジトリにはArtifactoryやNexusのような老舗があって、新興のCloudsmithもいる。ライブラリには、OGのActiveStateやChainguard Libraries、そして誰かが来週の新しいものに気を取られるまでのGoogle Assured Open Sourceがある。Pyxはその両方を少しやろうとしているみたいだね。開示しておくけど、これらのプロジェクトの人たちとは結構やり取りしたことがあるよ。でも、働いたこともお金をもらったこともないけどね。

このセットアップがどの程度パッケージの発行者に依存しているのかが不明なところだな。PyPiはひどいかもしれないけど、少なくとも公開したいときには動くから、これを使おうとしている人たちには複雑さが増すんじゃないかな。もしかしたら、彼らは開発ツール企業だけをターゲットにして、配布方法を簡素化しようとしているのかも。特に加速コンピューティングの時代においてはね。