TFX Hava Akışı Eğitimi

pitonPyPI

giriiş

Bu eğitim, TensorFlow Extended'ı (TFX) tanıtmak ve kendi makine öğrenimi ardışık düzenlerinizi oluşturmayı öğrenmenize yardımcı olmak için tasarlanmıştır. Yerel olarak çalışır ve Jupyter dizüstü bilgisayarlarda TFX ve TensorBoard ile entegrasyonun yanı sıra TFX ile etkileşimi gösterir.

Veri kümesini inceleyerek tipik bir makine öğrenimi geliştirme sürecini takip edeceksiniz ve sonunda eksiksiz bir çalışma hattı elde edeceksiniz. Yol boyunca, ardışık düzeninizde hata ayıklamanın ve güncellemenin ve performansı ölçmenin yollarını keşfedeceksiniz.

Daha fazla bilgi edin

Daha fazla bilgi için lütfen TFX Kullanım Kılavuzuna bakın.

Adım adım

Tipik bir ML geliştirme sürecini izleyerek adım adım çalışarak ardışık düzeninizi kademeli olarak oluşturacaksınız. İşte adımlar:

  1. ortamınızı kurun
  2. İlk boru hattı iskeletini getir
  3. Verilerinize dalın
  4. Özellik mühendisliği
  5. Eğitim
  6. Model performansını analiz etme
  7. Üretime hazır

Önkoşullar

  • Linux / MacOS
  • sanal ortam
  • Python 3.5+
  • Git

Gerekli paketler

Ortamınıza bağlı olarak birkaç paket yüklemeniz gerekebilir:

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

Python 3.6 kullanıyorsanız, python3.6-dev'i yüklemelisiniz:

sudo apt-get install python3.6-dev

Python 3.7 kullanıyorsanız, python3.7-dev'i yüklemelisiniz:

sudo apt-get install python3.7-dev

Ayrıca sisteminizde GCC sürümü < 7 ise GCC'yi güncellemelisiniz. Aksi takdirde, airflow webserver çalıştırırken hatalar görürsünüz. Mevcut sürümünüzü aşağıdakilerle kontrol edebilirsiniz:

gcc --version

GCC'yi güncellemeniz gerekiyorsa, şunu çalıştırabilirsiniz:

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

MacOS Ortamı

Python 3 ve git zaten kurulu değilse, Homebrew paket yöneticisini kullanarak yükleyebilirsiniz:

/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, yapılandırmaya bağlı olarak bazen Airflow'u çalıştırırken iş parçacığı çatallama sorunları yaşar. Bu sorunlardan kaçınmak için ~/.bash_profile dosyanızı düzenlemeli ve dosyanın sonuna aşağıdaki satırı eklemelisiniz:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Eğitim materyalleri

Bu eğitimin kodu şu adreste mevcuttur: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

Kod, üzerinde çalıştığınız adımlara göre düzenlenmiştir, böylece her adım için ihtiyacınız olan koda ve onunla ne yapacağınıza ilişkin talimatlara sahip olursunuz.

Öğretici dosyalar, takılıp kalmanız durumunda hem bir alıştırma hem de alıştırmanın çözümünü içerir.

Egzersiz yapmak

  • taksi_pipeline.py
  • taksi_utils.py
  • taksi DAG

Çözüm

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taksi_solution DAG

Ne yapıyorsun

TFX kullanarak ML işlem hattı oluşturmayı öğreniyorsunuz

  • Bir üretim ML uygulamasını dağıtacağınız zaman TFX ardışık düzenleri uygundur
  • Veri kümeleri büyük olduğunda TFX ardışık düzenleri uygundur
  • Eğitim/hizmet tutarlılığı önemli olduğunda TFX ardışık düzenleri uygundur
  • Çıkarım için sürüm yönetimi önemli olduğunda TFX ardışık düzenleri uygundur
  • Google, üretim ML için TFX ardışık düzenlerini kullanır

Tipik bir makine öğrenimi geliştirme sürecini izliyorsunuz

  • Verilerimizi alma, anlama ve temizleme
  • Özellik mühendisliği
  • Eğitim
  • Model performansını analiz edin
  • Köpürtün, durulayın, tekrarlayın
  • Üretime hazır

Her adım için kod ekleme

Öğretici, tüm kodun dosyalara dahil edileceği şekilde tasarlanmıştır, ancak 3-7. adımlar için tüm kodlar yorumlanır ve satır içi yorumlarla işaretlenir. Satır içi yorumlar, kod satırının hangi adıma uygulanacağını tanımlar. Örneğin, 3. adımın kodu # Step 3 yorumuyla işaretlenmiştir.

