Polars 2.0

2026/10/06 20:59

Polars 2.0

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

Polars 2.0 では、デフォルトで out-of-core(ディスクへのスプレル)処理が導入され、64GB のディスク予算に対し約 80% のメモリ使用量から動作を開始し、手動設定なしで大規模データセットでのメモリ効率の高い分析を可能にします。

LazyFrame
に
collect()
を呼び出す場合、デフォルトでストリーミングエンジンを使用することでパフォーマンスとメモリの効率が向上し、行順序を保証するには明示的に
maintain_order=True
を設定する必要があります。Polars は SQL を一等市民扱いとし、ジョインの再順序付け、共通サブプランの排除、動的な条件式、およびブルームフィルタを備えた改良された最適化機能を搭載しています。

AWS c7a インスタンス上で tpcgen-cli パラケットを使用したベンチマークでは、TPC-H および TPC-DS タスクにおいて Polars が DuckDB 1.5.6、DuckDB 2.0 alpha、および DataFusion を上回るパフォーマンスを発揮し(DataFusion のタイムアウトとメモリエラーは除外)、デフォルトの Polars は 1 つを除くすべてのベンチマークで最速です。192 vCPU にスケーリングした場合は小規模データに対して一定のオーバーヘッドが発生しますが、コア数を 32 に制限するとすべてのベンチマークで Polars が競合するか勝利します。大規模データセット(例:SF100)では、Polars はより多くのコアで良好なスケーラビリティを示し、DuckDB 1.5.6 に比べ TPC-H で約 3.8 倍、TPC-DS の合計計算で約 2.2 倍高速化を実現します。テストは AWS EBS で実行され、クエリごとに 60 秒のタイムアウトを適用し、5 つの結果中最良のものに基づいて比較されました。

Polars では Arrow の MapType を直接サポートする新しい

Map
dtype が追加され、キールックアップ、包含チェック、値およびキーの反復といった辞書様の操作が可能になります。本ライブラリでは厳格な型チェックと fail-fast 系エラー処理を強制し、データをマテリアライズせずにスキーマの不整合を早期に検出することで、AI の高速イテレーションをサポートし、エージェントが
collect_schema()
を介してクエリの構造を検証できるようにしています。現在の out-of-core サポートはソート、ウィンドウ関数、および多数の表現式を含みますが、ジョインおよびグループByKey操作は将来のリリースで追加されます。バージョン 2.0 へのアップグレード用には移行ガイドが利用可能であり、問題報告は Polars の GitHub リポジトリを通じて行うことができます。

本文

Polars 2.0 リリース:主要機能とパフォーマンス改善のハイライト

本日、Polars 2.0 がリリースされました。前回の発表ではバージョンアップの背景について触れましたが、本稿では新たに追加された機能を解説します。当初大規模な新機能リリースを意図していませんでしたが、実際には多くの価値ある機能が搭載されており、期待以上の成果となりました。

リリースハイライト

  • 非コア機能(ディスクへのダンプ/spill-to-disk)の初期実装有効化
  • パフォーマンス面での大幅な改善
  • SQL を第一級市民とする完全なサポート体制的确立
    • TPC-H および TPC-DS ベンチマークにおいて、DataFusion や DuckDB にて優位性を実証。
  • 新しい Map データ型の実装
  • データ型(dtypes)への厳格化と明確性の向上
    • フィードバックの高速化および AI 開発におけるイテレーション速度の向上を実現。

パフォーマンス向上と SQL の第一級市民としての位置づけ

Polars 2.0 は、SQL を**「第一級市民」**として扱う節目となります。過去数年間構築してきた堅牢なエンジン能力を、より広範なワークロード、とりわけ SQL ワークロード に適用します。高いパフォーマンスを実現するために、以下の改善が実装されました。

  • クエリオプタイマーの改良
  • 結合順序のリオーダー(Reordering)
  • 非常に優れた共通サブプラン排除(Common-Subplan-Elimination)
  • 動的プリディケートおよびブルームフィルタの採用

ベンチマーク結果と環境

TPC-H および TPC-DS から派生したデータセットを用い、最新の DuckDB リリースおよび DataFusion と対比させました。

  • 評価環境:
    c7a.4xlarge
    (16 コア vCPU, 32GB RAM) および
    c7a.metal
    (192 コア vCPU, 384GB RAM)
  • 実行設定:
    • 熱い設定(hot setting)下での 5 回実行
    • 各クエリごとに独立したプロセス起動
    • タイムアウト値: 60 秒
    • エンジン切り替え時のファイルキャッシュクリアは行いましたが、クエリ間の再読み込みは行いません。
    • 評価指標: 最速の実行時間、総和時間、幾何平均。
  • データ生成:
    tpcgen-cli
    (コミット 99bedae) を使用。デフォルトの行グループサイズで確認。

