Praktik terbaik untuk pembelajaran mendalam di Azure Databricks

Artikel ini mencakup tips untuk pembelajaran mendalam tentang Azure Databricks dan informasi tentang alat dan pustaka bawaan yang dirancang untuk mengoptimalkan beban kerja pembelajaran mendalam seperti berikut ini:

Databricks Pembelajaran Mesin menyediakan infrastruktur pembelajaran mendalam bawaan dengan Databricks Runtime untuk Pembelajaran Mesin, yang mencakup pustaka pembelajaran mendalam yang paling umum seperti TensorFlow, PyTorch, dan Keras. Ia juga memiliki dukungan GPU bawaan yang sudah dikonfigurasi termasuk driver dan pustaka pendukung.

Databricks Runtime ML juga mencakup semua kemampuan ruang kerja Azure Databricks, seperti pembuatan dan manajemen kluster, manajemen pustaka dan lingkungan, manajemen kode dengan folder Databricks Git, dukungan otomatisasi termasuk Pekerjaan dan API Databricks, dan MLflow terintegrasi untuk pelacakan pengembangan model dan penyebaran model dan penyajian.

Manajemen sumber daya dan lingkungan

Azure Databricks membantu Anda menyesuaikan lingkungan pembelajaran mendalam dan menjaga lingkungan tetap konsisten di seluruh pengguna.

Sesuaikan lingkungan pengembangan

Dengan Databricks Runtime, Anda dapat menyesuaikan lingkungan pengembangan di tingkat notebook, kluster, dan pekerjaan.

Gunakan kebijakan kluster

Anda dapat membuat kebijakan kluster untuk memandu ilmuwan data ke pilihan yang tepat, seperti menggunakan kluster Single Node untuk pengembangan dan menggunakan kluster autoscaling untuk pekerjaan besar.

Pertimbangkan GPU A100 untuk beban kerja pembelajaran mendalam

GPU A100 adalah pilihan yang efisien untuk banyak tugas pembelajaran mendalam, seperti pelatihan dan penyetelan model bahasa besar, pemrosesan bahasa alami, deteksi dan klasifikasi objek, dan mesin rekomendasi.

  • Databricks mendukung GPU A100 di semua cloud. Untuk daftar lengkap jenis GPU yang didukung, lihat Jenis instans yang didukung.
  • GPU A100 biasanya memiliki ketersediaan terbatas. Hubungi penyedia cloud Anda untuk alokasi sumber daya, atau pertimbangkan untuk memesan kapasitas terlebih dahulu.

Praktik terbaik untuk memuat data

Penyimpanan data cloud biasanya tidak dioptimalkan untuk I/O, yang dapat menjadi tantangan bagi model pembelajaran mendalam yang membutuhkan himpunan data besar. Databricks Runtime ML mencakup Delta Lake dan Petastorm untuk mengoptimalkan throughput data untuk aplikasi pembelajaran mendalam.

Databricks merekomendasikan penggunaan tabel Delta Lake untuk penyimpanan data. Delta Lake menyederhanakan ETL dan memungkinkan Anda mengakses data secara efisien. Khusus untuk gambar, Delta Lake membantu mengoptimalkan konsumsi untuk pelatihan dan inferensi. Solusi referensi untuk aplikasi gambar memberikan contoh pengoptimalan ETL untuk gambar menggunakan Delta Lake.

Petastorm menyediakan API yang memungkinkan Anda menyiapkan data dalam format parket untuk digunakan oleh TensorFlow, Keras, atau PyTorch. SparkConverter API menyediakan integrasi Spark DataFrame. Petastorm juga menyediakan data sharding untuk pemrosesan terdistribusi. Lihat Muat data menggunakan Petastorm untuk detailnya.

Praktik terbaik untuk melatih model pembelajaran mendalam

Databricks merekomendasikan penggunaan Databricks Runtime untuk Pembelajaran Mesin dan pelacakan MLflow dan autologging untuk semua pelatihan model.

Mulailah dengan kluster Single Node

