Praktik terbaik penyesuaian performa

Halaman ini memberikan panduan tentang cara meningkatkan performa Cloud Storage FUSE menggunakan fitur dan konfigurasi utama Cloud Storage FUSE untuk mencapai throughput maksimum dan performa optimal, terutama untuk workload kecerdasan buatan dan machine learning (AI/ML) seperti pelatihan, penayangan, dan pembuatan titik pemeriksaan.

Pertimbangan

Sebelum Anda menerapkan konfigurasi yang kami rekomendasikan di halaman ini, pertimbangkan hal-hal berikut:

  • Anda dapat menerapkan konfigurasi yang direkomendasikan di halaman ini menggunakan tiga metode:

  • Pastikan Anda menjalankan Cloud Storage FUSE versi terbaru. Konfigurasi yang direkomendasikan hanya boleh diterapkan ke Cloud Storage FUSE versi 3.0 atau yang lebih baru dan driver CSI Cloud Storage FUSE untuk Google Kubernetes Engine yang berjalan di cluster GKE versi 1.32.2-gke.1297001 atau yang lebih baru.

  • Konfigurasi yang direkomendasikan menyimpan metadata Cloud Storage dalam cache selama durasi tugas dan tidak diperiksa setelah pemasangan awal sistem file. Oleh karena itu, sebaiknya sistem file bersifat hanya baca atau semantik sistem file adalah aplikasi tulis-ke-baru, yang berarti aplikasi selalu menulis ke file baru, untuk performa yang optimal. Workload AI/ML berikut adalah tulis-ke-baru:

    • Checkpoint

    • Pelatihan

    • Aktif

    • Caching jax.jit()

  • Konfigurasi yang direkomendasikan di halaman ini telah divalidasi untuk jenis mesin besar Cloud GPU dan Cloud TPU dalam skala besar yang memiliki memori dalam jumlah besar dan antarmuka jaringan dengan bandwidth tinggi. Jenis mesin GPU Cloud dan TPU Cloud dapat berbeda dalam hal jumlah resource yang tersedia seperti CPU, memori, dan penyimpanan lokal dalam konfigurasi node host-nya. Hal ini dapat secara langsung memengaruhi performa untuk konfigurasi seperti berikut:

Menggunakan bucket dengan namespace hierarkis yang diaktifkan

Selalu gunakan bucket dengan namespace hierarkis yang diaktifkan. Namespace hierarkis mengatur data Anda ke dalam struktur sistem file hierarkis, yang membuat operasi dalam bucket lebih efisien, sehingga menghasilkan waktu respons yang lebih cepat dan lebih sedikit panggilan daftar secara keseluruhan untuk setiap operasi.

Manfaat ruang nama hierarkis meliputi:

  • Bucket dengan namespace hierarkis memberikan kueri per detik (QPS) awal hingga delapan kali lebih tinggi dibandingkan dengan bucket datar. Namespace hierarkis mendukung 40.000 permintaan baca objek awal per detik dan 8.000 permintaan tulis objek awal, yang jauh lebih tinggi daripada bucket datar FUSE Cloud Storage biasa, yang hanya menawarkan 5.000 permintaan baca objek per detik pada awalnya dan 1.000 permintaan tulis objek awal.

  • Namespace hierarkis menyediakan penggantian nama direktori atomik, yang diperlukan untuk pembuatan titik pemeriksaan dengan Cloud Storage FUSE guna memastikan atomisitas. Penggunaan bucket dengan namespace hierarkis yang diaktifkan sangat bermanfaat saat membuat titik pemeriksaan dalam skala besar karena framework ML menggunakan penggantian nama direktori untuk menyelesaikan titik pemeriksaan, yang merupakan perintah atomik yang cepat, dan hanya didukung di bucket dengan namespace hierarkis yang diaktifkan. Jika Anda memilih untuk tidak menggunakan bucket dengan ruang nama hierarkis yang diaktifkan, lihat Meningkatkan batas penggantian nama untuk bucket non-HNS.

