Apache Beam ile büyük veri setleri oluşturma
Bazı veri kümeleri tek bir makinede işlenemeyecek kadar büyük. tfds , Apache Beam kullanarak birçok makinede veri oluşturulmasını destekler.
Bu dokümanın iki bölümü vardır:
Mevcut bir Işın veri kümesi oluşturmak isteyen kullanıcılar için
Yeni bir Işın veri kümesi oluşturmak isteyen geliştirici için
Bir Işın veri kümesi oluşturma
Google Cloud Dataflow'da
Özel bir komut dosyasında
Bir Işın veri kümesini uygulama
Boru hattınızı çalıştırın
Aşağıda, hem bulutta hem de yerel olarak bir Işın veri kümesi oluşturmanın farklı örnekleri verilmiştir.
Uyarı: Veri kümesini tensorflow_datasets.scripts.download_and_prepare komut dosyası ile oluştururken, oluşturmak istediğiniz veri kümesi yapılandırmasını belirttiğinizden emin olun; aksi takdirde mevcut tüm yapılandırmaları oluşturur. Örneğin, için wikipedia kullanımı --dataset=wikipedia/20200301.en yerine --dataset=wikipedia .
Boru hattını Google Cloud Dataflow'u kullanarak çalıştırmak ve dağıtılmış hesaplamadan yararlanmak için, önce Hızlı Başlangıç ​​talimatlarını izleyin.
Ortamınızın ayarlandıktan sonra, Çalıştırabileceğiniz download_and_prepare üzerindeki bir veri dizinini kullanarak alfabenin GCS ve belirterek gerekli seçenekleri için --beam_pipeline_options bayrak.
Komut dosyasını başlatmayı kolaylaştırmak için, GCP / GCS kurulumunuz için gerçek değerleri ve oluşturmak istediğiniz veri kümesini kullanarak aşağıdaki değişkenleri tanımlamak yararlı olur:
Ardından, iş tfds yüklemesi için Dataflow'a bir dosya oluşturmanız gerekir:
tfds-nightly kullanıyorsanız, veri kümesinin son sürümden beri güncellenmiş olması durumunda tfds-nightly yankı aldığınızdan emin olun.
Son olarak, aşağıdaki komutu kullanarak işi başlatabilirsiniz:
Komut dosyanızı varsayılan Apache Beam çalıştırıcısını kullanarak yerel olarak çalıştırmak için, komut diğer veri kümeleriyle aynıdır:
Uyarı: Işın veri kümeleri çok büyük olabilir (TeraBytes) ve üretilecek önemli miktarda kaynak alabilir (yerel bilgisayarda haftalar sürebilir). Dağıtılmış bir ortam kullanılarak veri kümelerinin oluşturulması önerilir. Desteklenen çalışma zamanlarının bir listesi için Apache Beam Belgelerine bir göz atın.
Özel bir komut dosyasıyla
Beam üzerinde veri kümesini oluşturmak için, API diğer veri kümeleriyle aynıdır, ancak Beam seçeneklerini veya çalıştırıcısını DownloadConfig iletmeniz gerekir.
Apache Beam veri kümeleri yazmak için aşağıdaki kavramlara aşina olmalısınız:
İçeriğin çoğu Beam veri kümeleri için hala geçerli olduğundan, tfds veri kümesi oluşturma kılavuzuna aşina olun.
Beam programlama kılavuzu ile Apache Beam'e giriş yapın.
Veri kümenizi Cloud Dataflow kullanarak oluşturmak istiyorsanız Google Cloud Documentation ve Apache Beam bağımlılık kılavuzunu okuyun .
Veri kümesi oluşturma kılavuzuna aşina iseniz, bir Işın veri kümesi eklemek yalnızca birkaç değişiklik gerektirir:
DatasetBuilder , tfds.core.BeamBasedBuilder yerine tfds.core.GeneratorBasedBuilder .
Işın veri kümeleri soyut yöntem uygulamalıdır _build_pcollection(self, **kwargs) yerine yöntemi _generate_examples(self, **kwargs) . _build_pcollection bir beam.PCollection döndürmelidir. beam.PCollection ile ilişkili örneklerle beam.PCollection .
Beam veri kümeniz için birim testi yazmak, diğer veri kümeleriyle aynıdır.
Apache tfds.core.lazy_imports içe aktarmak için tfds.core.lazy_imports kullanın. Tembel bir bağımlılık kullanarak, kullanıcılar veri kümesini oluşturulduktan sonra Beam'i yüklemek zorunda kalmadan okuyabilirler.
Python kapaklarına dikkat edin. Boru hattını çalıştırırken, beam.Map ve beam.DoFn işlevleri pickle kullanılarak serileştirilir ve tüm çalışanlara gönderilir. Bu hatalar oluşturabilir; örneğin, işlevlerinizde işlev dışında bildirilen değişken bir nesne kullanıyorsanız, pickle hataları veya beklenmeyen davranışlarla karşılaşabilirsiniz. Düzeltme tipik olarak kapalı nesnelerin mutasyona uğramasını önlemek içindir.
Beam boru hattında DatasetBuilder üzerinde yöntemlerin kullanılması iyidir. Ancak, sınıfın turşu sırasında serileştirilme şekli, oluşturma sırasında özelliklerde yapılan değişiklikler en iyi şekilde göz ardı edilecektir.
Bir Beam veri kümesi örneği. Daha karmaşık gerçek bir örnek için Wikipedia veri kümesine bir göz atın.
Boru hattınızı çalıştırma
Boru hattını çalıştırmak için yukarıdaki bölüme bakın.
Uyarı: Veri kümesini indirmeleri ilk kez kaydederken register checksums --register_checksums işaretlerini download_and_prepare betiğine eklemeyi unutmayın.