Memahami Komponen Kustom TFX

Pipeline TFX memungkinkan Anda mengatur alur kerja machine learning (ML) pada orkestra, seperti: Apache Airflow, Apache Beam, dan Kubeflow Pipelines. Pipeline mengatur alur kerja Anda ke dalam urutan komponen, di mana setiap komponen melakukan langkah dalam alur kerja ML Anda. Komponen standar TFX menyediakan fungsionalitas yang telah terbukti untuk membantu Anda mulai membangun alur kerja ML dengan mudah. Anda juga dapat menyertakan komponen kustom dalam alur kerja Anda. Komponen kustom memungkinkan Anda memperluas alur kerja ML dengan:

  • Membangun komponen yang disesuaikan untuk memenuhi kebutuhan Anda, seperti menyerap data dari sistem berpemilik.
  • Menerapkan augmentasi data, upsampling, atau downsampling.
  • Lakukan deteksi anomali berdasarkan interval kepercayaan atau kesalahan reproduksi autoencoder.
  • Berinteraksi dengan sistem eksternal seperti meja bantuan untuk peringatan dan pemantauan.
  • Menerapkan label ke contoh yang tidak berlabel.
  • Mengintegrasikan alat yang dibuat dengan bahasa selain Python ke dalam alur kerja ML Anda, seperti melakukan analisis data menggunakan R.

Dengan menggabungkan komponen standar dan komponen kustom, Anda dapat membangun alur kerja ML yang memenuhi kebutuhan Anda sambil memanfaatkan praktik terbaik yang ada di dalam komponen standar TFX.

Panduan ini menjelaskan konsep yang diperlukan untuk memahami komponen kustom TFX, dan berbagai cara Anda dapat membuat komponen kustom.

Anatomi Komponen TFX

Bagian ini memberikan ikhtisar tingkat tinggi tentang komposisi komponen TFX. Jika Anda baru mengenal saluran pipa TFX, pelajari konsep inti dengan membaca panduan untuk memahami saluran pipa TFX .

Komponen TFX terdiri dari spesifikasi komponen dan kelas pelaksana yang dikemas dalam kelas antarmuka komponen.

Spesifikasi komponen mendefinisikan kontrak input dan output komponen. Kontrak ini menentukan artefak input dan output komponen, dan parameter yang digunakan untuk eksekusi komponen.

Kelas pelaksana komponen menyediakan implementasi untuk pekerjaan yang dilakukan oleh komponen.

Kelas antarmuka komponen menggabungkan spesifikasi komponen dengan pelaksana untuk digunakan sebagai komponen dalam pipa TFX.

Komponen TFX saat runtime

Saat pipeline menjalankan komponen TFX, komponen dijalankan dalam tiga fase:

  1. Pertama, Driver menggunakan spesifikasi komponen untuk mengambil artefak yang diperlukan dari penyimpanan metadata dan meneruskannya ke dalam komponen.
  2. Selanjutnya, Pelaksana melakukan pekerjaan komponen.
  3. Kemudian Publisher menggunakan spesifikasi komponen dan hasil dari pelaksana untuk menyimpan keluaran komponen di penyimpanan metadata.

Komponen Anatomi

Sebagian besar implementasi komponen kustom tidak mengharuskan Anda untuk menyesuaikan Driver atau Publisher. Biasanya, modifikasi pada Driver dan Publisher hanya diperlukan jika Anda ingin mengubah interaksi antara komponen pipeline dan penyimpanan metadata. Jika Anda hanya ingin mengubah input, output, atau parameter untuk komponen Anda, Anda hanya perlu mengubah spesifikasi komponen .

Jenis komponen khusus

Ada tiga jenis komponen kustom: komponen berbasis fungsi Python, komponen berbasis wadah, dan komponen kustom sepenuhnya. Bagian berikut menjelaskan berbagai jenis komponen dan kasus ketika Anda harus menggunakan setiap pendekatan.

Komponen berbasis fungsi Python

Komponen berbasis fungsi Python lebih mudah dibuat daripada komponen berbasis container atau komponen kustom sepenuhnya. Spesifikasi komponen didefinisikan dalam argumen fungsi Python menggunakan anotasi tipe yang menjelaskan apakah argumen adalah artefak input, artefak output, atau parameter. Badan fungsi mendefinisikan pelaksana komponen. Antarmuka komponen ditentukan dengan menambahkan dekorator @component ke fungsi Anda.

Dengan mendekorasi fungsi Anda dengan dekorator @component dan mendefinisikan argumen fungsi dengan anotasi tipe, Anda dapat membuat komponen tanpa kerumitan dalam membangun spesifikasi komponen, eksekutor, dan antarmuka komponen.

Pelajari cara membangun komponen berbasis fungsi Python .

Komponen berbasis kontainer

Komponen berbasis container memberikan fleksibilitas untuk mengintegrasikan kode yang ditulis dalam bahasa apa pun ke dalam pipeline Anda, selama Anda dapat mengeksekusi kode tersebut dalam container Docker. Untuk membuat komponen berbasis container, Anda harus membuat image container Docker yang berisi kode yang dapat dieksekusi dari komponen Anda. Maka Anda harus memanggil fungsi create_container_component untuk mendefinisikan:

  • Input, output, dan parameter spesifikasi komponen Anda.
  • Gambar kontainer dan perintah yang dijalankan oleh pelaksana komponen.

Fungsi ini mengembalikan instance komponen yang dapat Anda sertakan dalam definisi saluran Anda.

Pendekatan ini lebih kompleks daripada membangun komponen berbasis fungsi Python, karena memerlukan pengemasan kode Anda sebagai gambar wadah. Pendekatan ini paling cocok untuk menyertakan kode non-Python dalam pipeline Anda, atau untuk membangun komponen Python dengan lingkungan runtime atau dependensi yang kompleks.

Pelajari cara membuat komponen berbasis container .

Komponen kustom sepenuhnya

Komponen kustom sepenuhnya memungkinkan Anda membangun komponen dengan menentukan spesifikasi komponen, eksekutor, dan kelas antarmuka komponen. Pendekatan ini memungkinkan Anda menggunakan kembali dan memperluas komponen standar agar sesuai dengan kebutuhan Anda.

Jika komponen yang ada didefinisikan dengan input dan output yang sama dengan komponen kustom yang Anda kembangkan, Anda cukup mengganti kelas Executor dari komponen yang ada. Ini berarti Anda dapat menggunakan kembali spesifikasi komponen dan mengimplementasikan eksekutor baru yang diturunkan dari komponen yang ada. Dengan cara ini, Anda menggunakan kembali fungsionalitas yang dibangun ke dalam komponen yang ada dan hanya mengimplementasikan fungsionalitas yang diperlukan.

Namun, jika input dan output dari komponen baru Anda unik, Anda dapat menentukan spesifikasi komponen yang sama sekali baru.

Pendekatan ini paling baik untuk menggunakan kembali spesifikasi dan pelaksana komponen yang ada.

Pelajari cara membuat komponen kustom sepenuhnya .