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.
Nếu bạn chưa chọn dự án này, hãy nhấp vào Chọn dự án:
Và chọn dự án của bạn. Bạn chỉ được có một:
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.
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.
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).
Chờ thực thể MiniKF Compute khởi động.
Đă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.
Đă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.
Người dùng Chrome sẽ thấy màn hình này:
Người dùng Firefox sẽ thấy màn hình này:
Người dùng Safari sẽ thấy màn hình này:
Đă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.
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.
Nhấp vào New Server (Máy chủ mới).
Chỉ định tên cho Máy chủ Sổ tay của bạn.
Đả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.
Nhấp vào Khởi chạy để tạo máy chủ sổ tay.
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ủ đó.
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.
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
.
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.
Quay lại Cửa sổ dòng lệnh và cài đặt thư viện bị thiếu.
pip3 install --user seaborn
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.
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.
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 đó.
Nhấp vào nút Compile and Run (Biên dịch và chạy).
Xem tiến trình của bản tổng quan nhanh.
Xem tiến trình của quy trình Chạy quy trình.
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.
Chờ quá trình này hoàn tất.
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.
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).
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.
Sao chép URL Rok.
Chuyển đến đường liên kết Notebook Servers (Máy chủ sổ tay).
Nhấp vào New Server (Máy chủ mới).
Dán URL Rok mà bạn đã sao chép trước đó rồi nhấp vào nút Tự động điền.
Chỉ định tên cho sổ tay của bạn.
Đả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.
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ủ đó.
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.
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.
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 (+).
Thêm văn bản sau và thực thi ô để in tập huấn luyện.
train_df
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
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ế!
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:
- github.com/kubeflow
- Slack Kubeflow
- kubeflow-discuss@googlegroups.com
- Cuộc gọi cộng đồng vào thứ Ba hằng tuần