メインコンテンツへジャンプ
Engineering blog

Databricks ❤️ Hugging Face

大規模言語モデルの学習とチューニングを最大40%高速化
Share this post

Original Blog : Databricks ❤️ Hugging Face

翻訳: junichi.maruyama 

ジェネレーティブAIが世界を席巻しています。データ&AIカンパニーである私たちは、オープンソースの大規模言語モデル「Dolly」と、そのファインチューニングに使用した研究・商用利用のための社内クラウドソーシングデータセット「databricks-dolly-15k」をリリースし、この旅に参加しています。モデルもデータセットも、Hugging Faceで公開されています。そして今日、私たちはHugging Faceコードベースへの最初の公式コミットを発表し、ユーザーがApache Spark™データフレームからHugging Faceデータセットを簡単に作成できるようにすることに興奮しています。

「Databricksがモデルやデータセットをコミュニティに公開することは素晴らしいことですが、今回、Hugging Faceに直接オープンソースを提供することで、その作業を拡張していることがわかりました。Sparkは、スケールでデータを扱うための最も効率的なエンジンの1つであり、ユーザーがHugging Faceのモデルをより効果的にファインチューニングするためにその技術の恩恵を受けることができるようになったのは素晴らしいことです。
— Clem Delange, Hugging Face CEO

Hugging Face がファーストクラスのSparkサポートを獲得

ここ数週間、我々はユーザーから、モデルのトレーニングやチューニングに利用できるHugging FaceデータセットにSparkデータフレームをより簡単にロードする方法を求める多くのリクエストを受け取っています。今日のリリース以前は、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へ、そして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データフレームをHugging Faceデータセットに簡単にマッピングして、トレーニングパイプラインに超シンプルに統合することができます。これは、Sparkによるコスト削減とスピード、そしてHugging Faceデータセットによるメモリマッピングやスマートキャッシングのような最適化を組み合わせたものです。これらの改善により、例の16GBデータセットの処理時間が40%以上短縮され、22分からわずか12分となりました。

なぜ、このようなことが問題になるのでしょうか?

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

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

このリリースは、オープンソースコミュニティにさらに貢献するための新たな手段であり、オープンソースのモデルやデータセットの事実上のリポジトリとなっているHugging Faceは、非常に優れていると私たちは考えています。これは、多くの貢献の第一弾に過ぎません。私たちはすでに、データセットの読み込みをさらに高速化するために、Sparkによるストリーミングサポートを追加する計画を持っています。

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

またData + AI Summitでは、LLMの世界を探求し独自の構築、トレーニング、デプロイを行う方法を紹介する予定です。こちらからご登録の上、バーチャルまたは直接ご参加ください! 

生成AIとLLMの活用方法について詳しくは、オンデマンドウェビナーをご覧ください。

Databricks 無料トライアル

関連記事

Platform blog

MLflow 2.3の紹介:LLMのネイティブサポートと新機能による強化

Introducing MLflow 2.3: Enhanced with Native LLM Support and New Features 翻訳: junichi.maruyama MLflow は月間 1,300 万ダウンロードを超え、エンドツーエンドの MLOps の主要なプラットフォームとしての地位を確立しており、あらゆる規模のチームがバッチおよびリアルタイム推論用のモデルを追跡、共有、パッケージ化、およびデプロイできるようにしました。MLflowは、何千もの組織で日々採用され、多様なプロダクション機械学習アプリケーションを推進しており、産業界と学界から500人以上の貢献者からなる活発なコミュニティによって活発に開発されています。 今日、私たちはこのオープンソースの機械学習プラットフォームの最新版であるMLflow 2.3を発表することができ、大規模言語モデル(LLM)の管理・導入能力を向上させる革新的な機能が満載されていることに興奮しています。この強化されたLLMサポートは、以下のような形で提供さ
Platform blog

AI Functions のご紹介: 大規模な言語モデルをDatabricks SQLで統合する

Introducing AI Functions: Integrating Large Language Models with Databricks SQL 翻訳: junichi.maruyama 大規模言語モデルの分野で素晴らしい進歩が見られる中、お客様から、SQLアナリストが日々のワークフローでこの強力なテクノロジーを活用できるようにするにはどうしたらよいかという問い合わせがありました。 本日、私たちはAI Functions のパブリックプレビューを発表できることを嬉しく思います。AI Functionsは、DBに組み込まれたSQL関数で、SQLから直接Large Language Models(LLM)にアクセスできるようになります。 今回の発表により、使い慣れたSQLのインターフェイスから、自社のデータに対してLLMの実験を素早く行うことができるようになりました。正しいLLMプロンプトを開発したら、Delta Live Tablesやスケジュールされたジョブなど、既存のDatabricksツールを使
Engineering blog

Databricks上のPyTorch - Spark PyTorch Distributor の紹介

Original Blog : PyTorch on Databricks - Introducing the Spark PyTorch Distributor 翻訳: junichi.maruyama 背景と動機 ディープラーニングのアルゴリズムは複雑で、トレーニングに時間がかかりますが、これらのアルゴリズムが実現する価値のために、研究室から生産現場へと急速に移行しつつあります。学習済みのモデルを使用して微調整する場合でも、ネットワークをゼロから構築する場合でも、学習時のメモリと計算負荷はすぐにボトルネックとなります。このような制約を克服するための手段として、一般的な最初の防御策は、分散学習を活用することです。Tensorflowには spark-tensorflow-distributor がありますが、PyTorchには同等のものがありませんでした。 Apache Sparkクラスタでの分散PyTorchトレーニングを簡素化するTorchDistributorライブラリをようやく発表することができました。
Company blog

Free Dolly: 世界初の真にオープンな指示でチューニングされたLLM

Original Post: Free Dolly: Introducing the World's First Truly Open Instruction-Tuned LLM 翻訳: Takaaki Yayoi 2週間前、ChatGPTのような人間のインタラクティブ性(指示追従性)を示すように、$30以下でトレーニングされた大規模言語モデル(LLM)である Dolly をリリースしました。本日、 研究と商用利用 にライセンスされた、人の手で生成された指示データセットでファインチューンされた、史上初のオープンソース、指示追従LLMである Dolly 2.0 をリリースします。...
オープンソース一覧へ