Konektor untuk PyTorch

Connector for PyTorch dari Cloud Storage adalah produk open source yang didukung oleh Google yang menyediakan integrasi Cloud Storage langsung dengan PyTorch.

Ringkasan

Connector for PyTorch memberikan keuntungan untuk pemuatan data dalam pelatihan serta untuk pembuatan checkpoint dan pemuatan model:

Untuk pemuatan data dalam pelatihan, Connector for PyTorch memberikan keuntungan berikut:

  • Connector for PyTorch berisi pengoptimalan untuk mempercepat pelatihan hingga tiga kali lipat dibandingkan PyTorch default dalam set data yang sebagian besar terdiri dari file yang lebih kecil dari 1 MB.
  • Connector for PyTorch mengimplementasikan primitif set data PyTorch yang dapat digunakan untuk membantu memuat data pelatihan secara efisien dari bucket Cloud Storage.
  • Dukungan untuk set data gaya peta untuk pola akses data acak dan set data gaya iterable untuk pola akses data streaming.
  • Kemampuan untuk mengubah byte data mentah yang didownload ke dalam format pilihan Anda, sehingga PyTorch DataLoader dapat bekerja secara fleksibel dengan array NumPy atau tensor PyTorch.

Untuk pembuatan titik pemeriksaan dan pemuatan model, Connector for PyTorch memberikan keuntungan berikut:

  • Antarmuka pembuatan checkpoint untuk menyimpan checkpoint model dengan mudah dan langsung ke bucket Cloud Storage serta memuat checkpoint model dari bucket.
  • Connector for PyTorch mendukung pembuatan checkpoint PyTorch Lightning dengan menggunakan penerapan DatafluxLightningCheckpoint dari CheckpointIO PyTorch Lightning.
  • Connector for PyTorch menyediakan penerapan StorageWriter dan StorageReader untuk digunakan dengan checkpointing terdistribusi PyTorch. Library demo Connector for PyTorch mencakup contoh kode untuk menggunakannya dalam workload FSDP PyTorch Lightning.
  • Pembuatan checkpoint konektor mencakup dukungan untuk penyimpanan checkpoint asinkron dengan Lightning dan PyTorch dasar.

Untuk mengetahui informasi selengkapnya, lihat halaman landing GitHub Connector for PyTorch.

Framework

Connector for PyTorch didukung di versi framework berikut:

  • Python 3.8 atau yang lebih baru
  • PyTorch Lightning 2.0 atau yang lebih baru
  • PyTorch 2.3.1 atau yang lebih baru

Memulai

Untuk menggunakan Connector for PyTorch, Anda harus memiliki hal berikut:

  • Bucket Cloud Storage yang berisi data yang ingin Anda gunakan.
  • Izin berikut untuk menggunakan data yang disimpan dalam bucket:
    • storage.objects.create
    • storage.objects.list
    • storage.objects.get
    • storage.objects.delete, jika Anda ingin menggunakan download gabungan

Izin ini harus diberikan ke akun yang akan digunakan untuk autentikasi oleh Connector for PyTorch menggunakan peran IAM seperti Storage Object User.

Penginstalan

Untuk menginstal Connector for PyTorch, gunakan perintah berikut:

pip install gcs-torch-dataflux

Konfigurasi

Autentikasi harus diberikan untuk menggunakan Konektor untuk PyTorch Kredensial Default Aplikasi melalui salah satu metode berikut:

  • Saat menjalankan Connector for PyTorch di VM Compute Engine, Kredensial Default Aplikasi akan otomatis menggunakan akun layanan yang terpasang di VM secara default. Untuk mengetahui informasi selengkapnya, lihat Memilih metode autentikasi workload.
  • Kredensial Default Aplikasi juga dapat dikonfigurasi secara manual. Anda dapat login langsung menggunakan Google Cloud CLI:
gcloud auth application-default login

Contoh

Kumpulan lengkap contoh untuk menggunakan Connector for PyTorch dapat ditemukan di direktori demo repositori GitHub Connector for PyTorch. Beberapa contoh di antaranya:

Performa

Connector for PyTorch memiliki pengoptimalan khusus yang dirancang untuk workload ML yang dapat memberikan performa yang jauh lebih baik daripada panggilan API langsung ke Cloud Storage:

  • Untuk mengoptimalkan performa listingan, Connector for PyTorch menggunakan algoritma listingan cepat yang dikembangkan untuk menyeimbangkan beban kerja listingan di antara proses listingan objek yang diparalelkan.
  • Untuk mengoptimalkan performa download file kecil, Connector for PyTorch menggunakan operasi gabungkan untuk menggabungkan set objek yang lebih kecil menjadi satu objek yang lebih besar. Objek gabungan baru ini disimpan di bucket yang sama dengan objek sumber dan memiliki awalan dataflux-composed-objects/ dalam namanya.
  • Upload Multibagian untuk penulisan checkpoint memungkinkan peningkatan performa hingga 10x lipat dibandingkan upload checkpoint standar.

