Từ Notebook đến quy trình Kubeflow với MiniKF và Kale

1. Giới thiệu

Kubeflow là một bộ công cụ học máy dành cho Kubernetes. Dự án này hướng đến việc triển khai quy trình công việc học máy (ML) trên Kubernetes đơn giản, di động và có thể mở rộng. Mục tiêu là đưa ra một cách thức đơn giản để triển khai các hệ thống nguồn mở tốt nhất dành cho công nghệ học máy cho nhiều cơ sở hạ tầng.

Quá trình triển khai Kubeflow diễn ra như thế nào?

Triển khai Kubeflow:

  • Di động – Hoạt động trên bất kỳ cụm Kubernetes nào, dù cụm đó nằm trên Google Cloud Platform (GCP), tại cơ sở hạ tầng riêng hay nhiều nhà cung cấp.
  • Có thể mở rộng – Có thể sử dụng tài nguyên biến động và chỉ bị hạn chế do số lượng tài nguyên được phân bổ cho cụm Kubernetes.
  • Thành phần kết hợp – Được tăng cường bằng trình chạy dịch vụ để làm việc khi không có mạng hoặc trên mạng chất lượng thấp.

Đó là một phương tiện để sắp xếp các dịch vụ vi mô có sự kết hợp lỏng lẻo thành một đơn vị duy nhất và triển khai các dịch vụ đó cho nhiều vị trí, cho dù đó là máy tính xách tay hay nền tảng đám mây.

Lớp học lập trình này sẽ hướng dẫn bạn cách tạo quy trình triển khai Kubeflow của riêng mình bằng MiniKF và chạy quy trình Quy trình Kubeflow trong Sổ tay Jupyter.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ xây dựng một quy trình khoa học dữ liệu phức tạp bằng Quy trình Kubeflow mà không cần sử dụng lệnh CLI hoặc SDK nào. Bạn không cần phải có kiến thức về Kubernetes hoặc Docker. Sau khi hoàn thành, cơ sở hạ tầng của bạn sẽ có:

  • Máy ảo MiniKF (Mini Kubeflow) tự động cài đặt:
  • Kubernetes (sử dụng Minikube)
  • Kubeflow
  • Kale, một công cụ chuyển đổi Máy tính xách tay Jupyter đa năng sang quy trình làm việc của Kubeflow Pipelines ( GitHub)
  • Arrikto Rok để tạo phiên bản và tái tạo dữ liệu

Kiến thức bạn sẽ học được

  • Cách cài đặt Kubeflow bằng MiniKF
  • Cách chuyển đổi Sổ tay Jupyter sang Quy trình Kubeflow mà không cần sử dụng lệnh CLI hoặc SDK nào
  • Cách chạy Quy trình Kubeflow từ bên trong Sổ tay chỉ bằng một lần nhấp vào nút
  • Cách tự động tạo phiên bản dữ liệu trong Sổ tay và trong mọi bước quy trình

Bạn cần có

  • Một dự án GCP đang hoạt động mà bạn có quyền Chủ sở hữu

Đây là lớp học lập trình nâng cao tập trung vào Kubeflow. Để biết thêm thông tin cơ bản và giới thiệu về nền tảng này, hãy xem tài liệu Giới thiệu về Kubeflow. Các khái niệm và khối mã không liên quan được che khuất và cung cấp cho bạn để sao chép và dán một cách dễ dàng.

2. Thiết lập môi trường

Đặt mã dự án GCP và tên cụm

Để tìm mã dự án, hãy truy cập vào Bảng điều khiển trên trang chủ của Bảng điều khiển GCP, trong trình đơn ba đường kẻ ở trên cùng bên trái. Nếu màn hình trống, hãy nhấp vào Có khi được nhắc tạo trang tổng quan.

Mở Bảng điều khiển của GCP

3fdc4329995406a0.pngS

Nếu bạn chưa chọn dự án này, hãy nhấp vào Chọn dự án:

e8952c0b96067dea.png

