Giúp bảo vệ Great Barrier Reef với TensorFlow trên Kaggle Tham Challenge

Hướng dẫn về luồng không khí TFX

PythonPyPI

Giới thiệu

Hướng dẫn này được thiết kế để giới thiệu TensorFlow Extended (TFX) và giúp bạn học cách tạo các đường dẫn máy học của riêng mình. Nó chạy cục bộ và cho thấy sự tích hợp với TFX và TensorBoard cũng như tương tác với TFX trong máy tính xách tay Jupyter.

Bạn sẽ tuân theo một quy trình phát triển ML điển hình, bắt đầu bằng cách kiểm tra tập dữ liệu và kết thúc với một quy trình hoạt động hoàn chỉnh. Trong quá trình này, bạn sẽ khám phá các cách gỡ lỗi và cập nhật đường dẫn của mình cũng như đo lường hiệu suất.

Tìm hiểu thêm

Xin vui lòng xem các TFX hướng dẫn để tìm hiểu thêm.

Từng bước một

Bạn sẽ dần dần tạo đường dẫn của mình bằng cách làm việc từng bước, theo một quy trình phát triển ML điển hình. Đây là các bước:

  1. Thiết lập môi trường của bạn
  2. Mang lại khung đường ống ban đầu
  3. Đi sâu vào dữ liệu của bạn
  4. Kỹ thuật tính năng
  5. Tập huấn
  6. Phân tích hiệu suất mô hình
  7. Sẵn sàng cho sản xuất

Điều kiện tiên quyết

  • Linux / MacOS
  • Virtualenv
  • Python 3.5+
  • Git

Gói bắt buộc

Tùy thuộc vào môi trường của bạn, bạn có thể cần cài đặt một số gói:

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

Nếu bạn đang chạy Python 3.6, bạn nên cài đặt python3.6-dev:

sudo apt-get install python3.6-dev

Nếu bạn đang chạy Python 3.7, bạn nên cài đặt python3.7-dev:

sudo apt-get install python3.7-dev

Ngoài ra, nếu hệ thống của bạn có phiên bản GCC <7, bạn nên cập nhật GCC. Nếu không, bạn sẽ thấy các lỗi khi chạy airflow webserver . Bạn có thể kiểm tra phiên bản hiện tại của mình bằng:

gcc --version

Nếu bạn cần cập nhật GCC, bạn có thể chạy như sau:

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

Môi trường MacOS

Nếu bạn không có Python 3 và git đã được cài đặt, bạn có thể cài đặt chúng bằng cách sử dụng Homebrew quản lý gói:

/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 đôi khi gặp sự cố phân luồng khi chạy Luồng khí, tùy thuộc vào cấu hình. Để tránh những vấn đề bạn nên chỉnh sửa của bạn ~/.bash_profile và thêm dòng sau vào cuối file:

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Tài liệu hướng dẫn

Các mã cho hướng dẫn này có sẵn tại địa chỉ: https://github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshop

Mã được sắp xếp theo các bước mà bạn đang thực hiện, vì vậy đối với mỗi bước, bạn sẽ có mã bạn cần và hướng dẫn về những việc cần làm với nó.

Các tệp hướng dẫn bao gồm cả bài tập và lời giải cho bài tập, đề phòng trường hợp bạn gặp khó khăn.

Bài tập

  • taxi_pipeline.py
  • taxi_utils.py
  • taxi DAG

Giải pháp

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

Bạn đang làm gì vậy

Bạn đang học cách tạo đường dẫn ML bằng TFX

  • Đường ống TFX thích hợp khi bạn triển khai ứng dụng ML sản xuất
  • Đường ống TFX thích hợp khi tập dữ liệu lớn
  • Đường ống TFX phù hợp khi đào tạo / phục vụ nhất quán là quan trọng
  • Các đường ống TFX thích hợp khi quản lý phiên bản để suy luận là quan trọng
  • Google sử dụng đường ống TFX cho ML sản xuất

Bạn đang theo dõi một quy trình phát triển ML điển hình

  • Ăn, hiểu và làm sạch dữ liệu của chúng tôi
  • Kỹ thuật tính năng
  • Tập huấn
  • Phân tích hiệu suất mô hình
  • Lót, rửa sạch, lặp lại
  • Sẵn sàng cho sản xuất

Thêm mã cho mỗi bước

Hướng dẫn được thiết kế để tất cả mã được bao gồm trong tệp, nhưng tất cả mã cho bước 3-7 được nhận xét và đánh dấu bằng nhận xét nội tuyến. Các chú thích nội tuyến xác định dòng mã áp dụng cho bước nào. Ví dụ, mã cho bước 3 được đánh dấu bằng những nhận xét # Step 3 .

Mã mà bạn sẽ thêm cho mỗi bước thường nằm trong 3 vùng của mã:

  • hàng nhập khẩu
  • Cấu hình DAG
  • Danh sách được trả về từ lệnh gọi create_pipeline ()
  • Mã hỗ trợ trong taxi_utils.py

Khi xem qua hướng dẫn, bạn sẽ bỏ ghi chú các dòng mã áp dụng cho bước hướng dẫn mà bạn hiện đang thực hiện. Điều đó sẽ thêm mã cho bước đó và cập nhật đường dẫn của bạn. Như bạn làm điều đó, chúng tôi khuyến khích bạn xem lại những mã mà bạn đang uncommenting.

Chicago Taxi Dataset

xe tắc xiTaxi Chicago

Bạn đang sử dụng Taxi Trips bộ dữ liệu phát hành bởi các thành phố Chicago.

Bạn có thể đọc thêm về các bộ dữ liệu trong Google BigQuery . Khám phá bộ dữ liệu đầy đủ trong UI BigQuery .

Mục tiêu mô hình - Phân loại nhị phân

Khách hàng sẽ boa nhiều hơn hay ít hơn 20%?

Bước 1: Thiết lập môi trường của bạn

Các kịch bản cài đặt ( setup_demo.sh ) cài đặt TFX và Airflow , và cấu hình Airflow theo một cách mà làm cho nó dễ dàng để làm việc với đối với hướng dẫn này.

Trong một vỏ:

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

Bạn nên xem lại setup_demo.sh để xem những gì nó làm.

Bước 2: Đưa ra khung đường ống ban đầu

Chào thế giới

Trong một vỏ:

# 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

Bạn đã khởi động sổ ghi chép Jupyter trong bước này. Sau đó, bạn sẽ chạy các sổ ghi chép trong thư mục này.

Trong trình duyệt:

  • Mở trình duyệt và truy cập http://127.0.0.1:8080

Xử lý sự cố

Nếu bạn có bất kỳ vấn đề với tải Airflow console trong trình duyệt web của bạn, hoặc nếu có bất kỳ sai sót khi bạn chạy airflow webserver , sau đó bạn có thể có một ứng dụng khác đang chạy trên cổng 8080. Đó là cổng mặc định cho Airflow, nhưng bạn có thể thay đổi nó đến bất kỳ cổng người dùng nào khác không được sử dụng. Ví dụ: để chạy Luồng không khí trên cổng 7070, bạn có thể chạy:

airflow webserver -p 7070

Các nút xem DAG

Các nút DAG

  • Sử dụng các nút ở bên trái để kích hoạt các DAG
  • Sử dụng các nút ở bên phải để làm mới DAG khi bạn thực hiện thay đổi
  • Sử dụng các nút trên bên phải để kích hoạt DAG
  • Nhấp vào taxi để chuyển đến chế độ xem đồ thị của DAG

Nút làm mới biểu đồ

Luồng khí CLI

Bạn cũng có thể sử dụng Airflow CLI để kích hoạt và kích hoạt DAG của bạn:

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

# trigger
airflow trigger_dag <your DAG name>

Đang đợi quá trình hoàn thành

Sau khi bạn đã kích hoạt đường ống của mình trong chế độ xem DAG, bạn có thể xem khi đường dẫn của mình hoàn tất quá trình xử lý. Khi mỗi thành phần chạy, màu đường viền của thành phần trong biểu đồ DAG sẽ thay đổi để hiển thị trạng thái của nó. Khi một thành phần được xử lý xong, đường viền sẽ chuyển sang màu xanh lá cây đậm để cho thấy rằng nó đã hoàn thành.

Cho đến nay, bạn chỉ có thành phần CsvExampleGen trong đường dẫn của chúng tôi, vì vậy bạn cần đợi nó chuyển sang màu xanh đậm (~ 1 phút).

Thiết lập xong

Bước 3: Đi sâu vào dữ liệu của bạn

Nhiệm vụ đầu tiên trong bất kỳ dự án ML hoặc khoa học dữ liệu nào là hiểu và làm sạch dữ liệu.

  • Hiểu các loại dữ liệu cho từng tính năng
  • Tìm kiếm các điểm bất thường và các giá trị bị thiếu
  • Hiểu các bản phân phối cho từng tính năng

Các thành phần

Thành phần dữ liệuThành phần dữ liệu

  • ExampleGen ingests và chia tách các tập dữ liệu đầu vào.
  • StatisticsGen tính toán thống kê cho các tập dữ liệu.
  • SchemaGen SchemaGen kiểm tra số liệu thống kê và tạo ra một sơ đồ dữ liệu.
  • ExampleValidator tìm kiếm dị thường và giá trị còn thiếu trong tập dữ liệu.

Trong một trình soạn thảo:

  • Trong ~ / luồng không khí / DAG uncomment một số dòng đánh dấu Step 3 trong taxi_pipeline.py
  • Hãy dành một chút thời gian để xem lại mã mà bạn đã bỏ ghi chú

Trong trình duyệt:

  • Quay lại trang danh sách DAGs trong Luồng không khí bằng cách nhấp vào liên kết "DAGs" ở góc trên cùng bên trái
  • Nhấp vào nút làm mới ở phía bên phải cho taxi DAG
    • Bạn sẽ thấy "DAG [taxi] bây giờ tươi như hoa cúc"
  • Taxi kích hoạt
  • Chờ cho quá trình hoàn tất
    • Tất cả màu xanh lá cây đậm
    • Sử dụng làm mới ở bên phải hoặc làm mới trang

Đi sâu vào dữ liệu

Quay lại Jupyter:

Trước đó, bạn chạy jupyter notebook , mà đã mở một phiên Jupyter trong một tab trình duyệt. Bây giờ quay lại tab đó trong trình duyệt của bạn.

  • Mở step3.ipynb
  • Làm theo sổ tay

Đi sâu vào dữ liệu

Ví dụ nâng cao hơn

Ví dụ được trình bày ở đây thực sự chỉ nhằm giúp bạn bắt đầu. Đối với một ví dụ tiên tiến hơn thấy TensorFlow Data Validation Colab .

Để biết thêm thông tin về việc sử dụng TFDV để khám phá và xác nhận một tập dữ liệu, xem các ví dụ trên tensorflow.org .

Bước 4: Kỹ thuật tính năng

Bạn có thể tăng chất lượng dự đoán của dữ liệu và / hoặc giảm kích thước bằng kỹ thuật tính năng.

  • Tính năng chéo
  • Từ vựng
  • Nhúng
  • PCA
  • Mã hóa phân loại

Một trong những lợi ích của việc sử dụng TFX là bạn sẽ viết mã chuyển đổi của mình một lần và kết quả chuyển đổi sẽ nhất quán giữa đào tạo và phục vụ.

Các thành phần

Biến đổi

  • Biến Thực hiện tính năng kỹ thuật trên tập dữ liệu.

Trong một trình soạn thảo:

  • Trong ~ / luồng không khí / DAG uncomment một số dòng đánh dấu Step 4 ở cả hai taxi_pipeline.pytaxi_utils.py
  • Hãy dành một chút thời gian để xem lại mã mà bạn đã bỏ ghi chú

Trong trình duyệt:

  • Quay lại trang danh sách DAGs trong Luồng không khí
  • Nhấp vào nút làm mới ở phía bên phải cho taxi DAG
    • Bạn sẽ thấy "DAG [taxi] bây giờ tươi như hoa cúc"
  • Taxi kích hoạt
  • Chờ cho quá trình hoàn tất
    • Tất cả màu xanh lá cây đậm
    • Sử dụng làm mới ở bên phải hoặc làm mới trang

Kỹ thuật tính năng

Quay lại Jupyter:

Quay lại tab Jupyter trong trình duyệt của bạn.

  • Mở step4.ipynb
  • Làm theo sổ tay

Ví dụ nâng cao hơn

Ví dụ được trình bày ở đây thực sự chỉ nhằm giúp bạn bắt đầu. Đối với một ví dụ tiên tiến hơn thấy TensorFlow Chuyển Colab .

Bước 5: Đào tạo

Đào tạo mô hình TensorFlow với dữ liệu đã biến đổi, đẹp đẽ của bạn.

  • Bao gồm các chuyển đổi từ bước 4 để chúng được áp dụng nhất quán
  • Lưu kết quả dưới dạng SavedModel để sản xuất
  • Hình dung và khám phá quá trình đào tạo bằng TensorBoard
  • Đồng thời lưu một EvalSavedModel để phân tích hiệu suất mô hình

Các thành phần

Trong một trình soạn thảo:

  • Trong ~ / luồng không khí / DAG uncomment một số dòng đánh dấu Step 5 trong cả taxi_pipeline.pytaxi_utils.py
  • Hãy dành một chút thời gian để xem lại mã mà bạn đã bỏ ghi chú

Trong trình duyệt:

  • Quay lại trang danh sách DAGs trong Luồng không khí
  • Nhấp vào nút làm mới ở phía bên phải cho taxi DAG
    • Bạn sẽ thấy "DAG [taxi] bây giờ tươi như hoa cúc"
  • Taxi kích hoạt
  • Chờ cho quá trình hoàn tất
    • Tất cả màu xanh lá cây đậm
    • Sử dụng làm mới ở bên phải hoặc làm mới trang

Đào tạo một người mẫu

Quay lại Jupyter:

Quay lại tab Jupyter trong trình duyệt của bạn.

  • Mở step5.ipynb
  • Làm theo sổ tay

Đào tạo một người mẫu

Ví dụ nâng cao hơn

Ví dụ được trình bày ở đây thực sự chỉ nhằm giúp bạn bắt đầu. Đối với một ví dụ tiên tiến hơn thấy TensorBoard Tutorial .

Bước 6: Phân tích hiệu suất mô hình

Hiểu nhiều hơn không chỉ là các chỉ số cấp cao nhất.

  • Người dùng chỉ trải nghiệm hiệu suất mô hình cho các truy vấn của họ
  • Hiệu suất kém trên các phần dữ liệu có thể bị ẩn bởi các chỉ số cấp cao nhất
  • Công bằng kiểu mẫu là quan trọng
  • Thường thì các tập hợp con chính của người dùng hoặc dữ liệu rất quan trọng và có thể nhỏ
    • Hiệu suất trong các điều kiện quan trọng nhưng bất thường
    • Hiệu suất cho các đối tượng chính, chẳng hạn như những người có ảnh hưởng
  • Nếu bạn đang thay thế một mô hình hiện đang được sản xuất, trước tiên hãy đảm bảo rằng mô hình mới tốt hơn
  • Trình đánh giá cho thành phần Bộ đẩy xem mô hình có ổn không

Các thành phần

  • Đánh giá thực hiện phân tích sâu sắc về kết quả đào tạo, và đảm bảo rằng mô hình này là "đủ tốt" để được đẩy vào sản xuất.

Trong một trình soạn thảo:

  • Trong ~ / luồng không khí / DAG uncomment một số dòng đánh dấu Step 6 trong cả hai taxi_pipeline.py
  • Hãy dành một chút thời gian để xem lại mã mà bạn đã bỏ ghi chú

Trong trình duyệt:

  • Quay lại trang danh sách DAGs trong Luồng không khí
  • Nhấp vào nút làm mới ở phía bên phải cho taxi DAG
    • Bạn sẽ thấy "DAG [taxi] bây giờ tươi như hoa cúc"
  • Taxi kích hoạt
  • Chờ cho quá trình hoàn tất
    • Tất cả màu xanh lá cây đậm
    • Sử dụng làm mới ở bên phải hoặc làm mới trang

Phân tích hiệu suất mô hình

Quay lại Jupyter:

Quay lại tab Jupyter trong trình duyệt của bạn.

  • Mở step6.ipynb
  • Làm theo sổ tay

Phân tích hiệu suất mô hình

Ví dụ nâng cao hơn

Ví dụ được trình bày ở đây thực sự chỉ nhằm giúp bạn bắt đầu. Đối với một ví dụ tiên tiến hơn thấy TFMA Chicago Taxi Tutorial .

Bước 7: Sẵn sàng cho sản xuất

Nếu mô hình mới đã sẵn sàng, hãy làm cho nó như vậy.

  • Pusher triển khai SavedModels đến các vị trí nổi tiếng

Mục tiêu triển khai nhận được các mô hình mới từ các địa điểm nổi tiếng

  • TensorFlow phục vụ
  • TensorFlow Lite
  • TensorFlow JS
  • Trung tâm TensorFlow

Các thành phần

  • Pusher triển khai mô hình cho một cơ sở hạ tầng phục vụ.

Trong một trình soạn thảo:

  • Trong ~ / luồng không khí / DAG uncomment một số dòng đánh dấu Step 7 trong cả taxi_pipeline.py
  • Hãy dành một chút thời gian để xem lại mã mà bạn đã bỏ ghi chú

Trong trình duyệt:

  • Quay lại trang danh sách DAGs trong Luồng không khí
  • Nhấp vào nút làm mới ở phía bên phải cho taxi DAG
    • Bạn sẽ thấy "DAG [taxi] bây giờ tươi như hoa cúc"
  • Taxi kích hoạt
  • Chờ cho quá trình hoàn tất
    • Tất cả màu xanh lá cây đậm
    • Sử dụng làm mới ở bên phải hoặc làm mới trang

Sẵn sàng cho sản xuất

Bước tiếp theo

Bây giờ bạn đã được đào tạo và xác nhận mô hình của bạn, và xuất khẩu một SavedModel tập tin dưới ~/airflow/saved_models/taxi thư mục. Mô hình của bạn hiện đã sẵn sàng để sản xuất. Giờ đây, bạn có thể triển khai mô hình của mình cho bất kỳ mục tiêu triển khai TensorFlow nào, bao gồm:

  • TensorFlow Phục vụ , phục vụ mô hình của bạn trên máy chủ hoặc máy chủ trang trại và xử lý REST và / hoặc yêu cầu suy luận gRPC.
  • TensorFlow Lite , cho bao gồm cả mô hình của bạn trong một Android hoặc iOS ứng dụng di động có nguồn gốc, hoặc trong một Pi mâm xôi, IOT, hoặc ứng dụng vi điều khiển.
  • TensorFlow.js , để chạy mô hình của bạn trong một trình duyệt web hoặc ứng dụng Node.js.