Bagikan melalui


Panduan penyetelan performa inferensi model pembelajaran mendalam

Bagian ini memberikan beberapa tips untuk penelusuran kesalahan dan penyetelan performa untuk inferensi model di Azure Databricks. Untuk gambaran umum, lihat alur kerja inferensi pembelajaran mendalam.

Biasanya ada dua bagian utama dalam inferensi model: alur input data dan inferensi model. Alur input data berat pada input data I/O dan inferensi model berat pada perhitungan. Menentukan hambatan alur kerja itu sederhana. Berikut adalah beberapa pendekatan:

  • Mengurangi model ke model sepele dan mengukur contoh per detik. Jika perbedaan akhir ke waktu akhir antara model penuh dan model sepele minimal, alur input data kemungkinan merupakan hambatan, jika tidak, inferensi model adalah hambatan.
  • Jika menjalankan inferensi model dengan GPU, periksa metrik pemanfaatan GPU. Jika pemanfaatan GPU tidak terus-menerus tinggi, alur input data mungkin menjadi hambatan.

Mengoptimalkan alur input data

Menggunakan GPU dapat secara efisien mengoptimalkan kecepatan berjalan untuk inferensi model. Saat GPU dan akselerator lainnya menjadi lebih cepat, penting bahwa alur input data mengikuti permintaan. Alur input data membaca data menjadi Spark Dataframes, mengubahnya, dan memuatnya sebagai input untuk inferensi model. Jika input data adalah hambatan, berikut adalah beberapa tips untuk meningkatkan throughput I/O:

  • Atur catatan maks per batch. Jumlah catatan maks yang lebih besar dapat mengurangi overhead I/O guna memanggil fungsi UDF selama catatan dapat masuk ke dalam memori. Untuk mengatur ukuran batch, atur konfigurasi berikut:

    spark.conf.set("spark.sql.execution.arrow.maxRecordsPerBatch", "5000")
    
  • Muat data dalam batch dan prefetch saat praproses data input di pandas UDF.

    Untuk TensorFlow, Azure Databricks merekomendasikan untuk menggunakan tf.data API. Anda dapat mengurai peta secara paralel dengan mengatur num_parallel_calls dalam fungsi map dan memanggil prefetch dan batch untuk prefetching dan batching.

    dataset.map(parse_example, num_parallel_calls=num_process).prefetch(prefetch_size).batch(batch_size)
    

    Untuk PyTorch, Azure Databricks merekomendasikan untuk menggunakan kelas DataLoader. Anda dapat mengatur batch_size untuk batching dan num_workers untuk pemuatan data paralel.

    torch.utils.data.DataLoader(images, batch_size=batch_size, num_workers=num_process)