Untuk mempelajari cara membuat bucket dengan namespace hierarkis diaktifkan, lihat Membuat bucket dengan namespace hierarkis diaktifkan. Untuk mempelajari cara memasang bucket yang mendukung namespace hierarkis, lihat Memasang bucket dengan namespace hierarkis yang diaktifkan. Namespace hierarkis didukung di Google Kubernetes Engine versi 1.31.1-gke.2008000 atau yang lebih baru.

Melakukan pemasangan khusus direktori

Jika ingin mengakses direktori tertentu dalam bucket, Anda dapat memasang hanya direktori tertentu menggunakan opsi pemasangan only-dir, bukan memasang seluruh bucket. Melakukan pemasangan khusus direktori akan mempercepat panggilan daftar dan mengurangi jumlah keseluruhan panggilan daftar dan stat dengan membatasi jumlah direktori yang harus dilalui saat menyelesaikan nama file, karena panggilan LookUpInode dan permintaan akses bucket atau direktori secara otomatis menghasilkan panggilan daftar dan stat untuk setiap file atau direktori dalam jalur.

Untuk memasang direktori tertentu, gunakan salah satu metode berikut:

Google Kubernetes Engine

Gunakan konfigurasi pemasangan berikut dengan driver CSI Cloud Storage FUSE untuk Google Kubernetes Engine:

volumeHandle: BUCKET_NAME

  • only-dir:DIRECTORY_NAME

Dengan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pasangi direktori.

  • DIRECTORY_NAME adalah nama direktori yang ingin Anda pasang.

Compute Engine

Jalankan perintah gcsfuse --only-dir untuk memasang direktori tertentu di virtual machine Compute Engine:

gcsfuse --only-dir DIRECTORY_NAME BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pasangi direktori.

  • DIRECTORY_NAME adalah nama direktori yang ingin Anda pasang.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

Untuk mengetahui informasi selengkapnya tentang cara melakukan pemasangan direktori, lihat Memasang direktori dalam bucket.

Meningkatkan nilai cache metadata

Untuk meningkatkan performa pembacaan berulang, Anda dapat mengonfigurasi Cloud Storage FUSE untuk menyimpan dalam cache sejumlah besar metadata dan melewati masa berlaku metadata, sehingga menghindari permintaan metadata berulang ke Cloud Storage dan meningkatkan performa secara signifikan.

Meningkatkan nilai cache metadata bermanfaat untuk workload dengan pembacaan berulang untuk menghindari panggilan Cloud Storage berulang dan untuk volume hanya baca yang dapat ditetapkan TTL tak terbatas.

Pertimbangkan hal berikut sebelum Anda meningkatkan nilai cache metadata:

  • Time to live (TTL) tak terbatas hanya boleh ditetapkan untuk volume yang bersifat hanya baca atau hanya tulis ke yang baru.

  • Cache metadata hanya boleh diaktifkan agar ukurannya bertambah secara signifikan di node dengan konfigurasi memori besar karena cache ini menyimpan semua metadata untuk titik pemasangan yang ditentukan di setiap node dan menghilangkan kebutuhan akan akses tambahan ke Cloud Storage.

  • Konfigurasi di bagian ini menyimpan dalam cache semua metadata yang diakses dengan TTL tak terbatas, yang dapat memengaruhi jaminan konsistensi saat perubahan dilakukan pada bucket Cloud Storage yang sama oleh klien lain, misalnya, penimpaan pada file atau penghapusan file.

  • Untuk memverifikasi bahwa konsumsi memori tidak terpengaruh, validasi bahwa jumlah memori yang digunakan oleh cache metadata dapat diterima oleh Anda, yang dapat bertambah hingga mencapai gigabyte dan bergantung pada jumlah file dalam bucket yang di-mount dan jumlah titik pemasangan yang digunakan. Misalnya, metadata setiap file menggunakan memori sekitar 1,5 KiB, dan secara relatif, metadata satu juta file menggunakan memori sekitar 1,5 GiB. Untuk mengetahui informasi selengkapnya, lihat Ringkasan penyimpanan ke dalam cache.