主要な所見

  • Polars: 例外を除き、すべてのベンチマークにおいて最速のパフォーマンスを発揮しました。
  • DuckDB と DataFusion: 比較対象として機能し、特定の条件下で Polars が優位でした。
    • DataFusion は TPC-DS クエリ q72/q67 でタイムアウト。TPC-H クエリ q18 ではメモリ不足となりました(除外)。

注意点:

  • スケーリングに際して Polars は一定のオーバーヘッドがあり、データ量が少ないクエリの性能を低下させる傾向があります。
  • 32 コア制限下では、あらゆるベンチマークで競争力があり、場合によっては他エンジンを上回っています(この原因は特定済みで、次リリースでの修正予定)。
  • 詳細は ベンチマーク用リポジトリ を参照してください。

ストリーミングエンジンと OOC(Out-of-Core)をデフォルト設定へ

これは Polars 2.0 の最も大きな影響を与える変更の一つです。

1. ストリーミングエングンのデフォルト採用

LazyFrame に

collect()
を呼び出す場合、ストリーミングエンジンが選択され、多数のクエリにおいて劇的なメモリ削減とパフォーマンス向上を実現します。

  • 背景: ストリーミングエンジンは特定の操作(結合、グループ化、転置など)に対してデフォルトで行順序を保証しないためです。
  • 対応策: 明確な行順序が必要な場合は、明示的に
    maintain_order=True
    を設定します。

2. 非コア機能(Spill to Disk)のデフォルト有効化

RAM 使用率が約 80% に達した時点でディスクへのダンプ(spill)を開始し、メモリ不足を防ぎます。

  • 初期実装: ソート、ウィンドウ関数、多数の式などに対応。
  • デフォルト割り当て予算: 64GB
  • 今後の予定: 結合およびグループ化操作への非コア機能実装も予定されています。

これにより、Polars は高メモリ使用ワークロードにおける耐障害性が格段に向上します。


新しい Map データ型

Arrow の

MapType
を Polars 固有の
Map dtype
としてネイティブサポートしています。Python の辞書(dictionary)のようにキーに値をマッピングした構造です。

データ型の読み込み

2.0 以前には List of Struct として扱われていましたが、今や正式なデータ型として扱われます。

import polars as pl

df = pl.DataFrame(
    {
        "user": ["alice", "bob", "carol"],
        "scores": pl.Series(
            [{"math": 90, "art": 75}, {"math": 60}, {}],
            dtype=pl.Map(pl.String, pl.Int64),
        ),
        "subject": ["art", "art", "math"],
    }
)

クイックな辞書的操作

Map タイプは専用の式(Expression)をサポートします。固定キーの検索、値への反復処理、キー/値の抽出が可能です。

df.select(
    "user",
    pl.col("scores").map.get("math").alias("math"),                # 固定されたキー
    pl.col("scores").map.get(pl.col("subject")).alias("by_subject"),  # 別の列からキーを取得
    pl.col("scores").map.contains_key("art").alias("has_art"),
    pl.col("scores").map.len().alias("n"),
    pl.col("scores").map.keys().alias("keys"),
    pl.col("scores").map.values().alias("values"),
)

より厳格な Polars (Strict Mode)

Polars はエラーを早期に検出・失敗させることを重視しています。暗黙的な動作によるデータ不整合はデフォルトではなくオプションとして設定されます。

厳格化のメリット

  • AI 開発の高速化: エージェントや人間が
    collect_schema()
    を呼び出し、データを実際にロードする前に型解析を行いスキーマレベルの不整合を検出できます。
  • フィードバック速度の向上: エラー発生時をパイプライン実行後ではなく、最初から即座に返すことで、イテレーション速度が向上します。

注意: すべてのエラーがコンパイル時に検出できるわけではありません(データ依存型)。そのため、不整合を検出することを目的とした厳格な動作をデフォルトとしています。


今後の展望とまとめ

Polars 2.0 のリリースに大変興奮しております。今後数ヶ月間、以下のような改善を重ねてまいります。

  • 非コア機能の更なる強化
  • 大規模なコア数を有する環境でのスケーリング性能向上
    • Polars Cloud を「利用可能な最も高速な分散エンジン」へ進化させるため。
  • GeoPolars の開発着手

アップグレードとバグ報告

新しいリリースに関連する問題を見つけた場合は、ぜひご報告ください。

  • Issues: GitHub Issues
  • 移行ガイド: 2.0 へのアップグレードをスムーズに行うためのガイドが公開されています。

同じ日のほかのニュース

一覧に戻る →

2026/10/07 5:57

Decisions API が公開ベータ版を開始しました

