コンテンツに移動
ストレージとデータ転送

Cloud Storage FUSE が GKE と AI ワークロード向けに最適化

2023年9月5日
https://storage.googleapis.com/gweb-cloudblog-publish/images/aiml2022.max-2500x2500.jpg
Google Cloud Japan Team

※この投稿は米国時間 2023 年 8 月 25 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud の Cloud Storage は、AI ワークロードへのトレーニングと処理に必要な大量のトレーニング データ、モデル、チェックポイントを格納でき、クラウド ストレージ システムの特徴であるスケール、パフォーマンス、シンプルさ、優れた費用対効果を備えています。ただし、AI ワークロードが実際にそのデータにアクセスする際、常に簡単にアクセスできるとは限りません。AI ワークロードのほとんどが、Cloud Storage から提供されるオブジェクト セマンティクスではなく、ファイル システム セマンティクスを必要とするからです。

Linux の Filesystem in Userspace(FUSE)は、ファイル システムを Linux カーネルにエクスポートする場合に使用されるインターフェースです。しばらく前から利用可能になったオープンソース バージョンの Cloud Storage FUSE により、Cloud Storage バケット内のオブジェクトが、ローカル ファイル システムとしてマウントされたファイルとしてアクセス可能になります。Google はこのたび、重要な次の一歩を踏み出しました。Cloud Storage FUSE を自社の Google Cloud サービスとして提供して、新たなレベルのポータビリティ、信頼性、パフォーマンス、インテグレーションを実現します。

この新しい Cloud Storage FUSE は、AI ワークロードにとって特に重要です。アプリケーションが(ローカルにデータをダウンロードするのではなく)データに直接アクセスできるため、カスタム ロジックを実装する必要がなく、データがコピーされる間、TPU や GPU といった貴重なリソースがアイドル状態になる時間を減らすことができます。また、Google Kubernetes Engine(GKE)向けの新しい Cloud Storage FUSE CSI ドライバを使用すると、アプリケーションで使い慣れた Kubernetes API を使用して Cloud Storage をマウントできます。このドライバは、GKE によって管理されるターンキー デプロイとして提供されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_Storage_Fuse_for_ML.max-2200x2200.png

新しい Google 製の Cloud Storage FUSE によるポータビリティ、信頼性、パフォーマンス、インテグレーションの向上を個別に詳しく見ていきましょう。

ポータビリティ

Cloud Storage は、無制限のスケール、シンプルさ、経済性、パフォーマンスという点から AI / ML ワークロードによく選択されます。ただし、AI / ML フレームワークの中には、ネイティブのオブジェクト ストレージ API を直接サポートするライブラリを使用うするものあれば、ファイル システム セマンティクスを必要とするものもあります。場合によっては、ハイブリッド環境とマルチクラウド環境全体にわたって一貫性のあるエクスペリエンスを確保するために、組織がファイル システム セマンティクスを標準としていることもあります。これに対処するためには、デベロッパーは先にトレーニング データを Cloud Storage からローカル ディスクにコピーしておくというロジックで、トレーニング コードを計測可能にする必要があります。

Cloud Storage FUSE では、Cloud Storage バケット内のオブジェクトに、ローカル ファイル システムとしてマウントされたファイルとしてアクセスできるため、引き続き Cloud Storage を使用しながら、ファイル システム セマンティクスを提供できます。

AnyConcept は、深層強化学習エージェントを使用して、新しい形の機能的なコード不要のソフトウェア テストを開発しました。Cloud Storage FUSE を AI モデルのデータセット パイプラインの一部として使用しており、まずは Jupyter ノートブックを使用して前処理データの一部として、その後 AI モデルのトレーニング用として使用します。

「ファイル システム セマンティクスを必要としていたのですが、当社の TPU ベースのトレーニング VM にコピーするにはデータが大きすぎたため、Cloud Storage FUSE を導入してデータに直接アクセスできるようにしました。費用対効果を維持しつつ、容量無制限でファイル システムを簡単に利用できます。」 - AnyConcept GmbH、CTO、Manuel Weichselbaum 氏

信頼性

Google は、Cloud Storage FUSE を Google がサポートするプロダクトとすることで、Google が定めた信頼性の基準を満たすという目的を達成しました。ユーザーは、完全サポートの下で本番環境のワークロードを実行できます。テスト時に、元のコードベースで安定性に関する問題がいくつか見つかりましたが、すべて修正しました。また、Cloud Storage FUSE を公式の Go Cloud Storage クライアント ライブラリと統合しました。ViT DINOResNet ML モデルを使用して、PyTorch と TensorFlow に対して Cloud Storage FUSE を大規模かつ長期にわたって検証しました。本番環境への準備の一環として、もっと使いやすくなるようにドキュメントを全面的に見直しました。

グローバルな信用調査報告会社 Equifax は、Google Cloud で自社の Equifax Ignite® プラットフォームをホストしています。同社のお客様は、そのプラットフォームを使用して、Equifax データにハイエンドの ML 機能を適用し、予測に効果的なモデルと分析情報を得ることができます。

「Google Kubernetes Engine(GKE)にインストールされている Jupyter ノートブックを Google の Cloud Storage と統合したものが、Equifax Ignite のコア コンポーネントとなっています。CSI ドライブで Cloud Storage FUSE を GKE と統合したことで、シームレスで使いやすくなりました。完全にクラウド ネイティブなサービス パッケージである Equifax Ignite の一部として利用できるようになったことに満足しています。」 - Equifax、分析プラットフォーム担当バイス プレジデント、Vibhu Prakash 氏

