Đường dẫn TFX cho phép bạn điều phối quy trình công việc máy học (ML) của mình trên các bộ điều phối, chẳng hạn như: Apache Airflow, Apache Beam và Kubeflow Pipelines. Quy trình sắp xếp quy trình làm việc của bạn thành một chuỗi các thành phần, trong đó mỗi thành phần thực hiện một bước trong quy trình làm việc ML 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 bắt đầu xây dựng quy trình làm việc ML một cách dễ dàng. Bạn cũng có thể bao gồm các thành phần tùy chỉnh trong quy trình làm việc của mình. Các thành phần tùy chỉnh cho phép bạn mở rộng quy trình làm việc ML của mình bằng cách:
- Xây dựng các thành phần được điều chỉnh để đáp ứng nhu cầu của bạn, chẳng hạn như nhập dữ liệu từ hệ thống độc quyền.
- Áp dụng tăng cường dữ liệu, lấy mẫu lên hoặc lấy mẫu xuống.
- Thực hiện phát hiện bất thường dựa trên khoảng tin cậy hoặc lỗi tái tạo bộ mã hóa tự động.
- Giao tiếp với các hệ thống bên ngoài như bộ phận trợ giúp để cảnh báo và giám sát.
- Áp dụng nhãn cho các ví dụ chưa được gắn nhãn.
- Tích hợp các công cụ được xây dựng bằng các ngôn ngữ khác ngoài Python vào quy trình làm việc ML của bạn, chẳng hạn như thực hiện phân tích dữ liệu bằng R.
Bằng cách kết hợp các thành phần tiêu chuẩn và thành phần tùy chỉnh, bạn có thể xây dựng quy trình làm việc ML đáp ứng nhu cầu của mình đồng thời tận dụng các phương pháp hay nhất được tích hợp trong các thành phần tiêu chuẩn TFX.
Hướng dẫn này mô tả các khái niệm cần thiết để hiểu các thành phần tùy chỉnh TFX và các cách khác nhau để bạn có thể xây dựng các thành phần tùy chỉnh.
Giải phẫu thành phần TFX
Phần này cung cấp tổng quan cấp cao về thành phần của thành phần TFX. Nếu bạn chưa quen với quy trình TFX, hãy tìm hiểu các khái niệm cốt lõi bằng cách đọc hướng dẫn để hiểu quy trình TFX .
Các thành phần TFX bao gồm một đặc tả thành phần và một lớp thực thi được đóng gói trong một lớp giao diện thành phần.
Đặc tả thành phần xác định hợp đồng đầu vào và đầu ra của thành phần. Hợp đồng này chỉ định các tạo phẩm đầu vào và đầu ra của thành phần cũng như các tham số được sử dụng để thực thi thành phần.
Lớp thực thi của một thành phần cung cấp việc triển khai công việc được thực hiện bởi thành phần đó.
Lớp giao diện thành phần kết hợp đặc tả thành phần với bộ thực thi để sử dụng như một thành phần trong đường dẫn TFX.
Các thành phần TFX khi chạy
Khi một quy trình chạy thành phần TFX, thành phần này được thực thi theo ba giai đoạn:
- Đầu tiên, Trình điều khiển sử dụng đặc tả thành phần để truy xuất các tạo phẩm cần thiết từ kho siêu dữ liệu và chuyển chúng vào thành phần.
- Tiếp theo, Executor thực hiện công việc của thành phần.
- Sau đó, Nhà xuất bản sử dụng đặc tả thành phần và kết quả từ người thực thi để lưu trữ kết quả đầu ra của thành phần trong kho siêu dữ liệu.
Hầu hết việc triển khai thành phần tùy chỉnh không yêu cầu bạn tùy chỉnh Trình điều khiển hoặc Nhà xuất bản. Thông thường, chỉ cần sửa đổi Trình điều khiển và Nhà xuất bản nếu bạn muốn thay đổi tương tác giữa các thành phần của quy trình và kho siêu dữ liệu. Nếu bạn chỉ muốn thay đổi đầu vào, đầu ra hoặc tham số cho thành phần của mình, bạn chỉ cần sửa đổi thông số kỹ thuật của thành phần .
Các loại thành phần tùy chỉnh
Có ba loại thành phần tùy chỉnh: thành phần dựa trên hàm Python, thành phần dựa trên vùng chứa và thành phần tùy chỉnh hoàn toàn. Các phần sau đây mô tả các loại thành phần khác nhau và các trường hợp bạn nên sử dụng từng phương pháp.
Các thành phần dựa trên hàm Python
Các thành phần dựa trên hàm Python dễ xây dựng hơn các thành phần dựa trên vùng chứa hoặc các thành phần tùy chỉnh hoàn toàn. Đặc tả thành phần được xác định trong các đối số của hàm Python bằng cách sử dụng các chú thích kiểu mô tả xem đối số là thành phần đầu vào, thành phần đầu ra hay tham số. Phần thân hàm xác định người thực thi của thành phần. Giao diện thành phần được xác định bằng cách thêm trình trang trí @component
vào hàm của bạn.
Bằng cách trang trí hàm của bạn bằng trình trang trí @component
và xác định các đối số của hàm bằng chú thích kiểu, bạn có thể tạo một thành phần mà không gặp khó khăn khi xây dựng đặc tả thành phần, trình thực thi và giao diện thành phần.
Tìm hiểu cách xây dựng các thành phần dựa trên hàm Python .
Các thành phần dựa trên container
Các thành phần dựa trên vùng chứa cung cấp tính linh hoạt để tích hợp mã được viết bằng bất kỳ ngôn ngữ nào vào quy trình của bạn, miễn là bạn có thể thực thi mã đó trong vùng chứa Docker. Để tạo thành phần dựa trên vùng chứa, bạn phải xây dựng hình ảnh vùng chứa Docker chứa mã thực thi của thành phần. Sau đó, bạn phải gọi hàm create_container_component
để xác định:
- Đầu vào, đầu ra và thông số của đặc tả thành phần của bạn.
- Hình ảnh vùng chứa và lệnh mà trình thực thi thành phần chạy.
Hàm này trả về một phiên bản của thành phần mà bạn có thể đưa vào định nghĩa quy trình của mình.
Cách tiếp cận này phức tạp hơn việc xây dựng một thành phần dựa trên hàm Python vì nó yêu cầu đóng gói mã của bạn dưới dạng hình ảnh vùng chứa. Cách tiếp cận này phù hợp nhất để đưa mã không phải Python vào quy trình của bạn hoặc để xây dựng các thành phần Python với các môi trường thời gian chạy hoặc phần phụ thuộc phức tạp.
Tìm hiểu cách xây dựng các thành phần dựa trên vùng chứa .
Các thành phần hoàn toàn tùy chỉnh
Các thành phần hoàn toàn tùy chỉnh cho phép bạn xây dựng các thành phần bằng cách xác định các lớp giao diện thành phần, bộ thực thi và đặc tả thành phần. Cách tiếp cận này cho phép bạn tái sử dụng và mở rộng một thành phần tiêu chuẩn để phù hợp với nhu cầu của mình.
Nếu một thành phần hiện có được xác định với cùng đầu vào và đầu ra như thành phần tùy chỉnh mà bạn đang phát triển, thì bạn chỉ cần ghi đè lớp Executor của thành phần hiện có. Điều này có nghĩa là bạn có thể sử dụng lại đặc tả thành phần và triển khai một trình thực thi mới bắt nguồn từ thành phần hiện có. Bằng cách này, bạn sử dụng lại chức năng được tích hợp trong các thành phần hiện có và chỉ triển khai chức năng được yêu cầu.
Tuy nhiên, nếu đầu vào và đầu ra của thành phần mới của bạn là duy nhất, bạn có thể xác định thông số thành phần hoàn toàn mới.
Cách tiếp cận này là tốt nhất để sử dụng lại các thông số kỹ thuật và bộ thực thi thành phần hiện có.
Tìm hiểu cách xây dựng các thành phần hoàn toàn tùy chỉnh .