## Japanese Translation: Decisions API は、テキストまたは画像の評価において Responses API より 10 倍の高速化を実現し、gpt-6-luna モデルを専有して動作する専用 POST /v1/decisions エンドポイントを通じて型付けされた結果を返します。現在公開ベータ版で提供中であり、General Availability は近日を予定しています。対応する具体的な回答タイプは 3 つあり、predicates(条件の確率)、choices(固定セットからの選択)、scores(ルーブリック評価)です。機能的には、API は単一のリクエスト内での独立した質問間で入力共有を可能にし、ワークフローを簡略化する一方で、依存関係のある決断は別々の順序実行呼び出しによって取り扱う必要があります。リクエストではテキスト入力またはインライン base64 エンコードされた画像を受け付けるが、ホスト URL および file_id 入力はサポートされていません。コスト効率の向上は、入力トークンのみに対して課金される(100 万トークンあたり 0.1 ドル)モデル採用と出力トークン料金の非課金化を通じて達成されます。また、HIPAA 準拠を米国、欧州、スイスデータセンターで確保するためのゼロデータ保持ポリシーも備わっています。開発者は、偽陽性と偽陰性の間のトレードオフに基づいてルーティング閾値を設定するためにラベル付けされた例を使用することで、コストと精度の最適化が可能です。これにより、条件チェック、固定選択、詳細な評価に対する高速かつ自動化された決定が最小の遅延で可能になります。

2026/10/07 1:03

EmbeddingGemma 2:オープンで軽量なマルチモーダル埋め込みモデル

## Japanese Translation: EmbeddingGemma 2 は、オンデバイス多模态埋め込みにおいて最も高性能なモデルとして、テキスト、画像、音声、ビデオ、コードを統一空間にネイティブにマッピングする画期的なローカル AI 機能の飛躍を示しています。7.4 億パラメータを有し、商用許諾の Apache 2.0 ライセンス下にある堅牢な Gemma 4 アーキテクチャを基礎とすることで、軽量さを維持しつつもベンチマークスコアで業界トップレベルの成績を収めます。その特徴は、Matryoshka Representation Learning(MRL)によるストレージ効率化であり、ベクトル次元を動的に削減することで最大 6 倍までのスペース削減を可能にします。オンデバイス性能向けに最適化されており(テキストのみウェイトの場合 Google Pixel 11 Pro で約 191MB の RAM を必要とする)、ローカルハードウェア上で直接長形式メディアを処理できる impressive な 8K トークンコンテキストウィンドウを搭載しています。ローカル索引付けにおけるコード性能に著しい向上をもたらすと同時に、埋め込みをローカルで生成することでオフラインクロスモーダル検索を実現しデータプライバシーを確保します。開発者はすぐに Hugging Face や Kaggle を介してモデルを利用でき、MediaPipe、LiteRT、WebGPU などのデプロイメントツールや vLLM、Ollama などのサービングフレームワークを活用し、外部クラウドサーバーに依存せず既存のワークフローへのシームレスな統合が可能です。この進展は、効率的かつオフライン AI リトリバルのための新たな業界標準を確立します。

2026/10/07 5:33

パラマウント・スカイダンスがワーナー・ブラザーズ・ディスカバリーとの1,110億ドル合併を完了しました。

## Japanese Translation: パラマウント・グローバルは、ワーナー・ブラザース・ディスカバリーとの歴史的な 1,110 億ドル規模の合併を正式に完了させ、去年別の取引で買収した企業であるスカイダンスという名前の新しいメディア会社を創設しました。この組み合わせには、2 つの最大の映画スタジオ、広範なライブ・スポーツ関連資産(CBS スポーツおよび TNT スポーツを含む)、主要なストリーミングプラットフォーム(パラマウント+ および HBO マックス)ならびに CBS や CNN などの主要ニュース事業、さらに深いコンテンツライブラリとブランドが統合されています。 この取引は、合併が競争を著しく減少させ反トラスト法に違反すると主張するカリフォルニア州およびその他の 11 の州からの法的な課題に直面しました。米国地方裁判所の裁判官は 7 月に合併が競争を害する可能性が高いと裁定し、これを受けて各州から和解案の提議が行われました。言論自由およびメディア擁護団体は、和解を拒否するよう裁判所に要請しましたが(和解は訴追した州の住民に対して「実質的な何ら物事もないものを与えるに過ぎない」と主張)、9 月 30 日にアラセリ・マルティネス・オルギン裁判官は、訴訟回避を実現し合理的な事実および法的解決として合意を批准しました。 和解に基づき、パラマウントは国内映画に対する最低限の投資額および配給閾値を満たす必要があり、基本ケーブルチャネルのライセンスリングは各実体の保有に対して個別交渉の下で継続されます。エレン・ケイガン法務長官は差し止め申請を行わず、裁判プロセスは州側の訴訟とマルティネス・オルギン裁判官が和解を受諾したことに中心を置きました。スカイダンスの将来の成功は、これらの投資要件を満たし、さらなる法的混乱なく継続的なライセンス交渉を管理することによって左右されます。

Polars 2.0 | そっか~ニュース