2 puan yazan GN⁺ 2024-04-25 | 1 yorum | WhatsApp'ta paylaş
  • CoreNet, araştırmacıların ve mühendislerin CLIP, LLM gibi foundation modellerden nesne sınıflandırma, nesne tespiti ve semantik segmentasyona kadar çeşitli görevler için sinir ağı modelleri eğitmesini sağlayan bir araç setidir
  • Ekim 2024'te CoreNet 0.1.1 sürümüne yeni proje olarak KV Prediction eklendi; ilgili araştırma Time to First Token süresini iyileştirmeyi hedefliyor
  • Apple'ın birçok araştırması CoreNet kullanıyor; projects/ klasöründe eğitim/değerlendirme reçeteleri ve önceden eğitilmiş model bağlantıları birlikte sunuluyor
  • Modeller ve veri kümeleri göreve göre dizinler halinde düzenleniyor; model sınıfları @MODEL_REGISTRY.register dekoratörü ve YAML yapılandırmasındaki models.<task_name>.name değeriyle eğitim/değerlendirmeye bağlanıyor
  • CoreNet, CVNets'ten gelişerek bilgisayarlı görü dışındaki daha geniş uygulamaları da kapsıyor ve kapsamını LLM dahil foundation model eğitimine kadar genişletiyor

CoreNet'in amacı ve kapsamı

  • CoreNet, standart modelleri ve yeni küçük/büyük modelleri eğitmek için bir derin sinir ağı araç setidir
  • Desteklenen görev kapsamı şunları içerir
    • Foundation modeller: CLIP, LLM
    • Nesne sınıflandırma
    • Nesne tespiti
    • Semantik segmentasyon

Ekim 2024 güncellemesi

Apple araştırmaları ve proje reçeteleri

Kurulum ve çalıştırma koşulları

  • Testleri ve Jupyter notebook'larını çalıştırmak ve katkı yapmak için Git LFS kurulumu ve etkinleştirilmesi gerekir
  • Linux'ta Python 3.10+ ve PyTorch v2.1.0 veya üzeri önerilir
  • macOS'te sistem Python 3.9+ sürümünün yeterli olduğu belirtilir
  • Ses ve video işleme için isteğe bağlı bağımlılıklar şunlardır
    • Linux: libsox-dev, ffmpeg
    • macOS: sox, ffmpeg
  • macOS dosya sistemi büyük/küçük harfe duyarlı olmadığından Git'te sorun yaşanabilir; bu yüzden depoya ls çıktısında görünen büyük/küçük harflerle aynı yoldan erişmek gerekir

Depo yapısı ve kullanım akışı

  • tutorials/, CoreNet'e başlamak için örnekler sunar
    • Yeni bir veri kümesinde yeni model eğitimi
    • Slurm ve çok düğümlü eğitim rehberi
    • CLIP, semantik segmentasyon ve nesne tespiti notebook'ları
  • projects/, makale bazlı yeniden üretilebilir eğitim reçeteleri ile önceden eğitilmiş ağırlıkları ve checkpoint'leri sunar
    • Her projenin README.md dosyası dokümantasyon, önceden eğitilmiş ağırlık bağlantıları ve atıf bilgileri sağlar
    • <task_name>/<model_name>.yaml, eğitim ve değerlendirmeyi yeniden üretmek için yapılandırma sağlar
    • Proje örnekleri arasında kv-prediction, byteformer, catlip, clip, fastvit, mobileone, mobilevit, openelm, resnet, vit vb. bulunur
  • mlx_examples/, Apple Silicon üzerinde CoreNet modellerini verimli çalıştırmak için MLX örnekleri sunar
    • Dahil edilen örnekler clip, open_elmdir

Modeller, veri kümeleri ve bileşenler

  • Model uygulamaları göreve göre corenet/modeling/models altında düzenlenir
    • audio_classification
    • classification
    • detection
    • language_modeling
    • multi_modal_img_text
    • segmentation
  • Her model sınıfı @MODEL_REGISTRY.register(name="<model_name>", type="<task_name>") dekoratörüyle kaydedilir
  • CoreNet eğitiminde veya değerlendirmesinde bir modeli kullanmak için YAML yapılandırmasında models.<task_name>.name = <model_name> belirtilir
  • Veri kümeleri de modeller gibi göreve göre dizinlere ayrılır
  • Başlıca iç bileşenler şunları içerir
    • loss_fn, metrics, optims, scheduler
    • train_eval_pipelines
    • collate_fns, sampler, text_tokenizer, transforms, video_reader
    • layers, modules, neural_augmentor, text_encoders

