Aracılığıyla paylaş


Derin öğrenme model çıkarımı performans ayarlama kılavuzu

Bu bölümde, Azure Databricks'te model çıkarımı için hata ayıklama ve performans ayarlamaya yönelik bazı ipuçları sağlanır. Genel bakış için derin öğrenme çıkarım iş akışına bakın.

Genellikle model çıkarımında iki ana bölüm vardır: veri girişi işlem hattı ve model çıkarımı. Veri giriş işlem hattı, veri G/Ç girişi üzerinde yoğundur ve hesaplamada model çıkarımı ağırdır. İş akışının performans sorununu belirlemek basittir. Bu konuyla ilgili yaklaşımlar aşağıda verilmiştir:

  • Modeli önemsiz bir modele düşürün ve saniye başına örnekleri ölçün. Tam modelle önemsiz model arasındaki uçtan uca zaman farkı en düşük düzeydeyse, veri girişi işlem hattı büyük olasılıkla bir performans sorunudur, aksi takdirde model çıkarımı performans sorunudur.
  • GPU ile model çıkarımı çalıştırılıyorsa GPU kullanım ölçümlerini denetleyin. GPU kullanımı sürekli yüksek değilse veri girişi işlem hattı performans sorunu olabilir.

Veri girişi işlem hattını iyileştirme

GPU'ları kullanmak, model çıkarımı için çalışma hızını verimli bir şekilde iyileştirebilir. GPU'lar ve diğer hızlandırıcılar daha hızlı hale geldikçe, veri girişi işlem hattının talebe ayak uydurması önemlidir. Veri girişi işlem hattı, verileri Spark Veri Çerçevelerine okur, dönüştürür ve model çıkarımı için giriş olarak yükler. Veri girişi performans sorunuysa G/Ç aktarım hızını artırmaya yönelik bazı ipuçları şunlardır:

  • Toplu iş başına en fazla kaydı ayarlayın. Maksimum kayıt sayısının daha fazla olması, kayıtlar belleğe sığabildiği sürece UDF işlevini çağırmak için G/Ç ek yükünü azaltabilir. Toplu iş boyutunu ayarlamak için aşağıdaki yapılandırmayı ayarlayın:

    spark.conf.set("spark.sql.execution.arrow.maxRecordsPerBatch", "5000")
    
  • Pandas UDF'de giriş verileri önişlenirken verileri toplu olarak yükleyin ve önceden işleyerek.

    TensorFlow için Azure Databricks, tf.data API'sinin kullanılmasını önerir. Bir işlevde ve çağrıda batch prefetch ayar yaparak num_parallel_calls ve önceden oluşturma ve toplu işlem için eşlemeyi paralel olarak map ayrıştırabilirsiniz.

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

    Azure Databricks, PyTorch için DataLoader sınıfının kullanılmasını önerir. Toplu işlem ve num_workers paralel veri yükleme için ayarlayabilirsinizbatch_size.

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