Her adım için ekleyeceğiniz kod, genellikle kodun 3 bölgesine girer:

  • ithalat
  • DAG yapılandırması
  • create_pipeline() çağrısından döndürülen liste
  • taxi_utils.py içindeki destekleyici kod

Öğreticiyi incelerken, üzerinde çalışmakta olduğunuz eğitim adımı için geçerli olan kod satırlarının yorumunu kaldıracaksınız. Bu, o adımın kodunu ekleyecek ve boru hattınızı güncelleyecektir. Bunu yaparken, yorumunu kaldırdığınız kodu gözden geçirmenizi şiddetle tavsiye ederiz .

Chicago Taksi Veri Kümesi

TaksiChicago taksi

Chicago Şehri tarafından yayınlanan Taksi Gezileri veri setini kullanıyorsunuz.

Google BigQuery'de veri kümesi hakkında daha fazla bilgi edinebilirsiniz. BigQuery kullanıcı arayüzünde tam veri kümesini keşfedin.

Model Hedefi - İkili sınıflandırma

Müşteri %20'den fazla mı yoksa daha az mı bahşiş verecek?

1. Adım: Ortamınızı kurun

Kurulum komut dosyası ( setup_demo.sh ), TFX ve Airflow'u yükler ve Airflow'u bu eğitim için çalışmayı kolaylaştıracak şekilde yapılandırır.

Bir kabukta:

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

Ne yaptığını görmek için setup_demo.sh incelemelisiniz.

Adım 2: İlk boru hattı iskeletini getirin

Selam Dünya

Bir kabukta:

# 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

Jupyter notebook'u bu adımda başlattınız. Daha sonra bu klasördeki not defterlerini çalıştıracaksınız.

Bir tarayıcıda:

  • Bir tarayıcı açın ve http://127.0.0.1:8080 adresine gidin.

Sorun giderme

Airflow konsolunu web tarayıcınıza yüklemekle ilgili herhangi bir sorun yaşıyorsanız veya airflow webserver çalıştırırken herhangi bir hata oluştuysa, 8080 numaralı bağlantı noktasında çalışan başka bir uygulamanız olabilir. Bu, Airflow için varsayılan bağlantı noktasıdır, ancak bunu değiştirebilirsiniz. kullanılmayan başka bir kullanıcı bağlantı noktasına. Örneğin, 7070 numaralı bağlantı noktasında Airflow'u çalıştırmak için şunları çalıştırabilirsiniz:

airflow webserver -p 7070

DAG görünüm düğmeleri

DAG düğmeleri

  • DAG'yi etkinleştirmek için soldaki düğmeyi kullanın
  • Değişiklik yaptığınızda DAG'yi yenilemek için sağdaki düğmeyi kullanın
  • DAG'yi tetiklemek için sağdaki düğmeyi kullanın
  • DAG'ın grafik görünümüne gitmek için taksiye tıklayın

Grafik yenileme düğmesi

Hava akımı CLI

DAG'lerinizi etkinleştirmek ve tetiklemek için Airflow CLI'yi de kullanabilirsiniz:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

Boru hattının tamamlanması bekleniyor

DAG görünümünde ardışık düzeninizi tetikledikten sonra, işlem hattınızın işlemeyi tamamladığını izleyebilirsiniz. Her bileşen çalışırken, DAG grafiğindeki bileşenin anahat rengi, durumunu gösterecek şekilde değişecektir. Bir bileşenin işlenmesi bittiğinde ana hat, tamamlandığını göstermek için koyu yeşile döner.

Şimdiye kadar ardışık düzenimizde yalnızca CsvExampleGen bileşenine sahipsiniz, bu nedenle koyu yeşile dönmesini (~1 dakika) beklemeniz gerekiyor.

Kurulum tamamlandı

3. Adım: Verilerinize dalın

Herhangi bir veri bilimi veya makine öğrenimi projesindeki ilk görev, verileri anlamak ve temizlemektir.

  • Her özellik için veri türlerini anlayın
  • Anormallikleri ve eksik değerleri arayın
  • Her özelliğin dağıtımlarını anlayın

Bileşenler

Veri BileşenleriVeri Bileşenleri

  • ExampleGen , giriş veri kümesini alır ve böler.
  • İstatistiklerGen , veri kümesi için istatistikleri hesaplar.
  • SchemaGen SchemaGen istatistikleri inceler ve bir veri şeması oluşturur.
  • ExampleValidator , veri kümesindeki anormallikleri ve eksik değerleri arar.

