TFX giúp việc điều phối quy trình học máy (ML) của bạn dưới dạng một đường ống dễ dàng hơn để:
- Tự động hóa quy trình ML của bạn, cho phép bạn thường xuyên đào tạo lại, đánh giá và triển khai mô hình của mình.
- Tạo quy trình ML bao gồm phân tích sâu về hiệu suất mô hình và xác thực các mô hình mới được đào tạo để đảm bảo hiệu suất và độ tin cậy.
- Giám sát dữ liệu đào tạo để phát hiện các điểm bất thường và loại bỏ sai lệch phục vụ đào tạo
- Tăng tốc độ thử nghiệm bằng cách chạy một quy trình với các bộ siêu tham số khác nhau.
Một quy trình phát triển quy trình điển hình bắt đầu trên một máy cục bộ, với việc phân tích dữ liệu và thiết lập thành phần, trước khi triển khai vào sản xuất. Hướng dẫn này mô tả hai cách để xây dựng quy trình cục bộ.
- Tùy chỉnh mẫu đường dẫn TFX để phù hợp với nhu cầu của quy trình làm việc ML của bạn. Mẫu đường dẫn TFX là các quy trình làm việc dựng sẵn thể hiện các phương pháp hay nhất bằng cách sử dụng các thành phần tiêu chuẩn TFX.
- Xây dựng một đường ống bằng TFX. Trong trường hợp sử dụng này, bạn xác định quy trình mà không bắt đầu từ mẫu.
Khi bạn đang phát triển quy trình của mình, bạn có thể chạy nó với LocalDagRunner
. Sau đó, khi các thành phần quy trình đã được xác định và thử nghiệm rõ ràng, bạn sẽ sử dụng bộ điều phối cấp sản xuất như Kubeflow hoặc Airflow.
Trước khi bạn bắt đầu
TFX là một gói Python, vì vậy bạn sẽ cần thiết lập môi trường phát triển Python, chẳng hạn như môi trường ảo hoặc vùng chứa Docker. Sau đó:
pip install tfx
Nếu bạn chưa quen với quy trình TFX, hãy tìm hiểu thêm về các khái niệm cốt lõi về quy trình TFX trước khi tiếp tục.
Xây dựng quy trình sử dụng mẫu
Mẫu quy trình TFX giúp bắt đầu phát triển quy trình dễ dàng hơn bằng cách cung cấp một bộ định nghĩa quy trình dựng sẵn mà bạn có thể tùy chỉnh cho trường hợp sử dụng của mình.
Các phần sau đây mô tả cách tạo bản sao của mẫu và tùy chỉnh mẫu đó để đáp ứng nhu cầu của bạn.
Tạo một bản sao của mẫu đường ống
Xem danh sách các mẫu đường ống TFX có sẵn:
tfx template list
Chọn một mẫu từ danh sách
tfx template copy --model=template --pipeline_name=pipeline-name \ --destination_path=destination-path
Thay thế như sau:
- template : Tên của mẫu bạn muốn sao chép.
- pipeline-name : Tên của đường ống cần tạo.
- destination-path : Đường dẫn để sao chép mẫu vào.
Tìm hiểu thêm về lệnh
tfx template copy
.Một bản sao của mẫu quy trình đã được tạo tại đường dẫn bạn đã chỉ định.
Khám phá mẫu quy trình
Phần này cung cấp cái nhìn tổng quan về giàn giáo được tạo bởi một mẫu.
Khám phá các thư mục và tệp đã được sao chép vào thư mục gốc của đường dẫn của bạn
- Một thư mục đường ống với
-
pipeline.py
- xác định đường dẫn và liệt kê các thành phần nào đang được sử dụng -
configs.py
- giữ chi tiết cấu hình như dữ liệu đến từ đâu hoặc bộ điều phối nào đang được sử dụng
-
- Một thư mục dữ liệu
- Tệp này thường chứa tệp
data.csv
, là nguồn mặc định choExampleGen
. Bạn có thể thay đổi nguồn dữ liệu trongconfigs.py
.
- Tệp này thường chứa tệp
Một thư mục mô hình với mã tiền xử lý và triển khai mô hình
Mẫu sao chép các trình chạy DAG cho môi trường cục bộ và Kubeflow.
Một số mẫu cũng bao gồm Sổ ghi chép Python để bạn có thể khám phá dữ liệu và tạo phẩm của mình bằng Siêu dữ liệu Machine Learning.
- Một thư mục đường ống với
Chạy các lệnh sau trong thư mục đường dẫn của bạn:
tfx pipeline create --pipeline_path local_runner.py
tfx run create --pipeline_name pipeline_name
Lệnh tạo một đường dẫn chạy bằng cách sử dụng
LocalDagRunner
, lệnh này sẽ thêm các thư mục sau vào đường dẫn của bạn:- Thư mục tfx_metadata chứa kho siêu dữ liệu ML được sử dụng cục bộ.
- Thư mục tfx_pipeline_output chứa các kết quả đầu ra tệp của đường ống.
Mở tệp
pipeline/configs.py
của đường dẫn của bạn và xem lại nội dung. Tập lệnh này xác định các tùy chọn cấu hình được sử dụng bởi đường dẫn và các hàm thành phần. Đây là nơi bạn sẽ chỉ định những thứ như vị trí của nguồn dữ liệu hoặc số bước huấn luyện trong một lần chạy.Mở tệp
pipeline/pipeline.py
của đường dẫn của bạn và xem lại nội dung. Tập lệnh này tạo đường dẫn TFX. Ban đầu, đường dẫn chỉ chứa thành phầnExampleGen
.- Làm theo hướng dẫn trong nhận xét TODO trong
pipeline.py
để thêm các bước khác vào quy trình.
- Làm theo hướng dẫn trong nhận xét TODO trong
Mở tệp
local_runner.py
và xem lại nội dung. Tập lệnh này tạo một lần chạy quy trình và chỉ định các tham số của lần chạy, chẳng hạn nhưdata_path
vàpreprocessing_fn
.Bạn đã xem lại giàn giáo được tạo bởi mẫu và tạo một quy trình chạy bằng cách sử dụng
LocalDagRunner
. Tiếp theo, tùy chỉnh mẫu để phù hợp với yêu cầu của bạn.
Tùy chỉnh đường dẫn của bạn
Phần này cung cấp thông tin tổng quan về cách bắt đầu tùy chỉnh mẫu của bạn.
Thiết kế đường ống của bạn. Khung mà mẫu cung cấp giúp bạn triển khai quy trình cho dữ liệu dạng bảng bằng cách sử dụng các thành phần tiêu chuẩn TFX. Nếu bạn đang chuyển quy trình làm việc ML hiện có thành một quy trình, bạn có thể cần phải sửa lại mã của mình để tận dụng tối đa các thành phần tiêu chuẩn TFX . Bạn cũng có thể cần tạo các thành phần tùy chỉnh để triển khai các tính năng dành riêng cho quy trình làm việc của mình hoặc chưa được các thành phần tiêu chuẩn TFX hỗ trợ.
Khi bạn đã thiết kế quy trình của mình, hãy tùy chỉnh quy trình nhiều lần bằng cách sử dụng quy trình sau. Bắt đầu từ thành phần nhập dữ liệu vào quy trình của bạn, thường là thành phần
ExampleGen
.Tùy chỉnh quy trình hoặc thành phần để phù hợp với trường hợp sử dụng của bạn. Những tùy chỉnh này có thể bao gồm những thay đổi như:
- Thay đổi các thông số đường ống.
- Thêm các thành phần vào quy trình hoặc loại bỏ chúng.
- Thay thế nguồn đầu vào dữ liệu. Nguồn dữ liệu này có thể là tệp hoặc truy vấn vào các dịch vụ như BigQuery.
- Thay đổi cấu hình của một thành phần trong đường ống.
- Thay đổi chức năng tùy chỉnh của một thành phần.
Chạy thành phần cục bộ bằng cách sử dụng tập lệnh
local_runner.py
hoặc trình chạy DAG thích hợp khác nếu bạn đang sử dụng một trình điều phối khác. Nếu tập lệnh không thành công, hãy gỡ lỗi và thử chạy lại tập lệnh.Khi tùy chỉnh này hoạt động, hãy chuyển sang tùy chỉnh tiếp theo.
Làm việc lặp đi lặp lại, bạn có thể tùy chỉnh từng bước trong quy trình làm việc của mẫu để đáp ứng nhu cầu của mình.
Xây dựng một đường ống tùy chỉnh
Hãy sử dụng các hướng dẫn sau để tìm hiểu thêm về cách xây dựng quy trình tùy chỉnh mà không cần sử dụng mẫu.
Thiết kế đường ống của bạn. Các thành phần tiêu chuẩn TFX cung cấp chức năng đã được chứng minh để giúp bạn triển khai quy trình làm việc ML hoàn chỉnh. Nếu bạn đang di chuyển quy trình làm việc ML hiện có vào một quy trình, bạn có thể cần phải sửa lại mã của mình để tận dụng tối đa các thành phần tiêu chuẩn TFX. Bạn cũng có thể cần tạo các thành phần tùy chỉnh để triển khai các tính năng như tăng cường dữ liệu.
- Tìm hiểu thêm về các thành phần TFX tiêu chuẩn .
- Tìm hiểu thêm về các thành phần tùy chỉnh .
Tạo một tệp tập lệnh để xác định quy trình của bạn bằng ví dụ sau. Hướng dẫn này gọi tệp này là
my_pipeline.py
.import os from typing import Optional, Text, List from absl import logging from ml_metadata.proto import metadata_store_pb2 import tfx.v1 as tfx PIPELINE_NAME = 'my_pipeline' PIPELINE_ROOT = os.path.join('.', 'my_pipeline_output') METADATA_PATH = os.path.join('.', 'tfx_metadata', PIPELINE_NAME, 'metadata.db') ENABLE_CACHE = True def create_pipeline( pipeline_name: Text, pipeline_root:Text, enable_cache: bool, metadata_connection_config: Optional[ metadata_store_pb2.ConnectionConfig] = None, beam_pipeline_args: Optional[List[Text]] = None ): components = [] return tfx.dsl.Pipeline( pipeline_name=pipeline_name, pipeline_root=pipeline_root, components=components, enable_cache=enable_cache, metadata_connection_config=metadata_connection_config, beam_pipeline_args=beam_pipeline_args, <!-- needed? --> ) def run_pipeline(): my_pipeline = create_pipeline( pipeline_name=PIPELINE_NAME, pipeline_root=PIPELINE_ROOT, enable_cache=ENABLE_CACHE, metadata_connection_config=tfx.orchestration.metadata.sqlite_metadata_connection_config(METADATA_PATH) ) tfx.orchestration.LocalDagRunner().run(my_pipeline) if __name__ == '__main__': logging.set_verbosity(logging.INFO) run_pipeline()
Trong các bước tiếp theo, bạn xác định đường dẫn của mình trong
create_pipeline
và chạy đường dẫn cục bộ bằng cách sử dụng trình chạy cục bộ.Lặp lại việc xây dựng quy trình của bạn bằng quy trình sau.
Tùy chỉnh quy trình hoặc thành phần để phù hợp với trường hợp sử dụng của bạn. Những tùy chỉnh này có thể bao gồm những thay đổi như:
- Thay đổi các thông số đường ống.
- Thêm các thành phần vào quy trình hoặc loại bỏ chúng.
- Thay thế một tập tin đầu vào dữ liệu.
- Thay đổi cấu hình của một thành phần trong đường ống.
- Thay đổi chức năng tùy chỉnh của một thành phần.
Chạy thành phần cục bộ bằng cách sử dụng trình chạy cục bộ hoặc bằng cách chạy tập lệnh trực tiếp. Nếu tập lệnh không thành công, hãy gỡ lỗi và thử chạy lại tập lệnh.
Khi tùy chỉnh này hoạt động, hãy chuyển sang tùy chỉnh tiếp theo.
Bắt đầu từ nút đầu tiên trong quy trình làm việc của quy trình, thường là nút đầu tiên nhập dữ liệu vào quy trình của bạn.
Thêm nút đầu tiên trong quy trình làm việc vào quy trình của bạn. Trong ví dụ này, quy trình sử dụng thành phần tiêu chuẩn
ExampleGen
để tải CSV từ thư mục tại./data
.from tfx.components import CsvExampleGen DATA_PATH = os.path.join('.', 'data') def create_pipeline( pipeline_name: Text, pipeline_root:Text, data_path: Text, enable_cache: bool, metadata_connection_config: Optional[ metadata_store_pb2.ConnectionConfig] = None, beam_pipeline_args: Optional[List[Text]] = None ): components = [] example_gen = tfx.components.CsvExampleGen(input_base=data_path) components.append(example_gen) return tfx.dsl.Pipeline( pipeline_name=pipeline_name, pipeline_root=pipeline_root, components=components, enable_cache=enable_cache, metadata_connection_config=metadata_connection_config, beam_pipeline_args=beam_pipeline_args, <!-- needed? --> ) def run_pipeline(): my_pipeline = create_pipeline( pipeline_name=PIPELINE_NAME, pipeline_root=PIPELINE_ROOT, data_path=DATA_PATH, enable_cache=ENABLE_CACHE, metadata_connection_config=tfx.orchestration.metadata.sqlite_metadata_connection_config(METADATA_PATH) ) tfx.orchestration.LocalDagRunner().run(my_pipeline)
CsvExampleGen
tạo các bản ghi ví dụ được tuần tự hóa bằng cách sử dụng dữ liệu trong CSV theo đường dẫn dữ liệu đã chỉ định. Bằng cách đặt tham sốinput_base
của thành phầnCsvExampleGen
bằng gốc dữ liệu.Tạo một thư mục
data
trong cùng thư mục vớimy_pipeline.py
. Thêm một tệp CSV nhỏ vào thư mụcdata
.Sử dụng lệnh sau để chạy tập lệnh
my_pipeline.py
của bạn.python my_pipeline.py
Kết quả sẽ giống như sau:
INFO:absl:Component CsvExampleGen depends on []. INFO:absl:Component CsvExampleGen is scheduled. INFO:absl:Component CsvExampleGen is running. INFO:absl:Running driver for CsvExampleGen INFO:absl:MetadataStore with DB connection initialized INFO:absl:Running executor for CsvExampleGen INFO:absl:Generating examples. INFO:absl:Using 1 process(es) for Local pipeline execution. INFO:absl:Processing input csv data ./data/* to TFExample. WARNING:root:Couldn't find python-snappy so the implementation of _TFRecordUtil._masked_crc32c is not as fast as it could be. INFO:absl:Examples generated. INFO:absl:Running publisher for CsvExampleGen INFO:absl:MetadataStore with DB connection initialized INFO:absl:Component CsvExampleGen is finished.
Tiếp tục thêm các thành phần vào quy trình của bạn theo cách lặp đi lặp lại.