Chuyển đến nội dung chính

Xây dựng và triển khai Machine Learning Pipelines

Khám phá mọi điều bạn cần biết về Kubeflow và cách xây dựng, triển khai Machine Learning Pipelines
Đã cập nhật 5 thg 10, 2026  · 11 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Tiêu đề Hướng dẫn Kubeflow

Giới thiệu

Khi xây dựng mô hình machine learning, bạn có thể quên tính đến hạ tầng cần thiết để huấn luyện và phục vụ mô hình trong môi trường sản xuất. Với các quy trình machine learning đầu-cuối, việc quản lý tất cả các yếu tố về ứng dụng, nền tảng và tài nguyên có thể là thách thức. 

So với triển khai web thông thường, ứng dụng machine learning có đặc thù khác. Ví dụ, giai đoạn huấn luyện tiêu tốn tài nguyên, trong khi giai đoạn suy luận lại nhẹ và nhanh. Bạn cũng sẽ cần các công cụ và framework để vận hành tất cả các phần này. Một framework mã nguồn mở rất phổ biến có thể dùng để xây dựng tiêu chuẩn cho việc phân phối ứng dụng machine learning đầu-cuối là Kubeflow.

Kubeflow là gì?

Kubeflow là một dự án mã nguồn mở bao gồm tập hợp có chọn lọc các công cụ và framework. Mục tiêu chính của Kubeflow là giúp phát triển, triển khai và quản lý các quy trình machine learning linh hoạt, có thể mở rộng và di động. 

Kubeflow được xây dựng trên Kubernetes, một nền tảng mã nguồn mở để chạy và điều phối container. Kubernetes được thiết kế để chạy nhất quán trên nhiều môi trường, đây là chìa khóa cho cách Kubeflow hoạt động. Kubeflow được thiết kế để để Kubernetes làm tốt những gì nó giỏi, cho phép bạn tập trung vào việc định nghĩa và chạy các workflow ML, bao gồm quản lý dữ liệu, chạy notebook, huấn luyện và phục vụ mô hình. 

Kubeflow phát triển từ dự án nội bộ của Google gọi là TensorFlow Extended. Ban đầu, nó chỉ là cách đơn giản hơn để chạy các job TensorFlow trên Kubernetes nhưng sau đó đã mở rộng thành một framework đa kiến trúc, đa đám mây để chạy các workflow machine learning đầu-cuối. 

Kubeflow và các quy trình Machine Learning

Kubeflow là một nền tảng dành cho nhà khoa học dữ liệu và kỹ sư machine learning, kết hợp các chức năng tốt nhất của cả hai. Nhà khoa học dữ liệu có thể dùng Kubeflow để thử nghiệm mô hình ML và điều phối các thí nghiệm của họ trên Kubernetes một cách hiệu quả nhất. 

Kỹ sư machine learning có thể dùng Kubeflow để triển khai hệ thống ML lên nhiều môi trường cho phát triển, kiểm thử và phục vụ sản xuất.

Sơ đồ dưới đây minh họa hai giai đoạn riêng biệt trong một dự án machine learning: (i) Giai đoạn Thử nghiệm và (ii) Giai đoạn Sản xuất. 

Kubeflow có rất nhiều thành phần khác nhau để hỗ trợ gần như mọi bước trong pipeline dưới đây. Ví dụ, để tinh chỉnh siêu tham số của mô hình, Kubeflow có một thành phần gọi là “Katib.” Chúng ta sẽ thảo luận về các thành phần chính của Kubeflow ở phần sau của hướng dẫn này.

Quy trình machine learning

Kubeflow - Quy trình Machine Learning

Cài đặt Kubeflow

Có hai cách để bắt đầu với Kubeflow:

  1. Cài đặt bằng bản phân phối đóng gói (đơn giản và trực tiếp).
  2. Cài đặt bằng manifests (nâng cao).

Các bản phân phối đóng gói được phát triển và hỗ trợ bởi các bên phụ trách tương ứng. Ví dụ, Kubeflow trên Azure do Microsoft duy trì. Xem danh sách đầy đủ các bản phân phối trong bảng dưới đây:

Các bản phân phối đóng gói của Kubeflow

Các bản phân phối đóng gói của Kubeflow

Ba nguyên tắc của Kubeflow

Tính hợp phần (Composability)

Tính hợp phần là nguyên tắc thiết kế hệ thống để xử lý mối quan hệ giữa các thành phần. Kubeflow có tính hợp phần rất cao, vì vậy bạn có thể dễ dàng dùng các phiên bản TensorFlow khác nhau cho các phần khác nhau trong pipeline machine learning nếu cần. 

Tính di động (Portability)

Tính di động nghĩa là bạn có thể chạy toàn bộ dự án machine learning của mình ở bất cứ nơi nào bạn đang chạy Kubeflow. Nó độc lập nền tảng và che giấu mọi phức tạp khỏi người dùng. Bạn chỉ cần viết mã một lần, và Kubeflow sẽ xử lý phần trừu tượng để bạn có thể chạy mã trên laptop hoặc trên cụm máy chủ trên đám mây.

Khả năng mở rộng (Scalability)

Khả năng mở rộng nghĩa là dự án của bạn có thể truy cập thêm tài nguyên khi cần và giải phóng khi không cần. Mỗi môi trường có thể có các tài nguyên tính toán khác nhau như CPU, GPU và TPU.

Các thực thể khái niệm của Kubeflow

Các thực thể khái niệm của Kubeflow

Các thành phần của Kubeflow

Các thành phần Kubeflow là những khối logic cấu thành Kubeflow. Thông thường, bạn sẽ dùng một hoặc nhiều thành phần trong một dự án machine learning.

Bảng điều khiển (Dashboard)

Trên hết, Central Dashboard cung cấp truy cập nhanh đến các thành phần Kubeflow khác. Một số thành phần hữu ích gồm:

  • Notebooks: Để quản lý Notebook servers.
  • Pipelines: Để quản lý các pipeline của Kubeflow.
  • Experiments: Để quản lý các thí nghiệm Katib.

Giao diện Bảng điều khiển Kubeflow

Giao diện Bảng điều khiển Kubeflow

Notebooks

Kubeflow đi kèm môi trường Jupyter notebook tích hợp. Notebook hữu ích cho việc thử nhanh, phát triển mô hình và thậm chí viết ứng dụng ML. 

Việc kỹ sư ML và nhà khoa học dữ liệu chạy notebook cục bộ và bị giới hạn tài nguyên không phải hiếm. Đưa notebook vào cluster giúp dễ dàng chạy job ở nơi tài nguyên có thể mở rộng động. 

Kubeflow Notebooks

Kubeflow Notebooks

Pipelines

Kubeflow Pipelines là một thành phần mạnh mẽ để xây dựng các pipeline machine learning di động và có thể mở rộng đầu-cuối dựa trên container Docker. 

Machine Learning Pipelines là tập hợp các bước có khả năng xử lý mọi thứ từ thu thập dữ liệu đến phục vụ mô hình machine learning. Mỗi bước trong pipeline là một container Docker, do đó di động và có thể mở rộng. Mỗi bước độc lập, cho phép bạn tái sử dụng các thành phần pipeline. 

Giao diện Kubeflow Pipelines

Giao diện Kubeflow Pipelines

Trong hướng dẫn này, chúng ta sẽ đi chi tiết thành phần Kubeflow Pipelines và xem ví dụ mã về cách xây dựng và thực thi một pipeline machine learning bằng Kubeflow.

Katib

Katib là một thành phần Kubeflow được thiết kế để tự động tinh chỉnh siêu tham số ở quy mô lớn. Tinh chỉnh siêu tham số đóng vai trò quan trọng trong phát triển mô hình tốt, vì tự tay tìm kiếm không gian siêu tham số có thể tốn rất nhiều công sức. 

Katib giúp bạn tối ưu các giá trị siêu tham số quanh một chỉ số xác định (như AUC hoặc RMSE). Đây là cách hữu ích để tìm và trực quan hóa cấu hình tối ưu nhằm chuẩn bị mô hình cho sản xuất. 