Gunakan petunjuk berikut untuk mengonfigurasi Cloud Storage FUSE agar menyimpan cache metadata dalam jumlah besar dan melewati masa berlaku metadata:

Opsi CLI

gcsfuse --metadata-cache-ttl-secs=-1 \
      --stat-cache-max-size-mb=-1 \
      --type-cache-max-size-mb=-1 \
      BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

File konfigurasi

metadata-cache:
stat-cache-max-size-mb: -1
ttl-secs: -1
type-cache-max-size-mb: -1

Google Kubernetes Engine

  mountOptions:
      - metadata-cache:ttl-secs:-1
      - metadata-cache:stat-cache-max-size-mb:-1
      - metadata-cache:type-cache-max-size-mb:-1

Compute Engine

gcsfuse --metadata-cache-ttl-secs=-1 \
      --stat-cache-max-size-mb=-1 \
      --type-cache-max-size-mb=-1 \
      BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

Mengisi cache metadata terlebih dahulu

Sebelum menjalankan beban kerja, sebaiknya isi cache metadata terlebih dahulu, yang akan meningkatkan performa secara signifikan dan mengurangi jumlah panggilan metadata ke Cloud Storage secara substansial, terutama jika opsi konfigurasi implicit-dirs digunakan. Driver CSI Cloud Storage FUSE untuk GKE menyediakan API yang menangani pengisian awal cache metadata, lihat Menggunakan pengambilan data metadata untuk mengisi awal cache metadata.

Untuk mengisi cache metadata terlebih dahulu, gunakan salah satu metode berikut:

Google Kubernetes Engine

Tetapkan flag atribut volume CSI gcsfuseMetadataPrefetchOnMount ke true:

Di Google Kubernetes Engine versi 1.32.1-gke.1357001 atau yang lebih baru, Anda dapat mengaktifkan pengambilan data metadata untuk volume tertentu menggunakan opsi konfigurasi gcsfuseMetadataPrefetchOnMount di kolom volumeAttributes definisi PersistentVolume Anda. Metode initContainer tidak diperlukan saat Anda menggunakan opsi konfigurasi gcsfuseMetadataPrefetchOnMount.

  apiVersion: v1
  kind: PersistentVolume
  metadata:
    name: training-bucket-pv
  spec:
    ...
    csi:
      volumeHandle: BUCKET_NAME
      volumeAttributes:
        ...
        gcsfuseMetadataPrefetchOnMount: "true"
  

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

Resource container init dapat bervariasi bergantung pada konten bucket dan tata letak hierarkis, jadi pertimbangkan untuk menyetel resource sidecar pengambilan data metadata kustom untuk batas yang lebih tinggi.

Linux

Jalankan perintah ls -R secara manual di titik pemasangan Cloud Storage FUSE untuk mencantumkan semua file secara rekursif dan mengisi cache metadata terlebih dahulu:

ls -R MOUNT_POINT > /dev/null

Dengan:

MOUNT_POINT: jalur ke titik pemasangan Cloud Storage FUSE Anda.

Compute Engine

Jalankan perintah ls -R secara manual di titik pemasangan Cloud Storage FUSE untuk mencantumkan semua file secara rekursif dan mengisi cache metadata terlebih dahulu:

ls -R MOUNT_POINT > /dev/null

Dengan:

MOUNT_POINT: jalur ke titik pemasangan Cloud Storage FUSE Anda.

Mengaktifkan caching file dan download paralel

