Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Hyperopt versi sumber terbuka tidak lagi dipertahankan .
Hyperopt tidak termasuk dalam Databricks Runtime untuk Pembelajaran Mesin setelah 16.4 LTS ML. Azure Databricks merekomendasikan penggunaan
Praktik terbaik
- Pendekatan bayesian bisa jauh lebih efisien daripada pencarian grid dan pencarian acak. Oleh karena itu, dengan algoritma Hyperopt Tree of Parzen Estimators (TPE), Anda dapat menjelajahi lebih banyak hyperparameter dan rentang yang lebih besar. Menggunakan pengetahuan domain untuk membatasi domain pencarian dapat mengoptimalkan penyetelan dan menghasilkan hasil yang lebih baik.
- Saat Anda menggunakan
hp.choice(), Hyperopt mengembalikan indeks daftar pilihan. Oleh karena itu parameter yang masuk ke MLflow juga merupakan indeks. Gunakanhyperopt.space_eval()untuk mengambil nilai parameter. - Untuk model dengan waktu pelatihan yang lama, mulailah bereksperimen dengan himpunan data kecil dan banyak hyperparameter. Gunakan MLflow untuk mengidentifikasi model berkinerja terbaik dan menentukan hyperparameter mana yang dapat diperbaiki. Dengan cara ini, Anda dapat mengurangi ruang parameter saat Anda bersiap untuk menyetel dalam skala besar.
- Manfaatkan dukungan Hyperopt untuk dimensi bersyarat dan hyperparameter. Misalnya, ketika Anda mengevaluasi beberapa rasa penurunan gradien, alih-alih membatasi ruang hyperparameter hanya untuk hyperparameter umum, Anda dapat memiliki Hyperopt termasuk hyperparameter bersyarat — yang hanya sesuai untuk subset rasa. Untuk informasi selengkapnya tentang menggunakan parameter bersyarat, lihat Menentukan ruang pencarian.
- Saat menggunakan
SparkTrials, konfigurasikan paralelisme dengan tepat untuk kluster cpu saja versus GPU yang diaktifkan. Di Azure Databricks, kluster CPU, dan GPU menggunakan jumlah rangkaian eksekutor yang berbeda per node pekerja. Kluster CPU menggunakan beberapa utas eksekutor per node. Kluster GPU hanya menggunakan satu utas eksekutor per node untuk menghindari konflik di antara beberapa tugas Spark yang mencoba menggunakan GPU yang sama. Meskipun ini umumnya optimal untuk pustaka yang ditulis untuk GPU, itu berarti paralelisme maksimum berkurang pada kluster GPU, jadi ketahuilah berapa banyak GPU yang dapat digunakan setiap uji coba saat memilih jenis instans GPU. Lihat Kluster berkemampuan GPU untuk detailnya. - Jangan gunakan
SparkTrialspada kluster penskalaan otomatis. Hyperopt memilih nilai paralelisme saat eksekusi dimulai. Jika kluster nantinya skala otomatis, Hyperopt tidak akan dapat memanfaatkan ukuran kluster baru.
Pemecahan masalah
- Hilangnya NaN yang dilaporkan (bukan angka) biasanya berarti fungsi objektif diteruskan ke NaN yang dikembalikan
fmin(). Ini tidak memengaruhi lari lain dan Anda dapat dengan aman mengabaikannya. Untuk mencegah hasil ini, coba sesuaikan ruang hyperparameter atau modifikasi fungsi objektif. - Karena Hyperopt menggunakan algoritma pencarian stokastik, kerugian biasanya tidak berkurang monoton dengan setiap eksekusi. Namun, metode ini sering menemukan hyperparameter terbaik lebih cepat daripada metode lain.
- Baik Hyperopt dan Spark mengalami kelebihan yang dapat mendominasi durasi uji coba untuk uji coba singkat (puluhan detik rendah). Kecepatan yang Anda amati mungkin kecil atau bahkan nol.
Contoh notebook: Praktik terbaik untuk himpunan data dengan ukuran yang berbeda
SparkTrials menjalankan uji coba pada node pekerja Spark. Notebook ini menyediakan panduan tentang cara memindahkan himpunan data dari berbagai urutan besarnya ke simpul pekerja saat menggunakan SparkTrials.