Konektor Cloud Storage untuk PyTorch adalah produk open source yang didukung oleh Google dan menyediakan integrasi Cloud Storage langsung dengan PyTorch.
Ringkasan
Connector for PyTorch memberikan keuntungan untuk pemuatan data dalam pelatihan serta untuk checkpointing dan pemuatan model:
Untuk pemuatan data dalam pelatihan, Connector for PyTorch memberikan keuntungan berikut:
- Konektor untuk PyTorch berisi pengoptimalan untuk membuat pelatihan hingga tiga kali lebih cepat daripada PyTorch default dalam set data yang sebagian besar terdiri dari file yang lebih kecil dari 1 MB.
- Konektor untuk PyTorch mengimplementasikan primitive set data PyTorch yang dapat digunakan untuk membantu memuat data pelatihan secara efisien dari bucket Cloud Storage.
- Dukungan untuk set data bergaya peta untuk pola akses data acak dan set data bergaya iterasi untuk pola akses data streaming.
- Kemampuan untuk mengubah byte mentah data yang didownload menjadi format pilihan Anda, sehingga PyTorch DataLoader dapat bekerja secara fleksibel dengan array NumPy atau tensor PyTorch.
Untuk pembuatan checkpoint dan pemuatan model, Connector for PyTorch memberikan keuntungan berikut:
- Antarmuka checkpointing untuk menyimpan checkpoint model dengan mudah dan langsung ke bucket Cloud Storage serta memuat checkpoint model dari bucket.
- Connector for PyTorch mendukung checkpointing PyTorch Lightning dengan menggunakan penerapan
DatafluxLightningCheckpoint
dariCheckpointIO
PyTorch Lightning. - Connector for PyTorch menyediakan implementasi
StorageWriter
danStorageReader
untuk digunakan dengan checkpoint terdistribusi PyTorch. Library demo Connector for PyTorch menyertakan contoh kode untuk menggunakannya dalam beban kerja FSDP PyTorch Lightning. - Pemeriksaan titik henti sementara konektor mencakup dukungan untuk penyimpanan titik henti sementara asinkron dengan Lightning dan PyTorch dasar.
Untuk mengetahui informasi selengkapnya, lihat halaman landing GitHub Konektor untuk 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.
- Lihat penggunaan objek komposit untuk setelan tambahan yang direkomendasikan untuk bucket.
- Izin berikut untuk menggunakan data yang disimpan di 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 Connector for PyTorch untuk autentikasi dengan menggunakan peran IAM seperti Storage Object User.
Penginstalan
Untuk menginstal Konektor untuk PyTorch, gunakan perintah berikut:
pip install gcs-torch-dataflux
Konfigurasi
Autentikasi harus diberikan untuk menggunakan Konektor untuk Kredensial Default Aplikasi PyTorch melalui salah satu metode berikut:
- Saat menjalankan Konektor untuk PyTorch di VM Compute Engine, Kredensial Default Aplikasi akan otomatis menggunakan akun layanan yang terpasang di VM secara default. Untuk 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:
- Jupyter Notebook awal dasar (dihosting oleh Google Colab).
- Panduan workload pelatihan segmentasi gambar menyeluruh.
- Contoh menyeluruh dan notebook untuk integrasi PyTorch Lightning.
Performa
Connector for PyTorch memiliki pengoptimalan khusus yang dirancang untuk beban kerja ML yang dapat memberikan performa yang jauh lebih baik daripada panggilan API langsung ke Cloud Storage:
- Untuk mengoptimalkan performa listingan, Konektor untuk 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 compose untuk menyambungkan kumpulan objek yang lebih kecil
menjadi satu objek yang lebih besar. Objek gabungan baru ini disimpan dalam bucket
yang sama dengan objek sumber dan memiliki awalan
dataflux-composed-objects/
dalam namanya. - Upload Multibagian untuk penulisan checkpoint memungkinkan peningkatan performa hingga 10x dibandingkan upload checkpoint standar.
Anda dapat menemukan data performa di GitHub untuk hal berikut:
- Pelatihan Berbasis Teks Lightning
- Pelatihan Gambar Kilat
- Checkpoint node tunggal
- Pemeriksaan titik henti sementara 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 kelebihan biaya penyimpanan dan biaya penghapusan awal saat menggunakan objek gabungan sementara, Anda harus memastikan bucket menggunakan setelan berikut:
- Menonaktifkan Hapus untuk sementara
- Kunci Bucket dinonaktifkan
- Menonaktifkan Pembuatan Versi Objek
- Penyimpanan standar sebagai kelas penyimpanan untuk bucket dan objek.
Objek gabungan yang dibuat oleh Connector for PyTorch biasanya otomatis dihapus di akhir loop pelatihan, tetapi dalam kasus yang jarang terjadi, objek tersebut mungkin tidak dihapus. Untuk memastikan objek dihapus dari bucket, 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 menangani file
kecil.
Penggunaan objek gabungan menyebabkan Cloud Storage mencapai batas throughput dan QPS dalam skala yang lebih rendah daripada mendownload file secara langsung. Anda harus menonaktifkan penggunaan objek komposit saat berjalan pada skala multi-node tinggi saat Anda mencapai batas throughput atau QPS project meskipun tanpa menggunakan objek komposit.
Error 429 dan performa yang menurun
Saat menggunakan Connector for PyTorch, Anda mungkin menerima error 429 atau waktu eksekusi yang lebih lambat dari yang diharapkan. Ada beberapa alasan umum terjadinya hal ini:
- Banyak upaya machine learning memilih model pelatihan yang sangat terdistribusi yang memanfaatkan alat seperti PyTorch Lightning dan Ray. Model ini kompatibel dengan Connector for PyTorch, tetapi sering kali dapat memicu batas kecepatan Cloud Storage.
- Error 429 yang disertai dengan pesan seperti "Workload ini menggunakan terlalu banyak bandwidth keluar dari Cloud Storage" atau "Workload ini memicu Batas Bandwidth Keluar Cloud Storage" menunjukkan bahwa kecepatan throughput data dari workload Anda melebihi kapasitas maksimum project Google Cloud Anda. Untuk mengatasi masalah ini, lakukan langkah-langkah
berikut:
- Pastikan beban kerja lain di project Anda tidak menggunakan bandwidth yang berlebihan.
- Ajukan permintaan penambahan kuota.
- Sesuaikan opsi
list_retry_config
dandownload_retry_config
di bagian konfigurasi set data yang Anda buat untuk menyesuaikan waktu tunggu percobaan ulang dan memaksimalkan performa.
- Batas QPS dapat memicu error 429 dengan pesan isi yang menunjukkan
TooManyRequests
, tetapi biasanya muncul dalam waktu eksekusi yang lebih lambat dari yang diharapkan. Bottleneck QPS lebih umum terjadi saat beroperasi pada file kecil dalam volume tinggi. Batas QPS bucket berskala secara alami dari waktu ke waktu, sehingga memungkinkan periode pemanasan sering kali dapat 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 kuncidataflux-composed-objects
dalam pesan error, menonaktifkan penggunaan objek gabungan adalah langkah pemecahan masalah pertama yang terbaik. Tindakan ini dapat mengurangi beban QPS yang disebabkan oleh operasi compose saat digunakan dalam skala besar.
Konsumsi memori
Operasi tulis dan pemuatan checkpoint, termasuk model akhir untuk inferensi, sepenuhnya di-stage dalam memori untuk mengoptimalkan performa upload dan download. Setiap mesin harus memiliki RAM kosong yang cukup untuk melakukan staging pada checkpoint-nya 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 saluran dukungan Google Cloud resmi. Anda juga bisa mendapatkan dukungan dengan melaporkan masalah di GitHub.