Cloud Storage FUSE ファイル キャッシュを使用する

Cloud Storage FUSE のファイル キャッシュ機能は、クライアント ベースの読み取りキャッシュです。これを使用すると、選択したより高速なキャッシュ ストレージから繰り返しファイルを読み取れます。このページでは、Cloud Storage FUSE ファイル キャッシュを有効にして使用する方法について説明します。ファイル キャッシュ、統計情報キャッシュ、タイプ キャッシュの概要については、キャッシュの概要をご覧ください。

始める前に

ファイル キャッシュでは、ファイルをキャッシュに保存するディレクトリ パスが必要です。既存のファイル システムに新しいディレクトリを作成するか、プロビジョニングされたストレージに新しいファイル システムを作成できます。使用する新しいストレージをプロビジョニングする場合は、次の手順で新しいファイル システムを作成します。

  1. Google Cloud Hyperdisk の場合は、新しい Google Cloud Hyperdisk ボリュームを作成するをご覧ください。

  2. Persistent Disk の場合は、新しい Persistent Disk ボリュームを作成するをご覧ください。

  3. ローカル SSD については、VM にローカル SSD を追加するをご覧ください。

  4. インメモリ RAM ディスクについては、メモリ内 RAM ディスクの作成をご覧ください。

キャッシュ動作を有効にして構成する

  1. Cloud Storage FUSE 構成ファイルfile-cache フィールドを使用してファイル キャッシュを有効にして構成し、使用するキャッシュ ディレクトリを cache-dir フィールドに指定します。ファイル キャッシュはデフォルトで無効になっています。ファイル キャッシュを有効にするには、ディレクトリを cache-dir フィールドに渡します。

  2. 省略可: 構成ファイルの metadata-cache フィールドを使用して、統計情報キャッシュとタイプ キャッシュを構成します。統計情報キャッシュとタイプ キャッシュの詳細については、タイプ キャッシングの概要または統計情報のキャッシングの概要をご覧ください。

  3. 省略可: 整合性とバランスを取りながら、繰り返し読み取りの間隔に基づく値に ttl-secs オプションを設定し、キャッシュ内のエントリの TTL を増やします。ttl-secs 値は、ワークロードで許容される限り高く設定することをおすすめします。TTL は Cloud Storage FUSE 構成ファイルで構成できます。キャッシュに保存されたエントリの TTL の設定の詳細については、有効期間(TTL)をご覧ください。

    たとえば、次の構成ファイルは、TTL が 3600 秒でキャッシュ ディレクトリが /path/to/a/directory/ に設定されたファイル キャッシュ、統計情報キャッシュ、タイプ キャッシュを有効にします。max-size-mb-1 に設定されています。これにより、使用可能な容量をすべて使用するようにファイル キャッシュが構成されます。

    file-cache:
      max-size-mb: -1
      cache-file-for-range-read: false
    
    metadata-cache:
      stat-cache-max-size-mb: 32
      ttl-secs: 3600
      type-cache-max-size-mb: 4
    
    cache-dir: /path/to/a/directory
    
  4. 省略可: ファイル キャッシュ ディレクトリをプリフェッチ バッファとして使用して、複数のワーカーで大容量ファイルを並列にダウンロードする enable-parallel-downloads プロパティを有効にして、初回読み取りを含む大容量ファイルの読み取りを高速化します。並列ダウンロードと、そのサポート プロパティの構成方法について詳しくは、並列ダウンロードを使用して読み取りパフォーマンスを改善するをご覧ください。

  5. ワークロードを実行する前に、マウントされたバケットで ls -R コマンドを手動で実行してメタデータを事前入力し、高速なバッチ方式で初回の読み取りが行われる前にタイプ キャッシュが入力されるようにします。初回読み取りのパフォーマンスを改善する方法については、初回読み取りを改善するをご覧ください。

並列ダウンロードを使用して複数のファイルを並列にダウンロードする

並列ダウンロード機能を有効にして構成すると、読み取りパフォーマンスを向上させることができます。この機能では、複数のワーカーを使用して、ファイル キャッシュ ディレクトリをプリフェッチ バッファとして使用してファイルを並列でダウンロードします。モデル サービングやチェックポイントの復元など、大規模なファイルを読み込む単一スレッドの読み取りシナリオには、並列ダウンロードを使用することをおすすめします。

並列ダウンロードを有効にする前に、次の点を考慮してください。

  • アプリケーションで 8 つを超えるスレッドで読み取り並列処理を行うと、パフォーマンスが若干低下する可能性があります。

  • 読み取りの並列処理が高いため、トレーニング ワークロードに並列ダウンロードを使用することはおすすめしません。

  • 並列ダウンロードを使用するには、まずファイル キャッシュを有効にして構成する必要があります。

  • 読み取られるファイルは、ファイル キャッシュ ディレクトリの使用可能な容量内に収まる必要があります。この容量は max-size-mb プロパティを使用して制御できます。

並列ダウンロードを構成する

  1. Cloud Storage FUSE 構成ファイルで、enable-parallel-downloads プロパティを true に設定し、必要に応じて次のサポート設定を構成します。

    • parallel-downloads-per-file: Cloud Storage からファイル キャッシュにオブジェクトをダウンロードするためにファイルごとにスポーンできる最大ワーカー数。デフォルト値は 16 です。

    • max-parallel-downloads: すべてのファイル ダウンロード ジョブで任意の時点で生成できるワーカーの最大数。デフォルトは、マシン上の CPU コア数の 2 倍に設定されています。上限を指定しない場合は、値 -1 を入力します。

    • download-chunk-size-mb: オブジェクトをファイル キャッシュにダウンロードするときに、各ワーカーが Cloud Storage に対して行う 1 回の読み取りリクエストのサイズを MiB で指定します。デフォルトのサイズは 50 MiB です。並列ダウンロードは、読み取られるファイルのサイズが指定されたサイズの場合にのみトリガーされます。

次のステップ