ニュース

PyTorch チームは技術ロードマップを初公開し、2024 年後半の開発方向性を明らかにする 100 ページ近くの文書を作成しました。

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


新しい知恵のレポート

編集者:喬楊

【新しい知恵の紹介】最近、PyTorch チームは、内部技術文書から直接変更された開発ロードマップを初めて発表し、この古典的なオープンソース ライブラリの次の開発方向を明らかにしました。

AI 分野で Python を使用して開発している場合、PyTorch は古い友人の 1 つであるはずです。 Meta AI は 2017 年に機械学習と深層学習の分野でこのオープンソース ライブラリをリリースし、現在で 7 年目を迎えています。

Assembly AI の 2021 年の統計によると、HuggingFace で最も人気のあるモデルの上位 30 はすべて PyTorch で実行でき、モデルの 92% は PyTorch 独自のものであり、この割合により、TensorFlow を含む多くの競合他社は手の届かないものとなっています。


ちょうど 7 月 10 日、PyTorch のエンジニアリング チームはロードマップ文書を初めて公開し、2024 年下半期の開発方向を定めました。

Meta の共同創設者で PyTorch チームを率いる Soumith Chintala 氏が Twitter でこのニュースを正式に発表しました。

同氏は、エンジニアの研究動機や目標を公表したいと述べた。

「すべての PyTorch 開発は GitHub で公開されていますが、さまざまな PyTorch 関連会社のチームによって作成された実際の計画とロードマップのドキュメントは公開されていないため、透明性を高めるために変更を加えることにしました。」


PyTorch チームの技術プロジェクト マネージャーである Gott Brath 氏もフォーラムで同様の発言をしました。


私たちは、チームが PyTorch で行っている作業のロードマップを共有する方法を考えてきました。私たちは年に 2 回計画を行っているため、これらは PyTorch のいくつかの主要領域に関する 2024 H2 OSS 計画の公開バージョンの一部です。

これらのファイルは基本的に PyTorch チームの内部文書と作業計画であり、一部のコンテンツを削除した後、PyTorch の次の側面を含むロードマップとして公開されました。

- コアライブラリとコアパフォーマンス

- 分散型

- torchune、Torchrec、TorchVision

- PyTorchエッジ

・データロード(DataLoading)

- コンパイラコアとデプロイメント

- 開発者インフラストラクチャ

各ドキュメントには、OKR のアイデアに基づいた少なくとも 3 つの部分が含まれています。

- 背景

- トップ 5 の重点分野と目標: 目標、主要な結果、既知または未知のリスク、および対応する緩和策 (最大 1 ページ)

- エンジニアリングレベルを向上させるための上位 3 ~ 5 つの側面: BE の柱の分類、目標、指標/ステータス/具体的な目標、既知または未知のリスクと軽減策、影響/コスト、優先度/信頼レベル (最大 1 ページ)

このうち、BE Pillar は Meta が開発チームに向けて書いた「5 つの格言」とも言えます。具体的な内容は次のとおりです。

より良いコード、より良いドキュメント、チームの強化、最新のコード、より良いアーキテクチャ

「最大 1 ページ」というルールのせいでドキュメントの長さに悩んだ開発者がいるかどうかはわかりませんが、結局のところ、多くの開発要件を 1 ページに凝縮することは、同僚の時間を節約するだけでなく、ドキュメントのコストも高くなります。作家のスキルも試されます。

さらに、さまざまなモジュール チームのコラボレーションの強調、API 統合と外部パートナーとの共同開発の強調、オープンソース コミュニティや開発者との交流の強調など、メタ開発チームの優れたアイデアもドキュメント内で確認できます。

ExecuTorch のような新しいコード ベースを立ち上げるとき、または PyTorch コンパイラーの影響力を高めたいとき、チームは通常 2 つの側面から開始します。1 つはパフォーマンスを向上させ、SOTA を直接ターゲットにするために全力を尽くすことです。深く統合する すぐに使えるユースケースをさらに試してみましょう。

おそらくこれらが、長年にわたるオープンソース分野における Meta の成功の鍵です。

以下に各資料の内容の一部を抜粋し、概要を記載します。


元のアドレス: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

コアライブラリとコアパフォーマンス

このドキュメントに含まれるコア ライブラリには、TendorDict、torchao、NN、TorchRL などが含まれます。

パフォーマンスの面では、PyTorch チームは、モデルのトレーニングと推論で SOTA パフォーマンスを達成するという目標を提案しています。その対策には、アーキテクチャ最適化テクノロジと高性能カーネルを導入して、PyTorch テクノロジ スタック全体と組み合わせることが含まれます。

過去 1 年間で GenAI の急速な発展が見られ、研究分野の開発をサポートするために多くの外部ライブラリが登場しましたが、その多くは PyTorch に直接依存しておらず、科学研究分野における PyTorch の優位性が脅かされることになります。

