PyTorch'ta Keras'ı kullanın, kutudan çıkar çıkmaz eğitim dağıtın, sonsuz Hata Ayıklama'ya veda edin

Aufei Tapınağı'ndan Balık ve Koyun

Qubit Raporu | Genel Hesap QbitAI

Yeni bir makine öğrenimi projesine başlarken, eğitim döngüsünü yeniden yazmak, modeli yüklemek, eğitimi dağıtmak ... ve ardından Debug uçurumunda akıp giden zamanı izlemek kaçınılmazdır ve projenin özünden hala binlerce mil uzaktasınız. .

Bu dünyada zaten bir Keras eseri olmasına rağmen, birkaç cümleyle kolayca bir sinir ağı kurabilirsiniz, ancak Tensorflow'un omuzlarında durduğunu düşündüğünüzde, yardım edemezsiniz ama dünyadaki efsaneyi düşünebilirsiniz:

PyTorch çok güzel kokulu!

Öyleyse neden PyTorch'ta bir Keras yapmıyorsunuz?

Facebook'tan küçük erkek kardeşi Willian Falcon, denemeye karar verdi ve PyTorch'taki tüm yaygın konfigürasyonları paketlemek için bir paketleyici yaptı.

Bu PyTorch hafif ambalaj makinesi, PyTorch Yıldırım .

Böylesine hızlı bir araştırma çerçevesi ile, kullanıcıların yalnızca temel eğitim ve doğrulama mantığına dikkat etmesi gerekir ve sıkıcı mühendislik ayrıntılarının tümü, tek bir tıklama ile otomatik olarak tamamlanır, bu da temel eğitim mantığının doğruluğunu ve en iyi pratik deneyimi sağlayabilir.

Yıldırım kadar hızlı

Peki, Yıldırım ne kadar yararlıdır?

Bu resimde gri kısım Lightning'in otomatik olarak tamamlayabileceği kısmı temsil eder ve mavi kısım kullanıcıların ihtiyaçlarına göre altta yatan herhangi bir model olarak tanımlanabilir.Kendi yeni modeliniz veya önceden eğitilmiş bir model olabilir, hızlı bir şekilde .ai mimarisi vb.

Size birkaç örnek vereyim.

Örneğin, Dereceli alçalma .

Buna ihtiyacın olduğu ortaya çıktı:

# son adımı temizle optimizer.zero_grad () # 16 birikmiş gradyan adımları scaled_loss = 0 (16) aralığında birikmiş_adım_i için: out = model.forward () kayıp = bir kayıp (çıkış, y) loss.backward () scaled_loss + = loss.item () # 8 adımdan sonra ağırlıkları güncelle. etkili parti = 8 * 16 optimizer.step () # kayıp artık biriken parti sayısına göre ölçeklendirildi gerçek_kaybolma = ölçek_kaybı / 16

Lightning'de, bu kod parçasının tamamını kendiniz yazmanıza gerek yoktur, sadece aşağıdaki iki kod satırını girmeniz yeterlidir:

eğitmen = Eğitmen (biriktirmek_grad_batches = 16) trainer.fit (model)

Sadece bu değil, Lightning'de kullanmak istiyorum Tek GPU , Doğrudan arayın:

eğitmen = Eğitmen (gpus =) trainer.fit (model)

Bellek kullanımını yarı yarıya azaltan siyah teknolojiyi kullanın 16 bit hassasiyet , Zahmetsizce:

