Penyimpanan file dalam cache di Cloud Storage FUSE

Dokumen ini memberikan ringkasan tentang caching file Cloud Storage FUSE dan petunjuk tentang cara mengonfigurasi dan menggunakan caching file.

Caching file Cloud Storage FUSE adalah cache baca sisi klien yang meningkatkan performa operasi baca dengan menayangkan pembacaan file berulang dari penyimpanan cache yang lebih cepat sesuai pilihan Anda. Saat caching file diaktifkan, Cloud Storage FUSE menyimpan salinan file yang sering diakses secara lokal, sehingga pembacaan berikutnya dapat ditayangkan langsung dari cache, yang mengurangi latensi dan meningkatkan throughput.

Manfaat caching file

Caching file memberikan manfaat berikut:

  • Peningkatan performa untuk I/O kecil dan acak: caching file meningkatkan latensi dan throughput dengan menayangkan pembacaan langsung dari media cache. Operasi I/O kecil dan acak dapat menjadi jauh lebih cepat saat ditayangkan dari cache.

  • Download paralel diaktifkan secara otomatis: download paralel diaktifkan secara otomatis di Cloud Storage FUSE versi 2.12 dan yang lebih baru saat cache file diaktifkan. Download paralel menggunakan beberapa worker untuk mendownload file secara paralel menggunakan direktori cache file sebagai buffer pengambilan data di awal, yang dapat menghasilkan waktu pemuatan model hingga sembilan kali lebih cepat. Sebaiknya gunakan download paralel untuk skenario baca thread tunggal yang memuat file besar seperti penyajian model dan pemulihan checkpoint.

  • Penggunaan kapasitas yang ada: caching file dapat menggunakan kapasitas mesin yang disediakan untuk direktori cache Anda tanpa dikenai biaya untuk penyimpanan tambahan.

  • Pengurangan biaya: hit cache ditayangkan secara lokal dan tidak dikenai biaya operasi atau jaringan Cloud Storage.

  • Peningkatan total biaya kepemilikan untuk pelatihan AI dan ML: caching file meningkatkan penggunaan GPU Cloud dengan memuat data lebih cepat, yang mengurangi waktu pelatihan dan memberikan rasio harga-performa yang lebih besar untuk workload pelatihan AI dan ML.

Download paralel

Download paralel dapat meningkatkan performa baca dengan menggunakan beberapa pekerja untuk mendownload beberapa bagian file secara paralel menggunakan direktori cache file sebagai buffer pengambilan data. Sebaiknya gunakan download paralel untuk skenario baca yang memuat file besar seperti penyajian model, pemulihan checkpoint, dan pelatihan pada objek besar.

Kasus penggunaan untuk mengaktifkan caching file dengan download paralel mencakup hal berikut:

Jenis kasus penggunaan Deskripsi
Pelatihan Aktifkan caching file jika data yang ingin Anda akses dibaca beberapa kali, apakah file yang sama beberapa kali, atau offset yang berbeda dari file yang sama. Jika set data lebih besar dari cache file, cache file harus tetap dinonaktifkan, dan sebagai gantinya, gunakan salah satu metode berikut:
Menayangkan bobot model dan pembacaan checkpoint Aktifkan caching file dengan download paralel agar dapat menggunakan download paralel, yang memuat file besar jauh lebih cepat daripada jika caching file dan download paralel tidak digunakan.