Penyimpanan cache file memungkinkan Anda menyimpan data file yang sering diakses secara lokal di komputer, sehingga mempercepat pembacaan berulang dan mengurangi biaya Cloud Storage. Saat Anda mengaktifkan penayangan file, download paralel juga akan otomatis diaktifkan. Download paralel menggunakan beberapa pekerja untuk mendownload file secara paralel menggunakan direktori cache file sebagai buffer pengambilan data, sehingga menghasilkan waktu pemuatan model sembilan kali lebih cepat.

Untuk mempelajari cara mengaktifkan dan mengonfigurasi caching file dan download paralel, lihat Mengaktifkan dan mengonfigurasi perilaku caching file. Untuk menggunakan contoh konfigurasi, lihat Contoh konfigurasi untuk mengaktifkan penyimpanan file dalam cache dan download paralel.

Pertimbangan Cloud GPU dan Cloud TPU untuk menggunakan penyiapan cache file dan download paralel

Cache file dapat dihosting di SSD Lokal, RAM, Persistent Disk, atau Google Cloud Hyperdisk dengan panduan berikut. Dalam semua kasus, data, atau file besar individual, harus sesuai dengan kapasitas yang tersedia di direktori cache file yang dikontrol menggunakan konfigurasi max-size-mb.

Pertimbangan GPU cloud

SSD Lokal ideal untuk data pelatihan dan download titik pemeriksaan. Jenis mesin Cloud GPU mencakup kapasitas SSD yang dapat digunakan, seperti jenis mesin A4 yang mencakup SSD 12 TiB.

  • Disk RAM memberikan performa terbaik untuk memuat bobot model karena ukurannya yang kecil dibandingkan dengan jumlah RAM yang tidak digunakan di sistem.

  • Persistent Disk atau Google Cloud Hyperdisk dapat digunakan sebagai cache.

Pertimbangan Cloud TPU

Cloud TPU tidak mendukung SSD Lokal. Jika Anda menggunakan caching file di Cloud TPU tanpa modifikasi, lokasi default yang digunakan adalah volume booting, yang tidak direkomendasikan dan menghasilkan performa yang buruk.

Daripada volume booting, sebaiknya gunakan disk RAM, yang lebih disukai karena performanya dan tanpa biaya inkremental. Namun, disk RAM sering kali dibatasi ukurannya dan paling berguna untuk melayani bobot model atau mendownload checkpoint, bergantung pada ukuran checkpoint dan RAM yang tersedia. Selain itu, sebaiknya gunakan Persistent Disk dan Hyperdisk Google Cloud untuk tujuan caching.

Contoh konfigurasi untuk mengaktifkan caching file dan download paralel

Secara default, cache file menggunakan SSD Lokal jika mode ephemeral-storage-local-ssd diaktifkan untuk node Google Kubernetes Engine. Jika tidak ada SSD Lokal yang tersedia, misalnya, di mesin Cloud TPU, cache file menggunakan disk booting node Google Kubernetes Engine, yang tidak direkomendasikan. Dalam hal ini, Anda dapat menggunakan disk RAM sebagai direktori cache, tetapi pertimbangkan jumlah RAM yang tersedia untuk penyiapan cache file dibandingkan dengan yang dibutuhkan oleh pod.

Opsi CLI

gcsfuse --file-cache-max-size-mb: -1 \
      --file-cache-cache-file-for-range-read: true \
      --file-cache-enable-parallel-downloads: true \
      BUCKET_NAME

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

File konfigurasi

file-cache:
  max-size-mb: -1
  cache-file-for-range-read: true
  enable-parallel-downloads: true

Cloud GPU

mountOptions:
    - file-cache:max-size-mb:-1
    - file-cache:cache-file-for-range-read:true
    - file-cache:enable-parallel-downloads:true

# RAM disk file cache if LSSD not available. Uncomment to use
# volumes:
#   - name: gke-gcsfuse-cache
#     emptyDir:
#       medium: Memory

Cloud TPU

mountOptions:
    - file-cache:max-size-mb:-1
    - file-cache:cache-file-for-range-read:true
    - file-cache:enable-parallel-downloads:true

