Databricks ❤️ Hugging Face:大型語言模型訓練和調優速度提升高達 40%
生成式 AI 正席捲全球。作為一家資料和 AI 公司,我們透過釋出開源大型語言模型 Dolly 以及用於微調該模型的內部眾包資料集 databricks-dolly-15k(該資料集已授權用於研究和商業用途),一直走在這趟旅程的前沿。模型和資料集都可以在 Hugging Face 上找到。在整個過程中我們學到了很多,今天我們很高興地宣佈,我們對 Hugging Face 程式碼庫進行了首次正式提交(未來還會有更多),允許使用者輕鬆地從 Apache Spark™ dataframe 建立 Hugging Face Dataset。
“很高興看到 Databricks 向社群釋出模型和資料集,現在我們又看到他們透過對 Hugging Face 的直接開源貢獻來擴充套件這項工作。Spark 是大規模處理資料的最高效引擎之一,很高興看到使用者現在可以從這項技術中受益,從而更有效地微調 Hugging Face 的模型。”
— Clem Delange,Hugging Face 執行長
Hugging Face 獲得一流的 Spark 支援
在過去幾周裡,我們收到了許多使用者的請求,希望能有更簡單的方法將他們的 Spark dataframe 載入到 Hugging Face 資料集中,用於模型訓練或調優。在今天釋出之前,要將資料從 Spark dataframe 匯入 Hugging Face 資料集,使用者必須將資料寫入 Parquet 檔案,然後讓 Hugging Face 資料集指向這些檔案以重新載入它們。例如
from datasets import load_dataset
train_df = train.write.parquet(train_dbfs_path, mode="overwrite")
train_test = load_dataset("parquet", data_files={"train":f"/dbfs{train_dbfs_path}/*.parquet", "test":f"/dbfs{test_dbfs_path}/*.parquet"})
#16GB == 22min
這不僅繁瑣,還意味著資料必須先寫入磁碟,然後再被讀入。最重要的是,資料在重新載入到資料集中後會被再次物化,這會消耗更多資源,從而增加時間和成本。使用這種方法,我們發現一個相對較小(16GB)的資料集,從 Spark dataframe 轉換到 Parquet,再回到 Hugging Face 資料集,大約需要 22 分鐘。
隨著 Hugging Face 的最新發布,我們透過在 Datasets 中簡單地呼叫新的 “from_spark” 函式,讓使用者更輕鬆地完成同樣的任務
from datasets import Dataset
df = [some Spark dataframe or Delta table loaded into df]
dataset = Dataset.from_spark(df)
#16GB == 12min
這允許使用者使用 Spark 高效地載入和轉換為訓練或微調模型所需的資料,然後輕鬆地將他們的 Spark dataframe 對映到 Hugging Face 資料集,從而極簡地整合到他們的訓練流程中。這結合了 Spark 的成本節省和速度,以及 Hugging Face 資料集的記憶體對映和智慧快取等最佳化。這些改進將我們示例的 16GB 資料集的處理時間縮短了 40% 以上,從 22 分鐘減少到僅 12 分鐘。
為何這如此重要?
隨著我們向這個新的人工智慧正規化過渡,組織如果想在特定領域內獲得最佳效能,就需要利用其極其寶貴的資料來增強其 AI 模型。這幾乎肯定需要進行資料轉換,而高效地處理大型資料集正是 Spark 的設計初衷。將 Spark 與 Hugging Face 整合,既能獲得 Spark 的成本效益和效能,又能保留 Hugging Face 提供的流程整合能力。
持續的開源支援
我們認為這次釋出是進一步為開源社群做貢獻的新途徑,我們相信 Hugging Face 在這方面做得非常出色,因為它已成為開源模型和資料集事實上的儲存庫。這只是眾多貢獻中的第一個。我們已經計劃透過 Spark 增加流式處理支援,以使資料集載入速度更快。
為了成為使用者進入 AI 世界的最佳平臺,我們正在努力提供最好的工具來成功訓練、調優和部署模型。我們不僅將繼續為 Hugging Face 做貢獻,還開始對我們其他的開源專案釋出改進。最近的 MLflow 版本增加了對 transformers 庫、OpenAI 整合以及 Langchain 的支援。我們還宣佈了 Databricks SQL 中的 AI Functions,讓使用者可以輕鬆地將 OpenAI(或未來自己部署的模型)整合到他們的查詢中。最重要的是,我們還發布了一個用於 Spark 的 PyTorch 分發器,以簡化在 Databricks 上的分散式 PyTorch 訓練。
本文最初於 2023 年 4 月 26 日發表在 Databricks 部落格上。