Giao diện Kubeflow Katib

Giao diện Kubeflow Katib

Kubeflow Pipelines

Một workflow machine learning có thể bao gồm nhiều bước, từ chuẩn bị dữ liệu đến huấn luyện, đánh giá mô hình và hơn thế nữa. Rất khó để theo dõi theo cách tùy tiện. 

Ghi log thí nghiệm và theo dõi phiên bản mô hình mà không có công cụ phù hợp là thách thức khác cho nhà khoa học dữ liệu. Kubeflow Pipelines cho phép họ phát triển workflow machine learning theo các tiêu chuẩn có thể hợp phần, chia sẻ và tái lập.

Kubeflow là giải pháp thuần Kubernetes giúp nhà khoa học dữ liệu hình thành tư duy pipeline có kỷ luật khi phát triển mã ML và mở rộng nó lên đám mây. Mục tiêu cuối cùng của Kubeflow Pipelines là:

  • Đơn giản hóa việc điều phối các pipeline machine learning ở quy mô lớn 
  • Cho phép thử nghiệm nhanh hơn, tái lập và cộng tác thông qua Multi-tenancy. Kubeflow UI có thể dùng để tạo nhóm và thêm người dùng vào nhóm kèm kiểm soát truy cập.
  • Có thể tái sử dụng và cung cấp tiêu chuẩn hóa cho các thành phần ML khác nhau (các bước trong pipeline).

Với Kubeflow, bạn có thể tạo giải pháp machine learning đầu-cuối theo kiểu lắp ghép mà không phải xây lại mỗi lần. Kubeflow cũng hỗ trợ nhiều tính năng khác như giám sát thực thi, lập lịch workflow, ghi log metadata và quản lý phiên bản.

Tổng quan kiến trúc

Tổng quan kiến trúc Kubeflow

Các khái niệm quan trọng trong Kubeflow Pipelines

Pipeline

Pipeline là một chuỗi các bước được định nghĩa rõ ràng trong workflow machine learning (ML). Pipeline phải có định nghĩa về đầu vào (tham số) cần thiết để chạy pipeline và đầu vào, đầu ra của từng thành phần. Mỗi thành phần trong pipeline nhận một đầu vào, xử lý và cung cấp đầu ra cho thành phần tiếp theo.

Một khái niệm rất quan trọng cần hiểu là mỗi bước (thành phần) trong pipeline Kubeflow về cơ bản là một container Docker. Khi bạn thực thi pipeline, Kubeflow khởi chạy một hoặc nhiều Pod Kubernetes tương ứng với các thành phần trong pipeline. Các pod sau đó khởi động container docker, từ đó chạy phần mã bạn đã viết trong thành phần.

Component

Thành phần pipeline là đoạn mã độc lập thực hiện một bước trong workflow machine learning, chẳng hạn như điền giá trị thiếu, chuẩn hóa dữ liệu, hoặc fit mô hình machine learning.

Một thành phần trong pipeline Kubeflow giống như một hàm. Vì vậy, mỗi thành phần có tên, tham số đầu vào và đầu ra. 

Mỗi thành phần trong pipeline phải được đóng gói thành một image Docker để mỗi bước độc lập với nhau, và bạn có thể kết hợp các framework, công cụ khác nhau ở các phần khác nhau của workflow ML.

Experiment

Experiment cho phép bạn chạy các cấu hình khác nhau của cùng một pipeline và so sánh, phân tích kết quả. Thông thường trong machine learning, bạn phải thử các tham số khác nhau để xem phương án nào tốt nhất. Kubeflow Pipeline Experiment được thiết kế để đạt được điều đó.

Graph

Graph là phần trình bày trực quan trong Kubeflow UI. Nó hiển thị các bước mà một lần chạy pipeline đã hoặc đang thực thi, với các mũi tên chỉ mối quan hệ cha/con giữa các thành phần pipeline được đại diện bởi mỗi bước. 

