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 yaparaknum_parallel_calls
ve önceden oluşturma ve toplu işlem için eşlemeyi paralel olarakmap
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)