Share via


Azure Databricks'de derin öğrenme için en iyi yöntemler

Bu makale, Azure Databricks hakkında derin öğrenme ipuçları ve aşağıdaki gibi derin öğrenme iş yüklerini iyileştirmek için tasarlanmış yerleşik araçlar ve kitaplıklar hakkında bilgi içerir:

Databricks Machine Learning, TensorFlow, PyTorch ve Keras gibi en yaygın derin öğrenme kitaplıklarını içeren Machine Learning için Databricks Runtime ile önceden oluşturulmuş derin öğrenme altyapısı sağlar. Ayrıca sürücüler ve destekleyici kitaplıklar da dahil olmak üzere yerleşik, önceden yapılandırılmış GPU desteğine sahiptir.

Databricks Runtime ML ayrıca Azure Databricks çalışma alanının küme oluşturma ve yönetimi, kitaplık ve ortam yönetimi, Databricks Git klasörleriyle kod yönetimi, Databricks İşleri ve API'leri dahil otomasyon desteği ve model geliştirme izleme ve model dağıtımı ve hizmeti için tümleşik MLflow gibi tüm özelliklerini içerir.

Kaynak ve ortam yönetimi

Azure Databricks hem derin öğrenme ortamınızı özelleştirmenize hem de ortamın kullanıcılar arasında tutarlı olmasını sağlamanıza yardımcı olur.

Geliştirme ortamını özelleştirme

Databricks Runtime ile geliştirme ortamınızı not defteri, küme ve iş düzeylerinde özelleştirebilirsiniz.

Küme ilkelerini kullanma

Veri bilimcilerini geliştirme için Tek Düğüm kümesi kullanma ve büyük işler için otomatik ölçeklendirme kümesi kullanma gibi doğru seçimlere yönlendirmek için küme ilkeleri oluşturabilirsiniz.

Derin öğrenme iş yükleri için A100 GPU'ları göz önünde bulundurun

A100 GPU'lar, büyük dil modellerini eğitip ayarlama, doğal dil işleme, nesne algılama ve sınıflandırma ve öneri altyapıları gibi birçok derin öğrenme görevi için verimli bir seçimdir.

  • Databricks, tüm bulutlarda A100 GPU'ları destekler. Desteklenen GPU türlerinin tam listesi için bkz . Desteklenen örnek türleri.
  • A100 GPU'lar genellikle sınırlı kullanılabilirliğe sahiptir. Kaynak ayırma için bulut sağlayıcınıza başvurun veya kapasiteyi önceden ayırmayı göz önünde bulundurun.

Veri yükleme için en iyi yöntemler

Bulut veri depolaması genellikle G/Ç için iyileştirilmemiştir ve bu da büyük veri kümeleri gerektiren derin öğrenme modelleri için zor olabilir. Databricks Runtime ML, derin öğrenme uygulamaları için veri aktarım hızını iyileştirmek için Delta Lake ve Petastorm içerir.

Databricks, veri depolama için Delta Lake tablolarının kullanılmasını önerir. Delta Lake, ETL'i basitleştirir ve verilere verimli bir şekilde erişmenizi sağlar. Özellikle görüntüler için Delta Lake hem eğitim hem de çıkarım için alımı iyileştirmeye yardımcı olur. Görüntü uygulamaları için başvuru çözümü, Delta Lake kullanan görüntüler için ETL'yi iyileştirme örneği sağlar.

Petastorm, Verileri TensorFlow, Keras veya PyTorch tarafından kullanılmak üzere parquet biçiminde hazırlamanıza olanak sağlayan API'ler sağlar. SparkConverter API'sinde Spark DataFrame tümleştirmesi sağlanır. Petastorm ayrıca dağıtılmış işleme için veri parçalama da sağlar. Ayrıntılar için bkz . Petastorm kullanarak veri yükleme.

Derin öğrenme modellerini eğiten en iyi yöntemler

Databricks, tüm model eğitimi için Machine Learning ve MLflow izleme ve otomatik kaydetme için Databricks Runtime'ın kullanılmasını önerir.

Tek Düğümlü kümeyle başlama

Tek Düğümlü (yalnızca sürücü) GPU kümesi genellikle derin öğrenme modeli geliştirme için en hızlı ve en uygun maliyetli kümedir. 4 GPU'ya sahip bir düğüm, her biri 1 GPU'ya sahip 4 çalışan düğümünü derin öğrenme eğitimi için daha hızlı olabilir. Bunun nedeni dağıtılmış eğitimin ağ iletişimi ek yüküne neden olmasıdır.