Ba cách xây dựng pipeline trong Kubeflow 

Hy vọng giờ đây bạn đã hiểu Kubeflow Pipelines là gì và lợi ích của việc dùng framework này để thiết kế, triển khai workflow machine learning trong sản xuất. Hãy điểm qua nhanh ba cách bạn có thể dùng Kubeflow để xây dựng và triển khai pipeline.

Giao diện người dùng (UI)

Bạn có thể dùng Kubeflow UI để chạy pipeline, tải lên pipeline do người khác chia sẻ, xem hiện vật (artifact) và đầu ra của các lần chạy, và lập lịch chạy tự động. Đây là giao diện Pipeline:

Kubeflow Pipelines

Giao diện Kubeflow Pipeline

SDK Python chính thức

Kubeflow cung cấp bộ thư viện Python mà bạn có thể dùng để lập trình phát triển và thực thi các pipeline ML. Đây là cách sử dụng phổ biến nhất cho Kubeflow Pipelines.

REST API

Kubeflow cũng cung cấp REST API cho các hệ thống tích hợp/triển khai liên tục. Hãy hình dung trường hợp bạn muốn tích hợp bất kỳ chức năng nào của Kubeflow Pipeline vào các hệ thống hay quy trình doanh nghiệp ở hạ nguồn.

Hướng dẫn Kubeflow Pipeline

Cách dễ nhất để bắt đầu với Kubeflow là dùng bản phân phối đóng gói, về cơ bản giống như dịch vụ được quản lý trên đám mây. Ở đây, chúng tôi dùng dịch vụ Kubeflow trên GCP. Bạn có thể làm theo hướng dẫn chính thức để học cách triển khai dịch vụ trên GCP. 

Khi triển khai thành công, bạn có thể truy cập bảng điều khiển này từ endpoint GCP của mình.

Bảng điều khiển Kubeflow

Bảng điều khiển Kubeflow - Triển khai trên GCP

Kubeflow Pipelines đi kèm một vài pipeline mẫu. Hãy thử một pipeline tiền xử lý dữ liệu cơ bản bằng Python. Nhấp vào Pipelines trên thanh công cụ bên trái.

Giao diện Kubeflow Pipeline

Kubeflow Pipelines - Triển khai trên GCP

Nhấp vào tạo experiment: 

Kubeflow Pipelines-GCP

Kubeflow Pipelines - Triển khai trên GCP

Làm theo các hướng dẫn và sau đó nhấp nút bắt đầu trên màn hình chạy để chạy pipeline.

Kubeflow Pipelines - Triển khai trên GCP

Kubeflow Pipelines - Triển khai trên GCP

Experiment sẽ hiển thị trong bảng điều khiển:

Kubeflow Pipelines- Thí nghiệm đầu tiên

Kubeflow Pipelines - Triển khai trên GCP

Nhấp vào experiment để xem đầu ra khi lần chạy kết thúc:

Lần chạy đầu tiên của Pipelines

Kubeflow Pipelines - Triển khai trên GCP

Giờ bạn đã biết cách thực thi pipeline bằng Kubeflow UI. Mỗi thành phần trong pipeline trên chỉ là một script Python đơn giản, tách biệt. Trong ví dụ trên, các bước đơn giản như “Print Text” hoặc “Sum Numbers.” 

Hãy xem ví dụ phức tạp hơn về cách bạn có thể viết mã và biên dịch các thành phần này trong Python.

Xây dựng Kubeflow Pipeline qua Python SDK

Trong ví dụ này, chúng ta sẽ tạo một Kubeflow pipeline với hai thành phần: 

  • Tải tệp tar nén dựa trên url truyền vào,
  • Giải nén tất cả tệp csv và tạo một pandas dataframe duy nhất bằng hàm `pd.concat`. 

Về lý thuyết, thay vì tách pipeline này thành hai bước, chúng ta cũng có thể tạo một hàm nhận url, tải tệp nén và sau đó gộp tất cả tệp csv thành một tệp duy nhất. 

