Menguji pipeline menggunakan Stub Executors

Perkenalan

Anda harus menyelesaikan tutorial template.ipynb hingga Langkah 6 untuk melanjutkan tutorial ini.

Dokumen ini akan memberikan petunjuk untuk menguji pipeline TensorFlow Extended (TFX) menggunakan BaseStubExecuctor , yang menghasilkan artefak palsu menggunakan data pengujian emas. Hal ini ditujukan bagi pengguna untuk mengganti eksekutor yang tidak ingin mereka uji sehingga dapat menghemat waktu dalam menjalankan eksekutor yang sebenarnya. Pelaksana rintisan disediakan dengan paket TFX Python di bawah tfx.experimental.pipeline_testing.base_stub_executor .

Tutorial ini berfungsi sebagai perpanjangan dari tutorial template.ipynb , sehingga Anda juga akan menggunakan dataset Taxi Trips yang dirilis oleh Kota Chicago. Kami sangat menganjurkan Anda untuk mencoba memodifikasi komponen sebelum menggunakan eksekutor stub.

1. Catat keluaran saluran di Google Cloud Storage

Pertama-tama kita perlu mencatat keluaran pipa sehingga pelaksana stub dapat menyalin artefak dari keluaran yang direkam.

Karena tutorial ini mengasumsikan bahwa Anda telah menyelesaikan template.ipynb hingga langkah 6, alur yang berhasil dijalankan harus disimpan di MLMD . Informasi eksekusi di MLMD dapat diakses menggunakan server gRPC.

Buka Terminal dan jalankan perintah berikut:

  1. Buat file kubeconfig dengan kredensial yang sesuai: bash gcloud container clusters get-credentials $cluster_name --zone $compute_zone --project $gcp_project_id $compute_zone adalah wilayah untuk mesin gcp dan $gcp_project_id adalah id proyek proyek GCP Anda.

  2. Siapkan penerusan port untuk menghubungkan ke MLMD: bash nohup kubectl port-forward deployment/metadata-grpc-deployment -n $namespace $port:8080 & $namespace adalah namespace cluster dan $port adalah port yang tidak terpakai yang akan digunakan untuk penerusan porta.

  3. Kloning repositori tfx GitHub. Di dalam direktori tfx, jalankan perintah berikut:

python tfx/experimental/pipeline_testing/pipeline_recorder.py \
--output_dir=gs://<gcp_project_id>-kubeflowpipelines-default/testdata \
--host=$host \
--port=$port \
--pipeline_name=$pipeline_name

$output_dir harus disetel ke jalur di Google Cloud Storage tempat keluaran pipeline dicatat, jadi pastikan untuk mengganti <gcp_project_id> dengan id proyek GCP.

$host dan $port adalah nama host dan port server metadata grpc untuk terhubung ke MLMD. $port harus disetel ke nomor port yang Anda gunakan untuk penerusan port dan Anda dapat menyetel "localhost" untuk nama host.

Dalam tutorial template.ipynb , nama pipa disetel sebagai "my_pipeline" secara default, jadi setel pipeline_name="my_pipeline" . Jika Anda telah mengubah nama saluran pipa saat menjalankan tutorial templat, Anda harus mengubah --pipeline_name sesuai dengan itu.

2. Aktifkan Stub Executors di Kubeflow DAG Runner

Pertama, pastikan templat yang telah ditentukan sebelumnya telah disalin ke direktori proyek Anda menggunakan perintah CLI tfx template copy . Dua file berikut perlu diedit dalam file sumber yang disalin.

  1. Buat file bernama stub_component_launcher.py di direktori tempat kubeflow_dag_runner.py berada, dan masukkan konten berikut ke dalamnya.

    from tfx.experimental.pipeline_testing import base_stub_component_launcher
    from pipeline import configs
    
    class StubComponentLauncher(
        base_stub_component_launcher.BaseStubComponentLauncher):
      pass
    
    # GCS directory where KFP outputs are recorded
    test_data_dir = "gs://{}/testdata".format(configs.GCS_BUCKET_NAME)
    # TODO: customize self.test_component_ids to test components, replacing other
    # component executors with a BaseStubExecutor.
    test_component_ids = ['Trainer']
    StubComponentLauncher.initialize(
        test_data_dir=test_data_dir,
        test_component_ids=test_component_ids)
    
  2. Tetapkan id komponen menjadi daftar id komponen yang akan diuji (dengan kata lain, pelaksana komponen lain diganti dengan BaseStubExecutor) .

  3. Buka kubeflow_dag_runner.py . Tambahkan pernyataan import berikut di bagian atas untuk menggunakan kelas StubComponentLauncher yang baru saja kita tambahkan.

    import stub_component_launcher
    
  4. Di kubeflow_dag_runner.py , tambahkan kelas StubComponentLauncher ke supported_launcher_class KubeflowDagRunnerConfig untuk mengaktifkan peluncuran eksekutor stub:

    runner_config = kubeflow_dag_runner.KubeflowDagRunnerConfig(
        supported_launcher_classes=[
            stub_component_launcher.StubComponentLauncher
        ],
    

3. Perbarui dan jalankan pipeline dengan eksekutor stub

Perbarui alur yang ada dengan definisi alur yang dimodifikasi dengan pelaksana rintisan.

tfx pipeline update --pipeline-path=kubeflow_dag_runner.py \
  --endpoint=$endpoint --engine=kubeflow

$endpoint harus disetel ke titik akhir klaster KFP Anda.

Jalankan perintah berikut untuk membuat eksekusi baru dari alur Anda yang diperbarui.

tfx run create --pipeline-name $pipeline_name --endpoint=$endpoint \
  --engine=kubeflow

Membersihkan

Gunakan perintah fg untuk mengakses penerusan porta di latar belakang lalu ctrl-C untuk mengakhiri. Anda dapat menghapus direktori dengan keluaran pipa yang direkam menggunakan gsutil -m rm -R $output_dir .

Untuk membersihkan semua resource Google Cloud yang digunakan dalam proyek ini, Anda dapat menghapus proyek Google Cloud yang Anda gunakan untuk tutorial.

Alternatifnya, Anda dapat membersihkan sumber daya individual dengan mengunjungi setiap konsol: - Google Cloud Storage - Google Container Registry - Google Kubernetes Engine