Sürekli Entegrasyon (CI), modern yazılım geliştirmede temel bir uygulamadır ve Yapay Zeka (AI) ve Makine Öğrenimi (ML) alanlarında giderek daha önemli hale gelmektedir. Birden fazla katılımcının kod değişikliklerinin merkezi bir depoda sık sık birleştirilmesini ve ardından otomatik derlemelerin ve testlerin çalıştırılmasını içerir. CI'ın birincil amacı entegrasyon sorunlarını erken tespit etmek, kod kalitesini artırmak ve geliştirme iş akışını kolaylaştırmaktır. Bu otomasyon ve hızlı geri bildirim döngüsü, eğitim ve dağıtım gibi karmaşık projeler için özellikle faydalıdır Ultralytics YOLObilgisayarla görme görevleri için modeller.
Yapay Zeka/ML'de Sürekli Entegrasyon Neden Önemlidir?
AI/ML geliştirmenin veri, model ve parametrelerle ( hiperparametre ayarlama ve veri artırma gibi) deneyler içeren yinelemeli doğası, CI'ı özellikle değerli kılar. CI entegrasyonu, değişiklikler hakkında hızlı geri bildirim sağlayarak yeni kodun mevcut kod tabanıyla doğru bir şekilde entegre olmasını ve model performansının beklenmedik bir şekilde düşmemesini sağlar. Temel faydalar şunlardır:
- Erken Hata Tespiti: Otomatik testler, kod değişiklikleri birleştirildikten sonra hataları hızlı bir şekilde yakalayarak daha sonra düzeltme maliyetini ve çabasını azaltır.
- Geliştirilmiş Kod Kalitesi: Tutarlı test ve entegrasyon, daha iyi kodlama uygulamalarını ve sürdürülebilir kod tabanlarını teşvik eder. Linterler ve statik analizörler gibi araçlar genellikle CI işlem hattının bir parçasıdır.
- Daha Hızlı Geliştirme Döngüleri: Otomasyon, manuel test çabalarını azaltır ve geliştiricilerin özellik oluşturmaya odaklanmasını sağlar.
- Tutarlı Model Performansı: CI işlem hatları, regresyonları önleyerek model doğruluğunu, kesinliğini, geri çağırmayı ve diğer ilgili ölçümleri değerlendirmek için adımlar içerebilir. Bu genellikle F1-skoru veya Ortalama Ortalama Hassasiyet (mAP) gibi metriklerin kontrol edilmesini içerir.
- Gelişmiş İşbirliği: Sık entegrasyon, birleştirme çatışmalarını en aza indirir ve ekibin güncel bir kod tabanı üzerinde çalışmasını sağlar.
Yapay Zeka/ML Projelerinde CI Nasıl Çalışır?
CI kullanan tipik bir AI/ML projesinde süreç genellikle bir geliştiricinin kod değişikliklerini (model komut dosyaları, yapılandırma dosyaları ve hatta yeni veri işleme adımları dahil) Git gibi paylaşılan bir sürüm kontrol sistemine işlemesiyle başlar. Bu işlem, genellikle Jenkins, GitLab CI/CD veya GitHub Actions gibi platformlar tarafından yönetilen bir CI işlem hattını otomatik olarak tetikler. İşlem hattı tipik olarak birkaç adım gerçekleştirir:
- Derleme: Kodu derler ve gerekli yapıtları (örneğin Docker görüntüleri) oluşturur.
- Birim Testi: Tek tek kod bileşenleri üzerinde küçük, yalıtılmış testler çalıştırır.
- Entegrasyon Testi: Sistemin farklı bölümleri arasındaki etkileşimi test eder.
- Model Doğrulama: Veri bütünlüğünü kontrol etme, model mimarisini doğrulama veya küçük bir test veri kümesi üzerinde çıkarım çalıştırma gibi ML modeline özgü testleri çalıştırır.
- Performans Testi: Modelin performans metriklerini(mAP, doğruluk, gecikme) önceden tanımlanmış kıyaslamalara veya önceki sürümlere göre değerlendirir. Bu, kıyaslama modlarını içerebilir.
- Raporlama: Ekibi derleme ve test sonuçları hakkında bilgilendirir ve genellikle Slack gibi iletişim araçlarıyla entegre olur.
Ultralytics CI'yı yaygın olarak kullanır; Ultralytics CI Kılavuzunda süreçlerimiz hakkında daha fazla bilgi edinebilirsiniz.
Yapay Zeka/ML'de Sürekli Entegrasyonun Gerçek Dünya Uygulamaları
Sürekli Entegrasyon, verimliliği ve güvenilirliği artırmak için çeşitli gerçek dünya AI/ML uygulamalarında kullanılmaktadır.
- Nesne Algılama Sistemi Geliştirme: Bir nesne algılama sistemi geliştiren bir şirket, belki de Ultralytics YOLO11yeni kod değişikliklerini otomatik olarak test etmek için CI kullanabilir. Her işlem, modeli bir veri alt kümesi ( COCO128 gibi) üzerinde yeniden eğiten veya doğrulayan, mAP ve çıkarım hızını kontrol etmek için değerlendirmeler çalıştıran ve değişikliklerin birleştirilmeden önce performansı olumsuz etkilememesini sağlayan bir işlem hattını tetikleyebilir. Bu, otomotiv yapay zekası veya güvenlik alanındaki uygulamalar için model kalitesinin korunmasına yardımcı olur.
- Doğal Dil İşleme (NLP) Model İyileştirme: NLP tekniklerini kullanarak bir duygu analizi modeli üzerinde çalışan bir ekip CI uygulayabilir. Her kod güncellemesi (örneğin, özellik çıkarma veya model mimarisinin değiştirilmesi) otomatik olarak testleri tetikler. Bu testler, güncellenmiş modeli bir doğrulama veri kümesi üzerinde çalıştırarak duygu sınıflandırma doğruluğunu ve F1-skorunu temel sonuçlarla karşılaştırabilir. Bu, modelin etkinliğinin sürekli olarak izlenmesini ve geliştirilmesini sağlar.
Sürekli Entegrasyon ve Sürekli Teslimat/Dağıtım (CD)
Birbiriyle yakından ilişkili olsa da CI, Sürekli Teslimat ve Sürekli Dağıtımdan (CD) farklıdır.
- Sürekli Entegrasyon (CI): Kod değişikliklerini sık sık entegre etmeye ve otomatik olarak test etmeye odaklanır. Çıktı, sonraki adımlar için hazır olan doğrulanmış bir yapıdır.
- Sürekli Teslimat (CD): Onaylanmış kod değişikliklerini bir hazırlama veya üretim ortamına yayınlanmak üzere otomatik olarak hazırlayarak CI'ı genişletir. Üretime dağıtım genellikle manuel olarak tetiklenir. Bu Atlassian kılavuzunda farklılıklar hakkında daha fazla bilgi edinebilirsiniz.
- Sürekli Dağıtım (CD): Onaylanan her değişikliği manuel müdahale olmadan doğrudan üretime otomatik olarak dağıtarak bir adım daha ileri gider.
CI ve CD uygulamaları, geliştirmeden dağıtıma ve izlemeye kadar tüm makine öğrenimi yaşam döngüsünü kolaylaştırmayı amaçlayan Makine Öğrenimi Operasyonlarının (MLOps) temel bileşenleridir. Ultralytics HUB gibi platformlar, model eğitimi ve dağıtımı da dahil olmak üzere bu yaşam döngüsünün bölümlerini yönetmeye yardımcı olabilir.