Databricks ❤️ Hugging Face 大規模言語モデルのトレーニングとチューニングが最大40%高速化されました

Databricks ❤️ Hugging Face 大規模言語モデルのトレーニングとチューニングが最大40%高速化

生成AIは世界中で大きな注目を集めています。データとAIの会社として、私たちはオープンソースの大規模言語モデルDollyのリリース、およびそれを微調整するために使用した研究および商用利用のための内部クラウドソーシングデータセットであるdatabricks-dolly-15kのリリースと共にこの旅に参加してきました。モデルとデータセットはHugging Faceで利用可能です。このプロセスを通じて多くのことを学びましたが、今日はApache Spark™のデータフレームから簡単にHugging Faceデータセットを作成できるようにするHugging Faceコードベースへの初めての公式コミットの1つを発表することを喜んでお知らせします。

「Databricksがモデルとデータセットをコミュニティにリリースしてくれたのを見るのは素晴らしいことでしたが、それをHugging Faceへの直接のオープンソースコミットメントにまで拡張しているのを見るのはさらに素晴らしいことです。Sparkは、大規模なデータでの作業に最も効率的なエンジンの1つであり、その技術を使用してHugging Faceのモデルをより効果的に微調整できるようになったユーザーを見るのは素晴らしいことです。」

— Clem Delange、Hugging Face CEO

Hugging Faceが一流のSparkサポートを受ける

過去数週間、ユーザーから、SparkのデータフレームをHugging Faceデータセットに簡単にロードする方法を求める多くのリクエストを受け取りました。今日のリリースよりも前は、Sparkのデータフレームから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のデータフレームからParquetに変換するのに約22分かかり、それからHugging Faceデータセットに戻すのにも時間がかかりました。

最新の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を使用して効率的にデータをロードおよび変換し、モデルのトレーニングや微調整に使用できるデータを簡単にHugging Faceデータセットにマッピングすることができます。これにより、Sparkからの費用の削減とスピード、およびHugging Faceデータセットからのメモリマッピングやスマートキャッシングなどの最適化が組み合わされます。これらの改善により、例えば16GBのデータセットの処理時間は40%以上短縮され、22分からわずか12分になります。

なぜこれが重要なのですか?

この新しいAIパラダイムへの移行に伴い、組織は特定のドメイン内で最高のパフォーマンスを得るために、非常に貴重なデータを使用してAIモデルを拡張する必要があります。これにはおそらくデータ変換の形での作業が必要であり、大規模なデータセット上でこれを効率的に行うことはSparkが設計されたことです。SparkをHugging Faceと統合することで、Sparkの費用対効果とパフォーマンスを維持しながら、Hugging Faceが提供するパイプライン統合を保持することができます。

継続的なオープンソースのサポート

私たちは、これをオープンソースコミュニティへのさらなる貢献の新たな道と見なしています。これは、Hugging Faceがオープンソースのモデルとデータセットのデファクトリポジトリとなっているため、非常に優れたことです。これは最初の貢献に過ぎません。私たちはすでに、データセットのロードをさらに高速化するためにSparkを介したストリーミングサポートを追加する計画を立てています。

AIの世界に飛び込むための最高のプラットフォームになるために、私たちはユーザーに成功裏にモデルをトレーニング、調整、展開するための最高のツールを提供するために努力しています。私たちはHugging Faceへの貢献を続けるだけでなく、他のオープンソースプロジェクトへの改善も始めました。最近のMLflowリリースでは、transformersライブラリ、OpenAIの統合、およびLangchainのサポートが追加されました。また、Databricks SQL内のAI Functionsを発表しました。これにより、ユーザーは簡単にOpenAI(または将来の展開モデル)をクエリに統合することができます。さらに、Databricks上での分散PyTorchトレーニングを簡素化するために、PyTorchディストリビューターをリリースしました。

この記事は2023年4月26日にDatabricksのブログで最初に公開されました。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more