volumes:
    - name: gke-gcsfuse-cache
      emptyDir:
        medium: Memory

Compute Engine

gcsfuse --file-cache-max-size-mb: -1 \
      --file-cache-cache-file-for-range-read: true \
      --file-cache-enable-parallel-downloads: true \
      BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

Menonaktifkan entri cache statistik negatif

Secara default, Cloud Storage FUSE menyimpan cache entri statistik negatif, yang berarti entri untuk file yang tidak ada, dengan TTL lima detik. Dalam beban kerja yang sering membuat atau menghapus file, seperti pembuatan titik pemeriksaan terdistribusi, entri yang di-cache ini dapat menjadi usang dengan cepat, yang menyebabkan masalah performa. Untuk menghindarinya, sebaiknya nonaktifkan cache statistik negatif untuk beban kerja pelatihan, penayangan, dan pembuatan titik pemeriksaan menggunakan opsi konfigurasi negative-ttl-secs.

Gunakan petunjuk berikut untuk menonaktifkan cache statistik negatif:

Opsi CLI

gcsfuse --metadata-cache-negative-ttl-secs: 0 \
  BUCKET_NAME

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

File konfigurasi

metadata-cache:
 negative-ttl-secs: 0

Google Kubernetes Engine

mountOptions:
    - metadata-cache:negative-ttl-secs:0

Compute Engine

gcsfuse --metadata-cache-negative-ttl-secs: 0 \
  BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

Mengaktifkan penulisan streaming

Penulisan streaming mengupload data langsung ke Cloud Storage saat data ditulis, yang mengurangi latensi dan penggunaan ruang disk. Hal ini sangat bermanfaat untuk penulisan berurutan yang besar, seperti titik pemeriksaan. Penulisan streaming diaktifkan secara default di Cloud Storage FUSE versi 3.0 dan yang lebih baru.

Jika penulisan streaming tidak diaktifkan secara default, gunakan petunjuk berikut untuk mengaktifkannya. Mengaktifkan penulisan streaming memerlukan Cloud Storage FUSE versi 3.0 yang tersedia di Google Kubernetes Engine versi 1.32.1-gke.1729000 atau yang lebih baru.

Opsi CLI

gcsfuse --enable-streaming-writes: true \
  BUCKET_NAME

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

File konfigurasi

write:
 enable-streaming-writes: true

Google Kubernetes Engine

mountOptions:
    - write:enable-streaming-writes:true

Compute Engine

gcsfuse --enable-streaming-writes: true \
  BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

Meningkatkan ukuran baca-depan kernel

Untuk beban kerja yang terutama melibatkan pembacaan berurutan file besar seperti penyajian dan pemulihan checkpoint, meningkatkan ukuran baca-tunggu dapat meningkatkan performa secara signifikan. Hal ini dapat dilakukan menggunakan parameter kernel Linux read_ahead_kb di komputer lokal Anda. Sebaiknya Anda meningkatkan parameter kernel read_ahead_kb menjadi 1 MB, bukan menggunakan jumlah default 128 KB yang ditetapkan di sebagian besar distribusi Linux. Untuk instance Compute Engine, izin sudo atau root diperlukan agar parameter kernel berhasil ditingkatkan.

Untuk meningkatkan parameter kernel read_ahead_kb menjadi 1 MB untuk direktori yang di-mount Cloud Storage FUSE tertentu, gunakan petunjuk berikut. Bucket Anda harus di-mount ke Cloud Storage FUSE sebelum Anda menjalankan perintah, jika tidak, parameter kernel tidak akan bertambah.

Google Kubernetes Engine

mountOptions:

  • read_ahead_kb=1024

Compute Engine

export MOUNT_POINT=/path/to/mount/point
echo 1024 | sudo tee /sys/class/bdi/0:$(stat -c "%d" $MOUNT_POINT)/read_ahead_kb

Dengan:

