Pipeline TFX memungkinkan Anda mengatur alur kerja machine learning (ML) pada orkestrator, seperti: Apache Airflow, Apache Beam, dan Kubeflow Pipelines. Pipeline mengatur alur kerja Anda ke dalam urutan komponen, di mana setiap komponen melakukan satu 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 khusus dalam alur kerja Anda. Komponen khusus 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 pada 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 memadukan komponen standar dan komponen khusus, Anda dapat membangun alur kerja ML yang memenuhi kebutuhan Anda sambil memanfaatkan praktik terbaik yang ada dalam komponen standar TFX.
Panduan ini menjelaskan konsep yang diperlukan untuk memahami komponen kustom TFX, dan berbagai cara untuk membuat komponen kustom.
Anatomi Komponen TFX
Bagian ini memberikan gambaran umum tingkat tinggi tentang komposisi komponen TFX. Jika Anda baru mengenal pipeline TFX, pelajari konsep inti dengan membaca panduan untuk memahami pipeline TFX .
Komponen TFX terdiri dari spesifikasi komponen dan kelas eksekutor yang dikemas dalam kelas antarmuka komponen.
Spesifikasi komponen mendefinisikan kontrak input dan output komponen. Kontrak ini menentukan artefak masukan dan keluaran komponen, serta parameter yang digunakan untuk eksekusi komponen.
Kelas eksekutor suatu komponen menyediakan implementasi untuk pekerjaan yang dilakukan oleh komponen tersebut.
Kelas antarmuka komponen menggabungkan spesifikasi komponen dengan eksekutor untuk digunakan sebagai komponen dalam pipeline TFX.
Komponen TFX saat runtime
Saat pipeline menjalankan komponen TFX, komponen tersebut dieksekusi dalam tiga fase:
- Pertama, Pengemudi menggunakan spesifikasi komponen untuk mengambil artefak yang diperlukan dari penyimpanan metadata dan meneruskannya ke dalam komponen.
- Selanjutnya, Executor melakukan pekerjaan komponen.
- Kemudian Publisher menggunakan spesifikasi komponen dan hasil dari eksekutor untuk menyimpan keluaran komponen di penyimpanan metadata.
Sebagian besar penerapan komponen khusus tidak mengharuskan Anda menyesuaikan Driver atau Publisher. Biasanya, modifikasi pada Driver dan Publisher hanya diperlukan jika Anda ingin mengubah interaksi antara komponen saluran Anda dan penyimpanan metadata. Jika Anda hanya ingin mengubah input, output, atau parameter komponen Anda, Anda hanya perlu memodifikasi spesifikasi komponen .
Jenis komponen khusus
Ada tiga jenis komponen khusus: komponen berbasis fungsi Python, komponen berbasis kontainer, dan komponen khusus sepenuhnya. Bagian berikut menjelaskan berbagai jenis komponen dan kasus kapan Anda harus menggunakan setiap pendekatan.
Komponen berbasis fungsi Python
Komponen berbasis fungsi Python lebih mudah dibuat daripada komponen berbasis kontainer atau komponen khusus sepenuhnya. Spesifikasi komponen ditentukan dalam argumen fungsi Python menggunakan anotasi tipe yang menjelaskan apakah argumen merupakan artefak masukan, artefak keluaran, atau parameter. Badan fungsi mendefinisikan eksekutor 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 membuat spesifikasi komponen, eksekutor, dan antarmuka komponen.
Pelajari cara membuat komponen berbasis fungsi Python .
Komponen berbasis kontainer
Komponen berbasis kontainer memberikan fleksibilitas untuk mengintegrasikan kode yang ditulis dalam bahasa apa pun ke dalam pipeline Anda, selama Anda dapat mengeksekusi kode tersebut dalam kontainer Docker. Untuk membuat komponen berbasis kontainer, Anda harus membuat image kontainer Docker yang berisi kode komponen yang dapat dieksekusi. 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 sebuah instance dari komponen yang dapat Anda sertakan dalam definisi alur Anda.
Pendekatan ini lebih kompleks daripada membangun komponen berbasis fungsi Python, karena memerlukan pengemasan kode Anda sebagai gambar container. Pendekatan ini paling cocok untuk memasukkan kode non-Python ke dalam pipeline Anda, atau untuk membuat komponen Python dengan lingkungan runtime atau dependensi yang kompleks.
Pelajari cara membuat komponen berbasis kontainer .
Komponen yang sepenuhnya khusus
Komponen yang sepenuhnya disesuaikan memungkinkan Anda membuat 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 sudah ada ditentukan dengan input dan output yang sama dengan komponen khusus yang Anda kembangkan, Anda cukup mengganti kelas Executor dari komponen yang sudah ada. Ini berarti Anda dapat menggunakan kembali spesifikasi komponen dan mengimplementasikan eksekutor baru yang berasal dari komponen yang sudah ada. Dengan cara ini, Anda menggunakan kembali fungsionalitas yang dibangun pada komponen yang sudah ada dan hanya mengimplementasikan fungsionalitas yang diperlukan.
Namun jika masukan dan keluaran komponen baru Anda unik, Anda dapat menentukan spesifikasi komponen yang sepenuhnya baru.
Pendekatan ini paling baik untuk menggunakan kembali spesifikasi komponen dan pelaksana yang ada.
Pelajari cara membuat komponen khusus sepenuhnya .