Pertimbangan

  • Time to live (TTL) cache file: jika entri cache file belum habis masa berlakunya berdasarkan TTL-nya dan file berada dalam cache, operasi baca ke file tersebut akan ditayangkan dari cache klien lokal tanpa ada permintaan yang dikeluarkan ke Cloud Storage.

  • Masa berlaku entri cache file: jika masa berlaku entri cache file telah habis, panggilan atribut file GET akan dilakukan terlebih dahulu ke Cloud Storage. Jika file tidak ada atau atribut atau kontennya telah berubah, konten baru akan diambil. Jika atribut hanya dibatalkan, tetapi konten tetap valid, yang berarti pembuatan objek tidak berubah, konten akan ditayangkan dari cache hanya setelah panggilan atribut mengonfirmasi validitasnya. Kedua operasi tersebut dikenai latensi jaringan.

  • Pembatalan cache file: saat klien Cloud Storage FUSE mengubah file yang di-cache atau atributnya, entri cache klien tersebut akan segera dibatalkan untuk konsistensi. Namun, klien lain yang mengakses file yang sama akan terus membaca versi yang di-cache hingga setelan TTL masing-masing menyebabkan pembatalan.

  • Ukuran file dan kapasitas yang tersedia: file yang dibaca harus sesuai dengan kapasitas yang tersedia di direktori cache file, yang dapat Anda kontrol menggunakan opsi --file-cache-max-size-mb atau file-cache:max-size-mb kolom. Perhatikan bahwa Anda tidak dapat menetapkan ukuran maksimum per file.

  • Penghapusan cache: penghapusan metadata dan data yang di-cache didasarkan pada algoritma yang paling jarang digunakan (LRU) yang dimulai setelah mencapai batas ruang yang dikonfigurasi per --file-cache-max-size-mb limit. Jika masa berlaku entri habis berdasarkan TTL-nya, panggilan metadata GET akan dilakukan terlebih dahulu ke Cloud Storage dan dikenai latensi jaringan. Karena data dan metadata dikelola secara terpisah, Anda mungkin mengalami satu entity yang dihapus atau dibatalkan, tetapi tidak yang lain.

  • Persistensi cache: cache Cloud Storage FUSE tidak dipertahankan saat dilepas dan dimulai ulang. Untuk caching file, meskipun entri metadata yang diperlukan untuk menayangkan file dari cache dihapus saat dilepas dan dimulai ulang, data dalam cache file mungkin masih ada di direktori file. Sebaiknya hapus data di direktori cache file setelah dilepas atau dimulai ulang.

  • Pengelolaan pembacaan acak dan sebagian: saat operasi pembacaan file pertama dimulai dari awal file, pada offset 0, cache file Cloud Storage FUSE akan memasukkan dan memuat seluruh file ke dalam cache, meskipun Anda hanya membaca dari subset rentang kecil. Hal ini memungkinkan pembacaan acak atau sebagian berikutnya dari objek yang sama ditayangkan langsung dari cache.

    Secara default, membaca dari offset lain tidak akan memicu pengambilan file penuh asinkron. Untuk mengubah perilaku ini sehingga Cloud Storage FUSE memasukkan file ke cache saat pembacaan acak awal, tetapkan opsi --file-cache-cache-file-for-range-read atau kolom file-cache:cache-file-for-range-read ke true.

    Sebaiknya aktifkan properti ini jika banyak operasi pembacaan acak atau sebagian yang berbeda dilakukan pada objek yang sama.

  • Keamanan data: saat Anda mengaktifkan caching, Cloud Storage FUSE menggunakan direktori cache yang Anda tentukan menggunakan opsi --cache-dir atau kolom cache-dir sebagai direktori yang mendasarinya agar cache dapat mempertahankan file dari bucket Cloud Storage Anda dalam format terenkripsi. Setiap pengguna atau proses yang memiliki akses ke direktori cache ini dapat mengakses file ini. Sebaiknya batasi akses ke direktori ini.

  • Akses langsung atau beberapa akses ke cache file: menggunakan proses selain Cloud Storage FUSE untuk mengakses atau mengubah file di direktori cache dapat menyebabkan kerusakan data. Cache Cloud Storage FUSE khusus untuk setiap proses Cloud Storage FUSE yang berjalan tanpa mengetahui proses Cloud Storage FUSE yang berbeda yang berjalan di mesin yang sama atau berbeda. Oleh karena itu, sebaiknya jangan gunakan direktori cache yang sama untuk proses Cloud Storage FUSE yang berbeda.

  • Menjalankan beberapa proses Cloud Storage FUSE di mesin yang sama: jika beberapa proses Cloud Storage FUSE perlu berjalan di mesin yang sama, setiap proses Cloud Storage FUSE harus mendapatkan direktori cache spesifiknya sendiri, atau menggunakan salah satu metode berikut untuk memastikan data Anda tidak rusak:

    • Memasang semua bucket dengan cache bersama: gunakan pemasangan dinamis untuk memasang semua bucket yang dapat Anda akses dalam satu proses dengan cache bersama. Untuk mempelajari lebih lanjut, lihat Pemasangan dinamis Cloud Storage FUSE.

    • Mengaktifkan caching di bucket tertentu: aktifkan caching hanya di bucket tertentu menggunakan pemasangan statis. Untuk mempelajari lebih lanjut, lihat Pemasangan statis Cloud Storage FUSE.

    • Hanya menyimpan cache folder atau direktori tertentu: pasang dan simpan cache hanya folder tingkat bucket tertentu, bukan memasang seluruh bucket. Untuk mempelajari lebih lanjut, lihat Memasang direktori dalam bucket.

