DEVFEST 2023
JAX & FLAX & COMPUTER VISION &
MULTIMODAL LANGUAGE MODELS
2022 yılında fiziksel Devfest etkinliklerine konuşmacı olarak katıldıktan sonra büyük bir heyecanla 2023 Devfest konuşmalarını bekledim. 2023 Devfest sezonu da beklediğim gibi heyecanlı, hızlı ve yoğun geçti.
Devfest Düzce ile başlayan sezon Ankara ile son buldu. Benim adıma çok yararlı ve çok güzel geçti. Kendimi daha da geliştireceğim hem de güncel bilgilerle dinleyenlere güncel bilgi vermek adına bu seneki konularımı ise “Computer Vision with Jax/Flax” ve “Vision Language Models with Jax/Flax” olarak seçtim.
Öncelikle kendim için önemli bilgiler edinmiş oldum bu konular sayesinde. Öğrenmenin en iyi yolu öğretmekmiş prensibi doğruymuş. O yüzden konuşmacı olmak aslında bir yandan da daha derin öğrenmenizi sağlıyor.
Jax ve Flax ile başlamak gerekirse:
JAX (1):
JAX, NumPy gibi Python araçlarıyla uyumlu, çok amaçlı bir matematik kütüphanesidir. JAX, NumPy’ın tüm özelliklerini destekler ve ayrıca aşağıdakileri içeren birçok gelişmiş özellik sunar:
- Otomatik türetme: JAX, fonksiyonların türevlerini otomatik olarak hesaplayabilir. Bu, makine öğrenimi ve derin öğrenme için gerekli olan doğrusal cebir ve optimizasyon işlemlerini gerçekleştirmeyi kolaylaştırır.
- Tümleşik JIT derleyici: JAX, kodu derlemek için bir Just-In-Time (JIT) derleyicisi kullanır. Bu, kodun performansını önemli ölçüde artırabilir.
- Paralel ve dağıtılmış hesaplama: JAX, paralel ve dağıtılmış hesaplamayı destekler. Bu, büyük veri kümeleri üzerinde makine öğrenimi ve derin öğrenme modellerini eğitmeyi kolaylaştırır.
Flax (2):
Flax, JAX için bir derin öğrenme kütüphanesidir. Flax, aşağıdakileri içeren birçok özellik sunar:
- Kararlı ve güvenli tasarım: Flax, kararlı ve güvenli bir şekilde kullanılmak üzere tasarlanmıştır.
- Daha fazla ayrıntı kontrolü ve ifade gücü: Flax, değişken koleksiyonları, rastgele sayı üreteci koleksiyonları ve değişkenlik koşulları aracılığıyla çoğu sinir ağı çerçevesinden daha fazla ayrıntı kontrolü ve ifade gücü sağlar.
- Fonksiyonel API: Flax’ın fonksiyonel API’sı, modüllerin neler yapabileceğini radikal bir şekilde yeniden tanımlar. Bu, modüllerin daha verimli ve esnek bir şekilde kullanılmasını sağlar.
2017 yılında yayınlanan “Attention is All You Need (3)” makalesi ise Derin Öğrenme ve Yapay Zeka alanında yeni bir dönem başlatmış oldu. Attention mekanizmasıyla beraber Transformers yapısının kullanılması ise bugün kullandığımız Bard (4) ve Chat-GPT (5) gibi çok önemli uygulamaların doğmasına yol açtı.
Doğal Dil İşleme (Natural Language Processing — NLP) alanında önemli ilerlemeler kaydedilirken Transformers yapısının Bilgisayarlı Görü (Computer Vision — CV) alanında da kullanılması ViT (Vision Transformer) (6)
Get Bukempas’s stories in your inbox
Join Medium for free to get updates from this writer.
JAX/Flax tabanlı bir Vision Transformer mimarisinden örnek (7) :
Görüntü dil modeli (Vision Language Model — VLM): Görüntüler ve metinler arasındaki ilişkiyi öğrenen bir yapay zeka modelidir. Bu modeller, görüntülere metin etiketleri atamak, metinleri görüntülere dönüştürmek veya görüntülere göre metin üretmek gibi çeşitli uygulamalarda kullanılabilir.
Görüntü dil modellerinin kullanılabileceği bazı uygulamalar şunlardır:
- Görüntü etiketleme: Görüntü dil modelleri, görüntülere metin etiketleri atamak için kullanılabilir. Örneğin, bir görüntü dil modeli, bir görüntüdeki nesneleri veya etkinlikleri tanımlamak için kullanılabilir.
- Metin oluşturma: Görüntü dil modelleri, metin oluşturmak için kullanılabilir. Örneğin, bir görüntü dil modeli, bir görüntüye göre bir metin açıklaması oluşturmak için kullanılabilir.
- Makine çevirisi: Görüntü dil modelleri, makine çevirisi için kullanılabilir. Örneğin, bir görüntü dil modeli, bir görüntüyü içeren bir metni bir başka dile çevirmek için kullanılabilir.
Görüntü dil modelleri, yapay zeka alanındaki önemli bir gelişmedir. Bu modeller, görüntüler ve metinler arasındaki ilişkiyi anlamamızı ve bu ilişkiyi çeşitli uygulamalarda kullanmamızı sağlar.
PaLI: A Jointly-Scaled Multilingual Language-Image Model (9):
Önemli bir Görüntü Dil Modeli olan PALI (9), açık kaynaklı T5X (10) ve Flaxformer (11) framework’lerini kullanarak JAX ve Flax ile eğitilmiştir.
Açık kaynaklı BigVision (12) framework’ü kullanarak, 4 milyar parametreli büyük bir ViT mimarisi ile eğitmiştir. Eğitim sırasında, model 1.6 milyar resimlik eğitim seti kullanılmış ve 1 epoch üzerinden gerçekleşmiştir. Resim çözünürlüğü 224x224 olarak ele alınmıştır. Eğitim sırasında, sadece dil bileşeni parametreleri güncellenmiş ve görsel bileşen dondurulmuştur, bu da performansta artış sağlamasına yol açmış.
Kaynaklar:
1-) https://jax.readthedocs.io/en/latest/notebooks/quickstart.html , https://github.com/google/jax
2-) https://flax.readthedocs.io/en/latest/index.html , https://github.com/google/flax
3-) https://arxiv.org/abs/1706.03762 , https://blog.research.google/2017/08/transformer-novel-neural-network.html
6-) https://arxiv.org/abs/2010.11929
8-) https://huggingface.co/blog/vision_language_pretraining
9-) https://arxiv.org/abs/2209.06794
10-) https://github.com/google-research/t5x