Và chọn dự án của bạn. Bạn chỉ được có một:

fe25c1925487142.png

3. Cài đặt MiniKF

Tạo một phiên bản Điện toán

Trong GCP Marketplace, hãy tìm " MiniKF".

Chọn máy ảo MiniKF của Arrikto.

d6b423c1911ea85a.png

Nhấp vào nút Launch on Compute Engine (Khởi chạy trên Compute Engine) rồi chọn dự án của bạn.

b5eeba43053db4bd.png

Trong phần Định cấu hình & Cửa sổ Triển khai, chọn tên cho phiên bản MiniKF và để nguyên các lựa chọn mặc định. Sau đó, nhấp vào nút Deploy (Triển khai).

dc401e2bb5a884d9.png

Chờ thực thể MiniKF Compute khởi động.

5228086caadc44c6.pngS

Đăng nhập vào MiniKF

Khi máy ảo MiniKF hoạt động, hãy kết nối và đăng nhập bằng cách nhấp vào nút SSH. Làm theo hướng dẫn trên màn hình để chạy lệnh minikf. Lệnh này sẽ bắt đầu quá trình triển khai Minikube, Kubeflow và Rok. Quá trình này sẽ mất vài phút để hoàn tất.

774e83c3e96cf7b3.png.

Đăng nhập vào Kubeflow

Sau khi cài đặt xong và tất cả các nhóm đã sẵn sàng, hãy truy cập vào trang tổng quan MiniKF. Đăng nhập vào Kubeflow bằng tên người dùng và mật khẩu MiniKF.

251b0bcdbf6d3c71.pngS

9d49d899bb0b5bd1.pngS

Người dùng Chrome sẽ thấy màn hình này:

6258e0f09e46a6c2.pngS

Người dùng Firefox sẽ thấy màn hình này:

8cff90ce2f0670bd.pngS

Người dùng Safari sẽ thấy màn hình này:

1c6fd768d71c0a92.pngS

Đăng nhập vào Rok

Sau khi đăng nhập vào Kubeflow, hãy mở trình đơn bên trái bằng cách nhấp vào biểu tượng ba đường kẻ. Chuyển đến Snapshot Store (Cửa hàng ảnh chụp nhanh) và đăng nhập vào Rok bằng tên người dùng và mật khẩu MiniKF.

a683198ac4ba900d.png

80aad6ba5d298a7e.png.

Xin chúc mừng! Bạn đã triển khai thành công MiniKF trên GCP! Giờ đây, bạn có thể tạo Sổ tay, viết mã học máy và chạy Quy trình Kubeflow. Sử dụng Rok để tạo phiên bản và tái tạo dữ liệu.

4. Chạy Quy trình (Pipeline) từ bên trong Sổ tay

Trong phần này, bạn sẽ chạy một ví dụ về Titanic, một cuộc thi của Kaggle nhằm dự đoán những hành khách sống sót sau vụ đắm tàu Titanic.

Tạo Máy chủ Sổ tay

Chuyển đến đường liên kết Máy chủ sổ tay trên trang tổng quan trung tâm Kubeflow.

4115cac8d8474d73.pngS

Nhấp vào New Server (Máy chủ mới).

f9303c0a182e47f5.png

Chỉ định tên cho Máy chủ Sổ tay của bạn.

a2343f30bc9522ab.png

Đảm bảo bạn đã chọn hình ảnh sau:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

Thêm một Tập dữ liệu mới, trống có kích thước 5GB và đặt tên là data.

8544d9b05826b316.pngS

Nhấp vào Khởi chạy để tạo máy chủ sổ tay.

28c024bcc55cc70a.pngS

Khi máy chủ sổ tay đó hoạt động, hãy nhấp vào Kết nối để kết nối với máy chủ đó.

2f06041475f45d3.pngS

Tải dữ liệu và sổ tay xuống

Một thẻ mới có trang đích của JupyterLab sẽ mở ra. Tạo một cửa sổ dòng lệnh mới trong JupyterLab.

