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
Files
pandangan.
Klik
my_pipeline
untuk membuka direktori dan klikpipeline
direktori-klik dua kali terbuka danpipeline.py
untuk membuka file.
Cari dan tanda komentar pada 3 baris yang menambah
StatisticsGen
,SchemaGen
, danExampleValidator
untuk pipa. (Tip: menemukan komentar yang mengandungTODO(step 5):
).
Perubahan Anda akan disimpan secara otomatis dalam beberapa detik. Pastikan bahwa
*
tanda di depanpipeline.py
menghilang dalam judul tab. Tidak ada tombol simpan atau pintasan untuk editor file di Colab. File python editor file dapat disimpan ke lingkungan runtime bahkan dalamplayground
modus.
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 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}
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
,Evaluator
danPusher
untuk 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.py
tfx 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 keluarCsvExampleGen
dan tanda komentar baris yang membuat sebuah instance dariBigQueryExampleGen
. Anda juga perlu tanda komentarquery
argumen daricreate_pipeline
fungsi.
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_ARGS
danBIG_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,query
danbeam_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.py
tfx 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_PATH
dikubeflow_dag_runner.py
ataubeam_dag_runner.py
dan set ke lokasi file Anda. Jika data Anda disimpan di BigQuery, memodifikasiBIG_QUERY_QUERY
dipipeline/configs.py
untuk benar permintaan untuk data Anda. - Menambahkan fitur di
models/features.py
. - Memodifikasi
models/preprocessing.py
untuk mentransformasi input data untuk pelatihan . - Memodifikasi
models/keras/model.py
danmodels/keras/constants.py
untuk menggambarkan model ML Anda .- Anda juga dapat menggunakan model berbasis estimator. Perubahan
RUN_FN
konstan untukmodels.estimator.model.run_fn
dipipeline/configs.py
.
- Anda juga dapat menggunakan model berbasis estimator. Perubahan
Silakan lihat Trainer panduan komponen untuk lebih memperkenalkan.