Giới thiệu
Tài liệu này sẽ cung cấp hướng dẫn để tạo một TensorFlow Extended (TFX) đường ống sử dụng mẫu được cung cấp với gói TFX Python. Hầu hết các hướng dẫn có lệnh Linux shell, và tương ứng Jupyter tế bào đang Notebook mà gọi những lệnh sử dụng !
được cung cấp.
Bạn sẽ xây dựng một đường ống dẫn bằng Taxi Trips bộ dữ liệu phát hành bởi các thành phố Chicago. Chúng tôi đặc biệt khuyến khích bạn cố gắng xây dựng đường ống của riêng mình bằng cách sử dụng tập dữ liệu của bạn bằng cách sử dụng đường ống này làm đường cơ sở.
Chúng tôi sẽ xây dựng một đường ống dẫn sử dụng Apache chùm Orchestrator . Nếu bạn đang quan tâm đến việc sử dụng Kubeflow Orchestrator trên Google Cloud, vui lòng xem TFX trên đám mây AI vBulletin Đường ống dẫn .
Điều kiện tiên quyết
- Linux / MacOS
- Python> = 3.5.3
Bạn có thể nhận được tất cả điều kiện tiên quyết dễ dàng bằng cách chạy máy tính xách tay này trên Google Colab .
Bước 1. Thiết lập môi trường của bạn.
Trong suốt tài liệu này, chúng tôi sẽ trình bày các lệnh hai lần. Một lần dưới dạng lệnh shell sẵn sàng sao chép và dán, một lần dưới dạng ô sổ ghi chép jupyter. Nếu bạn đang sử dụng Colab, chỉ cần bỏ qua khối tập lệnh shell và thực thi các ô sổ ghi chép.
Bạn nên chuẩn bị một môi trường phát triển để xây dựng đường ống.
Cài đặt tfx
gói python. Chúng tôi đề nghị sử dụng virtualenv
trong môi trường địa phương. Bạn có thể sử dụng đoạn mã shell script sau để thiết lập môi trường của mình.
# Create a virtualenv for tfx.
virtualenv -p python3 venv
source venv/bin/activate
# Install python packages.
python -m pip install -q --user --upgrade tfx==0.23.0
Nếu bạn đang sử dụng colab:
import sys
!{sys.executable} -m pip install -q --user --upgrade -q tfx==0.23.0
LỖI: some-package 0.some_version.1 có yêu cầu other-package! = 2.0., <3,> = 1.15, nhưng bạn sẽ có gói khác 2.0.0 không tương thích.
Xin vui lòng bỏ qua những lỗi này tại thời điểm này.
# Set `PATH` to include user python binary directory.
HOME=%env HOME
PATH=%env PATH
%env PATH={PATH}:{HOME}/.local/bin
env: PATH=/tmpfs/src/tf_docs_env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin:/opt/android-studio/current/bin:/usr/local/go/bin:/usr/local/go/packages/bin:/opt/kubernetes/client/bin/:/home/kbuilder/.local/bin:/home/kbuilder/.local/bin
Hãy kiểm tra phiên bản của TFX.
python -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
python3 -c "import tfx; print('TFX version: {}'.format(tfx.__version__))"
TFX version: 0.23.0
Và, nó đã hoàn thành. Chúng tôi đã sẵn sàng để tạo một đường dẫn.
Bước 2. Sao chép mẫu được xác định trước vào thư mục dự án của bạn.
Trong bước này, chúng tôi sẽ tạo một thư mục dự án đường ống đang hoạt động và các tệp bằng cách sao chép các tệp bổ sung từ một mẫu được xác định trước.
Bạn có thể cung cấp cho đường ống của bạn một tên khác nhau bằng cách thay đổi PIPELINE_NAME
dưới đây. Đây cũng sẽ trở thành tên của thư mục dự án nơi các tệp của bạn sẽ được đặt.
export PIPELINE_NAME="my_pipeline"
export PROJECT_DIR=~/tfx/${PIPELINE_NAME}
PIPELINE_NAME="my_pipeline"
import os
# Create a project directory under Colab content directory.
PROJECT_DIR=os.path.join(os.sep,"content",PIPELINE_NAME)
TFX bao gồm taxi
mẫu với gói TFX python. Nếu bạn đang có kế hoạch giải quyết một vấn đề dự đoán khôn ngoan, bao gồm phân loại và hồi quy, thì mẫu này có thể được sử dụng làm điểm khởi đầu.
Các tfx template copy
CLI lệnh bản xác định trước các file template vào thư mục dự án của bạn.
tfx template copy \
--pipeline_name="${PIPELINE_NAME}" \
--destination_path="${PROJECT_DIR}" \
--model=taxi
!tfx template copy \
--pipeline_name={PIPELINE_NAME} \
--destination_path={PROJECT_DIR} \
--model=taxi
2020-09-07 09:09:40.131982: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Copying taxi pipeline template Traceback (most recent call last): File "/home/kbuilder/.local/bin/tfx", line 8, in <module> sys.exit(cli_group()) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/decorators.py", line 73, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/commands/template.py", line 73, in copy template_handler.copy_template(ctx.flags_dict) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 168, in copy_template replace_dict) File "/home/kbuilder/.local/lib/python3.6/site-packages/tfx/tools/cli/handler/template_handler.py", line 107, in _copy_and_replace_placeholder_dir tf.io.gfile.makedirs(dst) File "/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/lib/io/file_io.py", line 480, in recursive_create_dir_v2 _pywrap_file_io.RecursivelyCreateDir(compat.as_bytes(path)) tensorflow.python.framework.errors_impl.PermissionDeniedError: /content; Permission denied
Thay đổi bối cảnh thư mục làm việc trong sổ ghi chép này thành thư mục dự án.
cd ${PROJECT_DIR}
%cd {PROJECT_DIR}
[Errno 2] No such file or directory: '/content/my_pipeline' /tmpfs/src/temp/docs/tutorials/tfx
Bước 3. Duyệt qua các tệp nguồn đã sao chép của bạn.
Mẫu TFX cung cấp các tệp khung cơ bản để xây dựng một đường dẫn, bao gồm mã nguồn Python, dữ liệu mẫu và Sổ tay Jupyter để phân tích đầu ra của đường dẫn. Các taxi
mẫu sử dụng cùng một tập dữ liệu Chicago Taxi và mô hình ML như Airflow Tutorial .
Trong Google Colab, bạn có thể duyệt các tệp bằng cách nhấp vào biểu tượng thư mục ở bên trái. File nên được sao chép dưới directoy dự án, có tên là my_pipeline
trong trường hợp này. Bạn có thể bấm vào tên thư mục để xem nội dung của thư mục và bấm đúp vào tên tệp để mở chúng.
Đây là phần giới thiệu ngắn gọn về từng tệp Python.
-
pipeline
- Thư mục này chứa các định nghĩa của đường ống-
configs.py
- định nghĩa hằng số chung cho vận động viên đường ống -
pipeline.py
- định nghĩa các thành phần TFX và một đường ống dẫn
-
-
models
- Thư mục này chứa các định nghĩa mô hình ML.-
features.py
,features_test.py
- định nghĩa đặc trưng cho mô hình -
preprocessing.py
,preprocessing_test.py
- định nghĩa tiền xử lý việc sử dụngtf::Transform
-
estimator
- Thư mục này chứa một cụ Ước tính dựa trên mô hình.-
constants.py
- định nghĩa các hằng số của mô hình -
model.py
,model_test.py
- định nghĩa mô hình DNN sử dụng TF ước lượng
-
-
keras
- Thư mục này chứa một Keras dựa trên mô hình.-
constants.py
- định nghĩa các hằng số của mô hình -
model.py
,model_test.py
- định nghĩa mô hình DNN sử dụng Keras
-
-
-
beam_dag_runner.py
,kubeflow_dag_runner.py
- xác định vận động viên cho mỗi động cơ dàn nhạc
Bạn có thể nhận thấy rằng có một số file với _test.py
trong tên của họ. Đây là các bài kiểm tra đơn vị của đường ống và bạn nên thêm nhiều bài kiểm tra đơn vị hơn khi bạn triển khai đường ống của riêng mình. Bạn có thể chạy thử nghiệm đơn vị bằng cách cung cấp tên module của file thử nghiệm với -m
cờ. Bạn thường có thể có được một tên mô-đun bằng cách xóa .py
mở rộng và thay thế /
với .
. Ví dụ:
python -m models.features_test
{sys.executable} -m models.features_test
{sys.executable} -m models.keras.model_test
/tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.features_test' (ModuleNotFoundError: No module named 'models') /tmpfs/src/tf_docs_env/bin/python: Error while finding module specification for 'models.keras.model_test' (ModuleNotFoundError: No module named 'models')
Bước 4. Chạy đường dẫn TFX đầu tiên của bạn
Bạn có thể tạo một đường ống dẫn bằng pipeline create
lệnh.
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
tfx pipeline create --engine=beam --pipeline_path=beam_dag_runner.py
2020-09-07 09:09:45.612839: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating pipeline Invalid pipeline path: beam_dag_runner.py
Sau đó, bạn có thể chạy các đường ống dẫn tạo sử dụng run create
lệnh.
tfx run create --engine=beam --pipeline_name="${PIPELINE_NAME}"
tfx run create --engine=beam --pipeline_name={PIPELINE_NAME}
2020-09-07 09:09:50.725339: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Nếu thành công, bạn sẽ thấy Component CsvExampleGen is finished.
Khi bạn sao chép mẫu, chỉ một thành phần, CsvExampleGen, được đưa vào đường dẫn.
Bước 5. Thêm các thành phần để xác thực dữ liệu.
Trong bước này, bạn sẽ thêm các thành phần để xác nhận dữ liệu bao gồm StatisticsGen
, SchemaGen
, và ExampleValidator
. Nếu bạn đang quan tâm đến việc xác nhận dữ liệu, vui lòng xem Bắt đầu với Tensorflow Data Validation .
Chúng tôi sẽ thay đổi định nghĩa đường ống dẫn sao chép trong pipeline/pipeline.py
. Nếu bạn đang làm việc trên môi trường cục bộ của mình, hãy sử dụng trình chỉnh sửa yêu thích của bạn để chỉnh sửa tệp. Nếu bạn đang làm việc trên Google Colab,
Nhấp vào biểu tượng thư mục ở bên trái để mở
Files
xem.
Nhấn
my_pipeline
để mở thư mục và nhấp vàopipeline
thư mục để mở và nhấp đúppipeline.py
để mở tập tin.
Tìm và bỏ 3 dòng mà thêm
StatisticsGen
,SchemaGen
, vàExampleValidator
đến các đường ống dẫn. (Mẹo: tìm các nhận xét chứaTODO(step 5):
).
Thay đổi của bạn sẽ được lưu tự động sau vài giây. Hãy chắc chắn rằng
*
đánh dấu ở phía trước củapipeline.py
biến mất trong tiêu đề tab. Không có nút lưu hoặc phím tắt cho trình chỉnh sửa tệp trong Colab. File python trong trình soạn thảo tập tin có thể được lưu vào môi trường runtime ngay cả trongplayground
chế độ.
Bây giờ bạn cần cập nhật đường ống hiện có với định nghĩa đường ống đã sửa đổi. Sử dụng các tfx pipeline update
lệnh để cập nhật đường ống của bạn, tiếp theo là tfx run create
lệnh để tạo ra một thi chạy mới của đường ống dẫn cập nhật của bạn.
# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
# Update the pipeline
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
# You can run the pipeline the same way.
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:09:55.915484: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:01.148250: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Bạn sẽ có thể xem nhật ký đầu ra từ các thành phần được thêm vào. Đường ống của chúng tôi tạo ra các đồ tạo tác ra trong tfx_pipeline_output/my_pipeline
thư mục.
Bước 6. Thêm các thành phần để đào tạo.
Trong bước này, bạn sẽ thêm các thành phần đào tạo và mô hình xác nhận bao gồm Transform
, Trainer
, ResolverNode
, Evaluator
, và Pusher
.
Mở
pipeline/pipeline.py
. Tìm và bỏ ghi chú 5 dòng mà thêmTransform
,Trainer
,ResolverNode
,Evaluator
vàPusher
đến các đường ống dẫn. (Mẹo: findTODO(step 6):
)
Như bạn đã làm trước đây, bây giờ bạn cần cập nhật đường ống hiện có với định nghĩa đường ống đã sửa đổi. Các hướng dẫn cũng giống như Bước 5. Cập nhật các đường ống dẫn sử dụng tfx pipeline update
, và tạo ra một cuộc chạy thi bằng tfx run create
.
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name "${PIPELINE_NAME}"
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:06.281753: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:11.333668: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Khi quá trình thực thi này kết thúc thành công, bây giờ bạn đã tạo và chạy đường dẫn TFX đầu tiên của mình bằng cách sử dụng Beam orchestrator!
Bước 7. (Tùy chọn) Hãy thử BigQueryExampleGen.
[BigQuery] là kho dữ liệu đám mây không máy chủ, có khả năng mở rộng cao và tiết kiệm chi phí. BigQuery có thể được sử dụng làm nguồn cho các ví dụ đào tạo trong TFX. Trong bước này, chúng tôi sẽ bổ sung thêm BigQueryExampleGen
đến các đường ống dẫn.
Bạn cần một Google Cloud Platform tài khoản để sử dụng BigQuery. Vui lòng chuẩn bị một dự án GCP.
Đăng nhập vào dự án của bạn sử dụng thư viện auth colab hoặc gcloud
tiện ích.
# You need `gcloud` tool to login in local shell environment.
gcloud auth login
if 'google.colab' in sys.modules:
from google.colab import auth
auth.authenticate_user()
print('Authenticated')
Bạn nên chỉ định tên dự án GCP của mình để truy cập tài nguyên BigQuery bằng TFX. Set GOOGLE_CLOUD_PROJECT
biến môi trường để đặt tên dự án của bạn.
export GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
# Set your project name below.
# WARNING! ENTER your project name before running this cell.
%env GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
env: GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_NAME_HERE
Mở
pipeline/pipeline.py
. Nhận xét raCsvExampleGen
và bỏ ghi chú dòng mà tạo ra một thể hiện củaBigQueryExampleGen
. Bạn cũng cần phải bỏ ghi chúquery
tham số củacreate_pipeline
chức năng.
Chúng ta cần phải xác định các dự án GCP để sử dụng cho BigQuery một lần nữa, và điều này được thực hiện bằng cách thiết lập --project
trong beam_pipeline_args
khi tạo một đường ống dẫn.
Mở
pipeline/configs.py
. Bỏ ghi chú định nghĩa củaBIG_QUERY__WITH_DIRECT_RUNNER_BEAM_PIPELINE_ARGS
vàBIG_QUERY_QUERY
. Bạn nên thay thế id dự án và giá trị vùng trong tệp này bằng các giá trị chính xác cho dự án GCP của mình.
Mở
beam_dag_runner.py
. Bỏ ghi chú hai đối số,query
vàbeam_pipeline_args
, cho phương pháp create_pipeline ().
Giờ đây, quy trình đã sẵn sàng để sử dụng BigQuery làm nguồn mẫu. Cập nhật đường dẫn và tạo một đường chạy như chúng ta đã làm trong bước 5 và 6.
tfx pipeline update --engine=beam --pipeline_path=beam_dag_runner.py
tfx run create --engine beam --pipeline_name {PIPELINE_NAME}
2020-09-07 09:10:16.406635: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Updating pipeline Invalid pipeline path: beam_dag_runner.py 2020-09-07 09:10:21.439101: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 CLI Creating a run for pipeline: my_pipeline Pipeline "my_pipeline" does not exist.
Tiếp theo là gì: Nhập dữ liệu của BẠN vào đường dẫn.
Chúng tôi đã tạo một đường dẫn cho một mô hình bằng cách sử dụng bộ dữ liệu Taxi Chicago. Bây giờ đã đến lúc đưa dữ liệu của bạn vào đường dẫn.
Dữ liệu của bạn có thể được lưu trữ ở bất kỳ đâu mà đường dẫn của bạn có thể truy cập, bao gồm GCS hoặc BigQuery. Bạn sẽ cần sửa đổi định nghĩa đường ống để truy cập dữ liệu của mình.
- Nếu dữ liệu của bạn được lưu trữ trong các tập tin, thay đổi
DATA_PATH
trongkubeflow_dag_runner.py
hoặcbeam_dag_runner.py
và đặt nó vào vị trí của tập tin của bạn. Nếu dữ liệu của bạn được lưu trữ trong BigQuery, sửa đổiBIG_QUERY_QUERY
trongpipeline/configs.py
đến một cách chính xác truy vấn cho dữ liệu của bạn. - Thêm tính năng trong
models/features.py
. - Sửa đổi
models/preprocessing.py
để chuyển đổi dữ liệu đầu vào cho đào tạo . - Sửa đổi
models/keras/model.py
vàmodels/keras/constants.py
để mô tả mô hình ML của bạn .- Bạn cũng có thể sử dụng mô hình dựa trên công cụ ước tính. Thay đổi
RUN_FN
liên tục đểmodels.estimator.model.run_fn
trongpipeline/configs.py
.
- Bạn cũng có thể sử dụng mô hình dựa trên công cụ ước tính. Thay đổi
Xin vui lòng xem Trainer hướng dẫn thành phần cho ra đời hơn.