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 biasa, dimulai dengan memeriksa set data, dan berakhir dengan alur kerja yang lengkap. Sepanjang jalan Anda akan menjelajahi cara untuk men-debug dan memperbarui saluran Anda, dan mengukur kinerja.
Belajarlah lagi
Silakan lihat TFX Panduan Pengguna untuk mempelajari lebih lanjut.
Selangkah demi selangkah
Anda akan secara bertahap membuat saluran dengan bekerja selangkah demi selangkah, mengikuti proses pengembangan ML biasa. Berikut langkah-langkahnya:
- Siapkan lingkungan Anda
- Munculkan kerangka pipa awal
- Selami data Anda
- Rekayasa fitur
- Pelatihan
- Menganalisis kinerja model
- Siap produksi
Prasyarat
- Linux / MacOS
- Virtualenv
- Python 3.5+
- Git
Paket yang diperlukan
Tergantung 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 tidak memiliki Python 3 dan git sudah terinstal, Anda dapat menginstal mereka menggunakan Homebrew manajer paket:
/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 saat melakukan forking thread saat menjalankan Airflow, tergantung pada konfigurasinya. Untuk menghindari masalah tersebut Anda harus mengedit Anda ~/.bash_profile
dan tambahkan baris berikut pada akhir file:
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
bahan tutorial
Kode untuk tutorial ini tersedia di: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop
Kode diatur menurut langkah-langkah yang sedang Anda kerjakan, jadi untuk setiap langkah Anda akan memiliki kode yang Anda butuhkan dan petunjuk tentang apa yang harus dilakukan dengan kode itu.
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 saluran ML menggunakan TFX
- Pipeline TFX sesuai saat Anda akan men-deploy aplikasi ML produksi
- Pipeline TFX sesuai ketika kumpulan data berukuran besar
- Pipeline TFX sesuai ketika konsistensi pelatihan/penyajian penting
- Pipa TFX sesuai ketika manajemen versi untuk inferensi penting
- Google menggunakan saluran TFX untuk produksi ML
Anda mengikuti proses pengembangan ML biasa
- Menelan, memahami, dan membersihkan data kami
- Rekayasa fitur
- Pelatihan
- 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 dikomentari dan ditandai dengan komentar sebaris. Komentar sebaris mengidentifikasi langkah mana yang diterapkan oleh baris kode. Sebagai contoh, kode untuk langkah 3 ditandai dengan komentar # Step 3
.
Kode yang akan Anda tambahkan untuk setiap langkah biasanya terbagi dalam 3 wilayah kode:
- impor
- Konfigurasi DAG
- Daftar yang dikembalikan dari panggilan create_pipeline()
- Kode pendukung di taxi_utils.py
Saat Anda melalui tutorial, Anda akan menghapus komentar pada baris kode yang berlaku untuk langkah tutorial yang sedang Anda kerjakan. Itu akan menambahkan kode untuk langkah itu, dan memperbarui saluran Anda. Ketika Anda melakukan itu kami sangat mendorong Anda untuk meninjau kode yang Anda sedang uncommenting.
Kumpulan Data Taksi Chicago
Anda menggunakan Taxi Trips dataset yang dirilis oleh City of Chicago.
Anda dapat membaca lebih lanjut tentang dataset di Google BigQuery . Jelajahi dataset penuh di BigQuery UI .
Sasaran Model - Klasifikasi biner
Akankah tip pelanggan lebih atau kurang dari 20%?
Langkah 1: Siapkan lingkungan Anda
Script setup ( setup_demo.sh
) menginstal TFX dan aliran udara , dan mengkonfigurasi aliran udara dengan cara yang membuatnya mudah untuk bekerja dengan untuk tutorial ini.
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
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 peramban:
- Buka browser dan buka http://127.0.0.1:8080
Penyelesaian masalah
Jika Anda memiliki masalah dengan loading Airflow konsol di browser web Anda, atau jika ada kesalahan ketika Anda berlari airflow webserver
, maka Anda mungkin memiliki aplikasi lain yang berjalan pada port 8080. Itu port default untuk aliran udara, tetapi Anda dapat mengubahnya ke port pengguna lain yang tidak digunakan. Misalnya, untuk menjalankan Airflow pada port 7070 Anda dapat menjalankan:
airflow webserver -p 7070
Tombol tampilan DAG
- Menggunakan tombol di sebelah kiri untuk mengaktifkan DAG yang
- Gunakan tombol di sebelah kanan untuk menyegarkan DAG ketika Anda membuat perubahan
- Gunakan tombol di sebelah kanan untuk memicu DAG yang
- Klik taksi untuk menuju ke tampilan grafik DAG
CLI aliran udara
Anda juga dapat menggunakan Airflow CLI untuk mengaktifkan dan memicu DAGs Anda:
# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>
# trigger
airflow trigger_dag <your DAG name>
Menunggu pipa selesai
Setelah Anda memicu pipeline di tampilan DAG, Anda dapat melihat saat pipeline Anda selesai diproses. Saat setiap komponen berjalan, warna garis besar komponen dalam grafik DAG akan berubah untuk menunjukkan statusnya. Ketika komponen telah selesai memproses garis luar akan berubah menjadi hijau tua untuk menunjukkan bahwa itu selesai.
Sejauh ini Anda hanya memiliki komponen CsvExampleGen di saluran kami, jadi Anda harus menunggu sampai berubah menjadi hijau tua (~1 menit).
Langkah 3: Selami data Anda
Tugas pertama dalam ilmu data atau proyek 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 ingests dan membagi dataset masukan.
- StatisticsGen menghitung statistik untuk dataset.
- SchemaGen SchemaGen meneliti statistik dan menciptakan skema data.
- ExampleValidator mencari anomali dan nilai-nilai yang hilang dalam dataset.
Dalam editor:
- Di ~ / aliran udara / dags tanda komentar pada baris ditandai
Step 3
ditaxi_pipeline.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda batalkan komentarnya
Di peramban:
- Kembali ke halaman daftar DAG di Airflow dengan mengklik tautan "DAG" di sudut kiri atas
- Klik tombol segarkan di sisi kanan untuk taksi DAG
- Anda akan melihat "DAG [taksi] sekarang segar seperti bunga aster"
- Taksi pemicu
- Tunggu hingga pipa selesai
- hijau tua semua
- Gunakan segarkan di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Sebelumnya, Anda berlari jupyter notebook
, yang membuka sesi Jupyter di tab browser. Sekarang kembali ke tab itu di browser Anda.
- Buka langkah3.ipynb
- Ikuti buku catatannya
Contoh lebih lanjut
Contoh yang disajikan di sini benar-benar hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh yang lebih canggih melihat TensorFlow Validasi Data CoLab .
Untuk informasi lebih lanjut tentang menggunakan TFDV untuk mengeksplorasi dan memvalidasi dataset, lihat contoh di tensorflow.org .
Langkah 4: Rekayasa fitur
Anda dapat meningkatkan kualitas prediktif data Anda dan/atau mengurangi dimensi dengan rekayasa fitur.
- Persilangan fitur
- Kosakata
- Penyematan
- PCA
- Pengkodean kategoris
Salah satu keuntungan menggunakan TFX adalah Anda akan menulis kode transformasi Anda sekali, dan transformasi yang dihasilkan akan konsisten antara pelatihan dan penayangan.
Komponen
- Transform Melakukan rekayasa fitur pada dataset.
Dalam editor:
- Di ~ / aliran udara / dags tanda komentar pada baris ditandai
Step 4
di keduataxi_pipeline.py
dantaxi_utils.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda batalkan komentarnya
Di peramban:
- 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"
- Taksi pemicu
- Tunggu hingga pipa selesai
- hijau tua semua
- Gunakan segarkan di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Kembali ke tab Jupyter di browser Anda.
- Buka langkah4.ipynb
- Ikuti buku catatannya
Contoh lebih lanjut
Contoh yang disajikan di sini benar-benar hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh yang lebih canggih melihat TensorFlow Transform CoLab .
Langkah 5: Pelatihan
Latih model TensorFlow dengan data Anda yang bagus, bersih, dan telah diubah.
- Sertakan transformasi dari langkah 4 sehingga diterapkan secara konsisten
- Simpan hasilnya sebagai Model Tersimpan untuk produksi
- Visualisasikan dan jelajahi proses pelatihan menggunakan TensorBoard
- Juga simpan EvalSavedModel untuk analisis kinerja model
Komponen
Dalam editor:
- Di ~ / aliran udara / dags tanda komentar pada baris ditandai
Step 5
di keduataxi_pipeline.py
dantaxi_utils.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda batalkan komentarnya
Di peramban:
- 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"
- Taksi pemicu
- Tunggu hingga pipa selesai
- hijau tua semua
- Gunakan segarkan di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Kembali ke tab Jupyter di browser Anda.
- Buka langkah5.ipynb
- Ikuti buku catatannya
Contoh lebih lanjut
Contoh yang disajikan di sini benar-benar hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh yang lebih canggih melihat TensorBoard Tutorial .
Langkah 6: Menganalisis kinerja model
Memahami lebih dari sekadar metrik tingkat atas.
- Pengguna mengalami kinerja model hanya untuk kueri mereka
- Performa buruk pada irisan data dapat disembunyikan oleh metrik tingkat atas
- Keadilan model itu penting
- Seringkali bagian kunci 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 sedang dalam produksi, pastikan dulu yang baru lebih baik
- Evaluator memberi tahu komponen Pusher jika modelnya OK
Komponen
- Evaluator melakukan analisis mendalam dari hasil pelatihan, dan memastikan bahwa model adalah "cukup baik" untuk mendorong produksi.
Dalam editor:
- Di ~ / aliran udara / dags tanda komentar pada baris ditandai
Step 6
di keduataxi_pipeline.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda batalkan komentarnya
Di peramban:
- 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"
- Taksi pemicu
- Tunggu hingga pipa selesai
- hijau tua semua
- Gunakan segarkan di sisi kanan atau segarkan halaman
Kembali ke Jupyter:
Kembali ke tab Jupyter di browser Anda.
- Buka langkah6.ipynb
- Ikuti buku catatannya
Contoh lebih lanjut
Contoh yang disajikan di sini benar-benar hanya dimaksudkan untuk membantu Anda memulai. Untuk contoh yang lebih canggih melihat TFMA Chicago Taxi Tutorial .
Langkah 7: Siap untuk produksi
Jika model baru sudah siap, buatlah.
- Pusher menyebarkan SavedModels ke lokasi terkenal
Target penerapan menerima model baru dari lokasi terkenal
- Penyajian TensorFlow
- TensorFlow Lite
- TensorFlow JS
- Pusat TensorFlow
Komponen
- Pusher menyebarkan model untuk infrastruktur melayani.
Dalam editor:
- Di ~ / aliran udara / dags tanda komentar pada baris ditandai
Step 7
di keduataxi_pipeline.py
- Luangkan waktu sejenak untuk meninjau kode yang Anda batalkan komentarnya
Di peramban:
- 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"
- Taksi pemicu
- Tunggu hingga pipa selesai
- hijau tua semua
- Gunakan segarkan di sisi kanan atau segarkan halaman
Langkah selanjutnya
Anda sekarang telah dilatih dan divalidasi model Anda, dan diekspor SavedModel
file di bawah ~/airflow/saved_models/taxi
direktori. Model Anda sekarang siap untuk diproduksi. Anda sekarang dapat menerapkan model Anda ke salah satu target penerapan TensorFlow, termasuk:
- TensorFlow Melayani , untuk melayani model Anda pada server atau server farm dan pengolahan REST dan / atau permintaan inferensi gRPC.
- TensorFlow Lite , untuk termasuk model Anda dalam aplikasi mobile Android atau iOS asli, atau dalam Raspberry Pi, IOT, atau aplikasi mikrokontroler.
- TensorFlow.js , untuk menjalankan model Anda di web browser atau aplikasi Node.js.