eğitmen = Eğitmen (amp_level = '02 , use_amp = False) trainer.fit (model)

kullanım Birden çok GPU Dağıtılmış eğitim, çok kolay:

eğitmen = Eğitmen (gpus =) trainer.fit (model)

1024 düğümde 1024 GPU ile eğitim bile kutudan çıkarır:

eğitmen = Eğitmen (nb_gpu_nodes = 128, gpus =)

Otomasyon işlevi bundan çok daha fazlasıdır, aşağıdaki modüller dahildir:

Şimşek kadar hızlı bir sinir ağını eğitmek ister misiniz? Yıldırım sadece bunun için özel olarak üretilmiştir.

Ayrıca Lightning, görsel öğrenmeyi kolaylıkla gerçekleştirebilen Tensorboard ile de entegre edilmiştir.

Sadece deneme yolunu kaydedin:

test_tube içe aktarma deneyinden pytorch-lightning ithalat eğitmeninden exp = Experiment (save_dir = '/ bir / yol') eğitmen = Eğitmen (deney = exp) ...

Ardından bu yolda tensorboard'u çalıştırın:

tensorboard logdir / bazı / yol

Nasıl yenir

Yıldırım'ı kullanmak için iki şey yapılması gerekiyor.

1. Yıldırım Modelini Tanımlayın

Bu adım uzun zaman alacak.

Lightning Modeli, modelle etkileşim için standart bir arayüz sağlayan katı bir nn.Module üst sınıfıdır.

Lightning Modelini etkinleştirmenin en kolay yolu, aşağıdaki minimal örneğe dayalı olarak kısmi değişiklikler yapmaktır:

işletim sistemini içe aktar meşale ithal torch.nn'den F olarak içe aktar işlevsel torch.utils.data'dan import DataLoader torchvision.datasets'ten içe aktar MNIST torchvision.transforms'u dönüşüm olarak içe aktar pytorch_lightning'i ptl olarak içe aktar sınıf CoolModel (ptl.LightningModule): def __init __ (öz): süper (CoolModel, self) .__ init __ () # en iyi model değil ... self.l1 = torch.nn.Linear (28 * 28, 10) def ileri (öz, x): torch.relu döndür (self.l1 (x.view (x.size (0), -1))) def my_loss (self, y_hat, y): dönüş F.cross_entropy (y_hat, y) def training_step (self, batch, batch_nb): x, y = toplu y_hat = self.forward (x) return {'loss': self.my_loss (y_hat, y)} def validation_step (self, batch, batch_nb): x, y = toplu y_hat = self.forward (x) return {'değer_kaybı': self.my_loss (y_hat, y)} def validation_end (self, çıktılar): avg_loss = torch.stack (). ortalama () return {'avg_val_loss': avg_loss} def configure_optimizers (self): dönüş @ ptl.data_loader def tng_dataloader (kendi): DataLoader döndür (MNIST (os.getcwd (), train = True, download = True, transform = transforms.ToTensor ()), batch_size = 32) @ ptl.data_loader def val_dataloader (kendi): DataLoader döndür (MNIST (os.getcwd (), train = True, download = True, transform = transforms.ToTensor ()), batch_size = 32) @ ptl.data_loader def test_dataloader (kendi): DataLoader döndür (MNIST (os.getcwd (), train = True, download = True, transform = transforms.ToTensor ()), batch_size = 32)

2. Eğiticiyi takın

Eğitmen, kodun Yıldırım otomasyon kısmının temel mantığını idare edebilir ve eğitim süreci boyunca en iyi uygulamaları çıkaracaktır.

Temel kullanım şu şekildedir:

pytorch_lightning'den import Trainermoder = LightningTemplate () eğitmen = Eğitmen () trainer.fit (model)

Doğru yürütülmesini sağladığınız sürece, yalnızca bir Eğitmen, bilgi işlem kümesi (SLURM), Hata Ayıklama ve dağıtılmış eğitime ihtiyacınız vardır.

pytorch_lightning içe aktarma Eğiticisinden test_tube içe aktarma deneyinden model = CoolModel () exp = Deneme (save_dir = os.getcwd ()) # Verilerin yalnızca% 10'unu kullanarak cpu üzerinde eğitim (demo amaçlı) eğitmen = Eğitmen (deneme = exp, max_nb_epochs = 1, train_percent_check = 0.1) # 4 GPU'da tren # eğitmen = Eğitmen (deneme = exp, max_nb_epochs = 1, gpus =) # 4 düğümde 32 gpus üzerinde eğitim (uygun SLURM işini gönderdiğinizden emin olun) # eğitmen = Eğitmen (deneme = exp, max_nb_epochs = 1, gpus =, nb_gpu_nodes = 4) # tren (1 dönem yalnızca demo için burada) trainer.fit (model) # tensorflow günlüklerini görüntüle print (f'Tensorboard --logdir {os.getcwd ()} 'çalıştırarak tensorboard günlüklerini görüntüleyin) print ('ve tarayıcınızda http: // localhost: 6006 adresine gidilecek')

Bir şey daha

Sorabilirsin, neden bir Yıldırım inşa etmek istiyorsun, fast.ai kullanmak kötü mü?

Yazar, Lightning ile fast.ai arasında karşılaştırılabilecek hiçbir şeyin olmadığını söyledi. Fast.ai derin öğrenme alanına girmek isteyen acemiler için, Lightning ise ML alanında aktif olan araştırmacılar içindir.

Gerçekten karşılaştırılsa bile, Lightning kutudan çıktığı gibi kullanılabilir.Sadece bu değil, aynı zamanda yüksek performanslı bilgi işlem, hata ayıklama araçları ve kullanılabilirlik açısından Lightning'e güveniyorum. Güvenle üç karşılaştırma tablosu attı:

PyTorch çok güzel kokulu!

Portal

GitHub adresi:

https://github.com/williamFalcon/pytorch-lightning

Öğretim Blogu:

https://towardsdatascience.com/supercharge-your-ai-research-with-pytorch-lightning-337948a99eec

- Bitiş -

Samimi işe alım

Qubit, editörleri / muhabirleri işe alıyor ve merkezi Pekin, Zhongguancun'da bulunuyor. Yetenekli ve hevesli öğrencilerin bize katılmasını dört gözle bekliyoruz! Ayrıntılar için, lütfen QbitAI diyalog arayüzünde "işe alım" kelimesiyle yanıt verin.

Qubit QbitAI · Toutiao İmzalama Yazarı

' ' Yapay zeka teknolojisi ve ürünlerindeki yeni eğilimleri takip edin

Çin Lejyonu KDD'ye hükmediyor: Çinli doktorlar en iyi tezi kazandı, Tsinghua Üniversitesi, Peking Üniversitesi ve Huawei listede
önceki
Kasıtlı olarak aldatmaca! "Lolita Teyze Oluyor" Gerçek ortaya çıkıyor, canlı yayın platformu gece geç saatlerde
Sonraki
Lingling: fırtınalı yollar, kalpten taşan sıcak güneş
Jingzhou: İlçe sıvılaştırılmış gaz endüstrisi için yangın güvenliği eğitimini başlatın
Baidu'nun sürücüsüz kiralama hizmeti Changsha'da açılıyor: Apollo teknolojisi, FAW Hongqi filosu, Çin'in ilk
Yapay zeka, satrancı bir satranç oyunu oynamadan, sadece insanların oyunu açıklamasını dinleyerek öğrenmiştir.
Güzellik ve pratikliğin birleşimi, Bull Rubik's Cube ailesinin gücü
1 Ağustos Ordu Günü'nde, bu güçlü öğretmenlere saygı gösterin
Python'a Markdown tarzı sürüm ekleyin, Run Online Jobyter Stand olarak kullanılabilir -Google Beyin
Tsinghua Yao 2019 birinci sınıf öğrencileri burada: üniversiteye giriş sınavı şampiyonu, Olimpiyat altın madalyası, yapay zekadan ilham alan post-00'lar
Nubia Z20 resmi olarak tanıtıldı: cep telefonlarında sözde SLR, 3499 yuan'dan başlayan fiyatlarla
Model yarı yarıya sıkıştırılmıştır ve doğruluk neredeyse kayıpsızdır. TensorFlow yarı hassas kayan nokta araç seti geliyor
Renkli TV'lerin 8K yükseltmesine liderlik eden Samsung QLED 8K TV'ler, endüstriyi "5G + 8K" çağına itiyor
Jiang Yong'un Zhang FuqingChen Yulin versiyonu: Partinin sadık ve güvenilir bir "iletişim askeri" olun
To Top