パフォーマンス

AI / ML ワークロードは通常、アクセラレータを GPU と TPU という形でトレーニングと推論のワークフローに使用します。こうしたアクセラレータは、データを大量に消費し、I/O を待機している間アイドル状態のままになるため、使用費用が増大します。ファイル システムを介して Cloud Storage データを消費する必要があるアプリケーションの場合、デベロッパーは通常、先にデータを Cloud Storage からローカル ディスクにコピーしておくという複雑なロジックを実装します。そのため、オブジェクトがダウンロードされるまで待機することになり、コンピューティング リソースのアイドル時間が発生します。Cloud Storage FUSE では、デベロッパーは Cloud Storage バケットをローカル ファイル システムとして扱い、データをまるでローカルにあるかのようにアプリケーションに直接ストリーミングできます。公開されているベンチマークについては、こちらでご覧ください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/AIML_Training.max-2200x2200.png

OpenX は、Google Cloud でエクスチェンジを実行しているグローバルなアドテック企業で、毎日数千億もの広告リクエストを処理しています。以前は、自社製のソリューションを利用して、Pod の起動時にデータファイルを Cloud Storage から初期コンテナにフェッチし、Pod の実行中にデータを定期的に更新していました。

「Cloud Storage FUSE と GKE のインテグレーションにより、すべてが過去のものとなりました。必要なのは、Pod 仕様の簡単なアノテーションと、データを利用可能にするためのボリューム定義だけです。Cloud Storage FUSE と GKE CSI ドライバを使用した結果、アプリケーションの構成が大幅に簡素化されただけでなく、Pod の起動時間が最大 40% 短縮されました。」 - OpenX、スタッフ エンジニア、Mark Chodos 氏

インテグレーション

Cloud Storage FUSE は、次のようにさまざまな方法でお使いの環境にデプロイできます。

病理学研究の Reveal Biosciences は、疾患を特定、分類し、精度を上げるべく ML を利用してモデルの改良に取り組んだ結果、患者の予後が改善されました。

「Cloud Storage FUSE は、当社の取り組みに欠かせない重要な資産となりました。データは Cloud Storage バケットに保存されていますが、アプリケーションがファイル システム セマンティクスを使用してこうしたファイルにアクセスする必要があるため、以前は先にデータをローカルにダウンロードしておく必要がありました。この傑出したツールの登場で、VM や Kubernetes クラスタにローカルに接続されたストレージを管理しなくてもテラバイトものデータを処理し、ローカル コンピューティングとは無関係に容量をスケーリングできる効率的な代替手段を利用できるようになりました。Google のおかげで、パフォーマンス目標の達成に向けて邁進し、貴重なサポートを提供できています。」 - Reveal Biosciences、MLOps エンジニア、Bharat Jangir 氏

GKE での Cloud Storage FUSE CSI ドライバの使用

以前の FUSE ソリューションでは、Kubernetes の権限昇格が必要になり、ノイジー ネイバーの問題があったほか、認証にも課題がありました。新しい Cloud Storage FUSE CSI ドライバでは、特権アクセスが必要なく、CSI ライフサイクルによって完全に管理されています。Workload Identity による認証が組み込まれているほか、Kubernetes Pod がファイル システム セマンティクスを使用して Cloud Storage バケット内のデータにアクセスできます。

「サイドカー コンテナ インジェクションを通した GKE とのインテグレーションにより、オンボーディング プロセス全体が管理しやすくなっています。認証が非常に簡単なうえ、サービス アカウントのアクセス権により、必要な Pod から必要な Cloud Storage オブジェクトやフォルダへのアクセスのみを許可することが可能です。そのため、IAM を使用してアクセス制御も簡単に管理できます。」 - Codeway、リード DevOps エンジニア、Uğur Arpaci 氏

Cloud Storage でサポートされるボリュームをプロビジョニングするには、次の 2 つの方法があります。  

  • エフェメラル ボリュームを使用する。単に、Pod 仕様に Cloud Storage バケットと認証情報を指定するだけです。シンプルなのでこのアプローチをおすすめします。

  • 静的プロビジョニングを PersistentVolumes および PersistentVolumeClaim とともに使用する。このアプローチは、Kubernetes 上のストレージに従来の方法でアクセスできるように互換性を確保することが組織にとって重要である場合におすすめします。

Cloud Storage FUSE CSI は、GKE バージョン 1.26 以降の GKE Standard と GKE Autopilot の両方でサポートされており、今後のリリースで旧バージョンにバックポートする計画があります。

また、Terraform テンプレートも使用できます。エフェメラル ボリュームを使用している場合は、単に Cloud Storage オブジェクトを Cloud Storage バケットと認証情報とともに指定するだけでよく、データは Pod から使用可能になります。詳しくはこちらをご覧ください。次に、Pod 仕様の例を示します。

読み込んでいます...

簡単に利用できるファイル システム セマンティクス

Cloud Storage FUSE では、AI / ML ワークロードの信頼できる情報源として引き続き Cloud Storage を使用できます。ファイル システム セマンティクスを犠牲にすることはなく、貴重なリソースを浪費することも、複雑なインテグレーション ロジックを実装する必要もありません。詳しくは、生成 AI に Codeway が Cloud Storage FUSE を活用している方法、公式ドキュメントCloud Storage FUSE の GitHub ページをご覧ください。

- プロダクト マネージャー Marco Abela
- シニア プロダクト マネージャー Akshay Ram

投稿先