Üretim makine öğrenimi sistemleri: Dağıtım testi

Tek boynuzlu at görünümlerini tahmin eden tek boynuzlu at modelini dağıtmaya hazırsınız. Makine öğrenimi (ML) ardışık düzeniniz dağıtılırken sorunsuz bir şekilde çalışmalıdır, güncellenmeli ve yayınlanmalıdır. Keşke model dağıtmak büyük bir Dağıt düğmesine basmak kadar kolay olsaydı. Maalesef tam bir makine öğrenimi sistemi için aşağıdaki testler gereklidir:

  • Giriş verilerini doğrulama.
  • Özellik mühendisliğini doğrulama.
  • Yeni model sürümlerinin kalitesini doğrulama.
  • Yayın altyapısını doğrulama.
  • Ardışık düzen bileşenleri arasındaki entegrasyonu test etme.

Birçok yazılım mühendisi test odaklı geliştirmeyi (TDD) tercih eder. TDD'de yazılım mühendisleri "gerçek" kaynak kodunu yazmadan önce testler yazar. Ancak TDD, makine öğrenimi için biraz karmaşık olabilir. Örneğin, modelinizi eğitmeden önce kaybı doğrulamak için bir test yazamazsınız. Bunun yerine, önce model geliştirme sırasında elde edilebilecek kaybı keşfetmeniz ve ardından yeni model sürümlerini elde edilebilecek kayıp açısından test etmeniz gerekir.

Tek boynuzlu at modeli hakkında

Bu bölümde tek boynuzlu at modeli ele alınmaktadır. Şunları bilmeniz gerekir:

Tek boynuzlu atların görünümlerini tahmin eden bir sınıflandırma modeli oluşturmak için makine öğrenimini kullanıyorsunuz. Veri kümenizde 10.000 tek boynuzlu at görünümü ve 10.000 tek boynuzlu at görünümü yok. Veri kümesi; konum, saat, yükseklik, sıcaklık, nem, ağaç örtüsü, gökkuşağının varlığı ve diğer çeşitli özellikleri içerir.

Model güncellemelerini yeniden üretilebilir eğitimle test etme

Unicorn modelinizi geliştirmeye devam etmek isteyebilirsiniz. Örneğin, belirli bir özellikte ek özellik mühendisliği yaptığınızı ve daha iyi (veya en azından aynı) sonuçlar elde etmek için modeli yeniden eğittiğinizi varsayalım. Maalesef model eğitimini yeniden üretmek bazen zordur. Tekrarlanabilirliği artırmak için aşağıdaki önerileri uygulayın:

  • Rastgele sayı oluşturucuyu deterministik olarak başlatın. Ayrıntılar için veri oluşturmada rastgeleleştirme başlıklı makaleyi inceleyin.

  • Model bileşenlerinin her çalıştırmada rastgele sayı üreticiden aynı rastgele sayıyı almasını sağlamak için model bileşenlerini sabit bir sırada başlatın. ML kitaplıkları genellikle bu koşulu otomatik olarak ele alır.

  • Modelin birkaç çalıştırmasının ortalamasını alın.

  • Modelinizi veya ardışık düzeninizi incelerken kod ve parametreleri tespit edebilmek için ön iterasyonlar için bile sürüm kontrolünü kullanın.

Bu yönergeler uygulandıktan sonra bile, rastgelelik için başka kaynaklar olabilir.

Machine Learning API'ye yapılan çağrıları test etme

API çağrılarındaki güncellemeleri nasıl test ediyorsunuz? Modelinizi yeniden eğitebilirsiniz ancak bu işlem zaman alıcıdır. Bunun yerine, rastgele giriş verileri oluşturmak ve tek bir gradyan azalma adımı çalıştırmak için bir birim testi yazın. Bu adım hatasız bir şekilde tamamlanırsa API'deki güncellemeler modelinizi büyük olasılıkla bozmamıştır.

Ardışık düzen bileşenleri için entegrasyon testleri yazma

Bir ML ardışık düzeninde, bir bileşendeki değişiklikler diğer bileşenlerde hatalara neden olabilir. Tüm ardışık düzenin uçtan uca çalıştığı bir entegrasyon testi yazarak bileşenlerin birlikte çalıştığını kontrol edin.

Entegrasyon testlerini sürekli olarak çalıştırmanın yanı sıra yeni modeller ve yeni yazılım sürümleri yayınlarken de entegrasyon testleri çalıştırmanız gerekir. Ardışık düzenin tamamının yavaş çalışması, sürekli entegrasyon testini zorlaştırır. Entegrasyon testlerini daha hızlı çalıştırmak için verilerin bir alt kümesinde veya daha basit bir modelle eğitin. Ayrıntılar modelinize ve verilerinize bağlıdır. Sürekli kapsam elde etmek için daha hızlı testlerinizi, modelin veya yazılımın her yeni sürümünde çalışacak şekilde ayarlarsınız. Bu sırada, yavaş testleriniz arka planda sürekli olarak çalışır.

Model kalitesini yayınlamadan önce doğrulama

Yeni bir model sürümünü üretime göndermeden önce aşağıdaki iki kalite düşüşü türünü test edin:

  • Ani bozulma. Yeni sürümdeki bir hata, kalitenin önemli ölçüde düşmesine neden olabilir. Yeni sürümlerin kalitesini önceki sürümle karşılaştırarak doğrulayın.

  • Yavaş bozulma. Ani düşüşle ilgili testiniz, birden fazla sürümde model kalitesinde yavaş bir düşüş algılamayabilir. Bunun yerine, modelinizin doğrulama veri kümesi üzerindeki tahminlerinin sabit bir eşiği karşıladığından emin olun. Doğrulama veri kümeniz gerçek verilerden farklıysa doğrulama veri kümenizi güncelleyin ve modelinizin aynı kalite eşiğini karşıladığından emin olun.

Yayınlamadan önce model-altyapı uyumluluğunu doğrulama

Modeliniz sunucunuzdan daha hızlı güncelleniyorsa modelinizde sunucunuzdan farklı yazılım bağımlılıkları olabilir. Bu durum uyumsuzluklara neden olabilir. Modeli, sunucunun korumalı bir sürümünde hazırlayarak model tarafından kullanılan işlemlerin sunucuda bulunduğundan emin olun.