MOUNT_POINT: jalur ke titik pemasangan Cloud Storage FUSE Anda.

Nonaktifkan Security Token Service untuk menghindari pemeriksaan yang berlebihan

Driver CSI Cloud Storage FUSE untuk Google Kubernetes Engine memiliki pemeriksaan akses untuk memastikan pemulihan pod karena kesalahan konfigurasi binding Workload Identity oleh pengguna antara bucket dan akun layanan GKE, yang dapat mencapai kuota API Security Token Service default dalam skala besar. Fitur ini dapat dinonaktifkan dengan menetapkan atribut volume skipCSIBucketAccessCheck driver CSI Volume Persisten. Sebaiknya pastikan akun layanan GKE memiliki akses yang tepat ke bucket Cloud Storage target untuk menghindari kegagalan pemasangan pod.

Selain itu, kuota Security Token Service harus ditingkatkan di luar nilai default 6000 jika cluster Google Kubernetes Engine terdiri dari lebih dari 6.000 node, yang dapat menyebabkan error 429 jika tidak ditingkatkan dalam deployment skala besar. Kuota Security Token Service harus ditingkatkan melalui halaman Kuota dan batas. Sebaiknya Anda mempertahankan kuota yang sama dengan jumlah pemasangan, misalnya, jika ada 10.000 pemasangan di cluster, kuota harus ditingkatkan menjadi 10000.

Untuk menyetel atribut volume skipCSIBucketAccessCheck, lihat contoh konfigurasi berikut:

  volumeAttributes:
      - skipCSIBucketAccessCheck: "true"
   

Pertimbangan performa lainnya

Selain pengoptimalan utama yang dibahas, beberapa faktor lain dapat memengaruhi performa keseluruhan Cloud Storage FUSE secara signifikan. Bagian berikut menjelaskan pertimbangan performa tambahan yang sebaiknya Anda pertimbangkan saat menggunakan Cloud Storage FUSE.

Meningkatkan batas penggantian nama untuk bucket non-HNS

Workload pembuatan titik pemeriksaan harus selalu dilakukan dengan bucket yang mengaktifkan namespace hierarkis karena penggantian nama yang atomik dan lebih cepat serta QPS yang lebih tinggi untuk operasi baca dan tulis. Namun, jika Anda menerima risiko bahwa penggantian nama direktori tidak bersifat atomik dan membutuhkan waktu lebih lama, Anda dapat menggunakan opsi konfigurasi rename-dir-limit jika melakukan pembuatan titik pemeriksaan menggunakan bucket tanpa namespace hierarkis untuk menentukan batas jumlah file atau operasi yang terlibat dalam operasi penggantian nama direktori pada waktu tertentu.

Sebaiknya tetapkan opsi konfigurasi rename-dir-limit ke nilai yang tinggi untuk mencegah kegagalan pembuatan titik pemeriksaan. Karena Cloud Storage FUSE menggunakan namespace datar dan objek tidak dapat diubah, operasi penggantian nama direktori melibatkan penggantian nama dan penghapusan semua file individual dalam direktori. Anda dapat mengontrol jumlah file yang terpengaruh oleh operasi penggantian nama dengan menetapkan opsi konfigurasi rename-dir-limit.

Gunakan petunjuk berikut untuk menyetel opsi konfigurasi rename-dir-limit:

Opsi CLI

gcsfuse --rename-dir-limit: 200000 \
  BUCKET_NAME

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

File konfigurasi

file-system:
 rename-dir-limit: 200000

Google Kubernetes Engine

mountOptions:
    - rename-dir-limit=200000

Compute Engine

gcsfuse --rename-dir-limit: 200000 \
  BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

Caching daftar kernel

Cache daftar adalah cache untuk respons daftar file dan direktori, atau ls, yang meningkatkan kecepatan operasi daftar. Tidak seperti cache stat dan jenis, yang dikelola oleh Cloud Storage FUSE, cache daftar disimpan di cache halaman kernel dan dikontrol oleh kernel berdasarkan ketersediaan memori.

