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ısı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'),
],
)