Kluster GPU (hanya driver) Single Node biasanya tercepat dan paling hemat biaya untuk pengembangan model pembelajaran mendalam. Satu node dengan 4 GPU kemungkinan akan lebih cepat untuk pelatihan pembelajaran mendalam yang masing-masing 4 node pekerja dengan 1 GPU. Ini karena pelatihan terdistribusi menimbulkan overhead komunikasi jaringan.

Kluster Single Node adalah pilihan yang baik selama pengembangan yang cepat dan berulang dan untuk pelatihan model pada data ukuran kecil hingga menengah. Jika himpunan data Anda cukup besar untuk membuat pelatihan lambat pada satu mesin, pertimbangkan untuk pindah ke komputasi multi-GPU dan terdistribusi merata.

Menggunakan metrik TensorBoard dan kluster untuk memantau proses pelatihan

TensorBoard sudah diinstal sebelumnya di Databricks Runtime ML. Anda dapat menggunakannya di dalam notebook atau di tab terpisah. Lihat TensorBoard untuk detailnya.

Metrik kluster tersedia di semua runtime Databricks. Anda dapat memeriksa penggunaan jaringan, prosesor, dan memori untuk memeriksa hambatan. Lihat metrik kluster untuk detailnya.

Optimalkan performa untuk pembelajaran mendalam

Anda dapat, dan sebaiknya, menggunakan teknik pengoptimalan performa pembelajaran mendalam pada Databricks.

Penghentian awal

Penghentian awal memantau nilai metrik yang dihitung pada set validasi dan menghentikan pelatihan saat metrik berhenti membaik. Ini adalah pendekatan yang lebih baik daripada menebak sejumlah besar epoch untuk diselesaikan. Setiap pustaka pembelajaran mendalam menyediakan native API untuk penghentian awal; misalnya, lihat EarlyStopping callback API untuk TensorFlow/Keras dan untuk PyTorch Lightning. Untuk contoh buku catatan, lihat Buku catatan contoh TensorFlow Keras.

Penyetelan ukuran batch

Penyetelan ukuran batch membantu mengoptimalkan pemanfaatan GPU. Jika ukuran batch terlalu kecil, perhitungan tidak dapat sepenuhnya menggunakan kemampuan GPU. Anda dapat menggunakan metrik kluster untuk melihat metrik GPU.

Sesuaikan ukuran batch bersamaan dengan tingkat pembelajaran. Aturan praktis yang baik ialah, ketika Anda meningkatkan ukuran batch sebesar n, tingkatkan tingkat pembelajaran sebesar sqrt(n). Saat menyetel secara manual, coba ubah ukuran batch dengan faktor 2 atau 0,5. Kemudian lanjutkan penyetelan untuk mengoptimalkan performa, baik secara manual atau dengan menguji berbagai hiperparameter menggunakan alat otomatis seperti Hyperopt.

Pemelajaran transfer

Dengan pembelajaran transfer, Anda mulai dengan model yang sebelumnya terlatih dan memodifikasinya sesuai kebutuhan untuk aplikasi Anda. Transfer learning dapat secara signifikan mengurangi waktu yang dibutuhkan untuk melatih dan menyetel model baru. Lihat Fiturisasi untuk pembelajaran transfer untuk informasi lebih lanjut dan contoh.

Pindah ke pelatihan terdistribusi

Databricks Runtime ML mencakup HorovodRunner, spark-tensorflow-distributor, TorchDistributor dan Hyperopt untuk memfasilitasi perpindahan dari node tunggal ke pelatihan terdistribusi.

HorovodRunner

Horovod adalah proyek sumber terbuka yang menskalakan pelatihan pembelajaran mendalam ke komputasi multi-GPU atau terdistribusi. HorovodRunner, dibangun oleh Databricks dan termasuk dalam Databricks Runtime ML, adalah pembungkus Horovod yang menyediakan kompatibilitas Spark. API memungkinkan Anda menskalakan kode single-node dengan perubahan minimal. HorovodRunner bekerja dengan TensorFlow, Keras, dan PyTorch.

spark-tensorflow-distributor

spark-tensorflow-distributor adalah paket native sumber terbuka di TensorFlow untuk pelatihan terdistribusi dengan TensorFlow pada kluster Spark. Lihat contoh notebook.

