効率的な生成 AI モデル データ キュレーションのための GPU アクセラレーション オープンソース フレームワーク?
NeMo Curator は、基盤言語モデルの事前トレーニング、テキストから画像へのモデルのトレーニング、ドメイン適応型事前トレーニング (DAPT)、教師あり微調整 (SFT) などの生成 AI ユースケース向けに、高速かつスケーラブルなデータセットの準備とキュレーションを行うために特別に設計された Python ライブラリです。 ) およびパラメータ効率の高い微調整 (PEFT)。 Dask と RAPIDS で GPU を活用することでデータ キュレーションが大幅に加速され、大幅な時間の節約になります。このライブラリは、カスタマイズ可能なモジュール式インターフェイスを提供し、パイプラインの拡張を簡素化し、高品質のトークンの準備を通じてモデルの収束を加速します。
NeMo Curator は、テキストと画像のキュレーションのためのスケーラブルなデータ キュレーション モジュールのコレクションを提供します。
すべてのテキスト パイプラインは優れた多言語サポートを備えています。
ダウンロードと解凍
Common Crawl、Wikipedia、および ArXiv ソースのデフォルト実装
簡単にカスタマイズして他のソースに拡張
言語の識別
Unicode の再フォーマット
ヒューリスティックフィルタリング
分類子のフィルタリング
速いテキスト
GPU アクセラレーション モデル: ドメイン、品質、安全性の分類
GPU アクセラレーションによる重複排除
正確な重複排除
MinHash 局所性敏感ハッシュによるファジー重複排除
セマンティック重複排除
下流タスクの除染
個人識別情報 (PII) の編集
埋め込み作成
分類子のフィルタリング
美的およびNSFWの分類
GPU重複排除
セマンティック
これらのモジュールは柔軟性を提供し、いくつかの例外を除いて並べ替えが可能です。すべてのモジュールは、スループットを向上させるために複数のノードに自動的に拡張されます。
ドキュメント
例
チュートリアル
ブログ投稿
兆トークンのデータセットのキュレーション: NVIDIA NeMo Data Curator の紹介
NVIDIA NeMo Curator を使用した LLM トレーニング用の高品質データセットのスケーリングとキュレーション
NVIDIA NeMo Curator を使用した LLM トレーニング用のカスタム データセットのキュレーション
NVIDIA NeMo Curator を使用した LLM パラメーター効率的な微調整のためのカスタム データセットのキュレーション
NVIDIA NeMo Curator を使用したドメイン適応型事前トレーニングのデータ処理の合理化
このセクションでは、NeMo Curator をインストールし、Python ライブラリ、Python モジュール、および CLI スクリプトを使用する方法について説明します。すぐに使い始めるのに役立つチュートリアルのリストも含まれています。最後に、このセクションでは、NeMo Curator と接続するための代替方法として NeMo Framework Launcher を使用する方法について説明します。
NeMo Curator をインストールする前に、次の要件が満たされていることを確認してください。
Python 3.10
Ubuntu 22.04/20.04
NVIDIA GPU (オプション)
Volta™ 以降 (コンピューティング能力 7.0+)
CUDA 12 (またはそれ以上)
NeMo-Curator は 3 つの方法で入手できます。
ピピ
ソース
NeMo フレームワーク コンテナ
pip インストール cython pip install --extra-index-url https://pypi.nvidia.com nemo-curator[all]
git クローン https://github.com/NVIDIA/NeMo-Curator.git pip インストール cython pip install --extra-index-url https://pypi.nvidia.com "./NeMo-Curator[all]"
NeMo Curator の最新リリースは、NeMo Framework Container にプリインストールされています。コンテナ内の最新のコミットが必要な場合は、以下を使用して NeMo Curator を再インストールできます。
pip アンインストール nemo-curator rm -r /opt/NeMo-キュレーター git clone https://github.com/NVIDIA/NeMo-Curator.git /opt/NeMo-Curator pip install --extra-index-url https://pypi.nvidia.com "/opt/NeMo-Curator[all]"
NeMo Curator には、ワークロードに必要なモジュールのみをインストールするために使用できる一連の追加機能があります。これらの追加機能は、提供されているすべてのインストール方法で利用できます。
pip install nemo-curator # CPU のみのテキスト キュレーション モジュールをインストールしますspip install --extra-index-url https://pypi.nvidia.com nemo-curator[cuda12x] # CPU + GPU のテキスト キュレーション モジュールをインストールしますspip install --extra-index -url https://pypi.nvidia.com nemo-curator[image] # CPU + GPU テキストおよび画像キュレーション モジュールをインストールしますspip install --extra-index-url https://pypi.nvidia.com nemo-curator[all] # 上記をすべてインストールします
RAPIDS Nightly Build を使用して NeMo Curator をインストールすることもできます。これを行うには、環境変数RAPIDS_NIGHTLY=1
を設定します。
# pypiからインストールRAPIDS_NIGHTLY=1 pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple "nemo-curator[cuda12x]"# ソースからインストールRAPIDS_NIGHTLY=1 pip install - -extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple ".[cuda12x]"
RAPIDS_NIGHTLY
変数が 0 (デフォルト) に設定されている場合、RAPIDS の安定バージョンが使用されます。
次のスニペットは、共通クロール データセットの小さなサブセットをダウンロードしてキュレーションする小規模なデータ キュレーション パイプラインを作成する方法を示しています。
# データセットをダウンロードするdataset = download_common_crawl("/datasets/common_crawl/", "2021-04", "2021-10", url_limit=10)# パイプラインを構築するcuration_pipeline = Sequential([ # Unicode を修正する Modify(UnicodeReformatter()), # 短いレコードを破棄 ScoreFilter(WordCountFilter(min_words=80)), # 低品質のレコードを破棄する ScoreFilter(FastTextQualityFilter(model_path="model.bin")), # テスト セットの漏洩を防ぐために、評価メトリックからレコードを破棄します。 タスク除染([Winogrande(), Squad(), TriviaQA()]) ])# データセットでパイプラインを実行しますcurated_dataset = curation_pipeline(dataset)
NeMo Curator の使用を開始するには、ここで利用可能なチュートリアルに従ってください。これらのチュートリアルには次のものが含まれます。
tinystories
LLM をゼロからトレーニングするためのデータキュレーションに焦点を当てています。
peft-curation
、LLM パラメーター効率の高い微調整 (PEFT) のユースケースのためのデータキュレーションに焦点を当てています。
distributed_data_classification
は、データの注釈を支援するための品質分類子とドメイン分類子の使用に焦点を当てています。
single_node_tutorial
は、タイ語で Wikipedia データをキュレーションするためのエンドツーエンドのデータ キュレーション パイプラインを示します。
image-curation
は、スケーラブルな画像キュレーション モジュールを探索します。
NeMo フレームワーク ユーザー ガイドの NeMo Curator セクションには、Python モジュールの動作方法に関する詳細な情報が記載されています。 GitHub リポジトリのサンプル ディレクトリには、これらのモジュールを紹介するスクリプトが提供されています。
NeMo Curator は、使用できる CLI スクリプトも提供します。 nemo_curator/scripts
内のスクリプトは、提供された Python モジュールに厳密にマップされています。 Python モジュールとスクリプトの詳細については、『NeMo Framework ユーザー ガイド』を参照してください。
NeMo Curator と接続する別の方法として、NeMo Framework Launcher を使用できます。ランチャーを使用すると、パラメーターとクラスターを簡単に構成できます。また、パイプラインの実行に必要な CLI スクリプトをラップする Slurm バッチ スクリプトを自動的に生成することもできます。
さらに、Slurm で NeMo Curator を実行する他の方法も利用できます。たとえば、NeMo Framework Launcher を使用せずに Slurm 上で NeMo Curator を実行する方法については、 examples/slurm
のサンプル スクリプトを参照してください。
NeMo Curator 内のモジュールは主に、スケーラブルな方法で Common Crawl スナップショットから高品質のドキュメントをキュレートするように設計されています。厳選された Common Crawl ドキュメントの品質を評価するために、一連のアブレーション実験を実施しました。これらの実験では、NeMo Curator に実装されたデータ キュレーション パイプラインのさまざまな段階で生成されたデータセットを使用して、3 億 5,700 万パラメーターの GPT スタイル モデルをトレーニングしました。
次の図は、NeMo Curator に実装されたさまざまなデータ キュレーション モジュールの使用により、モデルのゼロショット ダウンストリーム タスクのパフォーマンスが向上したことを示しています。
スケーラビリティとコンピューティング パフォーマンスの点では、RAPIDS と Dask ファジー重複排除を組み合わせて使用することで、64 個の NVIDIA A100 Tensor コア GPU を使用して 1.1 兆トークンの Red Pyjama データセットを 1.8 時間で重複排除できました。
さらに、次の表は、CPU ベースのモジュールを使用して、各処理ステップに必要な時間とその結果生じるデータ サイズの削減を示しています。 30 個の CPU ノード ( c5.24xlarge
Amazon AWS C5 と同様のハードウェアを使用) を使用した 2020 年 11 月/12 月の共通クロールのスナップショット実例)。
データセット | ダウンロードとテキスト抽出 | テキストのクリーニング | 品質フィルタリング | |||
---|---|---|---|---|---|---|
時間 | 出力サイズ | 時間 | 出力サイズ | 時間 | 出力サイズ | |
コモンクロール 2020-50 | 36時間 | 2.8TB | 1時間 | 2.8TB | 0.2時間 | 0.52TB |
コミュニティへの貢献を歓迎します。プロセスについては CONTRIBUTING.md を参照してください。