Container tabanlı bileşenler oluşturma
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
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'),
],
)
Aksi belirtilmediği sürece bu sayfanın içeriği Creative Commons Atıf 4.0 Lisansı altında ve kod örnekleri Apache 2.0 Lisansı altında lisanslanmıştır. Ayrıntılı bilgi için Google Developers Site Politikaları'na göz atın. Java, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-25 UTC.
[null,null,["Son güncelleme tarihi: 2025-07-25 UTC."],[],[],null,["# Building Container-based components\n\nContainer-based components provide the flexibility to integrate code written in\nany language into your pipeline, so long as you can execute that code in a\nDocker container.\n\nIf you are new to TFX pipelines,\n[learn more about the core concepts of TFX pipelines](/tfx/guide/understanding_tfx_pipelines).\n\nCreating a Container-based Component\n------------------------------------\n\nContainer-based components are backed by containerized command-line programs. If\nyou already have a container image, you can use TFX to create a component from\nit by using the\n[`create_container_component` function](https://github.com/tensorflow/tfx/blob/master/tfx/dsl/component/experimental/container_component.py)\nto declare inputs and outputs. Function parameters:\n\n- **name:** The name of the component.\n- **inputs:** A dictionary that maps input names to types. outputs: A dictionary that maps output names to types parameters: A dictionary that maps parameter names to types.\n- **image:** Container image name, and optionally image tag.\n- **command:** Container entrypoint command line. Not executed within a shell. The command line can use placeholder objects that are replaced at compilation time with the input, output, or parameter. The placeholder objects can be imported from [`tfx.dsl.component.experimental.placeholders`](https://github.com/tensorflow/tfx/blob/master/tfx/dsl/component/experimental/placeholders.py). Note that Jinja templates are not supported.\n\n**Return value:** a Component class inheriting from base_component.BaseComponent\nwhich can be instantiated and used inside the pipeline.\n\n### Placeholders\n\nFor a component that has inputs or outputs, the `command` often needs to have\nplaceholders that are replaced with actual data at runtime. Several placeholders\nare provided for this purpose:\n\n- `InputValuePlaceholder`: A placeholder for the value of the input artifact.\n At runtime, this placeholder is replaced with the string representation of\n the artifact's value.\n\n- `InputUriPlaceholder`: A placeholder for the URI of the input artifact\n argument. At runtime, this placeholder is replaced with the URI of the input\n artifact's data.\n\n- `OutputUriPlaceholder`: A placeholder for the URI of the output artifact\n argument. At runtime, this placeholder is replaced with the URI where the\n component should store the output artifact's data.\n\nLearn more about\n[TFX component command-line placeholders](https://github.com/tensorflow/tfx/blob/master/tfx/dsl/component/experimental/placeholders.py).\n\n### Example Container-based Component\n\nThe following is an example of a non-python component that downloads,\ntransforms, and uploads the data: \n\n import tfx.v1 as tfx\n\n grep_component = tfx.dsl.components.create_container_component(\n name='FilterWithGrep',\n inputs={\n 'text': tfx.standard_artifacts.ExternalArtifact,\n },\n outputs={\n 'filtered_text': tfx.standard_artifacts.ExternalArtifact,\n },\n parameters={\n 'pattern': str,\n },\n # The component code uses gsutil to upload the data to Google Cloud Storage, so the\n # container image needs to have gsutil installed and configured.\n image='google/cloud-sdk:278.0.0',\n command=[\n 'sh', '-exc',\n '''\n pattern=\"$1\"\n text_uri=\"$3\"/data # Adding suffix, because currently the URI are \"directories\". This will be fixed soon.\n text_path=$(mktemp)\n filtered_text_uri=\"$5\"/data # Adding suffix, because currently the URI are \"directories\". This will be fixed soon.\n filtered_text_path=$(mktemp)\n\n # Getting data into the container\n gsutil cp \"$text_uri\" \"$text_path\"\n\n # Running the main code\n grep \"$pattern\" \"$text_path\" \u003e\"$filtered_text_path\"\n\n # Getting data out of the container\n gsutil cp \"$filtered_text_path\" \"$filtered_text_uri\"\n ''',\n '--pattern', tfx.dsl.placeholders.InputValuePlaceholder('pattern'),\n '--text', tfx.dsl.placeholders.InputUriPlaceholder('text'),\n '--filtered-text', tfx.dsl.placeholders.OutputUriPlaceholder('filtered_text'),\n ],\n )"]]