Tuy nhiên, lợi ích của việc làm thành hai bước là bạn có thể tạo một bước để tải tệp nén, và sau đó có thể tái sử dụng nó trong các dự án khác. 

Trong Kubeflow, bạn có thể định nghĩa component dưới dạng tệp yaml và dùng hàm `kfp.components.load_component_from_url` để tải trực tiếp component từ url. 

Ở bước đầu tiên, hãy tải component từ url mã nguồn mở này.

```

web_downloader_op = kfp.components.load_component_from_url(

    'https://raw.githubusercontent.com/kubeflow/pipelines/master/components/web/Download/component-sdk-v2.yaml')

```

Ở bước thứ hai, chúng ta sẽ định nghĩa một hàm Python:

```

@component(

    packages_to_install=['pandas==1.1.4'],

    output_component_file='component.yaml'

)

def merge_csv(tar_data: Input[Artifact], output_csv: Output[Dataset]):

  import glob

  import pandas as pd

  import tarfile




  tarfile.open(name=tar_data.path, mode="r|gz").extractall('data')

  df = pd.concat(

      [pd.read_csv(csv_file, header=None) 

       for csv_file in glob.glob('data/*.csv')])

  df.to_csv(output_csv.path, index=False, header=False)




```

Như bạn thấy, hàm được trang trí bằng annotation `kfp.dsl.component`. Chúng ta có thể dùng annotation này để định nghĩa image container, các phụ thuộc gói (trong ví dụ này là pandas[1.1.4]), và vị trí lưu đặc tả component (component.yaml)

Giờ bạn có thể liên kết hai thành phần này trong một pipeline bằng toán tử `pipeline`. 

Định nghĩa một pipeline và tạo task từ component:

@dsl.pipeline(

    name='my-pipeline',

    # You can optionally specify your own pipeline_root

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

)

def my_pipeline(url: str):

  web_downloader_task = web_downloader_op(url=url)

  merge_csv_task = merge_csv(tar_data=web_downloader_task.outputs['data'])

  # The outputs of the merge_csv_task can be referenced using the

  # merge_csv_task.outputs dictionary: merge_csv_task.outputs['output_csv']

```

Khi pipeline đã được định nghĩa, chúng ta có thể biên dịch nó. Có hai cách để biên dịch. Cách đầu là qua Kubeflow UI.

```

kfp.compiler.Compiler(mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE).compile(

    pipeline_func=my_pipeline,

    package_path='pipeline.yaml')

```

Giờ chúng ta có thể tải lên và chạy tệp `pipeline.yaml` này bằng giao diện người dùng của Kubeflow Pipelines. Ngoài ra, chúng ta có thể chạy pipeline bằng client SDK của Kubeflow Pipelines.

```

client = kfp.Client()




client.create_run_from_pipeline_func(

    my_pipeline,

    mode=kfp.dsl.PipelineExecutionMode.V2_COMPATIBLE,

    # You can optionally override your pipeline_root when submitting the run too:

    # pipeline_root='gs://my-pipeline-root/example-pipeline',

    arguments={

        'url': 'https://storage.googleapis.com/ml-pipeline-playground/iris-csv-files.tar.gz'

    })