再びペースに追いつくために、PyTorch は、さまざまな Transformer アーキテクチャのモデルを支援するためのビルディング ブロックと API (主に torchao に統合されている) を含む、量子化、スパース化、MoE、低精度トレーニングなどの一般的な開発テクノロジのサポートを提供します。性能を上げる。

torchao ライブラリは、研究者が PyTorch フレームワーク内で高性能の dtype、レイアウト、最適化手法をカスタマイズできるようにサポートし、使用範囲をトレーニング、推論、チューニングなどのさまざまなシナリオに拡張します。

さらに、コア ライブラリの更新には次のものが含まれます。

- 立ち上げられた自動最適化ライブラリ torchao は画期的な成功を収めました。次のステップは、コード構成を改善し、コア ライブラリから数値演算を分離することです。

- TendorDict のコアモジュール性に対処し、ロード/ストアのシリアル化をサポートし、eager モードで 2 倍高速に実行します。

- 今年上半期のメモリ マップ ロードの成功を継続し、モデルのロード/ストレージのパフォーマンスとセキュリティを引き続き向上させます。

- TorachRL のオーバーヘッドを 50% 削減

- NoGIL のコアサポートを追加しました

- ユーザーから報告されたTORCH_env変数が機能しない問題を修正

この文書では、nn.transformer モジュールの非推奨についても触れており、torch.compile、sdpa、NJT、FlexAttendant、custom_op、torchao などのモジュールを使用して Transformer を構築する方法を示す一連のチュートリアルとユースケースがリリースされる予定であると述べています。

配布された

LLM の事前トレーニングは通常、数十、さらには数千の GPU にまたがり、モデルのパラメーターのスケールが徐々に増加するため、単一の GPU で推論と微調整を完了するのは困難になります。

したがって、PyTorch の次の「分散」レイアウトは、トレーニング、推論、微調整の 3 つのリンクを包括的にカバーし、超大規模な分散トレーニング、メモリ効率の高い微調整、およびマルチホスト分散推論の実現を提案しています。 。

電車

PyTorch でネイティブにサポートされる並列モードには、主に次のようなものがあります。

- フルシャードデータパラレル(FSDP)

-ハイブリッド シャーディング データ パラレル (HSDP)

-テンソル並列(TP)

- パイプラインパラレル (PP)

- シーケンスパラレル(SP)

-コンテキストパラレル(CP)

PyTorch は、TorchTitan のさまざまな並列メソッドをさらにモジュール化して、開発者が必要に応じて自由に組み合わせて N 次元並列処理を実現できるようにしたいと考えています。


この文書では、特に、エキスパート並列処理やルーティング アルゴリズムの最適化など、MoE とマルチモダリティという 2 つの新しいアーキテクチャのサポートを追加する必要性について言及しています。

分散チームは、TorchTitan 自体の更新に加えて、コンパイラ チームとさらに緊密に連携して、torch.compile モジュールとの統合を改善し、大規模な分散シナリオのパフォーマンスをさらに向上させる必要があります。

微調整と推論

微調整: torchtune と組み合わせて、FSDP2 LoRA/QLoRA ソリューションを使用し、モデル状態辞書の NF4 量子化をサポートします。

推論: PP と DP は分散 API の核になっています。 次に、大規模モデル PP + 非同期 TP メソッドをサポートする torchtitan の分散推論に注目する必要があります。

このドキュメントでは、HuggingFace の推論 API が PiPPy から PyTorch (HuggingFace によって完成) に移行されることにも言及しています。

トーチチューン、トーチレック、トーチビジョン

トーチチューン

torchtune のリリースは、ユーザーが LLM をより便利に微調整できるようにすることを目的としています。これは、Llama モデルを微調整するための公式ソリューションでもあります。

torchtune が定義する「微調整」の範囲は非常に広く、次の 3 種類のシナリオに要約できます。

- ドメイン固有のデータセットまたは下流タスクへのモデル適応

- RLHF、DPO などの報酬と好みのモデリング。

- 蒸留と量子化を含むトレーニングプロセス

今年後半のアップデートでは、微調整パフォーマンスの向上に焦点を当てながら、エージェント ワークフローの微調整をサポートします。

チームはコンパイル、コア、分散、その他のモジュールと協力して効率的な微調整を提供し、PyTorch エコシステム内で代表的な微調整パフォーマンス ベンチマークを確立します。

torchtune も新しいオープンソース ライブラリであるため、オープンソース コミュニティとの交流も不可欠です。

この文書では、ユーザーの理解を向上させるために、ブログ記事やチュートリアルの公開、技術講義の開催などを提案しています。また、LLM エコシステムにおけるトーチターンの貢献シェアを測定するための定量的な指標も定義します。