Sebelum memulai

Cache file memerlukan jalur direktori yang akan digunakan untuk menyimpan cache file. Anda dapat membuat direktori baru di sistem file yang ada atau membuat sistem file baru di penyimpanan yang disediakan. Jika Anda menyediakan penyimpanan baru untuk digunakan, gunakan petunjuk berikut untuk membuat sistem file baru:

  1. Untuk Google Cloud Hyperdisk, lihat Membuat volume Google Cloud Hyperdisk baru.

  2. Untuk disk RAM dalam memori, lihat Membuat disk RAM dalam memori.

Mengaktifkan dan mengonfigurasi perilaku caching file

  1. Pilih metode yang akan digunakan untuk mengaktifkan dan mengonfigurasi caching file menggunakan salah satu metode berikut:

  2. Tentukan direktori cache yang ingin Anda gunakan dengan salah satu metode berikut. Hal ini memungkinkan Anda mengaktifkan cache file untuk deployment non-Google Kubernetes Engine:

    Jika Anda menggunakan deployment Google Kubernetes Engine menggunakan driver CSI Cloud Storage FUSE untuk Google Kubernetes Engine, tentukan salah satu metode berikut:

  3. Opsional: aktifkan download paralel dengan menetapkan salah satu metode berikut ke true jika download paralel tidak diaktifkan secara otomatis:

  4. Batasi total kapasitas yang dapat digunakan cache Cloud Storage FUSE dalam direktori yang dipasang dengan menyesuaikan salah satu opsi berikut, yang otomatis ditetapkan ke nilai -1 saat Anda menentukan direktori cache:

    Anda juga dapat menentukan nilai dalam MiB atau GiB untuk membatasi ukuran cache.

  5. Opsional: lewati masa berlaku TTL entri yang di-cache dan tayangkan metadata file dari cache jika tersedia menggunakan salah satu metode berikut dan menetapkan nilai -1:

    Nilai default-nya adalah 60 detik, dan nilai -1 akan menetapkannya ke tidak terbatas. Anda juga dapat menentukan nilai tinggi berdasarkan persyaratan Anda. Sebaiknya tetapkan nilai ttl-secs setinggi yang diizinkan oleh workload Anda. Untuk mengetahui informasi selengkapnya tentang TTL untuk entri yang di-cache, lihat Pertimbangan.

  6. Opsional: aktifkan kemampuan cache file untuk memuat seluruh file secara asinkron ke dalam cache jika operasi pembacaan pertama file dimulai dari mana saja selain offset 0 sehingga pembacaan offset yang berbeda dari file yang sama juga dapat ditayangkan dari cache. Gunakan salah satu metode berikut dan tetapkan opsi ke true:

  7. Opsional: konfigurasikan caching stat. Untuk mempelajari cache stat lebih lanjut, lihat Ringkasan caching stat.

  8. Jalankan perintah ls -R secara manual di bucket yang dipasang sebelum Anda menjalankan workload untuk mengisi metadata terlebih dahulu guna memastikan cache stat terisi sebelum pembacaan pertama dengan metode batch yang lebih cepat. Untuk mengetahui informasi selengkapnya tentang cara meningkatkan performa pembacaan pertama, lihat Meningkatkan pembacaan pertama.