Tek Düğümlü küme, hızlı, yinelemeli geliştirme sırasında ve küçük ve orta boyutlu verilerde modelleri eğitmek için iyi bir seçenektir. Veri kümeniz tek bir makinede eğitimi yavaşlatacak kadar büyükse çoklu GPU'ya ve hatta dağıtılmış işlem ortamına geçmeyi göz önünde bulundurun.

TensorBoard ve küme ölçümlerini kullanarak eğitim sürecini izleme

TensorBoard, Databricks Runtime ML'ye önceden yüklenmiştir. Bunu bir not defteri içinde veya ayrı bir sekmede kullanabilirsiniz. Ayrıntılar için bkz . TensorBoard .

Küme ölçümleri tüm Databricks çalışma zamanlarında kullanılabilir. Performans sorunlarını incelemek için ağ, işlemci ve bellek kullanımını inceleyebilirsiniz. Ayrıntılar için bkz . küme ölçümleri .

Derin öğrenme için performansı iyileştirme

Databricks'te derin öğrenme performansı iyileştirme tekniklerini kullanabilir ve kullanabilirsiniz.

Erken durdurma

Erken durdurma, doğrulama kümesinde hesaplanan ölçümün değerini izler ve ölçüm geliştirildiğinde eğitimi durdurur. Bu, tamamlanması gereken çok sayıda dönem tahmin etmekten daha iyi bir yaklaşımdır. Her derin öğrenme kitaplığı erken durdurma için yerel bir API sağlar; örneğin TensorFlow/Keras ve PyTorch Lightning için EarlyStopping geri çağırma API'lerine bakın. Örnek not defteri için bkz . TensorFlow Keras örnek not defteri.

Toplu iş boyutu ayarlama

Toplu iş boyutu ayarlama, GPU kullanımını iyileştirmeye yardımcı olur. Toplu iş boyutu çok küçükse, hesaplamalar GPU özelliklerini tam olarak kullanamaz. GPU ölçümlerini görüntülemek için küme ölçümlerini kullanabilirsiniz.

Toplu iş boyutunu öğrenme hızıyla birlikte ayarlayın. Toplu iş boyutunu n artırdığınızda öğrenme hızını sqrt(n) ile artırmanız iyi bir kuraldır. Elle ayarlarken toplu iş boyutunu 2 veya 0,5 kat değiştirmeyi deneyin. Ardından performansı el ile veya Hyperopt gibi otomatik bir araç kullanarak çeşitli hiper parametreleri test ederek iyileştirmeye devam edin.

Öğrenmeyi aktarma

Öğrenme aktarımıyla, daha önce eğitilmiş bir modelle başlarsınız ve uygulamanız için gerektiği gibi değiştirirsiniz. Öğrenme aktarımı, yeni bir modeli eğitmek ve ayarlamak için gereken süreyi önemli ölçüde azaltabilir. Daha fazla bilgi ve örnek için bkz . Öğrenme aktarımı için özellik kazandırma.

Dağıtılmış eğitime gitme

Databricks Runtime ML, tek düğümlü eğitimden dağıtılmış eğitime geçişi kolaylaştırmak için HorovodRunner, spark-tensorflow-distributor, TorchDistributor ve Hyperopt içerir.

HorovodRunner

Horovod, derin öğrenme eğitimini çoklu GPU veya dağıtılmış hesaplamaya ölçeklendirin açık kaynak bir projedir. Databricks tarafından oluşturulan ve Databricks Runtime ML'ye dahil edilen HorovodRunner, Spark uyumluluğu sağlayan bir Horovod sarmalayıcısıdır. API, tek düğümlü kodu en az değişiklikle ölçeklendirmenize olanak tanır. HorovodRunner TensorFlow, Keras ve PyTorch ile çalışır.

spark-tensorflow-distributor

spark-tensorflow-distributor , Spark kümelerinde TensorFlow ile dağıtılmış eğitim için TensorFlow'da açık kaynak bir yerel pakettir. Örnek not defterine bakın.

TorchDistributor

TorchDistributor, PyTorch eğitim işlerini Spark işleri olarak başlatmanızı sağlayan, Spark kümelerinde PyTorch ile dağıtılmış eğitimi kolaylaştıran, PySpark'ta açık kaynak bir modüldür. Bkz . TorchDistributor ile dağıtılmış eğitim.

Hyperopt

