pengantar
Dokumen ini akan memberikan petunjuk untuk membuat TensorFlow Extended (TFX) pipeline menggunakan template yang disediakan dengan paket TFX Python. Sebagian besar instruksi yang perintah Linux shell, dan 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.
Kami akan membangun pipa menggunakan Apache Beam Orchestrator . Jika Anda tertarik menggunakan Kubeflow orkestra di Google Cloud, silakan lihat TFX pada Cloud AI Landasan Pipa tutorial .
Prasyarat
- Linux / MacOS
- Python >= 3.5.3
Anda bisa mendapatkan semua prasyarat mudah dengan menjalankan notebook ini di Google CoLab .
Langkah 1. Siapkan lingkungan Anda.
Sepanjang dokumen ini, kami akan menyajikan perintah dua kali. Sekali sebagai perintah shell copy-and-paste-ready, sekali sebagai sel notebook jupyter. Jika Anda menggunakan Colab, lewati saja blok skrip shell dan jalankan sel notebook.
Anda harus menyiapkan lingkungan pengembangan untuk membangun saluran.
Instal tfx paket python. Kami merekomendasikan penggunaan virtualenv di lingkungan setempat. Anda dapat menggunakan cuplikan skrip shell berikut untuk menyiapkan lingkungan Anda.
# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install -q --user --upgrade tfx==0.23.0
Jika Anda menggunakan colab:
import sys
!{sys.executable} -m pip install -q --user --upgrade -q tfx==0.23.0
KESALAHAN: beberapa-paket 0.some_version.1 memiliki persyaratan paket lain!=2.0.,<3,>=1.15, tetapi Anda akan memiliki paket lain 2.0.0 yang tidak kompatibel.
Harap abaikan kesalahan ini saat ini.
# Set `PATH` to include user python binary directory.
HOME=%env HOME
PATH=%env PATH
%env PATH={PATH}:{HOME}/.local/bin
env: PATH=/tmpfs/src/tf_docs_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin:/opt/android-studio/current/bin:/usr/local/go/bin:/usr/local/go/packages/bin:/opt/kubernetes/client/bin/:/home/kbuilder/.local/bin:/home/kbuilder/.local/bin
Mari kita periksa versi TFX.
python -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
python3 -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
TFX version: 0.23.0
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.
export PIPELINE_NAME="my_pipeline"
export PROJECT_DIR=~/tfx/${PIPELINE_NAME}
PIPELINE_NAME="my_pipeline"
import os
# Create a project directory under Colab content directory.
PROJECT_DIR=os.path.join(os.sep,"content",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 CLI salinan ditentukan sebelumnya file template ke dalam direktori proyek Anda.
tfx template copy \
--pipeline_name="${PIPELINE_NAME}" \
--destination_path="${PROJECT_DIR}" \
--model=taxi
!tfx template copy \
--pipeline_name={PIPELINE_NAME} \
--destination_path={PROJECT_DIR} \
--model=taxi
2020-09-07 09:09:40.131982: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
CLI
Copying taxi pipeline template
Traceback (most recent call last):
File "/home/kbuilder/.local/bin/tfx", line 8, in <module>
sys.exit(cli_group())
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/commands/template.py", line 73, in copy
template_handler.copy_template(ctx.flags_dict)
File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 168, in copy_template
replace_dict)
File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 107, in _copy_and_replace_placeholder_dir
tf.io.gfile.makedirs(dst)
File "/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 480, in recursive_create_dir_v2
_pywrap_file_io.RecursivelyCreateDir(compat.as_bytes(path))
tensorflow.python.framework.errors_impl.PermissionDeniedError: /content; Permission denied
Ubah konteks direktori kerja di buku catatan ini ke direktori proyek.
cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline' /tmpfs/src/temp/docs/tutorials/tfx
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 .
Di Google Colab, Anda dapat menjelajahi file dengan mengeklik ikon folder di sebelah kiri. File harus disalin di bawah directoy proyek, yang namanya my_pipeline dalam kasus ini. Anda dapat mengklik nama direktori untuk melihat konten direktori, dan mengklik dua kali nama file untuk membukanya.
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
-
-
-
beam_dag_runner.py,kubeflow_dag_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:
python -m models.features_test
{sys.executable} -m models.features_test{sys.executable} -m models.keras.model_test
/tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.features_test' (ModuleNotFoundError: No module named 'models') /tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.keras.model_test' (ModuleNotFoundError: No module named 'models')
Langkah 4. Jalankan pipa TFX pertama Anda
Anda dapat membuat pipa menggunakan pipeline create perintah.
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
2020-09-07 09:09:45.612839: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating pipeline Invalid pipeline path: beam_dag_runner.py
Kemudian, Anda dapat menjalankan pipa dibuat menggunakan run create perintah.
tfx run create --engine=beam --pipeline_name="${PIPELINE_NAME}"
tfx run create --engine=beam --pipeline_name={PIPELINE_NAME}
2020-09-07 09:09:50.725339: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Jika berhasil, Anda akan melihat Component CsvExampleGen is finished. Saat Anda menyalin template, hanya satu komponen, CsvExampleGen, yang disertakan dalam pipeline.
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 .
Kami akan memodifikasi definisi pipa disalin di pipeline/pipeline.py . Jika Anda bekerja di lingkungan lokal Anda, gunakan editor favorit Anda untuk mengedit file. Jika Anda bekerja di Google Colab,
Klik icon folder di sebelah kiri untuk membuka
Filespandangan.
Klik
my_pipelineuntuk membuka direktori dan klikpipelinedirektori-klik dua kali terbuka danpipeline.pyuntuk membuka file.
Cari dan tanda komentar pada 3 baris yang menambah
StatisticsGen,SchemaGen, danExampleValidatoruntuk pipa. (Tip: menemukan komentar yang mengandungTODO(step 5):).
Perubahan Anda akan disimpan secara otomatis dalam beberapa detik. Pastikan bahwa
*tanda di depanpipeline.pymenghilang dalam judul tab. Tidak ada tombol simpan atau pintasan untuk editor file di Colab. File python editor file dapat disimpan ke lingkungan runtime bahkan dalamplaygroundmodus.
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 --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
# Update the pipelinetfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py# You can run the pipeline the same way.tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:09:55.915484: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:01.148250: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Anda seharusnya dapat melihat log keluaran dari komponen yang ditambahkan. Pipa kami menciptakan artefak output dalam tfx_pipeline_output/my_pipeline direktori.
Langkah 6. Tambahkan komponen untuk pelatihan.
Pada langkah ini, Anda akan menambahkan komponen untuk pelatihan dan validasi model termasuk Transform , Trainer , ResolverNode , Evaluator , dan Pusher .
Terbuka
pipeline/pipeline.py. Cari dan uncomment 5 baris yang menambahTransform,Trainer,ResolverNode,EvaluatordanPusheruntuk pipa. (Tip: findTODO(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 --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.pytfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:06.281753: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:11.333668: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Ketika eksekusi ini selesai dengan sukses, Anda sekarang telah membuat dan menjalankan pipa TFX pertama Anda menggunakan orkestra Beam!
Langkah 7. (Opsional) Coba BigQueryExampleGen.
[BigQuery] adalah gudang data cloud tanpa server, sangat skalabel, dan hemat biaya. BigQuery dapat digunakan sebagai sumber untuk contoh pelatihan di TFX. Pada langkah ini, kita akan menambahkan BigQueryExampleGen ke pipa.
Anda memerlukan Google Cloud Platform akun untuk menggunakan BigQuery. Harap siapkan project GCP.
Login untuk proyek Anda menggunakan perpustakaan auth colab atau gcloud utilitas.
# You need `gcloud` tool to login in local shell environment.
gcloud auth login
if 'google.colab' in sys.modules:
from google.colab import auth
auth.authenticate_user()
print('Authenticated')
Anda harus menentukan nama project GCP untuk mengakses resource BigQuery menggunakan TFX. Set GOOGLE_CLOUD_PROJECT variabel lingkungan untuk nama proyek Anda.
export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
# Set your project name below.
# WARNING! ENTER your project name before running this cell.
%env GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
env: GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
Terbuka
pipeline/pipeline.py. Komentar keluarCsvExampleGendan tanda komentar baris yang membuat sebuah instance dariBigQueryExampleGen. Anda juga perlu tanda komentarqueryargumen daricreate_pipelinefungsi.
Kita perlu menentukan proyek GCP digunakan untuk BigQuery lagi, dan ini dilakukan dengan menetapkan --project di beam_pipeline_args saat membuat saluran pipa.
Terbuka
pipeline/configs.py. Tanda komentar definisiBIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGSdanBIG_QUERY_QUERY. Anda harus mengganti id proyek dan nilai region dalam file ini dengan nilai yang benar untuk proyek GCP Anda.
Terbuka
beam_dag_runner.py. Tanda komentar dua argumen,querydanbeam_pipeline_args, untuk metode create_pipeline ().
Sekarang pipeline siap menggunakan BigQuery sebagai sumber contoh. Perbarui pipeline dan buat proses seperti yang kita lakukan pada langkah 5 dan 6.
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.pytfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:16.406635: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:21.439101: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Berikutnya: Menyerap 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_dag_runner.pyataubeam_dag_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 . - Memodifikasi
models/keras/model.pydanmodels/keras/constants.pyuntuk menggambarkan model ML Anda .- 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.