用於高效生成 AI 模型資料管理的 GPU 加速開源框架?
NeMo Curator 是一個Python 庫,專為快速且可擴展的資料集準備和管理而設計,適用於生成式AI 使用案例,例如基礎語言模型預訓練、文本到圖像模型訓練、領域自適應預訓練(DAPT )、監督微調(SFT) )和參數高效微調(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 Framework Launcher 作為與 NeMo Curator 互動的替代方法。
在安裝 NeMo Curator 之前,請確保滿足以下要求:
Python 3.10
烏班圖22.04/20.04
NVIDIA GPU(選購)
Volta™ 或更高版本(運算能力 7.0+)
CUDA 12(或更高版本)
您可以透過 3 種方式獲得 NeMo-Curator。
皮皮
來源
NeMo 框架容器
pip 安裝 cython pip install --extra-index-url https://pypi.nvidia.com nemo-curator[全部]
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-Curator git 克隆 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 的文字管理模組pip install --extra-index-url https://pypi.nvidia.com nemo-curator[cuda12x] # 安裝CPU + GPU 文字管理模組pip install -- extra-index -url https://pypi.nvidia.com nemo-curator[image] # 安裝CPU + GPU 文字和映像管理模組pip install --extra-index-url https://pypi.nvidia.com nemo- curator[all] # 安裝以上所有內容
您也可以使用 RAPIDS Nightly Builds 安裝 NeMo Curator。為此,您可以設定環境變數RAPIDS_NIGHTLY=1
。
# 從 pypiRAPIDS_NIGHTLY=1 pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple "nemo-curator[cuda12x]"# 從來源安裝RAPIDS_NIGHTLY=1 pip curator[cuda12x]"# 從來源安裝RAPIDS_NIGHTLY=1 pip install - -extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple “.[cuda12x]”
當RAPIDS_NIGHTLY
變數設定為 0(預設值)時,它將使用 RAPIDS 的穩定版本。
以下程式碼片段示範如何建立一個小型資料管理管道,用於下載和管理 Common Crawl 資料集的一小部分子集。
# 下載你的資料集dataset = download_common_crawl("/datasets/common_crawl/", "2021-04", "2021-10", url_limit=10)# 建構你的 pipelinecuration_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
專注於從頭開始培訓法學碩士的資料管理。
peft-curation
專注於 LLM 參數高效微調 (PEFT) 用例的資料管理。
distributed_data_classification
專注於使用品質和領域分類器來幫助資料註釋。
single_node_tutorial
示範了用於管理泰語維基百科資料的端對端資料管理管道。
image-curation
探索可擴充的影像管理模組。
NeMo 框架使用者指南的 NeMo Curator 部分提供了有關 Python 模組如何運作的深入資訊。 GitHub 儲存庫中的範例目錄提供了展示這些模組的腳本。
NeMo Curator 也提供 CLI 腳本供您使用。 nemo_curator/scripts
中的腳本與提供的 Python 模組密切對應。有關 Python 模組和腳本的更多信息,請參閱 NeMo 框架使用者指南。
作為與 NeMo Curator 互動的替代方法,您可以使用 NeMo Framework Launcher。啟動器使您能夠輕鬆配置參數和叢集。它還可以自動產生 Slurm 批次腳本,這些腳本包含運行管道所需的 CLI 腳本。
此外,還可以使用其他方法在 Slurm 上執行 NeMo Curator。例如,請參閱examples/slurm
中的範例腳本,以了解如何在不使用 NeMo Framework Launcher 的情況下在 Slurm 上執行 NeMo Curator 的資訊。
NeMo Curator 中的模組主要旨在以可擴展的方式從 Common Crawl 快照中管理高品質文件。為了評估整理的 Common Crawl 文件的質量,我們進行了一系列的消融實驗。在這些實驗中,我們使用在資料管理管道的各個階段產生的資料集訓練了 357M 參數的 GPT 樣式模型,該模型在 NeMo Curator 中實現。
下圖顯示,使用 NeMo Curator 中實現的不同資料管理模組提高了模型零樣本下游任務效能。
在可擴展性和運算效能方面,結合使用 RAPIDS 和 Dask 模糊重複資料刪除,我們能夠使用 64 個 NVIDIA A100 Tensor Core GPU 在 1.8 小時內對 1.1 兆代幣的 Red Pyjama 資料集進行重複資料刪除。
此外,使用基於 CPU 的模組,下表顯示了使用 30 個 CPU 節點(硬體類似於c5.24xlarge
Amazon AWS C5)的2020 年11 月/12 月的Common Crawl 快照所需的時間以及由此產生的數據大小減少情況。
數據集 | 下載和文字擷取 | 文字清理 | 質量過濾 | |||
---|---|---|---|---|---|---|
時間 | 輸出尺寸 | 時間 | 輸出尺寸 | 時間 | 輸出尺寸 | |
共同爬行 2020-50 | 36小時 | 2.8TB | 1小時 | 2.8TB | 0.2小時 | 0.52TB |
我們歡迎社區貢獻!流程請參考CONTRIBUTING.md。