JetBrains Researchは、機密データを使用した差分プライバシー付きのTransformerモデルのトレーニングを可能にしつつ、Hugging Face Trainerおよびその専門的なインターフェースに基づくトレーニングループを維持することを目的とした、オープンソースライブラリDPTrainerを提供した。同機関によると、このツールはOpacusライブラリをHugging Face環境に統合し、Trainerのソースコードを変更したり、トレーニングサイクルを手作業で再構築したりする必要をなくす。
このプロジェクトは、個人情報や機密情報を含む可能性のあるデータで大規模言語モデルをトレーニングすることに伴う懸念を背景としている。JetBrains Researchは、モデルがトレーニングデータの一部を記憶し、敵対的なプロンプトに応じて再現する可能性があると指摘している。また、メンバーシップ推論攻撃によって、特定の例がトレーニングセットに存在するかどうかを特定しようとする場合がある。
ここで差分プライバシーはどのように機能するのか?
DPTrainerはDP-SGDアルゴリズムを採用している。このアルゴリズムは、バッチ全体の勾配として扱うのではなく、サンプルごとの勾配を計算し、外れ値の影響を制限するために個別の勾配をクリッピングした後、それらを集計して調整済みのガウスノイズを追加する。目的は、単一レコードの寄与を、生成されたモデル上で実質的に識別できなくすることだ。
このライブラリは、許容される情報漏えいリスクの理論上の上限を表すプライバシー予算の概念を使用する。情報源は、この予算の消費が累積的であることを強調している。そのため、プライバシーの水準とモデル性能の間にはトレードオフが生じる。通常、より高いプライバシーを実現するには、勾配により大きなノイズを加える必要があるためだ。
DPTrainerはHugging Face環境に何を追加するのか?
DPTrainerはtransformers.Trainerを拡張し、target_epsilonの値またはノイズ係数を直接設定するためのPrivacyArguments構造を追加する。このツールは、プライバシー予算とトレーニング設定が指定されるとノイズ係数を自動的に計算する。また、各更新後の予算消費を追跡し、アカウンタントの状態をチェックポイントとともに保存するため、プライバシー状態を失うことなくトレーニングを再開できる。
その他の機能には、フラット、適応型、またはレイヤー単位の戦略を用いたサンプルごとの勾配クリッピング、サンプルごとの勾配を計算するためのOpacusのGradSampleModuleによるモデルのラッピング、プライバシーに対応したオプティマイザーの作成、ポアソンサンプリングを用いるDPDataLoaderの使用が含まれる。また、このツールは指定された予算を使い果たすと自動的にトレーニングを停止する。
専門的なTrainerのサポート
このライブラリは基本的なTrainerに限定されない。privatize_trainer関数によって、既存のTrainerクラスを実行時に変更する方法を提供する。情報源によると、これは選好学習用のDPOTrainer、指示チューニング用のSFTTrainer、およびSeq2SeqTrainerなどのTrainerに適用できる。それぞれのTrainer固有の損失および生成ロジックを維持しながら、DP-SGDの仕組みを追加できる。
なぜこの発展が重要なのか?
このプロジェクトの実用的な価値は、差分プライバシーという概念そのものを提供することではなく、それを高水準のトレーニングインターフェースと結び付ける際のエンジニアリング上の隔たりを縮小する点にある。OpacusをHugging Faceと手動で統合するには、モデルのラッピング、オプティマイザーの作成、データの読み込み、損失の計算、チェックポイントとコールバックの管理を変更する必要がある。これらのいずれかで誤りが起きると、問題が明確に現れないままプライバシー保証が弱まる可能性がある。
ただし、DPTrainerはプライバシーと性能の間にある基本的なトレードオフを解消するものではなく、モデルの精度、トレーニング時間、またはコストに対するライブラリの影響について、定量的な結果を情報源は示していない。また、ライセンスの詳細やプロジェクトの運用成熟度についても記載していない。これらは、導入を検討するチームが、本番環境やコンプライアンスの対象となる環境で採用する前に確認すべき点だ。