Bir düzenleyicide:

  • ~/airflow/dags içinde, taxi_pipeline.py Step 3 olarak işaretlenen satırların yorumunu kaldırın
  • Yorumunu kaldırdığınız kodu gözden geçirmek için bir dakikanızı ayırın

Bir tarayıcıda:

  • Sol üst köşedeki "DAG'ler" bağlantısını tıklayarak Airflow'ta DAG listesi sayfasına dönün
  • Taksi DAG için sağ taraftaki yenile düğmesine tıklayın
    • "DAG [taksi] artık bir papatya kadar taze" ifadesini görmelisiniz
  • Tetik taksi
  • Boru hattının tamamlanmasını bekleyin
    • hepsi koyu yeşil
    • Sağ tarafta yenilemeyi veya sayfayı yenilemeyi kullanın

Verilere dalın

Jüpyter'e geri dönelim:

Daha önce, bir tarayıcı sekmesinde bir Jupyter oturumu açan jupyter notebook çalıştırdınız. Şimdi tarayıcınızda o sekmeye dönün.

  • step3.ipynb'yi açın
  • Not defterini takip et

Verilere dalın

Daha gelişmiş örnek

Burada sunulan örnek, gerçekten yalnızca başlamanıza yöneliktir. Daha gelişmiş bir örnek için TensorFlow Data Validation Colab'a bakın.

Bir veri kümesini keşfetmek ve doğrulamak için TFDV'yi kullanma hakkında daha fazla bilgi için tensorflow.org'daki örneklere bakın .

4. Adım: Özellik mühendisliği

Özellik mühendisliği ile verilerinizin tahmine dayalı kalitesini artırabilir ve/veya boyutluluğu azaltabilirsiniz.

  • Özellik çaprazları
  • kelime dağarcığı
  • Gömmeler
  • PCA
  • kategorik kodlama

TFX kullanmanın faydalarından biri, dönüşüm kodunuzu bir kez yazmanız ve elde edilen dönüşümlerin eğitim ile hizmet arasında tutarlı olmasıdır.

Bileşenler

dönüştürmek

  • Transform , veri kümesinde özellik mühendisliği gerçekleştirir.

Bir düzenleyicide:

  • ~/airflow/dags içinde, hem taxi_pipeline.py hem de taxi_utils.py içinde Step 4 olarak işaretlenen satırları yorumsuz taxi_utils.py
  • Yorumunu kaldırdığınız kodu gözden geçirmek için bir dakikanızı ayırın

Bir tarayıcıda:

  • Airflow'ta DAG liste sayfasına dön
  • Taksi DAG için sağ taraftaki yenile düğmesine tıklayın
    • "DAG [taksi] artık bir papatya kadar taze" ifadesini görmelisiniz
  • Tetik taksi
  • Boru hattının tamamlanmasını bekleyin
    • hepsi koyu yeşil
    • Sağ tarafta yenilemeyi veya sayfayı yenilemeyi kullanın

Özellik Mühendisliği

Jüpyter'e geri dönelim:

Tarayıcınızdaki Jupyter sekmesine dönün.

  • step4.ipynb'yi açın
  • Not defterini takip et

Daha gelişmiş örnek

Burada sunulan örnek, gerçekten yalnızca başlamanıza yöneliktir. Daha gelişmiş bir örnek için TensorFlow Transform Colab'a bakın.

Adım 5: Eğitim

Güzel, temiz, dönüştürülmüş verilerinizle bir TensorFlow modeli eğitin.

  • Tutarlı bir şekilde uygulanmaları için 4. adımdaki dönüşümleri dahil edin
  • Sonuçları üretim için SavedModel olarak kaydedin
  • TensorBoard kullanarak eğitim sürecini görselleştirin ve keşfedin
  • Ayrıca model performansının analizi için bir EvalSavedModel kaydedin

Bileşenler

Bir düzenleyicide:

  • ~/airflow/dags içinde, hem taxi_pipeline.py hem de taxi_utils.py içinde Step 5 olarak işaretlenen satırları taxi_utils.py
  • Yorumunu kaldırdığınız kodu gözden geçirmek için bir dakikanızı ayırın

Bir tarayıcıda:

  • Airflow'ta DAG listesi sayfasına dön
  • Taksi DAG için sağ taraftaki yenile düğmesine tıklayın
    • "DAG [taksi] artık bir papatya kadar taze" ifadesini görmelisiniz
  • Tetik taksi
  • Boru hattının tamamlanmasını bekleyin
    • hepsi koyu yeşil
    • Sağ tarafta yenilemeyi veya sayfayı yenilemeyi kullanın