オープンソース コミュニティに加えて、torchune は少なくとも 1 つのパートナーと統合し、そのコミュニティに参加して torchune の使用を促進します。

トーチビジョン

CV 分野で絶対的な支配力を持つ企業として、TorchVision のテクノロジーは比較的成熟しているため、ロードマップで提案されているアップデートはほとんどありません。

チームは引き続き前処理の方向に取り組み、画像エンコード/デコード領域でより多くの形式 (WebP、HEIC など) とプラットフォーム (CUDA など) をサポートし、JPEG 形式のエンコード/デコード パフォーマンスを向上させます。 GPU。

トーチレック

TorchRec は、大規模なレコメンデーション システムで一般的に使用されるスパース性と並列性のプリミティブを提供することを目的としています。最初の安定版である TorchRec 1.0 は秋にリリースされる予定です。


現在、オープンソース ライブラリ ExecuTorch はアルファ版をリリースしました。これは主に torch.compile と torch.export に依存し、モバイル デバイスやエッジ デバイス (AR/VR、ウェアラブル デバイスなど) でのモデル分析、デバッグ、推論をサポートします。

今年の下半期に、Edge チームは xecuTorch のベータ版をリリースし、Meta の Llama シリーズ モデルやその他のオープン ソース モデル向けの PyTorch エコシステム内でソリューションを提供する予定です。

主要な目的は主に 2 つの方向をカバーします。 1 つ目は、オンデバイス AI に次のような基本機能と信頼性の高いインフラストラクチャを提供することです。

- C++ と Python の API の安定性を確保

- 一連のコア機能の実装: モデルの圧縮、プロキシ キャッシュの場所の管理、データとプログラムの分離のサポート

2 つ目は、この初期のコード ベースを保護し、オープンソース コミュニティ内での影響力を育成し、Arm、Apple、Qualcomm などの企業との良好な協力関係を維持することです。

コミュニティへの影響力の目標は定量化されており、コードが GitHub で 3,000 個のスターを獲得し、500 回クローン (フォーク) されることが必要です。興味のある読者は引き続き注目して、チームが年末までにこの OKR を完了できるかどうかを確認してください。

データロード

Apache Arrow 形式をベースとした HuggingFace データセット ライブラリは、メモリ制限のない高速な読み込み/保存を特徴として近年突然登場し、PyTorch 関連機能の脚光を浴びているようです。

データ読み込みに関するドキュメントは、TorchData ライブラリを再び優れたものにし、データ読み込みにおける PyTorch の優位性を再確立するという野望から始まります。

この目標を達成するには、関連する機能を柔軟、スケーラブル、高性能、メモリ効率を高めながら、アホな操作性を実現し、さまざまな規模のマルチモーダルなトレーニングをサポートする必要があります。

具体的な更新目標には次の側面が含まれます。

- DataLoader の機能開発とインターフェースは GitHub の原則を最初に実装し、DataPipes と DataLoader v2 は段階的に非推奨となり削除されます。

- 明確な境界と、TorchTune、TorchTitan、HuggingFace、TorchData 間の良好な相互運用性を確保し、マルチデータ セットとマルチモーダル データ読み込みをサポートします。

- HuggingFace は、StatefulDataLoader の API を使用して互換性を確保し、サンプルとテスト ケースをタイムリーに更新します。

コンパイラのコアとデプロイメント

PyTorch のコンパイラーのコア機能は、長年の開発を経てますます完成度が高まっています。現時点で補う必要があるのは、LLM および GenAI の分野でのより深い統合と最適化のサポートです。

ロードマップでは、重要なモデルがリリース時にネイティブ PyTorch でコンパイルできるように、LLM と GenAI の使用サイクルのあらゆる側面 (推論、微調整、事前トレーニング) に torch.compile() 関数を導入することが提案されています。

この目標を達成するために、この文書では、torchtune チームと TorchTitan チームと協力してコンパイルのパフォーマンスを向上させること、少なくとも 2 つの注目度の高いモデルのネイティブ PyTorch コンパイル済みバージョンを今年下半期にリリースすることなど、多くの具体的な対策を提案しています。

さらに、コンパイラは、非熱心トレーニング モードで順方向計算/逆伝播プロセスを表現するモデル グラフを生成するための視覚化機能を追加する場合があります。

システムの監視と可観測性の向上や、コンパイルの問題をユーザー自身でデバッグできるようにするなど、ユーザーサポートの計画も多数あります。主な目標には、GitHub などのプラットフォーム上で開発者がいくつかの主要分野 (データ クラス、コンテキスト管理など) で提起した問題に対処するためのユーザー サポート チームの設立も含まれます。

参考文献:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

翻訳: 翻訳: 翻訳者 ...