Anda dapat menemukan data performa di GitHub untuk hal-hal berikut:

  • Pelatihan Berbasis Teks Lightning
  • Pelatihan Gambar Kilat
  • Checkpoint node tunggal
  • Pembuatan titik pemeriksaan multi-node

Pertimbangan

Hal berikut harus dipertimbangkan berdasarkan per-workload.

Operasi listingan cepat

Algoritma listingan cepat Connector for PyTorch menyebabkan Connector for PyTorch menggunakan lebih banyak operasi daftar daripada listingan berurutan biasa. Operasi daftar dikenai biaya sebagai operasi Class A.

Penggunaan objek gabungan

Untuk menghindari biaya penyimpanan berlebih dan biaya penghapusan awal saat bekerja dengan objek gabungan sementara, Anda harus memastikan bucket Anda menggunakan setelan berikut:

Objek komposit yang dibuat oleh Connector for PyTorch biasanya dihapus secara otomatis di akhir loop pelatihan, tetapi dalam kasus yang jarang terjadi, objek tersebut mungkin tidak dihapus. Untuk memastikan objek dihapus dari bucket Anda, Anda dapat menjalankan perintah berikut:

gcloud storage rm gs://<my-bucket>/dataflux-composed-objects/ --recursive

Anda dapat menonaktifkan penggunaan objek komposit dengan menyertakan disable_compose=True atau max_composite_object_size=0 di bagian konfigurasi set data yang Anda buat. Namun, menonaktifkan perilaku ini dapat menyebabkan loop pelatihan memerlukan waktu yang jauh lebih lama, terutama saat bekerja dengan file kecil.

Penggunaan objek komposit menyebabkan Cloud Storage mencapai batas QPS dan throughput pada skala yang lebih rendah daripada mendownload file secara langsung. Anda harus menonaktifkan penggunaan objek komposit saat berjalan pada skala multi-node tinggi yang mencapai batas QPS atau throughput project meskipun tanpa menggunakan objek komposit.

Error 429 dan penurunan performa

Saat menggunakan Connector for PyTorch, Anda mungkin menerima error 429 atau waktu eksekusi yang lebih lambat dari yang diharapkan. Ada beberapa alasan umum mengapa hal ini terjadi:

  • Banyak upaya machine learning memilih model pelatihan yang sangat terdistribusi dengan memanfaatkan alat seperti PyTorch Lightning dan Ray. Model ini kompatibel dengan Connector for PyTorch, tetapi sering kali memicu batas frekuensi Cloud Storage.
  • Error 429 yang disertai dengan pesan seperti "Workload ini menggunakan bandwidth keluar terlalu banyak dari Cloud Storage" atau "Workload ini memicu Batas Bandwidth Keluar Cloud Storage" menunjukkan bahwa tingkat throughput data workload Anda melebihi kapasitas maksimum project Anda. Google Cloud Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:
  • Batas QPS dapat memicu error 429 dengan pesan isi yang menunjukkan TooManyRequests, tetapi lebih sering terjadi pada waktu eksekusi yang lebih lambat dari yang diharapkan. Hambatan QPS lebih umum terjadi saat beroperasi pada file kecil dalam volume tinggi. Batas QPS bucket secara alami diskalakan dari waktu ke waktu, sehingga memungkinkan periode pemanasan sering kali menghasilkan performa yang lebih cepat. Untuk mendapatkan detail selengkapnya tentang performa bucket target, lihat tab Observasi saat melihat bucket dari konsol Google Cloud .
  • Jika beban kerja Anda gagal dengan error TooManyRequests yang menyertakan kata kunci dataflux-composed-objects dalam pesan error, menonaktifkan penggunaan objek gabungan adalah langkah pemecahan masalah pertama yang terbaik. Dengan begitu, beban QPS yang disebabkan oleh operasi compose dapat dikurangi jika digunakan dalam skala besar.

Konsumsi memori

Penulisan dan pemuatan checkpoint, termasuk model akhir untuk inferensi, sepenuhnya ditahapkan dalam memori untuk mengoptimalkan performa upload dan download. Setiap mesin harus memiliki RAM kosong yang cukup untuk menyimpan titik pemeriksaan di memori sehingga dapat memanfaatkan peningkatan performa ini.

Mendapatkan dukungan

Anda bisa mendapatkan dukungan, mengirimkan pertanyaan umum, dan meminta fitur baru dengan menggunakan salah satu Google Cloud saluran dukungan resmi. Anda juga bisa mendapatkan dukungan dengan melaporkan masalah di GitHub.

PyTorch, logo PyTorch, dan merek terkait adalah merek dagang The Linux Foundation.