Continuous Integration (CI)
Makine öğrenimi için Sürekli Entegrasyonu (CI) keşfet. Sağlam MLOps için Ultralytics YOLO26 modellerini nasıl test edeceğini, verileri doğrulayacağını ve dağıtacağını öğren.
Sürekli Entegrasyon (CI), geliştiricilerin kod değişikliklerini sık sık merkezi bir depoda birleştirerek otomatik derlemeleri ve test dizilerini tetiklediği, modern yazılım mühendisliğinde temel bir uygulamadır. machine learning (ML) gibi özel bir alanda CI, standart kod doğrulamasının ötesine geçerek veri hatlarının, model mimarilerinin ve eğitim yapılandırmalarının doğrulanmasını da kapsar. Entegrasyon hatalarını, sözdizimi hatalarını ve performans gerilemelerini yaşam döngüsünün başlarında tespit ederek ekipler sağlam bir kod tabanını koruyabilir ve deneysel araştırmadan prodüksiyon düzeyinde computer vision uygulamalarına geçişi hızlandırabilir.
Makine Öğreniminde CI'ın Önemi#
Geleneksel CI hatları yazılım derlemeye ve birim testleri çalıştırmaya odaklanırken, ML odaklı bir CI iş akışı olasılıksal sistemlerin benzersiz karmaşıklıklarıyla başa çıkmalıdır. Tek bir hiperparametredeki bir değişiklik veya bir data preprocessing komut dosyasındaki bir güncelleme, nihai modelin davranışını büyük ölçüde değiştirebilir. Bu nedenle, sağlam bir CI stratejisi, koddaki veya verideki her güncellemelerin belirlenen temel ölçütlere göre otomatik olarak doğrulanmasını sağlar.
Bu süreç, performans düşüşünü önleyen bir güvenlik ağı görevi görerek Machine Learning Operations (MLOps) bileşeninin kritik bir parçasını oluşturur. Yapay zeka projeleri için etkili CI hatları genellikle şunları içerir:
- Kod Kalitesi Kontrolleri: Kodlama standartlarını uygulamak ve yürütmeden önce sözdizimi hatalarını yakalamak için static analysis tools ve linters kullanma.
- Veri Doğrulama: Gelen training data verilerinin beklenen şemalara ve istatistiksel dağılımlara uyduğunu doğrulamak, bozuk görüntü dosyaları veya eksik etiketler gibi sorunları önlemek.
- Otomatik Test: Yakınsama sağlamak için birkaç epochs boyunca küçük bir modelin eğitilmesini içerebilecek yardımcı fonksiyonlar üzerinde birim testleri ve entegrasyon testleri çalıştırma.
- Model Kıyaslaması (Benchmarking): mean Average Precision (mAP) gibi temel metriklerin kabul edilebilir bir eşiğin altına düşüp düşmediğini kontrol etmek için modeli sabit bir validation set ile değerlendirme.
Gerçek Dünya Uygulamaları#
Sürekli Entegrasyon uygulamak, güvenilirlik ve güvenliğin her şeyden önemli olduğu endüstriler için şarttır.
- Otonom Sürüş Sistemleri: autonomous vehicles geliştirilmesinde mühendisler, yaya ve şerit tespiti için algoritmaları sürekli olarak geliştirir. Bir CI hattı, ekibin yeni nesne algılama modellerini yoğun yağmur veya düşük ışıkta sürüş gibi geniş bir regresyon senaryoları kitaplığına karşı otomatik olarak test etmesine olanak tanır ve bir kod güncellemesinin sistemin tehlikeleri tespit etme yeteneğini yanlışlıkla azaltmamasını sağlar.
- Tıbbi Teşhis Görüntülemesi: MRI taramalarında tümörlerin tespiti gibi healthcare applications için tekrarlanabilirlik yasal bir gerekliliktir. CI, teşhis yazılımının her sürümünün izlenebilir ve test edilmiş olmasını sağlar. Bir geliştirici hız için inference engine optimizasyonu yaparsa, CI sistemi güncelleme hastanelere dağıtılmadan önce teşhisin accuracy oranının değişmediğini doğrular.
CI vs. Sürekli Teslimat (CD) vs. MLOps#
Sürekli Entegrasyonu, geliştirme yaşam döngüsündeki ilgili kavramlardan ayırmak önemlidir.
- Sürekli Entegrasyon (CI): Entegrasyon aşamasına odaklanır: kod birleştirme, otomatik test ve derlemeleri doğrulama. Şu soruya yanıt verir: "Bu yeni kod mevcut işlevselliği bozuyor mu?"
- Sürekli Teslimat (CD): CI'yi takip eder ve yayınlama aşamasına odaklanır. Doğrulanmış modeli bulut sunucusu veya uç cihaz gibi bir prodüksiyon ortamına dağıtmak için gereken adımları otomatikleştirir. model deployment hakkında daha fazla bilgi edinin.
- MLOps: CI, CD ve sürekli izlemeyi kapsayan üst disiplindir. CI belirli bir uygulama iken, MLOps tüm yapay zeka yaşam döngüsünü yönetmek için kullanılan kültür ve araçlar bütünüdür.
Yapay Zeka Entegrasyonu için Araçlar ve Platformlar#
Geliştiriciler bu iş akışlarını koordine etmek için çeşitli araçlar kullanır. GitHub Actions veya Jenkins gibi genel amaçlı platformlar, kod commit'lerinde iş akışlarını tetiklemek için yaygın olarak kullanılır. Ancak büyük veri kümelerini yönetmek ve model sürümlemesi genellikle özel araçlar gerektirir.
Ultralytics Platform, CI iş akışlarını tamamlayan merkezi bir merkez olarak görev yapar. Ekiplerin veri kümelerini yönetmesini, eğitim denemelerini takip etmesini ve performans metriklerini görselleştirmesini sağlar. Bir CI hattı yeni bir YOLO26 modelini başarıyla eğittiğinde, sonuçlar doğrudan platforma kaydedilebilir, böylece projenin durumu merkezi olarak görülebilir ve veri bilimciler arasında işbirliği kolaylaştırılabilir.
Otomatik Test Örneği#
Bir CI hattında, modelinizin hatalarız bir şekilde yüklenip inference gerçekleştirebildiğini genellikle doğrulamanız gerekir. Aşağıdaki Python betiği, koda her yeni kod gönderildiğinde (push) otomatik olarak çalıştırılabilecek basit bir "sağlamlık kontrolü"nü gösterir.
from ultralytics import YOLO
# Load the YOLO26 model (using the nano version for speed in CI tests)
model = YOLO("yolo26n.pt")
# Perform inference on a dummy image or a standard test asset
# 'bus.jpg' is a standard asset included in the package
results = model("bus.jpg")
# Assert that detections were made to ensure the pipeline isn't broken
# If len(results[0].boxes) is 0, something might be wrong with the model or input
assert len(results[0].boxes) > 0, "CI Test Failed: No objects detected!"
print("CI Test Passed: Model loaded and inference successful.")Bu betik, hafif bir modeli yüklemek ve beklendiği gibi çalışıp çalışmadığını doğrulamak için ultralytics paketini kullanır. Prodüksiyon CI ortamında bu, kapsamlı kapsam sağlamak için Pytest gibi çerçeveleri kullanan daha büyük bir test paketinin parçası olurdu.