Mengaktifkan caching daftar kernel paling bermanfaat untuk kasus penggunaan berikut:

  • Beban kerja dengan listingan direktori berulang: konfigurasi ini sangat berguna untuk beban kerja yang sering melakukan listingan direktori lengkap, seperti menjalankan pelatihan AI/ML. Hal ini dapat menguntungkan workload penyajian dan pelatihan.

  • Pemasangan hanya baca: direkomendasikan untuk menggunakan cache daftar dengan pemasangan hanya baca untuk menghindari masalah konsistensi.

Pengaktifan caching daftar kernel harus dilakukan dengan hati-hati dan hanya boleh digunakan jika sistem file benar-benar hanya baca tanpa ada perubahan konten direktori yang diharapkan selama eksekusi tugas. Hal ini karena dengan tanda ini, aplikasi lokal tidak pernah melihat update, terutama jika TTL disetel ke -1.

Misalnya, Client 1 mencantumkan directoryA, yang menyebabkan directoryA menjadi penduduk di cache daftar kernel. Client 2 membuat fileB di bawah directoryA di bucket Cloud Storage. Klien 1 terus memeriksa fileB di directoryA, yang pada dasarnya memeriksa entri cache daftar kernel dan tidak pernah melalui jaringan. Client 1 tidak melihat bahwa ada file baru di direktori karena daftar file terus ditayangkan dari cache daftar kernel lokal. Client 1 kemudian mengalami waktu tunggu habis dan program rusak.

Gunakan petunjuk berikut untuk mengaktifkan caching daftar:

Opsi CLI

gcsfuse --kernel-list-cache-ttl-secs: -1 \
  BUCKET_NAME

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

File konfigurasi

file-system:
 kernel-list-cache-ttl-secs: -1

Google Kubernetes Engine

mountOptions:
    - file-system:kernel-list-cache-ttl-secs:-1

Compute Engine

gcsfuse --kernel-list-cache-ttl-secs: -1 \
  BUCKET_NAME MOUNT_POINT

Dengan:

  • BUCKET_NAME adalah nama bucket Anda.

  • MOUNT_POINT adalah direktori lokal tempat bucket Anda akan dipasang. Contoh, /path/to/mount/point.

Saat Anda menggunakan opsi pemasangan file-system:kernel-list-cache-ttl-secs, nilainya berarti sebagai berikut:

  • Nilai positif mewakili TTL dalam detik untuk menyimpan respons daftar direktori dalam cache halaman kernel.

  • Nilai -1 melewati habis masa berlaku entri dan menampilkan respons daftar dari cache saat tersedia.

Menggunakan cache kompilasi persisten JAX (JIT) dengan Cloud Storage FUSE

JAX mendukung cache Just-In-Time (JIT), cache kompilasi persisten opsional yang menyimpan artefak fungsi yang dikompilasi. Saat menggunakan cache ini, Anda dapat mempercepat eksekusi skrip berikutnya secara signifikan dengan menghindari langkah-langkah kompilasi yang berlebihan.

Untuk mengaktifkan penyiapan cache JIT, Anda harus memenuhi persyaratan berikut:

  • Gunakan JAX versi terbaru: gunakan JAX versi 0.5.1 atau yang lebih baru untuk mendapatkan fitur dan pengoptimalan cache terbaru.

  • Maksimalkan kapasitas cache: untuk mencegah penurunan performa karena penghapusan cache, pertimbangkan untuk menyetel ukuran cache yang tidak terbatas, terutama jika Anda ingin mengganti setelan default. Anda dapat melakukannya dengan menetapkan variabel lingkungan:

    export JAX_COMPILATION_CACHE_MAX_SIZE=-1
    
  • Pastikan YAML pod checkpoint: gunakan konfigurasi checkpoint untuk titik pemasangan cache JIT JAX.

Langkah berikutnya