TorchDistributor

TorchDistributor adalah modul sumber terbuka di PySpark yang memfasilitasi pelatihan terdistribusi dengan PyTorch pada kluster Spark, yang memungkinkan Anda meluncurkan pekerjaan pelatihan PyTorch sebagai pekerjaan Spark. Lihat Pelatihan terdistribusi dengan TorchDistributor.

Hyperopt

Hyperopt menyediakan penyetelan hiperparameter adaptif untuk pembelajaran mesin. Dengan kelas SparkTrials, Anda dapat secara berulang menyetel parameter untuk model pembelajaran mendalam secara paralel di seluruh kluster.

Praktik terbaik untuk inferensi

Bagian ini berisi tips umum tentang menggunakan model untuk inferensi dengan Azure Databricks.

  • Untuk meminimalkan biaya, pertimbangkan CPU dan GPU yang dioptimalkan untuk inferensi seperti NC T4_v3-series. Tidak ada rekomendasi yang jelas, karena pilihan terbaik tergantung pada ukuran model, dimensi data, dan variabel lainnya.

  • Gunakan MLflow untuk menyederhanakan penyebaran dan servis model. MLflow dapat mencatat model pembelajaran mendalam apa pun, termasuk logika preprocessing dan postprocessing kustom. Model di Unity Catalog atau model yang terdaftar di Registri Model Ruang Kerja dapat disebarkan untuk inferensi batch, streaming, atau online.

Pelayanan online

Pilihan terbaik untuk pelayanan latensi rendah ialah melayani secara online di belakang REST API. Databricks menyediakan Model Melayani untuk inferensi online. Model Serving menyediakan antarmuka terpadu untuk menyebarkan, mengatur, dan mengkueri model AI dan mendukung penyajian berikut:

  • Model kustom. Ini adalah model Python yang dimas dalam format MLflow. Contohnya termasuk model transformator scikit-learn, XGBoost, PyTorch, dan Hugging Face.
  • Model terbuka canggih yang disediakan oleh FOUNDATION Model API. Model ini adalah arsitektur model fondasi yang dikumpulkan yang mendukung inferensi yang dioptimalkan. Misalnya, model dasar seperti Llama-2-70B-chat, BGE-Large, dan Mistral-7B tersedia untuk digunakan segera dengan harga bayar per token . Untuk beban kerja yang memerlukan jaminan performa dan varian model yang disempurnakan, Anda dapat menyebarkannya dengan throughput yang disediakan.
  • Model eksternal. Ini adalah model yang dihosting di luar Databricks. Misalnya, model fondasi seperti, OpenAI GPT-4, Anthropic's Claude, dan lainnya. Titik akhir yang melayani model ini dapat diatur secara terpusat dan pelanggan dapat menetapkan batas tarif dan kontrol akses untuk mereka.

Atau, MLflow menyediakan API untuk disebarkan ke berbagai layanan terkelola untuk inferensi online, serta API untuk membuat kontainer Docker untuk solusi penyajian kustom.

Layanan terkelola umum lainnya untuk inferensi online meliputi:

Inferensi batch dan streaming

Penilaian batch dan streaming mendukung throughput tinggi, skor berbiaya rendah pada latensi serendah menit. Untuk informasi selengkapnya, lihat Menggunakan MLflow untuk inferensi model.

  • Jika Anda berharap untuk mengakses data untuk inferensi lebih dari sekali, pertimbangkan untuk membuat pekerjaan preprocessing ke ETL data ke dalam tabel Delta Lake sebelum menjalankan pekerjaan inferensi. Dengan cara ini, biaya menelan dan menyiapkan data tersebar di beberapa pembacaan data. Memisahkan preprocessing dari inferensi juga memungkinkan Anda untuk memilih perangkat keras yang berbeda untuk setiap pekerjaan untuk mengoptimalkan biaya dan performa. Misalnya, Anda dapat menggunakan CPU untuk ETL dan GPU untuk inferensi.
  • Gunakan Spark Pandas UDF untuk menskalakan batch dan inferensi streaming di seluruh kluster.