CVNets ile ilişkisi

  • CoreNet, CVNets'ten gelişmiş bir projedir
  • Genişletilen kapsam, bilgisayarlı görünün ötesinde daha geniş uygulamaları içerir
  • Bu genişleme, LLM dahil foundation model eğitimini mümkün kılar
  • CoreNet kullanılırsa README, CVNets: High Performance Library for Computer Vision makalesine atıf yapılmasını ister

1 yorum

 
GN⁺ 2024-04-25
Hacker News yorumları
  • CoreNet, CVNets’ten gelişerek bilgisayarlı görü dışında daha geniş kullanım alanlarını kapsar hale gelmiş gibi görünüyor ve LLM gibi temel model eğitimini de mümkün kılmış görünüyor
    Çıkış noktası muhtemelen şurasıydı: https://apple.github.io/ml-cvnets/index.html
    Eğitim ve çıkarım için bir ara katman uygulaması gibi görünüyor; default_trainer.py[1] dosyasına bakınca motorun torch Tensor’larını kullandığı ama eğitim yöntemini kendisinin uyguladığı anlaşılıyor. Öğrenme oranı zamanlayıcısını ve optimizer’ları da kendisi uygulamış, çağıran taraf ise isteğe bağlı olarak torch’un Adam’ını kullanabiliyor
    Mevcut framework’lerle iş birliği yapıp birinci sınıf destek eklemek yerine her şeyi sıfırdan inşa etmeyi seçmeleri ilginç; hatta belki de oldukça Apple’a özgü bir tercih
    MLX örnekleri şimdilik yalnızca çıkarıma yönelik gibi görünüyor. Yine de ileride MLX’e özel bir uygulamanın geleceği iniş noktası da olabilir gibi duruyor: https://github.com/apple/corenet/blob/5b50eca42bc97f6146b812...
    Yakın zamanda satın aldığı Datakalab https://news.ycombinator.com/item?id=40114350 ve DarwinAI https://news.ycombinator.com/item?id=39709835 de düşünülünce, önümüzdeki 1 yılda nasıl ilerleyeceğini görmek ilginç olacak
    1: https://github.com/apple/corenet/blob/main/corenet/engine/de...

    • Arayüz de epey Apple tarzı görünüyor. Bir yapılandırma dosyası oluşturup zaten aklınızda olan modeli ve hiperparametreleri giriyorsunuz; ardından size basit bir arayüz sunan bir yapı var gibi
      Model mimarisini çeşitli şekillerde kurcalamak isteyen araştırmacılar için ne kadar faydalı olacağını merak ediyorum
      Örnek: https://github.com/apple/corenet/tree/main/projects/clip#tra...
    • Projeyle ilgili söylenen doğru olabilir ama PyTorch, Mac’te çalışıyor ve TensorFlow da Apple tarafından Mac’e port edilmişti
    • Eğitim ve çıkarım arasında bir ara katman uygulaması gibi göründüğü yorumuna dair, bu alanı pek bilmiyorum ama modern eğitim uygulamalarının gerçekte nasıl göründüğünü merak ediyorum
      Modellerin çoğu eğitim kaynak kodunu, veri setlerini, ön işleme ve değerlendirme kodunu yayımlamıyor. O zaman üst düzey uygulamaların nasıl bir biçimde olduğu gerçekten biliniyor mu?
    • Buna tam anlamıyla kendi uygulaması demek zor; optimizer’lar sadece PyTorch optimizer’larından kalıtım alıyor
    • Mevcut framework’lerle iş birliği yapıp birinci sınıf destek eklemek yerine sıfırdan bir şey inşa etme tercihi, WWDC öncesi biraz aceleye getirilmiş gibi bir izlenim bırakıyor
      Apple yapay zekada ciddi biçimde geride kaldı ve şimdi yetişmeye çalışıyor gibi görünüyor
  • Apple’ın Jax üstünde çalışan bir kütüphane olan https://github.com/apple/axlearn’i de aktif biçimde geliştirmesi ilginç
    Apple’ın makine öğrenimi ekibinin yarısı PyTorch kullanıyor, diğer yarısı ise Jax kullanıyor gibi görünüyor. Belki de Google Cloud ile AWS arasında bölünmüşlerdir

    • Apple gibi büyük şirketlerde bu oldukça yaygın bir durum. Uyum maliyeti gerçekten yüksek
      Tek bir araçta standartlaşmak için güçlü bir neden yoksa, ekiplerin çözdükleri probleme ve sahip oldukları deneyime uyan aracı seçmeleri genelde daha kolay olur
    • Orada bizzat çalışmadım ama Apple’ın Meta gibi tek ve tutarlı bir organizasyondan ziyade birkaç şirketin ya da startup’ın birleşimi gibi olduğu hep söylenir
      Bildiğim kadarıyla her organizasyonun ciddi ölçüde özerkliği var
  • README’de ayrıca şu da var:
    CatLIP: CLIP-level Visual Recognition Accuracy with 2.7x Faster Pre-training on Web-scale Image-Text Data
    CatLIP’i ilk kez duyuyorum; bağlantı bozuk gibi görünüyor

  • PyTorch üstüne inşa edilmiş

  • Bunun MLX ile nasıl karşılaştırıldığını merak ediyorum. Anladığım kadarıyla MLX, PyTorch’a karşılık gelen ama Apple Silicon için optimize edilmiş bir şey
    Bu, MLX modellerini dağıtık şekilde eğitmek için mi var? Yoksa amaç ne?

    • MLX de bu planın bir parçası gibi görünüyor. https://github.com/apple/corenet sayfasında, nisan ayında açıklandığı söylenen bileşenlerden biri olarak MLX examples listeleniyor
    • mlx_examples/open_elm içinde yazdığı gibi, “MLX is an Apple deep learning framework similar in spirit to PyTorch, which is optimized for Apple Silicon based hardware.”
    • README’ye hızlıca bakınca MLX üzerindeki bir katman gibi görünüyor. Makine öğrenimini kolaylaştıran bir framework katmanına daha yakın duruyor
  • Hugging Face Transformers'a MPS backend ekleyerek kullanmakla karşılaştırıldığında, bunu kullanmanın avantajının ne olduğu merak ediliyor

    • “MLX examples demonstrate how to run CoreNet models efficiently on Apple Silicon. Please find further information in the README.md file within the corresponding example directory.”
      mlx_example/clip, CoreNet'in CLIP model uygulamasını MLX'in CLIP örneğine dönüştürüp bazı özel düzenlemeler ekleyen bir örnek
      FP16 Base varyantı: PyTorch'a kıyasla %60 hız artışı
      FP16 Huge varyantı: %12 hız artışı
      mlx_example/open_elm, CoreNet ile eğitilmiş OpenELM modelinin MLX portu. MLX, PyTorch'a benzer yapıda bir Apple derin öğrenme çerçevesi ve Apple Silicon tabanlı donanım için optimize edilmiş
      Avantajı, Apple Silicon'a özel olması sayesinde ek hız artışı sunması gibi görünüyor. Küçük modeller açısından en enerji verimli derin sinir ağı eğitimi çerçevesi bile olabilir, ama bunu görmek için gerçek benchmark'lar gerekli
    • Buradaki uygulama oldukça temiz ve modüler görünüyor; Transformers ve Diffusers ise modülleri ayrı ayrı söküp kullanmadığınız sürece böyle değil
      Bu depoda kullanışlı birçok yardımcı araç var ve ortak modellerle değerlendirme metrikleri gibi şeylerin de temiz uygulamaları bulunuyor
      Başka bir deyişle, çıkarımdan çok yeni model yazmaya daha uygun görünüyor
    • Özel bir tarafı yok; temelde Apple logolu bir PyTorch
  • Böyle bir depoda çeşitli modeller ve kullanım biçimleri için küçük API örneklerini tutarlı şekilde üretebilen bir LLM ajanı olsa iyi olurdu

  • Apple Silicon'da eğitimi destekleyip desteklemediği merak ediliyor. README'de gözden kaçan bir yer yoksa bu pek net değil

    • Böyle bir eğitim özelliğinin küçük çaplı deneyler dışında ne kadar faydalı olacağı da belirsiz. Apple artık sunucu ürünü üretmiyor, ürettiği dönemde de pahalıydı
      Apple Silicon tabanlı özel bir sunucunuz yoksa, yani kendi eğitim işleriniz için kullanmıyorsanız
    • MLX örnekleri bunu mümkün kılıyor gibi görünüyor. Sadece Mac'e özel olmaktan ziyade genel amaçlı bir çerçeve gibi duruyor
  • Klasörlere bakınca, PyTorch ve torchvision sınıflarını sadece miras alıp yeni bir şey yapmıyor gibi görünen birçok sınıf var
    Tüm optimizer'lar, scheduler'lar ve katmanların çoğu bu şekilde. Yine de çeşitli makalelerdeki katman birleşimlerinden oluşan epey blok var; monai.networks.blocks benzeri
    “Yapı taşları” açısından, yeni uygulanmış birkaç loss fonksiyonu ve değerlendirme metriği de mevcut

  • Apple M1'de sinir ağı eğitimi ve çıkarımı için hangi kütüphanenin önerildiği merak ediliyor. C++ veya Rust'ta kullanmak isteniyor ve sinir ağının en fazla 5 milyon parametre civarında olması planlanıyor

    • Başlangıç noktası olarak PyTorch kullanırdım. Apple Silicon'daki Metal backend oldukça hızlı ve hobi geliştiricilerinden temel model geliştiricilerine kadar en yaygın kullanılan kütüphane