pengantar
Dokumen ini akan memberikan petunjuk untuk membuat TensorFlow Extended (TFX) pipeline menggunakan template yang disediakan dengan paket TFX Python. Banyak dari instruksinya adalah perintah shell Linux, yang akan berjalan pada instance AI Platform Notebooks. Sesuai Jupyter sel kode Notebook yang memanggil perintah yang menggunakan ! disediakan.
Anda akan membangun pipa dengan menggunakan taksi Trips dataset yang dirilis oleh City of Chicago. Kami sangat menganjurkan Anda untuk mencoba membangun saluran Anda sendiri menggunakan kumpulan data Anda dengan memanfaatkan saluran ini sebagai garis dasar.
Langkah 1. Siapkan lingkungan Anda.
AI Platform Pipelines akan menyiapkan lingkungan pengembangan untuk membangun pipeline, dan kluster Kubeflow Pipeline untuk menjalankan pipeline yang baru dibangun.
Instal tfx paket python dengan kfp persyaratan tambahan.
import sys
# Use the latest version of pip.
!pip install --upgrade pip
# Install tfx and kfp Python packages.
!pip install --upgrade "tfx[kfp]<2"
Mari kita periksa versi TFX.
python3 -c "from tfx import version ; print('TFX version: {}'.format(version.__version__))"
TFX version: 0.29.0
Dalam AI Landasan Pipa, TFX berjalan di lingkungan Kubernetes host menggunakan Kubeflow Pipa .
Mari kita atur beberapa variabel lingkungan untuk menggunakan Kubeflow Pipelines.
Pertama, dapatkan ID proyek GCP Anda.
# Read GCP project id from env.
shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
GOOGLE_CLOUD_PROJECT=shell_output[0]
%env GOOGLE_CLOUD_PROJECT={GOOGLE_CLOUD_PROJECT}
print("GCP project ID:" + GOOGLE_CLOUD_PROJECT)
env: GOOGLE_CLOUD_PROJECT=tf-benchmark-dashboard GCP project ID:tf-benchmark-dashboard
Kami juga perlu mengakses cluster KFP Anda. Anda dapat mengaksesnya di Google Cloud Console di bawah menu "AI Platform > Pipeline". "Titik akhir" kluster KFP dapat ditemukan dari URL dasbor Pipelines, atau Anda bisa mendapatkannya dari URL halaman Memulai tempat Anda meluncurkan notebook ini. Mari kita menciptakan ENDPOINT variabel lingkungan dan set ke titik akhir klaster KFP. ENDPOINT hanya boleh berisi bagian hostname dari URL. Misalnya, jika URL dari dashboard KFP adalah <a href="https://1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com/#/start">https://1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com/#/start</a> , nilai ENDPOINT menjadi 1e9deb537390ca22-dot-asia-east1.pipelines.googleusercontent.com .
# This refers to the KFP cluster endpoint
ENDPOINT='' # Enter your ENDPOINT here.
if not ENDPOINT:
from absl import logging
logging.error('Set your ENDPOINT in this cell.')
ERROR:absl:Set your ENDPOINT in this cell.
Menetapkan nama gambar sebagai tfx-pipeline di bawah proyek GCP saat ini.
# Docker image name for the pipeline image.
CUSTOM_TFX_IMAGE='gcr.io/' + GOOGLE_CLOUD_PROJECT + '/tfx-pipeline'
Dan, sudah selesai. Kami siap untuk membuat pipa.
Langkah 2. Salin template yang telah ditentukan ke direktori proyek Anda.
Pada langkah ini, kita akan membuat direktori dan file proyek pipeline yang berfungsi dengan menyalin file tambahan dari template yang telah ditentukan.
Anda dapat memberikan pipa Anda nama yang berbeda dengan mengubah PIPELINE_NAME bawah. Ini juga akan menjadi nama direktori proyek tempat file Anda akan diletakkan.
PIPELINE_NAME="my_pipeline"
import os
PROJECT_DIR=os.path.join(os.path.expanduser("~"),"imported",PIPELINE_NAME)
TFX termasuk taxi template dengan paket TFX python. Jika Anda berencana untuk memecahkan masalah prediksi poin-bijaksana, termasuk klasifikasi dan regresi, template ini dapat digunakan sebagai titik awal.
The tfx template copy perintah copy CLI ditentukan sebelumnya file template ke dalam direktori proyek Anda.
!tfx template copy \
--pipeline-name={PIPELINE_NAME} \
--destination-path={PROJECT_DIR} \
--model=taxi
CLI
Copying taxi pipeline template
kubeflow_runner.py -> /home/kbuilder/imported/my_pipeline/kubeflow_runner.py
kubeflow_v2_dag_runner.py -> /home/kbuilder/imported/my_pipeline/kubeflow_v2_dag_runner.py
features_test.py -> /home/kbuilder/imported/my_pipeline/models/features_test.py
model_test.py -> /home/kbuilder/imported/my_pipeline/models/estimator/model_test.py
constants.py -> /home/kbuilder/imported/my_pipeline/models/estimator/constants.py
model.py -> /home/kbuilder/imported/my_pipeline/models/estimator/model.py
__init__.py -> /home/kbuilder/imported/my_pipeline/models/estimator/__init__.py
model_test.py -> /home/kbuilder/imported/my_pipeline/models/keras/model_test.py
constants.py -> /home/kbuilder/imported/my_pipeline/models/keras/constants.py
model.py -> /home/kbuilder/imported/my_pipeline/models/keras/model.py
__init__.py -> /home/kbuilder/imported/my_pipeline/models/keras/__init__.py
preprocessing_test.py -> /home/kbuilder/imported/my_pipeline/models/preprocessing_test.py
preprocessing.py -> /home/kbuilder/imported/my_pipeline/models/preprocessing.py
__init__.py -> /home/kbuilder/imported/my_pipeline/models/__init__.py
features.py -> /home/kbuilder/imported/my_pipeline/models/features.py
pipeline.py -> /home/kbuilder/imported/my_pipeline/pipeline/pipeline.py
configs.py -> /home/kbuilder/imported/my_pipeline/pipeline/configs.py
__init__.py -> /home/kbuilder/imported/my_pipeline/pipeline/__init__.py
local_runner.py -> /home/kbuilder/imported/my_pipeline/local_runner.py
model_analysis.ipynb -> /home/kbuilder/imported/my_pipeline/model_analysis.ipynb
__init__.py -> /home/kbuilder/imported/my_pipeline/__init__.py
data_validation.ipynb -> /home/kbuilder/imported/my_pipeline/data_validation.ipynb
.gitignore -> /home/kbuilder/imported/my_pipeline/.gitignore
Traceback (most recent call last):
File "/tmpfs/src/tf_docs_env/bin/tfx", line 8, in <module>
sys.exit(cli_group())
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/tools/cli/commands/template.py", line 73, in copy
template_handler.copy_template(ctx.flags_dict)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/tools/cli/handler/template_handler.py", line 185, in copy_template
fileio.copy(src_path, dst_path)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/fileio.py", line 51, in copy
src_fs.copy(src, dst, overwrite=overwrite)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tfx/dsl/io/plugins/tensorflow_gfile.py", line 48, in copy
tf.io.gfile.copy(src, dst, overwrite=overwrite)
File "/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/lib/io/file_io.py", line 516, in copy_v2
compat.path_to_bytes(src), compat.path_to_bytes(dst), overwrite)
tensorflow.python.framework.errors_impl.AlreadyExistsError: file already exists
Ubah konteks direktori kerja di buku catatan ini ke direktori proyek.
%cd {PROJECT_DIR}
/home/kbuilder/imported/my_pipeline
Langkah 3. Jelajahi file sumber yang Anda salin
Template TFX menyediakan file scaffold dasar untuk membangun pipeline, termasuk kode sumber Python, data sampel, dan Jupyter Notebooks untuk menganalisis output pipeline. The taxi Template menggunakan dataset Chicago Taxi yang sama dan model ML sebagai aliran udara Tutorial .
Berikut adalah pengantar singkat untuk masing-masing file Python.
-
pipeline- Direktori ini berisi definisi pipa-
configs.py- mendefinisikan konstanta umum untuk pelari pipa -
pipeline.py- mendefinisikan komponen TFX dan pipa
-
-
models- Direktori ini berisi ML definisi Model.-
features.py,features_test.py- mendefinisikan fitur untuk model -
preprocessing.py,preprocessing_test.py- mendefinisikan preprocessing pekerjaan menggunakantf::Transform -
estimator- Direktori ini berisi model berbasis Pengukur.-
constants.py- mendefinisikan konstanta model -
model.py,model_test.py- mendefinisikan Model DNN menggunakan TF estimator
-
-
keras- Direktori ini berisi model yang didasarkan Keras.-
constants.py- mendefinisikan konstanta model -
model.py,model_test.py- mendefinisikan Model DNN menggunakan Keras
-
-
-
local_runner.py,kubeflow_runner.py- mendefinisikan pelari untuk setiap mesin orkestrasi
Anda mungkin melihat bahwa ada beberapa file dengan _test.py di nama mereka. Ini adalah pengujian unit dari pipeline dan disarankan untuk menambahkan lebih banyak pengujian unit saat Anda mengimplementasikan pipeline Anda sendiri. Anda dapat menjalankan unit test dengan menyediakan nama modul file uji dengan -m bendera. Anda biasanya bisa mendapatkan nama modul dengan menghapus .py ekstensi dan mengganti / dengan . . Sebagai contoh:
{sys.executable} -m models.features_test{sys.executable} -m models.keras.model_test
Running tests under Python 3.7.5: /tmpfs/src/tf_docs_env/bin/python [ RUN ] FeaturesTest.testNumberOfBucketFeatureBucketCount INFO:tensorflow:time(__main__.FeaturesTest.testNumberOfBucketFeatureBucketCount): 0.0s I1204 11:33:54.064224 139808961349440 test_util.py:2076] time(__main__.FeaturesTest.testNumberOfBucketFeatureBucketCount): 0.0s [ OK ] FeaturesTest.testNumberOfBucketFeatureBucketCount [ RUN ] FeaturesTest.testTransformedNames INFO:tensorflow:time(__main__.FeaturesTest.testTransformedNames): 0.0s I1204 11:33:54.064666 139808961349440 test_util.py:2076] time(__main__.FeaturesTest.testTransformedNames): 0.0s [ OK ] FeaturesTest.testTransformedNames [ RUN ] FeaturesTest.test_session [ SKIPPED ] FeaturesTest.test_session ---------------------------------------------------------------------- Ran 3 tests in 0.001s OK (skipped=1) Running tests under Python 3.7.5: /tmpfs/src/tf_docs_env/bin/python [ RUN ] ModelTest.testBuildKerasModel 2021-12-04 11:33:57.507456: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcusolver.so.10'; dlerror: libcusolver.so.10: cannot open shared object file: No such file or directory 2021-12-04 11:33:57.508566: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1757] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform. Skipping registering GPU devices... I1204 11:33:57.581331 139740839778112 layer_utils.py:191] Model: "model" I1204 11:33:57.581501 139740839778112 layer_utils.py:192] __________________________________________________________________________________________________ I1204 11:33:57.581558 139740839778112 layer_utils.py:189] Layer (type) Output Shape Param # Connected to I1204 11:33:57.581596 139740839778112 layer_utils.py:194] ================================================================================================== I1204 11:33:57.581741 139740839778112 layer_utils.py:189] pickup_latitude_xf (InputLayer) [(None,)] 0 I1204 11:33:57.581793 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.581883 139740839778112 layer_utils.py:189] trip_miles_xf (InputLayer) [(None,)] 0 I1204 11:33:57.581926 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.582010 139740839778112 layer_utils.py:189] trip_start_hour_xf (InputLayer) [(None,)] 0 I1204 11:33:57.582052 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.582189 139740839778112 layer_utils.py:189] dense_features (DenseFeatures) (None, 1) 0 pickup_latitude_xf[0][0] I1204 11:33:57.582241 139740839778112 layer_utils.py:189] trip_miles_xf[0][0] I1204 11:33:57.582280 139740839778112 layer_utils.py:189] trip_start_hour_xf[0][0] I1204 11:33:57.582315 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.582462 139740839778112 layer_utils.py:189] dense (Dense) (None, 1) 2 dense_features[0][0] I1204 11:33:57.582518 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.582629 139740839778112 layer_utils.py:189] dense_1 (Dense) (None, 1) 2 dense[0][0] I1204 11:33:57.582674 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.582824 139740839778112 layer_utils.py:189] dense_features_1 (DenseFeatures (None, 34) 0 pickup_latitude_xf[0][0] I1204 11:33:57.582879 139740839778112 layer_utils.py:189] trip_miles_xf[0][0] I1204 11:33:57.582921 139740839778112 layer_utils.py:189] trip_start_hour_xf[0][0] I1204 11:33:57.582957 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.583053 139740839778112 layer_utils.py:189] concatenate (Concatenate) (None, 35) 0 dense_1[0][0] I1204 11:33:57.583099 139740839778112 layer_utils.py:189] dense_features_1[0][0] I1204 11:33:57.583143 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.583260 139740839778112 layer_utils.py:189] dense_2 (Dense) (None, 1) 36 concatenate[0][0] I1204 11:33:57.583309 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.583389 139740839778112 layer_utils.py:189] tf.compat.v1.squeeze (TFOpLambd (None,) 0 dense_2[0][0] I1204 11:33:57.583432 139740839778112 layer_utils.py:256] ================================================================================================== I1204 11:33:57.583687 139740839778112 layer_utils.py:267] Total params: 40 I1204 11:33:57.583751 139740839778112 layer_utils.py:268] Trainable params: 40 I1204 11:33:57.583794 139740839778112 layer_utils.py:269] Non-trainable params: 0 I1204 11:33:57.583832 139740839778112 layer_utils.py:270] __________________________________________________________________________________________________ I1204 11:33:57.649701 139740839778112 layer_utils.py:191] Model: "model_1" I1204 11:33:57.649825 139740839778112 layer_utils.py:192] __________________________________________________________________________________________________ I1204 11:33:57.649878 139740839778112 layer_utils.py:189] Layer (type) Output Shape Param # Connected to I1204 11:33:57.649932 139740839778112 layer_utils.py:194] ================================================================================================== I1204 11:33:57.650066 139740839778112 layer_utils.py:189] pickup_latitude_xf (InputLayer) [(None,)] 0 I1204 11:33:57.650120 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.650207 139740839778112 layer_utils.py:189] trip_miles_xf (InputLayer) [(None,)] 0 I1204 11:33:57.650259 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.650356 139740839778112 layer_utils.py:189] trip_start_hour_xf (InputLayer) [(None,)] 0 I1204 11:33:57.650398 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.650552 139740839778112 layer_utils.py:189] dense_features_2 (DenseFeatures (None, 1) 0 pickup_latitude_xf[0][0] I1204 11:33:57.650603 139740839778112 layer_utils.py:189] trip_miles_xf[0][0] I1204 11:33:57.650644 139740839778112 layer_utils.py:189] trip_start_hour_xf[0][0] I1204 11:33:57.650682 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.650812 139740839778112 layer_utils.py:189] dense_3 (Dense) (None, 1) 2 dense_features_2[0][0] I1204 11:33:57.650864 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.651007 139740839778112 layer_utils.py:189] dense_features_3 (DenseFeatures (None, 34) 0 pickup_latitude_xf[0][0] I1204 11:33:57.651061 139740839778112 layer_utils.py:189] trip_miles_xf[0][0] I1204 11:33:57.651102 139740839778112 layer_utils.py:189] trip_start_hour_xf[0][0] I1204 11:33:57.651146 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.651229 139740839778112 layer_utils.py:189] concatenate_1 (Concatenate) (None, 35) 0 dense_3[0][0] I1204 11:33:57.651274 139740839778112 layer_utils.py:189] dense_features_3[0][0] I1204 11:33:57.651311 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.651462 139740839778112 layer_utils.py:189] dense_4 (Dense) (None, 1) 36 concatenate_1[0][0] I1204 11:33:57.651547 139740839778112 layer_utils.py:258] __________________________________________________________________________________________________ I1204 11:33:57.651632 139740839778112 layer_utils.py:189] tf.compat.v1.squeeze_1 (TFOpLam (None,) 0 dense_4[0][0] I1204 11:33:57.651675 139740839778112 layer_utils.py:256] ================================================================================================== I1204 11:33:57.651959 139740839778112 layer_utils.py:267] Total params: 38 I1204 11:33:57.652019 139740839778112 layer_utils.py:268] Trainable params: 38 I1204 11:33:57.652061 139740839778112 layer_utils.py:269] Non-trainable params: 0 I1204 11:33:57.652098 139740839778112 layer_utils.py:270] __________________________________________________________________________________________________ INFO:tensorflow:time(__main__.ModelTest.testBuildKerasModel): 0.84s I1204 11:33:57.652639 139740839778112 test_util.py:2076] time(__main__.ModelTest.testBuildKerasModel): 0.84s [ OK ] ModelTest.testBuildKerasModel [ RUN ] ModelTest.test_session [ SKIPPED ] ModelTest.test_session ---------------------------------------------------------------------- Ran 2 tests in 0.836s OK (skipped=1)
Langkah 4. Jalankan pipa TFX pertama Anda
Komponen dalam pipa TFX akan menghasilkan output untuk masing-masing berjalan sebagai Artefak ML Metadata , dan mereka harus disimpan di suatu tempat. Anda dapat menggunakan penyimpanan apa pun yang dapat diakses oleh cluster KFP, dan untuk contoh ini kami akan menggunakan Google Cloud Storage (GCS). Bucket GCS default seharusnya dibuat secara otomatis. Namanya akan menjadi <your-project-id>-kubeflowpipelines-default .
Mari kita mengupload data sampel kita ke bucket GCS sehingga kita dapat menggunakannya di pipeline kita nanti.
gsutil cp data/data.csv gs://{GOOGLE_CLOUD_PROJECT}-kubeflowpipelines-default/tfx-template/data/taxi/data.csv
BucketNotFoundException: 404 gs://tf-benchmark-dashboard-kubeflowpipelines-default bucket does not exist.
Mari kita membuat pipa TFX menggunakan tfx pipeline create perintah.
!tfx pipeline create --pipeline-path=kubeflow_runner.py --endpoint={ENDPOINT} \
--build-image
CLI Usage: tfx pipeline create [OPTIONS] Try 'tfx pipeline create --help' for help. Error: no such option: --build-image
Sementara menciptakan pipa, Dockerfile akan dihasilkan untuk membangun citra Docker. Jangan lupa untuk menambahkannya ke sistem kontrol sumber (misalnya, git) bersama dengan file sumber lainnya.
Sekarang mulai eksekusi dijalankan dengan pipa yang baru dibuat menggunakan tfx run create perintah.
tfx run create --pipeline-name={PIPELINE_NAME} --endpoint={ENDPOINT}
CLI Creating a run for pipeline: my_pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. Pipeline "my_pipeline" does not exist.
Atau, Anda juga dapat menjalankan pipeline di Dasbor KFP. Eksekusi yang baru dijalankan akan dicantumkan di bawah Eksperimen di Dasbor KFP. Mengklik eksperimen akan memungkinkan Anda memantau kemajuan dan memvisualisasikan artefak yang dibuat selama eksekusi dijalankan.
Namun, kami sarankan untuk mengunjungi Dasbor KFP. Anda dapat mengakses Dasbor KFP dari menu Cloud AI Platform Pipelines di Google Cloud Console. Setelah Anda mengunjungi dasbor, Anda akan dapat menemukan pipeline, dan mengakses banyak informasi tentang pipeline. Sebagai contoh, Anda dapat menemukan Anda berjalan di bawah menu Percobaan, dan ketika Anda membuka eksekusi run Anda di bawah Eksperimen Anda dapat menemukan semua artefak Anda dari pipa bawah menu Artefak.
Salah satu sumber utama kegagalan adalah masalah terkait izin. Pastikan kluster KFP Anda memiliki izin untuk mengakses Google Cloud API. Ini dapat dikonfigurasi ketika Anda membuat cluster KFP di GCP , atau melihat dokumen Mengatasi Masalah di GCP .
Langkah 5. Tambahkan komponen untuk validasi data.
Pada langkah ini, Anda akan menambahkan komponen untuk validasi data termasuk StatisticsGen , SchemaGen , dan ExampleValidator . Jika Anda tertarik dalam validasi data, lihat Memulai Tensorflow Validasi data .
Klik dua kali untuk mengubah direktori ke
pipelinedan double-klik lagi untuk terbukapipeline.py. Cari dan tanda komentar pada 3 baris yang menambahStatisticsGen,SchemaGen, danExampleValidatoruntuk pipa. (Tip: mencari komentar yang mengandungTODO(step 5):). Pastikan untuk menyimpanpipeline.pysetelah Anda mengeditnya.
Anda sekarang perlu memperbarui pipa yang ada dengan definisi pipa yang dimodifikasi. Gunakan tfx pipeline update perintah untuk memperbarui pipa Anda, diikuti oleh tfx run create perintah untuk membuat eksekusi run baru pipa Anda diperbarui.
# Update the pipeline
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
# You can run the pipeline the same way.
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI Updating pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. beam runner not found in dsl. CLI Creating a run for pipeline: my_pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. Pipeline "my_pipeline" does not exist.
Periksa output pipa
Kunjungi dasbor KFP untuk menemukan output pipeline di halaman untuk menjalankan pipeline Anda. Klik tab Percobaan di sebelah kiri, dan Semua berjalan di laman Eksperimen. Anda harus dapat menemukan proses terbaru dengan nama pipeline Anda.
Langkah 6. Tambahkan komponen untuk pelatihan.
Pada langkah ini, Anda akan menambahkan komponen untuk pelatihan dan validasi model termasuk Transform , Trainer , Resolver , Evaluator , dan Pusher .
-Klik dua kali untuk membuka
pipeline.py. Cari dan tanda komentar pada 5 baris yang menambahTransform,Trainer,Resolver,EvaluatordanPusheruntuk pipa. (Tip: mencariTODO(step 6):)
Seperti yang Anda lakukan sebelumnya, Anda sekarang perlu memperbarui pipa yang ada dengan definisi pipa yang dimodifikasi. Instruksi yang sama dengan Langkah 5. Update pipa menggunakan tfx pipeline update , dan membuat eksekusi run menggunakan tfx run create .
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI Updating pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. beam runner not found in dsl. CLI Creating a run for pipeline: my_pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. Pipeline "my_pipeline" does not exist.
Ketika eksekusi ini selesai dengan sukses, Anda sekarang telah membuat dan menjalankan pipeline TFX pertama Anda di AI Platform Pipelines!
Langkah 7. (Opsional) Coba BigQueryExampleGen
BigQuery adalah serverless, sangat scalable, dan hemat biaya data awan gudang. BigQuery dapat digunakan sebagai sumber untuk contoh pelatihan di TFX. Pada langkah ini, kita akan menambahkan BigQueryExampleGen ke pipa.
-Klik dua kali untuk membuka
pipeline.py. Komentar keluarCsvExampleGendan komentar pada baris yang menciptakan sebuah instance dariBigQueryExampleGen. Anda juga perlu tanda komentar padaqueryargumen daricreate_pipelinefungsi.
Kita perlu menentukan proyek GCP digunakan untuk BigQuery, dan ini dilakukan dengan menetapkan --project di beam_pipeline_args saat membuat saluran pipa.
-Klik dua kali untuk membuka
configs.py. Tanda komentar definisiGOOGLE_CLOUD_REGION,BIG_QUERY_WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGSdanBIG_QUERY_QUERY. Anda harus mengganti nilai region dalam file ini dengan nilai yang benar untuk project GCP Anda.
Ubah direktori satu tingkat ke atas. Klik nama direktori di atas daftar file. Nama direktori adalah nama dari pipa yang
my_pipelinejika Anda tidak berubah.
-Klik dua kali untuk membuka
kubeflow_runner.py. Tanda komentar dua argumen,querydanbeam_pipeline_args, untukcreate_pipelinefungsi.
Sekarang pipeline siap menggunakan BigQuery sebagai sumber contoh. Perbarui pipeline seperti sebelumnya dan buat eksekusi baru seperti yang kita lakukan pada langkah 5 dan 6.
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI Updating pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. beam runner not found in dsl. CLI Creating a run for pipeline: my_pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. Pipeline "my_pipeline" does not exist.
Langkah 8. (Opsional) Coba Dataflow dengan KFP
Beberapa TFX Komponen menggunakan Apache Beam untuk melaksanakan pipa data paralel, dan itu berarti bahwa Anda dapat mendistribusikan pengolahan data beban kerja menggunakan Google Cloud Dataflow . Pada langkah ini, kita akan mengatur orkestra Kubeflow untuk menggunakan dataflow sebagai back-end pemrosesan data untuk Apache Beam.
Klik dua kali
pipelinedirektori perubahan, dan double-klik untuk membukaconfigs.py. Tanda komentar definisiGOOGLE_CLOUD_REGION, danDATAFLOW_BEAM_PIPELINE_ARGS.
Ubah direktori satu tingkat ke atas. Klik nama direktori di atas daftar file. Nama direktori adalah nama dari pipa yang
my_pipelinejika Anda tidak berubah.
-Klik dua kali untuk membuka
kubeflow_runner.py. Tanda komentarbeam_pipeline_args. (Juga pastikan untuk komentar saatbeam_pipeline_argsyang ditambahkan pada Langkah 7.)
Sekarang pipeline siap menggunakan Dataflow. Perbarui pipeline dan buat eksekusi seperti yang kita lakukan pada langkah 5 dan 6.
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI Updating pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. beam runner not found in dsl. CLI Creating a run for pipeline: my_pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. Pipeline "my_pipeline" does not exist.
Anda dapat menemukan pekerjaan Dataflow Anda di Dataflow di Cloud Console .
Langkah 9. (Opsional) Coba Cloud AI Pelatihan platform dan Prediksi dengan KFP
Interoperasi TFX dengan beberapa layanan GCP dikelola, seperti Cloud AI Platform untuk Pelatihan dan Prediksi . Anda dapat mengatur Anda Trainer komponen untuk menggunakan Cloud AI Landasan Pelatihan, layanan dikelola untuk pelatihan model ML. Selain itu, ketika model Anda dibuat dan siap disajikan, Anda dapat mendorong model Anda ke Cloud AI Landasan Prediksi untuk melayani. Pada langkah ini, kita akan mengatur kami Trainer dan Pusher komponen untuk menggunakan layanan Cloud AI Platform.
Sebelum mengedit file, Anda mungkin pertama harus mengaktifkan AI Landasan Training & Prediksi API.
Klik dua kali
pipelinedirektori perubahan, dan double-klik untuk membukaconfigs.py. Tanda komentar definisiGOOGLE_CLOUD_REGION,GCP_AI_PLATFORM_TRAINING_ARGSdanGCP_AI_PLATFORM_SERVING_ARGS. Kami akan menggunakan kustom dibangun image wadah kami untuk melatih model di Cloud AI Pelatihan Platform, jadi kita harus mengaturmasterConfig.imageUridiGCP_AI_PLATFORM_TRAINING_ARGSdengan nilai yang sama sepertiCUSTOM_TFX_IMAGEdi atas.
Ubah direktori satu tingkat atas, dan double-klik untuk membuka
kubeflow_runner.py. Tanda komentarai_platform_training_argsdanai_platform_serving_args.
Perbarui pipeline dan buat eksekusi seperti yang kita lakukan pada langkah 5 dan 6.
!tfx pipeline update \
--pipeline-path=kubeflow_runner.py \
--endpoint={ENDPOINT}
!tfx run create --pipeline-name {PIPELINE_NAME} --endpoint={ENDPOINT}
CLI Updating pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. beam runner not found in dsl. CLI Creating a run for pipeline: my_pipeline Detected Beam. [WARNING] Default engine will be changed to "local" in the near future. Use --engine flag if you intend to use a different orchestrator. Pipeline "my_pipeline" does not exist.
Anda dapat menemukan pekerjaan pelatihan Anda di Cloud AI Landasan Jobs . Jika pipa Anda selesai dengan sukses, Anda dapat menemukan model Anda di Model Cloud AI platform .
Langkah 10. Serap data ANDA ke pipeline
Kami membuat pipeline untuk model menggunakan dataset Chicago Taxi. Sekarang saatnya untuk memasukkan data Anda ke dalam pipeline.
Data Anda dapat disimpan di mana saja yang dapat diakses oleh pipeline Anda, termasuk GCS, atau BigQuery. Anda perlu mengubah definisi saluran untuk mengakses data Anda.
- Jika data Anda disimpan dalam file, memodifikasi
DATA_PATHdikubeflow_runner.pyataulocal_runner.pydan set ke lokasi file Anda. Jika data Anda disimpan di BigQuery, memodifikasiBIG_QUERY_QUERYdipipeline/configs.pyuntuk benar permintaan untuk data Anda. - Menambahkan fitur di
models/features.py. - Memodifikasi
models/preprocessing.pyuntuk mentransformasi input data untuk pelatihan . - Modifikasi
models/keras/model.pydanmodels/keras/constants.pyuntuk menggambarkan ML Anda memodelkan .- Anda juga dapat menggunakan model berbasis estimator. Perubahan
RUN_FNkonstan untukmodels.estimator.model.run_fndipipeline/configs.py.
- Anda juga dapat menggunakan model berbasis estimator. Perubahan
Silakan lihat Trainer panduan komponen untuk lebih memperkenalkan.
Membersihkan
Untuk membersihkan semua sumber daya Google Cloud digunakan dalam proyek ini, Anda dapat menghapus proyek Google Cloud Anda digunakan untuk tutorial.
Atau, Anda dapat membersihkan sumber daya individual dengan mengunjungi setiap konsol:
Lihat di TensorFlow.org
Jalankan di Google Colab
Lihat sumber di GitHub
Unduh buku catatan