2482011174f7bc75.pngS

Trong cửa sổ dòng lệnh, hãy chạy các lệnh này để chuyển đến thư mục data rồi tải sổ tay này cũng như dữ liệu bạn sẽ dùng cho phần còn lại của phòng thí nghiệm xuống.

cd data/
git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples

Kho lưu trữ này chứa một loạt các ví dụ được tuyển chọn với dữ liệu và Sổ tay có chú thích. Chuyển đến thư mục data/examples/titanic-ml-dataset/ trong thanh bên rồi mở sổ tay titanic_dataset_ml.ipynb.

c85baf68b36c63b2.png

Khám phá mã nguồn học máy của thử thách Titanic

Chạy sổ tay theo từng bước. Xin lưu ý rằng mã sẽ không hoạt động được do thiếu thư viện.

bf2451fd7407e334.png

Quay lại Cửa sổ dòng lệnh và cài đặt thư viện bị thiếu.

pip3 install --user seaborn

d90593b21425dd12.png

Khởi động lại nhân của sổ tay bằng cách nhấp vào biểu tượng Làm mới.

a21f5f563b36ce4d.png

Chạy lại ô bằng đúng thư viện đã cài đặt và xem nó thành công.

Chuyển đổi sổ tay của bạn thành Quy trình Kubeflow

Bật Kale bằng cách nhấp vào biểu tượng Kubeflow trong ngăn bên trái.

3f4f9c93b187b105.pngS

Khám phá các phần phụ thuộc theo từng ô. Xem cách nhiều ô có thể tham gia vào một bước của quy trình và cách một bước trong quy trình có thể phụ thuộc vào các bước trước đó.

15cca32444c1f12e.png.

Nhấp vào nút Compile and Run (Biên dịch và chạy).

bde5cef34f00e258.png

Xem tiến trình của bản tổng quan nhanh.

9408f46abb2493f5.pngS

Xem tiến trình của quy trình Chạy quy trình.

9edbde68032f5e4b.png.

Nhấp vào đường liên kết để chuyển đến giao diện người dùng Kubeflow Pipelines và xem quá trình chạy.

a81646a22584e1b9.png

Chờ quá trình này hoàn tất.

44bee7dc0d24ec21.pngs

d377b6d574a4970.png

Xin chúc mừng! Bạn vừa chạy một Quy trình Kubeflow hoàn chỉnh từ sổ tay của mình!

5. Tái tạo bằng ảnh chụp nhanh số lượng

Kiểm tra kết quả

Xem nhật ký của bước Kết quả trong quy trình từ thứ hai đến cuối cùng. Lưu ý rằng tất cả các công cụ dự đoán đều cho thấy điểm số bằng 100%. Một nhà khoa học dữ liệu giàu kinh nghiệm sẽ ngay lập tức phát hiện ra trường hợp này đáng ngờ. Đây là một dấu hiệu tốt cho thấy các mô hình của chúng tôi không tổng quát hoá mà thay vào đó đang áp dụng quá mức trên tập dữ liệu huấn luyện. Việc này có thể là do có vấn đề với dữ liệu mà các mô hình sử dụng.

2a594032c2dd6ff6.pngS

Tái hiện trạng thái trước đó

May mắn là Rok đã xử lý việc tạo phiên bản dữ liệu và tái tạo toàn bộ môi trường vì đó là thời điểm bạn nhấp vào nút Compile and Run (Biên dịch và chạy). Bằng cách này, bạn có một cỗ máy thời gian cho dữ liệu và mã của mình. Vì vậy, hãy tiếp tục trạng thái của quy trình trước khi huấn luyện một trong các mô hình và xem điều gì đang diễn ra. Hãy xem bước randomforest rồi nhấp vào Artifacts (Cấu phần phần mềm).

4f25ca4560711b23.pngS

Làm theo các bước trong Markdown, tức là xem ảnh chụp nhanh trong giao diện người dùng Rok bằng cách nhấp vào đường liên kết tương ứng.

