/c4x

Primary LanguageJupyter NotebookMIT LicenseMIT

DT vs DM

Bu çalışma Transformer ve Mamba mimarilerini popüler bir ML antremanı olan Connect 4 üzerinden karşılaştırmayı amaçlamaktadır.

Yöntem

Decision Transformer kullanılarak yapılmış bu çalışma temel alınarak üzerine bu çalışmadaki

MAMBA

Mamba Block yapısı eklenmiştir. Temel çalışmada eğitilmiş olan DT modeline benzer şekilde bir DM modeli eğitilerek bu iki modelin karşılıklı oynadığı oyunların sonucu incelenecektir.

Dosyalar

/src klasöründeki decision_mamba_layers.py ve decision_mamba.py dosyaları bu çalışmadan, diğerleri ise bu çalışmadan alınarak ihtiyaca göre değiştirilmiştir.

/serializedObjs klasöründe eğitilmiş modellerin parametreleri bulunmakta; dt klasöründeki içerik olduğu gibi temel çalışmadan alınmıştır. dm klasöründeki içerik ise bu çalışma ile üretilmektedir. Bu parametrelerin oluşması için >= 50 MiB ve/veya geçici olarak kullanılan dosyalar /tmp klasörüne atılmakta ve bu klasördeki dosyalar takip edilmeMEktedir.

Akış

notebooks klasöründeki;

  1. offline_data.ipynb dosyasında farklı bir çalışmada mevcut olan (C4 oynama konusunda) "uzman sistem" olan 2 ajanın (MinimaxAgent) karşılıklı oyunları kaydedilmektedir.

  2. offline_train.ipynb dosyasında bir önceki adımda elde edilen oyun verisi üzerinden DecisionMamba modeli eğitilmektedir.

  3. online_train.ipynb dosyasında önceki çıktılar ve MinimaxAgent kullanılarak DecisionMamba modeli oyun içinde eğitilmektedir.

  4. side_by_side.ipynb dosyasında ise bu eğitim sonucu elde edilen DecisionMamba ve temel çalışmada bu konuda eğitilmiş olan DecisionTransformer karşılıklı oyun oynamaktadır.

Önemli Hususlar

  • Eğitim dosyalarındaki parametreler modelin boyutunu, yeteneğini ve eğitim süresini doğrudan etkilemektedir; dolayısıyla burada olabilecek en düşük değerler kullanılmıştır. Kullanmadan önce gözden geçirilmesi faydalı olacaktır.

  • Benzer şekilde eğitim çıktılarına "test" ön eki ile isim verilmiştir. Çıktıları saklamak için daha anlamlı isimler tercih edilebilir. Bu isimler dosyalar arasında eşitlenmediğinde (bir dosyadaki çıktı diğer dosyada girdi olarak kullanılıyor) sonuçlar eksik/hatalı oluşabilir.

Çalıştırma Seçenekleri

Codespaces Üzerinde

Herhangi bir bilgisayarda (yüksek donanıma gerek yok, modern bir tarayıcı çalıştırabilmesi yeterli) tarayıcı üzerinde çalışmak için ideal.

  • Github hesabınızla oturum açın (an itibariyle ücretsiz hesap için aylık 120 saat/core veriyor: 2 core 60 saat, 4 core 30 saat boyunca kullanılabilir; eğitim hesabı için daha iyi koşullar mevcut).
  • Aşağıdaki gibi Code>Codespaces seçeneklerinden New with options... komutu ile devam edip
    step 1a
    uygun yapılandırmayı (en önemlisi makine tipi) seçip
    step 1b
    yeni bir ortam oluşturun:
    step 1c
  • Bekleyin! İlk seferi biraz uzun sürecek.
    step 2
  • Bir notebook açtıktan sonra eğer seçili değilse venv isimli kernel'i seçin.
    step 3
  • VS Code sadece bir editör, Jupyter Notebook özelliklerini kendi içinde sunuyor dolayısıyla aynı mantık geçerli.
  • İşi bittiğinde Codespaces adresinden (hakkın boşa gitmemesi için) ilgili makineyi kapatın (ya da tekrar kullanılmayacaksa silin).
    step 4
  • Tekrar kullanmak gerektiğinde aynı adresten VS Code ya da Jupyter (ile tarayıcıdan ya da diğer seçeneklerle UZAKTAKİ ortama yerel bilgisayardan) bağlanabilirsin:
    step 5

Bilgisayardan

Docker Desktop, VS Code ve Remote Extension kurulu bir bilgisayarda bu repo'yu clone'layıp ilgili klasör için Open Folder In Container... komutunu çalıştırın.

Bu seçenek yerel kaynakları kullanabiliyor olması nedeniyle cihazın durumuna göre daha performanslı olabilir fakat bahsi geçen araçları kullanmayı gerektirdiği için tecrübe (sahibi olmayı ya da edinmek üzere zaman harcamayı) gerektiriyor.