```

Nếu cần mở rộng pipeline này để bao gồm một mô hình machine learning, chúng ta sẽ tạo một hàm python nhận `Input[Dataset]` và fit mô hình bằng bất kỳ framework nào chúng ta muốn, ví dụ sklearn, Tensorflow hoặc PyTorch. 

Khi hàm đã được tạo, chúng ta phải chỉnh sửa hàm `my_pipeline` để thêm tác vụ thứ ba và sau đó biên dịch lại pipeline bằng `kfp.Client` hoặc UI.

Hướng dẫn được tái sử dụng từ Kubeflow Official.

Kết luận

Thử nghiệm trong Jupyter Notebook với vài triệu dòng dữ liệu là một chuyện. Huấn luyện mô hình machine learning trên hàng tỷ dòng dữ liệu từ xa trên đám mây lại là chuyện khác. Machine Learning trở nên thực sự khó khi phải huấn luyện các mô hình lớn trong môi trường mở rộng và phân tán. 

Kubernetes là một trong những framework điều phối phổ biến và được dùng rộng rãi cho các job machine learning; và Kubeflow là một framework xây dựng trên Kubernetes để trừu tượng hóa nhiều chi tiết phức tạp cho người dùng. Tuy nhiên, cũng nên biết rằng đây không phải lựa chọn duy nhất. Như mọi thứ khác, luôn có các phương án thay thế. 

Một ví dụ về nền tảng dạng này là Databricks. Nó có động cơ điều phối độc quyền (khác với Kubernetes) và đi kèm giao diện đẹp hỗ trợ Notebooks, Ghi log thí nghiệm, Registry mô hình, Lập lịch Job và Giám sát. 

Amazon Sagemaker là một ví dụ khác thay thế cho Kubernetes / Kubeflow. Amazon SageMaker là dịch vụ machine learning được quản lý toàn phần mà nhà khoa học dữ liệu và nhà phát triển có thể dùng để nhanh chóng và dễ dàng xây dựng, huấn luyện mô hình machine learning và triển khai trực tiếp chúng vào môi trường lưu trữ sẵn sàng cho sản xuất. Nó cung cấp môi trường Jupyter Notebook tích hợp để khám phá và phân tích.

Bạn cảm thấy quá tải bởi tất cả các khái niệm kỹ thuật liên tục phát triển? Đừng lo, Datacamp có khóa Understanding Data Engineering . Trong khóa học này, bạn sẽ tìm hiểu các trách nhiệm cốt lõi của kỹ sư dữ liệu, cách họ khác với nhà khoa học dữ liệu và cách họ tạo điều kiện cho dòng chảy dữ liệu trong tổ chức. Ngoài ra, bạn sẽ học cách kỹ sư dữ liệu đặt nền móng giúp nhà khoa học dữ liệu hiện thực hóa công việc. Không cần mã hóa!

Câu hỏi thường gặp về Kubeflow

Sự khác nhau giữa Kubeflow và Kubernetes là gì?

Kubernetes là hệ thống điều phối container mã nguồn mở để tự động hóa triển khai, mở rộng và quản lý phần mềm. Còn Kubeflow là dự án mã nguồn mở bao gồm tập hợp công cụ và framework được tuyển chọn để giúp phát triển, triển khai và quản lý workflow machine learning di động, có thể mở rộng trên Kubernetes. Kubeflow được xây dựng trên Kubernetes.

Kubeflow có phải là một phần của Kubernetes không?

Không, Kubeflow là thư viện riêng. Bạn có thể cài đặt nó như bất kỳ thư viện Python nào khác bằng pip install.

Kubeflow có phải là framework mã nguồn mở không?

Có, Kubeflow hoàn toàn mã nguồn mở, được phát hành theo giấy phép Apache-2.0.

Sự khác nhau giữa Airflow và Kubeflow là gì?

Apache Airflow là nền tảng điều phối tác vụ chung, trong khi Kubeflow tập trung vào các tác vụ machine learning. Cả hai công cụ đều cho phép bạn định nghĩa tác vụ bằng Python, nhưng Kubeflow chủ yếu chạy tác vụ trên Kubernetes.

Sự khác nhau giữa Kubeflow và MLFlow là gì?

Đây là hai framework mã nguồn mở rất khác nhau. Kubeflow là hệ thống điều phối container giúp phát triển, triển khai và quản lý workflow machine learning di động, có thể mở rộng trên Kubernetes; còn MLFlow là thư viện để theo dõi thí nghiệm và quản lý phiên bản mô hình.

Chủ đề
Machine Learning
Khoa học Dữ liệu
Python

Khóa học về Python và Machine Learning

Khóa học

Nhập môn Python

4 giờ
7.1M
Nắm vững phân tích dữ liệu với Python chỉ trong 4 giờ. Khóa học online này giúp bạn làm quen với giao diện Python và các thư viện phổ biến.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow