NEST

Dokümantasyon

Kur, veriyi doğrula, eğit, değerlendir

Bu sayfadaki her komut güncel depoya karşı çalışır. Yer tutucu çıktı yok, uydurma bayrak yok — bir şey henüz çalışmıyorsa bu açıkça belirtilir.

01

Gereksinimler

Python 3.9 veya üzeri, PyTorch 2.0 veya üzeri. Yığının geri kalanı requirements.txt dosyasından gelir: BART decoder için transformers, EEG ön işleme için mne, ayrıca değerlendirme için numpy, scipy, pandas, lightning, h5py, jiwer ve python-Levenshtein.

--quick-test ve CTC modeli için bir CPU veya MPS destekli Apple Silicon Mac yeterlidir. BART modeli --fp16 ile eğitilir, bu da CUDA destekli bir NVIDIA GPU gerektirir; bu GPU süresi henüz sağlanamadığı için NEST v2 BART tam olarak eğitilmemiştir.

02

Kurulum

Depoyu klonlayın, bir sanal ortam oluşturun ve bağımlılıkları kurun.

Terminal
git clone https://github.com/wazder/nest
cd nest
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

PyPI paketi yoktur. pip install nest diye bir şey yoktur ve pip install -e . henüz çalışmaz: pyproject.toml dosyasında bir [project] tablosu yoktur, bu yüzden pip'in derleyeceği bir şey yoktur. Betikleri, bu sayfada gösterildiği gibi, klonlanmış bir depodan doğrudan çalıştırın.

03

Veri

NEST, ZuCo korpusu üzerinde eğitilir. osf.io/q3zws adresinden erişim talep edin ve çıkarılan pickle dosyalarını, yükleyicinin beklediği düzenle eşleşecek şekilde yerleştirin, her görev için bir pickle dosyası:

Beklenen düzen
ZuCo_Dataset/ZuCo/task1-SR/pickle/task1-SR-dataset.pickle
ZuCo_Dataset/ZuCo/task2-NR/pickle/task2-NR-dataset.pickle
ZuCo_Dataset/ZuCo/task3-TSR/pickle/task3-TSR-dataset.pickle

Veri setinin yüklendiğini ve beklenen cümle-denek çifti sayısını bildirdiğini doğrulayın:

Terminal
python src/data/zuco_pickle_dataset.py ZuCo_Dataset/ZuCo
04

Hızlı test

Tam bir koşudan önce, veri hattının uçtan uca çalıştığını doğrulayın. --quick-test, 50 örnek üzerinde 2 epoch eğitir ve görülmemiş test değerlendirmesini atlar.

Terminal
python scripts/train_nest_v2.py --quick-test --model ctc
05

Eğitim

Eğitim giriş noktası scripts/train_nest_v2.py dosyasıdır. --model ile seçilen ctc ve bart olmak üzere iki model tipini destekler.

CTC temel modeli (doğrusal CTC başlığı, CPU, MPS veya GPU üzerinde çalışır):

Terminal
python scripts/train_nest_v2.py --model ctc --epochs 200

BART decoder (en iyi kalite, --fp16 için NVIDIA GPU gerektirir):

Terminal
python scripts/train_nest_v2.py \
    --model bart \
    --epochs 200 \
    --batch-size 16 \
    --fp16 \
    --d-model 768 \
    --num-layers 6 \
    --tasks task1-SR task2-NR task3-TSR

train_nest_v2.py üzerinde var olan, argüman ayrıştırıcısına göre doğrulanmış bayraklar:

BayrakVarsayılanAnlam
--modelctcModel tipi: ctc veya bart
--data-dirZuCo_Dataset/ZuCoZuCo veri setinin yolu
--taskstask1-SR task2-NR task3-TSRDahil edilecek ZuCo görevleri
--epochs200Eğitim epoch sayısı
--batch-size16Eğitim batch boyutu
--lr3e-4Öğrenme oranı
--d-model512Transformer gizli katman boyutu, 512 veya 768
--num-layers6Transformer encoder katman sayısı
--nhead8Dikkat başlığı sayısı
--fp16offKarma hassasiyet; CUDA gerektirir
--grad-accum4Gradyan biriktirme adımları
--patience20Erken durdurma sabrı, epoch cinsinden
--output-dirnoneSonuçların yazılacağı yer
--resumenoneDevam edilecek checkpoint'in yolu
--num-workers0DataLoader worker süreç sayısı
--fixationGDEEG fiksasyon ölçüsü: FFD, TRT veya GD
--quick-testoff2 epoch, 50 örnek, test değerlendirmesi atlanır
--no-subject-splitoffDenekten bağımsız yerine rastgele 80/10/10 bölme
06

Değerlendirme

Değerlendirme ayrı bir betik değildir. --resume'a bir checkpoint verin, son değerlendirme adımının onu yeniden yükleyebilmesi için --output-dir'ı o checkpoint'in dizinine yönlendirin ve eğitimi atlamak için --epochs 0 ayarlayın:

Terminal
python scripts/train_nest_v2.py \
    --resume results/nest_v2_bart_TIMESTAMP/best_model.pt \
    --output-dir results/nest_v2_bart_TIMESTAMP \
    --epochs 0

Sonuçlar, bir test_wer ve bir test_cer alanıyla results.json dosyasına yazılır: kelime hata oranı ve karakter hata oranı, ikisi de referans metne karşı Levenshtein düzenleme mesafesi olarak hesaplanır. BART yolu model.generate() ile çözümler, teacher forcing içermeyen serbest otoregresif çözümleme (mevcut uygulamada greedy). CTC yolu greedy olarak çözümler. Henüz bir checkpoint bulunmadığından bu yoldan henüz bir results.json üretilmemiştir.

07

Bulut

Yerel eğitim, BART koşusu için bir NVIDIA GPU gerektirir. notebooks/NEST_CloudTraining.ipynb, bu durum için hazır çalışır bir Colab notebook'udur. Bir A100 üzerinde, tam 200-epoch'luk bir BART koşusunun 8 ila 12 saat süreceği tahmin edilmektedir; bu tahmin, koşu tamamlanmadığı için uçtan uca ölçülmemiştir.

08

Depo yapısı

nest/
src/          önişleme, modeller (nest.py, nest_bart.py, nest_v2.py),
              veri yükleyiciler, eğitim ve değerlendirme modülleri
scripts/      train_nest_v2.py, train_nest_bart.py, upload_to_huggingface.py
notebooks/    NEST_CloudTraining.ipynb (Colab)
papers/       NEST_manuscript.md (teknik rapor taslağı)
configs/      YAML model konfigürasyonları
tests/        5 dosyada 80 test fonksiyonu
website/      bu site (Cloudflare Pages)
09

Bilinen sorunlar

  • Test paketi (5 dosyada 80 test fonksiyonu), kod ve test kayması nedeniyle şu anda import edilirken hata veriyor. Henüz onarılmadı; nasıl yardımcı olabileceğinizi görmek için Katkı sayfasına bakın.
  • pyproject.toml dosyasında bir [project] tablosu yok, bu yüzden paketleme meta verisi eksik ve pip install -e . çalışmıyor.
  • Eğitilmiş bir NEST v2 checkpoint'i yok. Tamamlanan tek koşu, NEST v2 değil küçük, geçici bir LSTM smoke-test modelini eğitti; loss düştü ama herhangi bir kelime hata oranı hesaplanmadı.

Bunları takip edin ve yenilerini github.com/wazder/nest/issues adresinde bildirin.

10

Değerlendirme protokolü taahhüdü

Görülmemiş denekler üzerinde serbest çözümlemeyle, bir gürültü kontrolüyle birlikte ölçülmeden bu sitede hiçbir kelime hata oranı yayınlanmaz. Taahhüdün tamamı ve arkasındaki gerekçe Araştırma sayfasındadır.

Bir sorunla mı karşılaştınız

Komutunuzu, ortamınızı ve hatayı içeren bir issue açın. Gerçek hatalar, raporların yazılmasından daha hızlı düzeltilir.