Penyimpanan file dalam cache di Cloud Storage FUSE

Caching file Cloud Storage FUSE adalah cache baca sisi klien yang meningkatkan performa pembacaan file berulang dengan menyajikannya dari penyimpanan cache yang lebih cepat sesuai pilihan Anda. Jika caching file diaktifkan, Cloud Storage FUSE akan menyimpan salinan file yang sering diakses secara lokal, sehingga mengurangi latensi dan meningkatkan throughput untuk pembacaan berikutnya.

Dokumen ini memberikan ringkasan tentang caching file serta menjelaskan cara mengonfigurasi dan menggunakannya.

Manfaat caching file

Caching file memberikan manfaat berikut:

  • Peningkatan performa untuk I/O kecil dan acak: caching file meningkatkan latensi dan throughput dengan menyajikan pembacaan langsung dari media cache. Operasi I/O kecil dan acak dapat jauh lebih cepat jika disajikan 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 pembacaan single-threaded yang memuat file besar seperti penyajian model dan pemulihan checkpoint.

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

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

  • Total biaya kepemilikan yang lebih baik untuk pelatihan AI dan ML: caching file meningkatkan pemanfaatan GPU Cloud dengan memuat data lebih cepat, sehingga mengurangi waktu pelatihan dan memberikan rasio harga terhadap performa yang lebih baik untuk workload pelatihan AI dan ML.

Download paralel

Download paralel dapat meningkatkan performa baca dengan menggunakan beberapa worker 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, baik file yang sama beberapa kali, maupun 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:
Menyajikan bobot model dan pembacaan checkpoint Aktifkan caching file dengan download paralel agar dapat memanfaatkan 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 disajikan dari cache klien lokal tanpa permintaan apa pun 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 diinvalidasi, tetapi kontennya tetap valid, yang berarti pembuatan objek tidak berubah, konten akan disajikan dari cache hanya setelah panggilan atribut mengonfirmasi validitasnya. Kedua operasi tersebut menimbulkan latensi jaringan.

  • Invalidasi cache file: saat klien Cloud Storage FUSE mengubah file yang di-cache atau atributnya, entri cache klien tersebut akan segera dibatalkan demi 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 sedang dibaca harus sesuai dengan kapasitas yang tersedia di direktori cache file, yang dapat Anda kontrol menggunakan opsi --file-cache-max-size-mb atau kolom file-cache:max-size-mb. Perhatikan bahwa Anda tidak dapat menetapkan ukuran maksimum per file.

  • Pengosongan cache: pengosongan metadata dan data yang di-cache didasarkan pada algoritma least recently used (LRU) yang dimulai setelah batas ruang yang dikonfigurasi per batas --file-cache-max-size-mb tercapai. Jika masa berlaku entri berakhir berdasarkan TTL-nya, panggilan metadata GET akan dilakukan terlebih dahulu ke Cloud Storage dan akan dikenai latensi jaringan. Karena data dan metadata dikelola secara terpisah, Anda mungkin mengalami satu entity dihapus atau dibatalkan, sementara entity lainnya tidak.

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

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

    Secara default, pembacaan dari offset lain tidak memicu pengambilan file lengkap asinkron. Untuk mengubah perilaku ini agar Cloud Storage FUSE menyerap file ke cache setelah 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 parsial 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 dasar untuk cache guna menyimpan 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 bersifat spesifik 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, kami tidak merekomendasikan penggunaan 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 dijalankan 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 pada bucket tertentu: aktifkan caching hanya pada bucket yang ditentukan menggunakan pemasangan statis. Untuk mempelajari lebih lanjut, lihat Pemasangan statis Cloud Storage FUSE.

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

Sebelum memulai

Cache file memerlukan jalur direktori yang akan digunakan untuk meng-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 ingin Anda gunakan untuk mengaktifkan dan mengonfigurasi caching file menggunakan salah satu metode berikut:

  2. Tentukan direktori cache yang ingin Anda gunakan dengan salah satu metode berikut. Dengan demikian, Anda dapat 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 kapasitas total 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: mengabaikan masa berlaku TTL entri yang di-cache dan menyajikan metadata file dari cache jika tersedia menggunakan salah satu metode berikut dan menetapkan nilai -1:

    Defaultnya adalah 60 detik, dan nilai -1 menyetelnya ke tanpa batas. Anda juga dapat menentukan nilai yang 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 baca pertama file dimulai dari mana saja selain offset 0, sehingga pembacaan berikutnya dari offset yang berbeda dari file yang sama juga dapat disajikan dari cache. Gunakan salah satu metode berikut dan tetapkan opsi ke true:

  7. Opsional: mengonfigurasi penyimpanan cache statistik. Untuk mempelajari cache stat lebih lanjut, lihat Ringkasan caching stat.

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

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 Cloud Storage FUSE versi 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 worker 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 worker yang dapat dihasilkan pada waktu tertentu di semua tugas download file. Defaultnya ditetapkan ke dua kali jumlah core CPU di mesin Anda. Untuk menentukan tidak ada batas, masukkan nilai `-1`. --file-cache-max-parallel-downloads file-cache:max-parallel-downloads
Ukuran setiap permintaan baca dalam MiB yang dibuat setiap worker ke Cloud Storage saat mendownload objek ke dalam 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 dari berikut ini ke false:

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

Mengontrol kemampuan penyimpanan ke dalam cache pada perincian file menggunakan ekspresi reguler

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

Menyertakan file tertentu untuk penyimpanan dalam cache

Untuk meng-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 meng-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 penyimpanan dalam cache

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 penyertaan dan pengecualian secara bersamaan

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 cocok dengan include-regex. Misalnya, untuk meng-cache semua file .tfrecord kecuali 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