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:
- Delta dan Petastorm untuk memuat data
- Horovod dan Hyperopt untuk menyejajarkan pelatihan
- Pandas UDF untuk inferensi
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 pustaka Python cakupan notebook atau pustaka R cakupan notebook untuk menggunakan kumpulan atau versi pustaka tertentu tanpa memengaruhi pengguna kluster lainnya.
- Instal pustaka di tingkat kluster untuk standarisasi versi untuk tim atau proyek.
- Siapkan pekerjaan Azure Databricks untuk memastikan bahwa tugas berulang berjalan dalam lingkungan yang konsisten dan tidak berubah.
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.
- Saat Anda mencatat model dari Azure Databricks, MLflow secara otomatis menyediakan kode inferensi untuk menerapkan model sebagai pandas UDF.
- Anda juga dapat mengoptimalkan alur inferensi Anda lebih lanjut, terutama untuk model pembelajaran mendalam yang besar. Lihat solusi referensi untuk ETL gambar misalnya.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk