Apache Işını ve TFX

Apache Işın toplu koşu ve yürütme motorları çeşitli çalıştırmak işlerini işlemek verileri akışı için bir çerçeve sağlar. TFX kitaplıklarının birçoğu, işlem kümeleri arasında yüksek derecede ölçeklenebilirlik sağlayan görevleri çalıştırmak için Beam'i kullanır. Beam, tek bir hesaplama düğümünde çalışan ve geliştirme, test etme veya küçük dağıtımlar için çok kullanışlı olan bir doğrudan çalıştırıcı da dahil olmak üzere çeşitli yürütme motorları veya "koşucular" için destek içerir. Beam, TFX'in desteklenen herhangi bir koşucu üzerinde kod değişiklikleri olmadan çalışmasına olanak tanıyan bir soyutlama katmanı sağlar. TFX, Beam Python API'sini kullanır, bu nedenle Python API tarafından desteklenen koşucularla sınırlıdır.

Dağıtım ve Ölçeklenebilirlik

İş yükü gereksinimleri arttıkça Beam, büyük bilgi işlem kümelerinde çok büyük dağıtımlara ölçeklenebilir. Bu, yalnızca temeldeki koşucunun ölçeklenebilirliği ile sınırlıdır. Büyük dağıtımlardaki çalıştırıcılar, uygulama dağıtımını, ölçeklemeyi ve yönetimi otomatikleştirmek için tipik olarak Kubernetes veya Apache Mesos gibi bir kapsayıcı düzenleme sistemine dağıtılır.

Bkz Apache Işın Apache Beam'i fazla bilgi için belgelerine.

Google Bulut kullanıcıları için, Veri akışı güvenliği dahili ve izlenmesi, kaynaklar Diğer Google Cloud hizmetleri ile dinamik çalışma yeniden dengeleme, derin entegrasyon otomatik ölçeklendirme ile sunucusuz ve düşük maliyetli bir platform sağlar önerilen koşucu vardır.

Özel Python Kodu ve Bağımlılıkları

Beam'i bir TFX işlem hattında kullanmanın dikkate değer bir karmaşıklığı, özel kodu ve/veya ek Python modüllerinden ihtiyaç duyulan bağımlılıkları ele almaktır. Bunun bir sorun olabileceğine dair bazı örnekler:

  • preprocessing_fn, kullanıcının kendi Python modülüne başvurmalıdır
  • Değerlendirici bileşeni için özel bir çıkarıcı
  • bir TFX bileşeninden alt sınıflanan özel modüller

TFX için Beam'in desteğine gereksinim duyduğu Python Boru Hattı bağımlılıklar Yönetme Python bağımlılıkları işlemek için. Şu anda bunu yönetmenin iki yolu vardır:

  1. Python Kodu ve Bağımlılıklarını Kaynak Paket Olarak Sağlamak
  2. [Yalnızca veri akışı] Bir Kapsayıcı Görüntüsünü Çalışan Olarak Kullanma

Bunlar daha sonra tartışılır.

Python Kodu ve Bağımlılıklarını Kaynak Paket Olarak Sağlama

Bu, aşağıdakilere sahip kullanıcılar için önerilir:

  1. Python paketlemesine aşinadır ve
  2. Yalnızca Python kaynak kodunu kullanın (yani, C modülü veya paylaşılan kitaplıklar kullanmayın).

İçinde yolların birini takip ediniz Python Boru Hattı bağımlılıklar Yönetme aşağıdaki beam_pipeline_args bu kullanarak bir tane sağlamak üzere:

  • --setup_file
  • --ekstra_paket
  • --requirements_file

Uyarı: Yukarıdaki durumların herhangi birinde, emin aynı versiyonu, lütfen bunun tfx bir bağımlılık olarak listelenir.

[Yalnızca veri akışı] Bir Çalışan için Kapsayıcı Görüntüsü Kullanma

Yukarıdaki TFX 0.26.0 ve kullanmak için deneysel desteği vardır özel konteyner görüntü Veri akışı işçiler için.

Bunu kullanmak için yapmanız gerekenler:

  • Her iki sahip bir Docker görüntü oluşturun tfx ve kullanıcıların özel kod ve bağımlılıklar önceden yüklenmiş.
    • (1) kullanım kullanıcıları için tfx>=0.26 ve (2) kendi boru hatlarını geliştirmek için piton 3.7 kullanır, bunu yapmanın kolay yolu memurunun karşılık gelen sürümünü uzanan olduğunu tensorflow/tfx resim:
# You can use a build-arg to dynamically pass in the
# version of TFX being used to your Dockerfile.

ARG TFX_VERSION
FROM tensorflow/tfx:${TFX_VERSION}
# COPY your code and dependencies in
  • Oluşturulan görüntüyü, Dataflow tarafından kullanılan proje tarafından erişilebilen bir kapsayıcı görüntü kaydına aktarın.
    • Google Bulut kullanıcıları kullanarak düşünebiliriz Bulut Oluştur güzel yukarıdaki adımları otomatik hale getirir.
  • Aşağıdaki sağlayın beam_pipeline_args :
beam_pipeline_args.extend([
    '--runner=DataflowRunner',
    '--project={project-id}',
    '--worker_harness_container_image={image-ref}',
    '--experiments=use_runner_v2',
])

YAPILACAKLAR(b/171733562): Dataflow için varsayılan olduğunda use_runner_v2 öğesini kaldırın.

TODO (b / 179738639): belgelerine oluşturma nasıl Test özel konteynıra lokal sonra https://issues.apache.org/jira/browse/BEAM-5440

Kiriş Boru Hattı Argümanları

Birkaç TFX bileşeni, dağıtılmış veri işleme için Beam'e güvenir. Onlar ile yapılandırılan beam_pipeline_args boru hattı oluşturulurken sırasında belirtilir:

my_pipeline = Pipeline(
    ...,
    beam_pipeline_args=[...])

Yukarıdaki TFX 0.30 ve bir arayüz ekler with_beam_pipeline_args bileşen başına boru hattı seviyesi ışın bağımsız değişken olarak uzanan için:

example_gen = CsvExampleGen(input_base=data_root).with_beam_pipeline_args([...])