e533bc781da9355a.png

Sao chép URL Rok.

d155d19731b5cedd.png

Chuyển đến đường liên kết Notebook Servers (Máy chủ sổ tay).

aafeab01f3ef0863.png

Nhấp vào New Server (Máy chủ mới).

f2265a64e8f9d094.png

Dán URL Rok mà bạn đã sao chép trước đó rồi nhấp vào nút Tự động điền.

9ba4d4128a3bdeea.pngS

Chỉ định tên cho sổ tay của bạn.

7685c3bf35fc74b2.pngS

Đảm bảo bạn đã chọn hình ảnh sau:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

Nhấp vào Khởi chạy để tạo máy chủ sổ tay.

28c024bcc55cc70a.pngS

Khi máy chủ sổ tay đó hoạt động, hãy nhấp vào Kết nối để kết nối với máy chủ đó.

34955a64ae316de1.pngs

Xin lưu ý rằng sổ tay sẽ mở tại ô chính xác của bước quy trình mà bạn đã tạo.

a1f7c81f349e0364.png

Trong nền, Kale đã tiếp tục trạng thái của Sổ tay bằng cách nhập tất cả thư viện và tải các biến từ các bước trước đó.

Gỡ lỗi trạng thái trước

Thêm một lệnh in vào ô này:

print(acc_random_forest)

Chạy ô đang hoạt động bằng cách nhấn Shift + Return để huấn luyện lại khu rừng ngẫu nhiên và in điểm số. Nó là 100.

e2a8a3b5465fcb5d.png

Bây giờ, đã đến lúc tìm hiểu xem có điều gì lạ trong dữ liệu huấn luyện hay không. Để khám phá và khắc phục sự cố này, hãy thêm một ô phía trên dấu xuống Khu rừng ngẫu nhiên bằng cách chọn ô trước và nhấp vào biểu tượng dấu cộng (+).

d1077f32dff9620f.png

Thêm văn bản sau và thực thi ô để in tập huấn luyện.

train_df

2854798ff01aed4e.pngs

Rất tiếc! Cột có nhãn huấn luyện ("Survived") đã được đưa nhầm vào làm tính năng nhập! Mô hình này đã học được cách tập trung vào các chỉ số và bỏ qua phần còn lại, gây ảnh hưởng đến đầu vào. Cột này khớp chính xác với mục tiêu của mô hình và không xuất hiện trong quá trình dự đoán. Vì vậy, bạn cần xoá cột này khỏi tập dữ liệu huấn luyện để mô hình có thể học hỏi từ các tính năng khác.

Thêm bản sửa lỗi

Để xoá cột này, hãy chỉnh sửa ô để thêm lệnh sau:

train_df.drop('Survived', axis=1, inplace=True)
train_df

9e76c16a862b566.pngS

Bật Cải xoăn và đảm bảo rằng ô xoá nhãn Survived (Đã sống sót) là một phần trong bước featureengineering (thiết kế tính năng) (phải có cùng màu đường viền).

Chạy lại quy trình bằng cách nhấp vào nút Compile and Run (Biên dịch và chạy).

Nhấp vào đường liên kết để chuyển đến giao diện người dùng Kubeflow Pipelines và xem quá trình chạy.

Hãy chờ bước kết quả hoàn tất và xem nhật ký để biết kết quả cuối cùng. Giờ đây, bạn đã có điểm số dự đoán thực tế!

8c6a9676b49e5be8.png.

6. Dọn dẹp

Huỷ bỏ máy ảo MiniKF

Chuyển đến Deployment Manager (Trình quản lý triển khai) trong Bảng điều khiển GCP rồi xoá hoạt động triển khai minikf-1.

7. Xin chúc mừng

Xin chúc mừng! Bạn đã chạy thành công quy trình làm việc khoa học dữ liệu toàn diện bằng Kubeflow (MiniKF), Kale và Rok!

Tiếp theo là gì?

Tham gia Cộng đồng Kubeflow:

Tài liệu đọc thêm