Makine öğrenimi için Sürekli Entegrasyon (CI) özelliğini keşfedin. Testleri otomatikleştirmeyi, verileri doğrulamayı ve sağlam MLOps için Ultralytics modellerini dağıtmayı öğrenin.
Sürekli Entegrasyon (CI), geliştiricilerin sık sık kod değişikliklerini merkezi bir depoya birleştirerek otomatik derleme ve test dizilerini tetiklediği modern yazılım mühendisliğinde temel bir uygulamadır. CI, Makine öğrenimi (ML) gibi özel bir alanda CI, standart kod doğrulamanın ötesine geçerek veri boru hatlarının, model mimarilerinin ve eğitim yapılandırmalarının doğrulanmasını da içerir. Entegrasyon hatalarını, sözdizimi hatalarını ve performans gerilemelerini yaşam döngüsünün erken aşamalarında tespit ederek, ekipler sağlam bir kod tabanını koruyabilir ve deneysel araştırmadan üretim düzeyinde bilgisayar görme uygulamalarına geçişi hızlandırabilir.
Geleneksel CI süreçleri yazılım derlemeye ve birim testleri çalıştırmaya odaklanırken, ML merkezli bir CI iş akışı olasılıksal sistemlerin kendine özgü karmaşıklıklarını ele almalıdır. Tek bir hiperparametrede yapılan bir değişiklik veya bir veri ön işleme komut dosyasında yapılan bir değişiklik, nihai modelin davranışını büyük ölçüde değiştirebilir. Bu nedenle, sağlam bir CI stratejisi, kod veya verilerdeki her güncellemenin belirlenmiş temel değerlere göre otomatik olarak doğrulanmasını sağlar.
Bu süreç, Makine Öğrenimi Operasyonları'nın (MLOps) kritik bir bileşenidir ve performans düşüşünü önleyen bir güvenlik ağı görevi görür. AI projeleri için etkili CI boru hatları genellikle aşağıdakileri içerir:
Sürekli Entegrasyonun uygulanması, güvenilirlik ve güvenliğin öncelikli olduğu sektörler için çok önemlidir.
Sürekli Entegrasyonu, geliştirme yaşam döngüsündeki ilgili kavramlardan ayırmak önemlidir.
Geliştiriciler, bu ardışık düzenleri koordine etmek için çeşitli araçlar kullanır. GitHub Actions veya Jenkins gibi genel amaçlı platformlar, kod taahhütleri üzerine iş akışlarını tetiklemek için yaygın olarak kullanılır. Ancak, büyük veri kümelerini ve model sürümlerini yönetmek genellikle özel araçlar gerektirir. Geliştiriciler, kod taahhütleri üzerine iş akışlarını tetiklemek için GitHub Actions veya Jenkins gibi genel amaçlı platformları yaygın olarak kullanır. Ancak, büyük veri kümelerini ve model sürümlerini yönetmek genellikle özel araçlar gerektirir. Geliştiriciler, kod taahhütleri üzerine iş akışlarını tetiklemek için GitHub Actions veya Jenkins gibi genel amaçlı platformları yaygın olarak kullanır. Ancak, büyük veri kümelerini
Ultralytics , CI iş akışlarını tamamlayan merkezi bir hub görevi görür. Ekiplerin veri kümelerini yönetmesine, track deneylerini track ve performans metriklerini görselleştirmesine olanak tanır. Bir CI boru hattı yeni bir YOLO26 modelini başarıyla eğittiğinde, sonuçlar doğrudan platforma kaydedilebilir, böylece projenin durumu merkezi bir şekilde görüntülenebilir ve veri bilimcileri arasındaki işbirliği kolaylaşır .
Bir CI boru hattında, modelinizin hatasız bir şekilde yüklenip çıkarım yapabildiğini sık sık doğrulamanız gerekir. Aşağıdaki Python komut dosyası, kod depoya her gönderildiğinde otomatik olarak çalıştırılabilen basit bir "sağlamlık kontrolü"nü göstermektedir. .
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 komut dosyası ultralytics hafif bir modeli yüklemek ve beklendiği gibi çalıştığını doğrulamak için
kullanılan bir paket. Üretim CI ortamında, bu, aşağıdaki gibi çerçeveleri kullanan daha büyük bir test paketinin parçası olacaktır:
Pytest kapsamlı bir teminat sağlamak için.