Model Eğitimi

Jüpyter'e geri dönelim:

Tarayıcınızdaki Jupyter sekmesine dönün.

  • step5.ipynb'yi açın
  • Not defterini takip et

Model Eğitimi

Daha gelişmiş örnek

Burada sunulan örnek, gerçekten yalnızca başlamanıza yöneliktir. Daha gelişmiş bir örnek için TensorBoard Eğitimine bakın.

Adım 6: Model performansını analiz etme

En üst düzey metriklerden daha fazlasını anlama.

  • Kullanıcılar yalnızca sorguları için model performansını deneyimler
  • Veri dilimlerindeki düşük performans, üst düzey metrikler tarafından gizlenebilir
  • Model adaleti önemlidir
  • Kullanıcıların veya verilerin temel alt kümeleri genellikle çok önemlidir ve küçük olabilir
    • Kritik ancak olağandışı koşullarda performans
    • Etkileyenler gibi önemli kitleler için performans
  • Halihazırda üretimde olan bir modeli değiştiriyorsanız, önce yenisinin daha iyi olduğundan emin olun.
  • Değerlendirici, modelin uygun olup olmadığını İtici bileşenine bildirir

Bileşenler

  • Değerlendirici , eğitim sonuçlarının derinlemesine analizini yapar ve modelin üretime itilmek için "yeterince iyi" olmasını sağlar.

Bir düzenleyicide:

  • ~/airflow/dags içinde, her iki taxi_pipeline.py Step 6 olarak işaretlenen satırları yorumsuz bırakın
  • Yorumunu kaldırdığınız kodu gözden geçirmek için bir dakikanızı ayırın

Bir tarayıcıda:

  • Airflow'ta DAG liste sayfasına dön
  • Taksi DAG için sağ taraftaki yenile düğmesine tıklayın
    • "DAG [taksi] artık bir papatya kadar taze" ifadesini görmelisiniz
  • Tetik taksi
  • Boru hattının tamamlanmasını bekleyin
    • hepsi koyu yeşil
    • Sağ tarafta yenilemeyi veya sayfayı yenilemeyi kullanın

Model performansını analiz etme

Jüpyter'e geri dönelim:

Tarayıcınızdaki Jupyter sekmesine dönün.

  • step6.ipynb'yi açın
  • Not defterini takip et

Model performansını analiz etme

Daha gelişmiş örnek

Burada sunulan örnek, gerçekten yalnızca başlamanıza yöneliktir. Daha gelişmiş bir örnek için TFMA Chicago Taksi Eğitimi'ne bakın.

7. Adım: Üretime hazır

Yeni model hazırsa, öyle yapın.

  • Pusher, SavedModel'leri iyi bilinen konumlara dağıtır

Dağıtım hedefleri, iyi bilinen konumlardan yeni modeller alır

  • TensorFlow Sunumu
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlow Merkezi

Bileşenler

  • Pusher , modeli hizmet veren bir altyapıya dağıtır.

Bir düzenleyicide:

  • ~/airflow/dags içinde, her iki taxi_pipeline.py Step 7 olarak işaretlenen satırları kaldırın
  • Yorumunu kaldırdığınız kodu gözden geçirmek için bir dakikanızı ayırın

Bir tarayıcıda:

  • Airflow'ta DAG listesi sayfasına dön
  • Taksi DAG için sağ taraftaki yenile düğmesine tıklayın
    • "DAG [taksi] artık bir papatya kadar taze" ifadesini görmelisiniz
  • Tetik taksi
  • Boru hattının tamamlanmasını bekleyin
    • hepsi koyu yeşil
    • Sağ tarafta yenilemeyi veya sayfayı yenilemeyi kullanın

Üretime hazır

Sonraki adımlar

Artık modelinizi eğitip doğruladınız ve ~/airflow/saved_models/taxi dizini altında bir SavedModel dosyasını dışa aktardınız. Modeliniz artık üretime hazır. Artık modelinizi aşağıdakiler de dahil olmak üzere TensorFlow dağıtım hedeflerinden herhangi birine dağıtabilirsiniz:

  • Modelinize bir sunucu veya sunucu grubunda hizmet vermek ve REST ve/veya gRPC çıkarım isteklerini işlemek için TensorFlow Serving .
  • Modelinizi bir Android veya iOS yerel mobil uygulamasına veya bir Raspberry Pi, IoT veya mikro denetleyici uygulamasına dahil etmek için TensorFlow Lite .
  • Modelinizi bir web tarayıcısında veya Node.JS uygulamasında çalıştırmak için TensorFlow.js.