Setelah Anda mengaktifkan caching file, download paralel akan diaktifkan secara otomatis di Cloud Storage FUSE versi 2.12 dan yang lebih baru. Jika Anda menggunakan versi Cloud Storage FUSE yang lebih lama, tetapkan opsi enable-parallel-downloads ke true untuk mengaktifkan download paralel.

Mengonfigurasi properti pendukung untuk download paralel

Anda dapat mengonfigurasi properti pendukung berikut untuk download paralel menggunakan Cloud Storage FUSE CLI atau file konfigurasi Cloud Storage FUSE:

Deskripsi properti Opsi gcsfuse Kolom file konfigurasi
Jumlah maksimum pekerja yang dapat dibuat per file untuk mendownload objek dari Cloud Storage ke cache file. --file-cache-parallel-downloads-per-file file-cache:parallel-downloads-per-file
Jumlah maksimum pekerja yang dapat dibuat kapan saja di semua tugas download file. Defaultnya ditetapkan dua kali jumlah core CPU di mesin Anda. Untuk menentukan tanpa batas, masukkan nilai `-1`. --file-cache-max-parallel-downloads file-cache:max-parallel-downloads
Ukuran setiap permintaan baca dalam MiB yang dibuat setiap pekerja ke Cloud Storage saat mendownload objek ke cache file. Perhatikan bahwa download paralel hanya dipicu jika file yang dibaca memiliki ukuran yang ditentukan. --file-cache-download-chunk-size-mb file-cache:download-chunk-size-mb

Menonaktifkan download paralel

Untuk menonaktifkan download paralel, tetapkan salah satu hal berikut ke false:

  • Opsi gcsfuse: --file-cache-enable-parallel-downloads
  • Kolom file konfigurasi: file-cache:enable-parallel-downloads

Mengontrol kemampuan cache pada granularitas file menggunakan ekspresi reguler

Secara default, semua file yang dibaca akan di-cache. Anda dapat mengontrol file mana yang di-cache pada granularitas file menggunakan kolom include-regex dan exclude-regex opsional dalam konfigurasi file-cache. Kolom ini memungkinkan Anda menentukan ekspresi reguler yang akan dicocokkan dengan jalur file dalam format bucket_name/object_key.

Menyertakan file tertentu untuk caching

Untuk menyimpan cache hanya file yang cocok dengan pola tertentu, gunakan opsi include-regex. File apa pun yang tidak cocok dengan ekspresi reguler ini tidak akan di-cache. Misalnya, untuk menyimpan cache hanya file .tfrecord dari set data pelatihan Anda, tentukan hal berikut dalam file konfigurasi Anda:

file-cache:
  include-regex: ".*\\.tfrecord$"

Atau, gunakan flag --file-cache-include-regex:

gcsfuse --file-cache-include-regex ".*\\.(tfrecord)$" ..

Mengecualikan file tertentu dari caching

Untuk mencegah file tertentu di-cache, gunakan opsi exclude-regex. File apa pun yang cocok dengan ekspresi reguler ini tidak akan di-cache. Misalnya, untuk mengecualikan semua file dalam direktori bernama logs/, tentukan hal berikut dalam file konfigurasi Anda:

file-cache:
  exclude-regex: ".*/logs/.*"

Atau, gunakan flag --file-cache-exclude-regex:

gcsfuse --file-cache-exclude-regex ".*/logs/.*" ..

Menggunakan aturan sertakan dan kecualikan bersama-sama

Anda dapat menggunakan include-regex dan exclude-regex secara bersamaan. Aturan exclude-regex selalu dievaluasi terlebih dahulu. Jika file cocok dengan exclude-regex, file tersebut tidak akan di-cache, meskipun juga cocok dengan include-regex. Misalnya, untuk menyimpan cache semua file .tfrecord, kecuali file yang ada di direktori output/, tentukan hal berikut dalam file konfigurasi Anda:

file-cache:
  include-regex: ".*\\.tfrecord$"
  exclude-regex: ".*/output/.*"

Atau, gunakan kedua flag:

gcsfuse --file-cache-include-regex ".*\\.tfrecord$" --file-cache-exclude-regex ".*/output/.*" ..

Langkah berikutnya