CoreNet: Derin sinir ağı eğitimi için bir kütüphane
(github.com/apple)- 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.registerdekoratörü ve YAML yapılandırmasındakimodels.<task_name>.namedeğ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
- CoreNet 0.1.1 sürümüne KV Prediction projesi dahil edildi
- İlgili Apple araştırmaları listesinde KV Prediction for Improved Time to First Token yer alıyor
Apple araştırmaları ve proje reçeteleri
- Apple'ın yayımlanmış 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ı sunuluyor- README'de yer alan araştırma listesi şöyle
- KV Prediction for Improved Time to First Token
- OpenELM: An Efficient Language Model Family with Open Training and Inference Framework
- CatLIP: CLIP-level Visual Recognition Accuracy with 2.7x Faster Pre-training on Web-scale Image-Text Data
- FastVit: A Fast Hybrid Vision Transformer using Structural Reparameterization
- Bytes Are All You Need: Transformers Operating Directly on File Bytes
- MobileOne: An Improved One millisecond Mobile Backbone
- MobileViT, MobileViTv2, CVNets vb.
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
- Linux:
- 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.mddosyası 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,vitvb. bulunur
- Her projenin
mlx_examples/, Apple Silicon üzerinde CoreNet modellerini verimli çalıştırmak için MLX örnekleri sunar- Dahil edilen örnekler
clip,open_elmdir
- Dahil edilen örnekler
Modeller, veri kümeleri ve bileşenler
- Model uygulamaları göreve göre
corenet/modeling/modelsaltında düzenleniraudio_classificationclassificationdetectionlanguage_modelingmulti_modal_img_textsegmentation
- 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,schedulertrain_eval_pipelinescollate_fns,sampler,text_tokenizer,transforms,video_readerlayers,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 Visionmakalesine atıf yapılmasını ister
1 yorum
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ı kullanabiliyorMevcut 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...
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...
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?
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
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
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 DataCatLIP’i ilk kez duyuyorum; bağlantı bozuk gibi görünüyor
CatLIP’in ne kadar hızlı olduğunu merak ediyorum. Yukarıdaki OpenAI CLIP tabanlı örnek de zaten hızlı
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_examples/open_elmiçinde yazdığı gibi, “MLX is an Apple deep learning framework similar in spirit to PyTorch, which is optimized for Apple Silicon based hardware.”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_example/clip, CoreNet'in CLIP model uygulamasını MLX'in CLIP örneğine dönüştürüp bazı özel düzenlemeler ekleyen bir örnekFP16 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
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
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
Apple Silicon tabanlı özel bir sunucunuz yoksa, yani kendi eğitim işleriniz için kullanmıyorsanız
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.blocksbenzeri“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