Container tabanlı bileşenler oluşturma

Konteyner tabanlı bileşenler, herhangi bir dilde yazılmış kodu bir Docker konteynerinde çalıştırabildiğiniz sürece ardışık düzeninize entegre etme esnekliği sağlar.

TFX işlem hatları konusunda yeniyseniz TFX işlem hatlarına ilişkin temel kavramlar hakkında daha fazla bilgi edinin .

Konteyner Tabanlı Bileşen Oluşturma

Konteyner tabanlı bileşenler, konteynerleştirilmiş komut satırı programları tarafından desteklenir. Zaten bir kapsayıcı görüntünüz varsa, girişleri ve çıkışları bildirmek için create_container_component işlevini kullanarak TFX'i kullanarak ondan bir bileşen oluşturabilirsiniz. Fonksiyon parametreleri:

  • name: Bileşenin adı.
  • girişler: Giriş adlarını türlerle eşleştiren bir sözlük. çıktılar: Çıkış adlarını tür parametreleriyle eşleyen bir sözlük: Parametre adlarını türlerle eşleyen bir sözlük.
  • resim: Kapsayıcı resim adı ve isteğe bağlı olarak resim etiketi.
  • komut: Konteyner giriş noktası komut satırı. Bir kabuk içinde yürütülmez. Komut satırı, derleme zamanında giriş, çıkış veya parametre ile değiştirilen yer tutucu nesneleri kullanabilir. Yer tutucu nesneler tfx.dsl.component.experimental.placeholders adresinden içe aktarılabilir. Jinja şablonlarının desteklenmediğini unutmayın.

Dönüş değeri: base_component.BaseComponent'ten devralınan ve ardışık düzen içinde örneklenebilen ve kullanılabilen bir Component sınıfı.

Yer tutucular

Girişleri veya çıkışları olan bir bileşen için, command genellikle çalışma zamanında gerçek verilerle değiştirilen yer tutuculara sahip olması gerekir. Bu amaçla çeşitli yer tutucular sağlanmıştır:

  • InputValuePlaceholder : Giriş yapıtının değeri için bir yer tutucu. Çalışma zamanında bu yer tutucu, yapının değerinin dize temsiliyle değiştirilir.

  • InputUriPlaceholder : Giriş yapıtı bağımsız değişkeninin URI'si için bir yer tutucu. Çalışma zamanında bu yer tutucu, giriş yapıtının verilerinin URI'si ile değiştirilir.

  • OutputUriPlaceholder : Çıkış yapıtı bağımsız değişkeninin URI'si için bir yer tutucu. Çalışma zamanında bu yer tutucu, bileşenin çıktı yapıtının verilerini depolaması gereken URI ile değiştirilir.

TFX bileşeni komut satırı yer tutucuları hakkında daha fazla bilgi edinin.

Örnek Konteyner Tabanlı Bileşen

Aşağıda verileri indiren, dönüştüren ve yükleyen python olmayan bir bileşenin örneği verilmiştir:

import tfx.v1 as tfx

grep_component = tfx.dsl.components.create_container_component(
    name='FilterWithGrep',
    inputs={
        'text': tfx.standard_artifacts.ExternalArtifact,
    },
    outputs={
        'filtered_text': tfx.standard_artifacts.ExternalArtifact,
    },
    parameters={
        'pattern': str,
    },
    # The component code uses gsutil to upload the data to Google Cloud Storage, so the
    # container image needs to have gsutil installed and configured.
    image='google/cloud-sdk:278.0.0',
    command=[
        'sh', '-exc',
        '''
          pattern="$1"
          text_uri="$3"/data  # Adding suffix, because currently the URI are "directories". This will be fixed soon.
          text_path=$(mktemp)
          filtered_text_uri="$5"/data  # Adding suffix, because currently the URI are "directories". This will be fixed soon.
          filtered_text_path=$(mktemp)

          # Getting data into the container
          gsutil cp "$text_uri" "$text_path"

          # Running the main code
          grep "$pattern" "$text_path" >"$filtered_text_path"

          # Getting data out of the container
          gsutil cp "$filtered_text_path" "$filtered_text_uri"
        ''',
        '--pattern', tfx.dsl.placeholders.InputValuePlaceholder('pattern'),
        '--text', tfx.dsl.placeholders.InputUriPlaceholder('text'),
        '--filtered-text', tfx.dsl.placeholders.OutputUriPlaceholder('filtered_text'),
    ],
)