pengantar
Tutorial ini dirancang untuk memperkenalkan TensorFlow Extended (TFX) dan membantu Anda belajar membuat pipeline machine learning Anda sendiri. Ini berjalan secara lokal, dan menunjukkan integrasi dengan TFX dan TensorBoard serta interaksi dengan TFX di notebook Jupyter.
Anda akan mengikuti proses pengembangan ML pada umumnya, dimulai dengan memeriksa set data, dan berakhir dengan pipeline yang berfungsi lengkap. Anda akan mempelajari cara men-debug dan mengupdate pipeline Anda, serta mengukur performa.
Belajarlah lagi
Silakan lihat Panduan Pengguna TFX untuk mempelajari lebih lanjut.
Selangkah demi selangkah
Anda akan membuat pipeline secara bertahap dengan mengerjakan langkah demi langkah, mengikuti proses pengembangan ML yang umum. Berikut langkah-langkahnya:
- Siapkan lingkungan Anda
- Munculkan kerangka pipa awal
- Selami data Anda
- Rekayasa fitur
- Latihan
- Menganalisis kinerja model
- Siap produksi
Prasyarat
- Linux / MacOS
- Virtualenv
- Python 3.5+
- Git
Paket yang dibutuhkan
Bergantung pada lingkungan Anda, Anda mungkin perlu menginstal beberapa paket:
sudo apt-get install \
build-essential libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev \
python3-pip git software-properties-common
Jika Anda menjalankan Python 3.6, Anda harus menginstal python3.6-dev:
sudo apt-get install python3.6-dev
Jika Anda menjalankan Python 3.7, Anda harus menginstal python3.7-dev:
sudo apt-get install python3.7-dev
Selain itu, jika sistem Anda memiliki versi GCC <7, Anda harus memperbarui GCC. Jika tidak, Anda akan melihat kesalahan saat menjalankan airflow webserver
. Anda dapat memeriksa versi Anda saat ini dengan:
gcc --version
Jika Anda perlu memperbarui GCC, Anda dapat menjalankan ini:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7
Lingkungan MacOS
Jika Anda belum menginstal Python 3 dan git, Anda dapat menginstalnya menggunakan manajer paket Homebrew :
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git
MacOS terkadang mengalami masalah forking thread saat menjalankan Airflow, bergantung pada konfigurasinya. Untuk menghindari masalah tersebut, Anda harus mengedit ~/.bash_profile
dan menambahkan baris berikut ke akhir file:
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
Materi tutorial
Kode untuk tutorial ini tersedia di: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop
Kode diatur oleh langkah-langkah yang Anda kerjakan, jadi untuk setiap langkah Anda akan memiliki kode yang Anda perlukan dan petunjuk tentang apa yang harus dilakukan dengannya.
File tutorial menyertakan latihan dan solusi untuk latihan, jika Anda buntu.
Olahraga
- taxi_pipeline.py
- taxi_utils.py
- taksi DAG
Larutan
- taxi_pipeline_solution.py
- taxi_utils_solution.py
- taxi_solution DAG
Apa yang kamu lakukan
Anda sedang mempelajari cara membuat pipeline ML menggunakan TFX
- Pipeline TFX sesuai saat Anda akan menerapkan aplikasi ML produksi
- Pipeline TFX sesuai jika set data berukuran besar
- Pipeline TFX sesuai jika konsistensi pelatihan / penayangan itu penting
- Pipeline TFX sesuai jika manajemen versi untuk inferensi penting
- Google menggunakan pipeline TFX untuk produksi ML
Anda mengikuti proses pengembangan ML pada umumnya
- Menelan, memahami, dan membersihkan data kami
- Rekayasa fitur
- Latihan
- Analisis kinerja model
- Busa, bilas, ulangi
- Siap produksi
Menambahkan kode untuk setiap langkah
Tutorial dirancang agar semua kode disertakan dalam file, tetapi semua kode untuk langkah 3-7 diberi komentar dan ditandai dengan komentar sebaris. Komentar sebaris mengidentifikasi langkah mana yang diterapkan baris kode. Misalnya, kode untuk langkah 3 ditandai dengan komentar # Step 3
.
Kode yang akan Anda tambahkan untuk setiap langkah biasanya dibagi menjadi 3 wilayah kode:
- impor
- Konfigurasi DAG
- Daftar yang dikembalikan dari panggilan create_pipeline ()
- Kode pendukung di taxi_utils.py
Saat Anda menjalani tutorial, Anda akan menghapus tanda komentar pada baris kode yang berlaku untuk langkah tutorial yang sedang Anda kerjakan. Itu akan menambahkan kode untuk langkah itu, dan memperbarui pipeline Anda. Saat Anda melakukannya, kami sangat menganjurkan Anda untuk meninjau kode yang tidak Anda komentari .
Set data Taksi Chicago
Anda menggunakan kumpulan data Taxi Trips yang dirilis oleh Kota Chicago.
Anda dapat membaca lebih lanjut tentang kumpulan data di Google BigQuery . Jelajahi set data lengkap di UI BigQuery .
Tujuan Model - Klasifikasi biner
Akankah pelanggan memberi tip lebih atau kurang dari 20%?
Langkah 1: Siapkan lingkungan Anda
Skrip pengaturan ( setup_demo.sh
) menginstal TFX dan Airflow , dan mengkonfigurasi Airflow dengan cara yang membuatnya mudah digunakan untuk tutorial ini.
Di dalam cangkang:
cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate
git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh
Anda harus meninjau setup_demo.sh
untuk melihat apa yang dilakukannya.
Langkah 2: Munculkan kerangka pipa awal
Halo Dunia
Di dalam cangkang:
# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080
# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler
# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook
Anda memulai notebook Jupyter pada langkah ini. Nanti Anda akan menjalankan notebook di folder ini.
Di browser:
- Buka browser dan buka http://127.0.0.1:8080
Penyelesaian masalah
Jika Anda memiliki masalah dengan memuat konsol Airflow di browser web Anda, atau jika ada kesalahan saat menjalankan airflow webserver
, maka Anda mungkin menjalankan aplikasi lain pada port 8080. Itu adalah port default untuk Airflow, tetapi Anda dapat mengubahnya ke port pengguna lain yang tidak digunakan. Misalnya, untuk menjalankan Airflow di port 7070, Anda dapat menjalankan:
airflow webserver -p 7070
Tombol tampilan DAG
- Gunakan tombol di sebelah kiri untuk mengaktifkan DAG
- Gunakan tombol di sebelah kanan untuk menyegarkan DAG saat Anda membuat perubahan
- Gunakan tombol di sebelah kanan untuk memicu DAG
- Klik taksi untuk menuju ke tampilan grafik DAG
CLI aliran udara
Anda juga dapat menggunakan CLI Aliran Udara untuk mengaktifkan dan memicu DAG Anda:
# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>
# trigger
airflow trigger_dag <your DAG name>
Menunggu pipeline selesai
Setelah Anda memicu pipeline Anda dalam tampilan DAG, Anda dapat melihat pipeline Anda selesai diproses. Saat setiap komponen menjalankan warna garis besar komponen dalam grafik DAG akan berubah untuk menunjukkan statusnya. Ketika komponen selesai diproses, garis luar akan berubah menjadi hijau tua untuk menunjukkan bahwa itu sudah selesai.
Sejauh ini Anda hanya memiliki komponen CsvExampleGen di pipeline kami, jadi Anda harus menunggu hingga berubah menjadi hijau tua (~ 1 menit).
Langkah 3: Selami data Anda
Tugas pertama dalam ilmu data atau project ML adalah memahami dan membersihkan data.
- Pahami tipe data untuk setiap fitur
- Cari anomali dan nilai yang hilang
- Pahami distribusi untuk setiap fitur
Komponen
- ExampleGen menyerap dan memisahkan set data masukan.
- StatisticsGen menghitung statistik untuk kumpulan data.
- SchemaGen SchemaGen memeriksa statistik dan membuat skema data.
- ExampleValidator mencari anomali dan nilai yang hilang dalam kumpulan data.
Di editor:
- Di ~ / airflow / dags hapus komentar pada baris bertanda
Step 3
ditaxi_pipeline.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda hapus komentarnya
Di browser:
- Kembali ke halaman daftar DAG di Airflow dengan mengklik link "DAG" di pojok kiri atas
- Klik tombol segarkan di sisi kanan untuk taksi DAG
- Anda akan melihat "DAG [taksi] sekarang segar seperti bunga aster"
- Trigger taxi
- Tunggu hingga pipeline selesai
- Semua hijau tua
- Gunakan refresh di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Sebelumnya, Anda menjalankan jupyter notebook
, yang membuka sesi Jupyter di tab browser. Sekarang kembali ke tab itu di browser Anda.
- Buka step3.ipynb
- Ikuti buku catatan
Contoh yang lebih maju
Contoh yang disajikan di sini hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh lebih lanjut, lihat Colab Validasi Data TensorFlow .
Untuk informasi lebih lanjut tentang menggunakan TFDV untuk menjelajahi dan memvalidasi kumpulan data, lihat contoh di tensorflow.org .
Langkah 4: Rekayasa fitur
Anda dapat meningkatkan kualitas prediksi data Anda dan / atau mengurangi dimensi dengan rekayasa fitur.
- Persilangan fitur
- Kosakata
- Embeddings
- PCA
- Pengkodean kategoris
Salah satu keuntungan menggunakan TFX adalah Anda akan menulis kode transformasi sekali, dan transformasi yang dihasilkan akan konsisten antara pelatihan dan penyajian.
Komponen
- Transform melakukan rekayasa fitur pada set data.
Di editor:
- Di ~ / airflow / dags hapus komentar pada baris bertanda
Step 4
ditaxi_pipeline.py
dantaxi_utils.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda hapus komentarnya
Di browser:
- Kembali ke halaman daftar DAG di Airflow
- Klik tombol segarkan di sisi kanan untuk taksi DAG
- Anda akan melihat "DAG [taksi] sekarang segar seperti bunga aster"
- Trigger taxi
- Tunggu hingga pipeline selesai
- Semua hijau tua
- Gunakan refresh di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Kembali ke tab Jupyter di browser Anda.
- Buka step4.ipynb
- Ikuti buku catatan
Contoh yang lebih maju
Contoh yang disajikan di sini hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh lebih lanjut, lihat TensorFlow Transform Colab .
Langkah 5: Pelatihan
Latih model TensorFlow dengan data Anda yang bagus, bersih, dan telah diubah.
- Sertakan transformasi dari langkah 4 agar diterapkan secara konsisten
- Simpan hasil sebagai SavedModel untuk produksi
- Visualisasikan dan jelajahi proses pelatihan menggunakan TensorBoard
- Simpan juga EvalSavedModel untuk analisis kinerja model
Komponen
Di editor:
- Di ~ / airflow / dags hapus komentar pada baris bertanda
Step 5
ditaxi_pipeline.py
dantaxi_utils.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda hapus komentarnya
Di browser:
- Kembali ke halaman daftar DAG di Airflow
- Klik tombol segarkan di sisi kanan untuk taksi DAG
- Anda akan melihat "DAG [taksi] sekarang segar seperti bunga aster"
- Trigger taxi
- Tunggu hingga pipeline selesai
- Semua hijau tua
- Gunakan refresh di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Kembali ke tab Jupyter di browser Anda.
- Buka step5.ipynb
- Ikuti buku catatan
Contoh yang lebih maju
Contoh yang disajikan di sini hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh lebih lanjut, lihat Tutorial TensorBoard .
Langkah 6: Menganalisis kinerja model
Memahami lebih dari sekedar metrik tingkat atas.
- Pengguna mengalami kinerja model hanya untuk kueri mereka
- Kinerja yang buruk pada potongan data dapat disembunyikan oleh metrik tingkat atas
- Keadilan model itu penting
- Seringkali subset utama dari pengguna atau data sangat penting, dan mungkin kecil
- Performa dalam kondisi kritis tetapi tidak biasa
- Performa untuk audiens utama seperti influencer
- Jika Anda mengganti model yang saat ini dalam produksi, pertama-tama pastikan model yang baru lebih baik
- Service Checker memberi tahu komponen Pendorong jika modelnya OK
Komponen
- Service Checker melakukan analisis mendalam terhadap hasil pelatihan, dan memastikan bahwa model tersebut "cukup baik" untuk didorong ke produksi.
Di editor:
- Di ~ / airflow / dags hapus komentar pada baris bertanda
Step 6
di keduataxi_pipeline.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda hapus komentarnya
Di browser:
- Kembali ke halaman daftar DAG di Airflow
- Klik tombol segarkan di sisi kanan untuk taksi DAG
- Anda akan melihat "DAG [taksi] sekarang segar seperti bunga aster"
- Trigger taxi
- Tunggu hingga pipeline selesai
- Semua hijau tua
- Gunakan refresh di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Kembali ke tab Jupyter di browser Anda.
- Buka step6.ipynb
- Ikuti buku catatan
Contoh yang lebih maju
Contoh yang disajikan di sini hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh lebih lanjut lihat Tutorial TFMA Chicago Taxi .
Langkah 7: Siap untuk produksi
Jika model baru sudah siap, buatlah begitu.
- Pusher menyebarkan SavedModels ke lokasi terkenal
Target penyebaran menerima model baru dari lokasi terkenal
- Penyajian TensorFlow
- TensorFlow Lite
- TensorFlow JS
- TensorFlow Hub
Komponen
- Pendorong menerapkan model ke infrastruktur layanan.
Di editor:
- Di ~ / airflow / dags hapus komentar pada baris bertanda
Step 7
di keduataxi_pipeline.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda hapus komentarnya
Di browser:
- Kembali ke halaman daftar DAG di Airflow
- Klik tombol segarkan di sisi kanan untuk taksi DAG
- Anda akan melihat "DAG [taksi] sekarang segar seperti bunga aster"
- Trigger taxi
- Tunggu hingga pipeline selesai
- Semua hijau tua
- Gunakan refresh di sisi kanan atau segarkan halaman
Langkah selanjutnya
Anda sekarang telah melatih dan memvalidasi model Anda, dan mengekspor file SavedModel
bawah direktori ~/airflow/saved_models/taxi
. Model Anda sekarang siap untuk diproduksi. Anda sekarang dapat menerapkan model Anda ke salah satu target penerapan TensorFlow, termasuk:
- Penyajian TensorFlow , untuk menyajikan model Anda di server atau server farm dan memproses permintaan inferensi REST dan / atau gRPC.
- TensorFlow Lite , untuk menyertakan model Anda dalam aplikasi seluler asli Android atau iOS, atau dalam aplikasi Raspberry Pi, IoT, atau mikrokontroler.
- TensorFlow.js , untuk menjalankan model Anda di browser web atau aplikasi Node.JS.