Hyperopt , makine öğrenmesi için uyarlamalı hiper parametre ayarlaması sağlar. SparkTrials sınıfıyla, derin öğrenme modelleri için parametreleri küme genelinde paralel olarak yinelemeli olarak ayarlayabilirsiniz.

Çıkarım için en iyi yöntemler

Bu bölüm, Azure Databricks ile çıkarım için modelleri kullanma hakkında genel ipuçları içerir.

  • Maliyetleri en aza indirmek için hem CPU'ları hem de NC T4_v3 serisi gibi çıkarım için iyileştirilmiş GPU'ları göz önünde bulundurun. En iyi seçenek model boyutuna, veri boyutlarına ve diğer değişkenlere bağlı olduğundan net bir öneri yoktur.

  • Dağıtım ve model sunumlarını basitleştirmek için MLflow kullanın. MLflow, özel ön işleme ve işlem sonrası mantık da dahil olmak üzere tüm derin öğrenme modellerini günlüğe kaydedebilir. Unity Kataloğu'ndaki modeller veya Çalışma Alanı Modeli Kayıt Defteri'nekayıtlı modeller toplu iş, akış veya çevrimiçi çıkarım için dağıtılabilir.

Çevrimiçi sunum

Düşük gecikme süreli sunum için en iyi seçenek, bir REST API'nin arkasında çevrimiçi hizmet sunmadır. Databricks, çevrimiçi çıkarım için Model Sunma sağlar. Model Sunma, yapay zeka modellerini dağıtmak, idare etmek ve sorgulamak için birleşik bir arabirim sağlar ve aşağıdakileri sağlamayı destekler:

  • Özel modeller. Bunlar MLflow biçiminde paketlenmiş Python modelleridir. Örnek olarak scikit-learn, XGBoost, PyTorch ve Hugging Face transformatör modelleri verilebilir.
  • Temel Model API'leri tarafından kullanıma sunulan en yeni açık modeller. Bu modeller, iyileştirilmiş çıkarımları destekleyen, seçilmiş temel model mimarileridir. Örneğin, Llama-2-70B-chat, BGE-Large ve Mistral-7B gibi temel modeller belirteç başına ödeme fiyatlandırmasıyla anında kullanılabilir. Performans garantileri ve ince ayarlı model varyantları gerektiren iş yükleri için bunları sağlanan aktarım hızıyla dağıtabilirsiniz.
  • Dış modeller. Bunlar Databricks dışında barındırılan modellerdir. Örneğin, OpenAI GPT-4, Antropik'in Claude ve diğerleri gibi temel modeller. Bu modellere hizmet veren uç noktalar merkezi olarak yönetilebilir ve müşteriler onlar için hız sınırları ve erişim denetimleri oluşturabilir.

Alternatif olarak, MLflow çevrimiçi çıkarım için çeşitli yönetilen hizmetlere dağıtmaya yönelik API'lerin yanı sıra özel hizmet çözümleri için Docker kapsayıcıları oluşturmaya yönelik API'ler sağlar.

Çevrimiçi çıkarım için diğer yaygın yönetilen hizmetler şunlardır:

Toplu işlem ve akış çıkarımı

Toplu işlem ve akış puanlaması, dakikalar kadar düşük gecikme sürelerinde yüksek aktarım hızı ve düşük maliyetli puanlama desteği sunar. Daha fazla bilgi için bkz . Model çıkarımı için MLflow kullanma.

  • Çıkarım için verilere birden çok kez erişmeyi bekliyorsanız, çıkarım işini çalıştırmadan önce verileri BIR Delta Lake tablosuna ETL'ye ön işleme işi oluşturmayı göz önünde bulundurun. Bu şekilde, verileri alma ve hazırlamanın maliyeti, verilerin birden çok okumasına yayılır. Ön işlemeyi çıkarımdan ayırmak, maliyeti ve performansı iyileştirmek için her iş için farklı donanımlar seçmenize de olanak tanır. Örneğin, çıkarım için ETL ve GPU'lar için CPU kullanabilirsiniz.
  • Küme genelinde toplu iş ve akış çıkarımlarını ölçeklendirmek için Spark Pandas UDF'lerini kullanın.
    • Azure Databricks'ten bir modeli günlüğe kaydettiğinizde, MLflow modeli pandas UDF olarak uygulamak için otomatik olarak çıkarım kodu sağlar.
    • Özellikle büyük derin öğrenme modelleri için çıkarım işlem hattınızı daha da iyileştirebilirsiniz. Bir örnek için görüntü ETL'sinin başvuru çözümüne bakın.