KubeFlow đáp ứng MLflow
[ CẬP NHẬT 05/01/2020 ] Đã đổi khác URL thành kfctl 1.0.2
Bạn san sẻ quy mô học máy của mình với những nhà khoa học dữ liệu khác như thế nào ? Chia sẻ ý tưởng sáng tạo và công nghệ tiên tiến là yếu tố then chốt để cải tổ kinh doanh thương mại nhanh gọn. Nhưng những mô hình học máy rất khó san sẻ. Không giống như tăng trưởng ứng dụng khác, những mô hình học máy thường được tăng trưởng bởi một nhà khoa học dữ liệu và chúng chỉ nằm trên bộ nhớ của một thiên nhiên và môi trường .
Điều quan trọng là phải tìm cách san sẻ những quy mô học máy của bạn .
Hai công cụ đầy hứa hẹn: KubeFlow là một OSS cung cấp môi trường để phát triển và vận hành máy học. Nó đã được giới thiệu trong nhiều phiên tại KubeCon NA 2019. Sử dụng KubeFlow, bạn có thể khởi chạy bao nhiêu Jupyter tùy ý và chạy đường dẫn của mình. v1.0 có sẵn vào đầu năm nay và quá trình phát triển đang diễn ra.
Ngoài ra, tôi nghĩ rằng mô hình MLFlow là một công cụ rất mạnh mẽ như một trong những định dạng lưu trữ từ quan điểm lưu trữ các mô hình học máy.
Bạn đang đọc: Chia sẻ ML với KubeFlow và MLflow
Bài viết này hướng dẫn cách sử dụng những công cụ này để san sẻ những quy mô học máy .
- Xây dựng KubeFlow. Trên hết, khởi động Jupyter cho người dùng A và người dùng B tương ứng .
- Người dùng A lưu mô hình được đào tạo bằng cách sử dụng các mô hình MLFlow. Chia sẻ nó với Jupyter của Người dùng B và khôi phục nó .
Nếu bạn đã có thiên nhiên và môi trường KubeFlow, hãy bỏ lỡ chương này và chuyển đến chương 2. MLFlow .
Môi trường bắt buộc
Lượng tài nguyên tiên quyết là khá lớn .
Xây dựng môi trường Kubernetes với KinD
Chuẩn bị một phiên bản của Kubernetes cluster mà KubeFlow hỗ trợ.
KubeFlow 0.7.1 (và cả 1.0.2 mới nhất) không hỗ trợ Kubernetes mới nhất mà là 1.15.
Đối với loại này, tôi đã xây dựng một cụm bằng cách chỉ định hình ảnh nút 1.15.7 như sau.
kind create cluster --image kindest/node:v1.15.11
Cài đặt KubeFlow bằng lệnh kfctl
Cài đặt ` kubeflow v1. 0.2 ` trên Kubernetes bằng công cụ lệnh ` kfctl v1. 0.2 ` .
Chúng tôi sử dụng kfctl để thiết lập KubeFlow. Đầu tiên, tất cả chúng ta hoàn toàn có thể tải xuống kfctl từ trang phát hành .
Nếu bạn đang sử dụng macOS, setup như thế này .
curl -L https://github.com/kubeflow/kfctl/releases/download/v1.0.2/kfctl_v1.0.2-0-ga476281_darwin.tar.gz -o kfctl.tar.gz
tar zxf kfctl.tar.gz
chmod +x kfctl
sudo mv kfctl /usr/local/bin/kfctl
Tạo phần sau kubeflow.sh
.
Chuyển đường dẫn đến đã kfctl
tải xuống trước đó và mô tả các cài đặt như thư mục lưu trữ các tệp cần thiết cho KubeFlow.
Vấn đề là đặt KF_DIR
vị trí lưu tệp cấu hình Kubernetes do KubeFlow tự động tạo (đường dẫn của một thư mục trống sẽ được tạo).
Các CONFIG_URI
thay đổi tùy thuộc vào cấu hình của KubeFlow sẽ được xây dựng (có hoặc không có chức năng xác thực) và vị trí (AWS, Azure, GCP, Kubernetes hiện có).
Danh sách CONFIG_URI hoàn toàn có thể được tìm thấy trong tài liệu chính thức .
Tải những setup trên bằng lệnh sau .
source kubeflow.sh
mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl apply -V -f ${CONFIG_URI}
Khi toàn bộ những vùng chứa đã khởi đầu, quy trình thiết lập hoàn tất .
Lệnh kiểm tra vùng chứa
kubectl get po --all-namespaces
Nếu bạn đã setup bộ cân đối tải trên cụm Kubernetes của mình, bạn hoàn toàn có thể hiển thị dịch vụ istio bằng cách đặt istio-ingressgateway thành loại LoadBalancer .
Ngay cả khi bạn không có bộ cân bằng tải, bạn có thể truy cập bảng điều khiển KubeFlow bằng phương pháp chuyển tiếp cổng này.
kubectl port-forward -n istio-system svc/istio-ingressgateway 80:80 --address 0.0.0.0
- Chế độ xem bảng điều khiển ban đầu -> nhấp vào “máy chủ máy tính xách tay”
+ New Server
và định cấu hình tên và hình ảnh
CONNECT
và định thông số kỹ thuật tên và hình ảnhSau khi sever sổ ghi chép khởi động, hãy truy vấn bằngBạn sẽ thấy chính sách xem sổ ghi chép Jupyter tiên phongKhi bạn khởi động nhiều sever Jupyter, bạn thường sẽ thấy những thư mục trọn vẹn khác nhau. Điều này là do mỗi Jupyter đang chạy như một vùng chứa và vùng chứa bắt đầu là một công nghệ tiên tiến để cô lập .
Với KubeFlow, cùng một thư mục hoàn toàn có thể được san sẻ bởi nhiều sever Jupyter và thiết lập rất thuận tiện .
Để cho phép những sever Jupyter xem cùng một thư mục, hãy đặt setup ” Hiện có ” trên ” Vùng khoảng trống thao tác ” khi tạo sever Jupyter thứ hai. Điều này có nghĩa là chọn một thư mục hiện có. Thư mục đã được tạo khi Jupyter tiên phong được tạo, thế cho nên nếu bạn chỉ định nó, thư mục đó sẽ được san sẻ .
- Định cấu hình máy chủ Jupyter thứ hai
Trái: máy chủ Jupyter đầu tiên, cho người dùng A, phải: máy chủ Jupyter thứ hai cho người dùng B
Kiểm tra sever này gắn cùng một đĩaKiểm tra cả hai sever xem cùng một thư mụcHãy thử những quy mô MLflow để san sẻ những quy mô học máy. Hai sổ tay mẫu ở đây ( “ lưu ” cho người dùng A, được diễn đạt trong 2 – 1 và 2 – 2 ) và đây ( “ tải ” cho người dùng B, được miêu tả trong 2 – 3 ) .
2–1. Tạo tập dữ liệu MNIST mô hình CNN đã học ( người dùng A sử dụng Jupyter đầu tiên)
Chúng tôi sử dụng quy mô CNN đơn thuần làm ví dụ .
https://keras.io/examples/mnist_cnn/
Chỉ cần tìm hiểu thêm tại đây và dán nó vào Notebook. Tuy nhiên, không có thư viện nào được thiết lập trong sever sổ ghi chép Jupyter mới. Vì vậy, hãy setup thư viện thiết yếu bằng lệnh pip và sau đó thực thi nó .
ip install mlflow --user
pip install keras --user
!pip install mlflow --user
!pip install keras --user
Notebook giữ mô hình trong bộ nhớ khi nó đang chạy. Nó là một biến model
. Mô hình này sẽ biến mất khi bạn thoát khỏi sổ ghi chép Jupyter này và bạn phải học lại để tạo lại. Nó mất thời gian và chi phí.
Các mô hình MLFlow cung cấp một cơ chế để ghi mô hình được đào tạo một lần vào một tệp và khôi phục nó bất kỳ lúc nào.
Mô hình MLFlow được lưu vào tệp với save_model
và được khôi phục từ tệp với load_model
.
Lưu mô hình mô hình được đào tạo trước đó với save_model
.
import mlflow.keras
path = "./model"
mlflow.keras.save_model(model, path)
2–3. Khôi phục mô hình đã đào tạo với load_model (với tư cách là người dùng B sử dụng Jupyter thứ hai)
Tiếp theo, Phục hồi nó trên Jupyter của người dùng B bằng load_model .
Giả sử rằng setup san sẻ thư mục của Jupyter của người dùng A và người dùng B đã được triển khai xong. Sau đó, quy mô do Người dùng A lưu sẽ hiển thị cho Người dùng B trong thư mục. / Mã Sản Phẩm .
Do đó, hãy tạo một sổ ghi chép mới có tên LoadModel sử dụng điều này, khôi phục mô hình như sau và gọi evaluate
hàm của nó để thực thi suy luận.
import mlflow.keras
path = "./model"
model = mlflow.keras.load_model(path)
score = model.evaluate(x_test, y_test, verbose=0)
Noteboook mẫu là ở đây .
Tóm lược
KubeFlow giúp dễ dàng tạo môi trường cho từng người dùng và chia sẻ các thư mục, giúp việc phát triển và vận hành dễ dàng hơn.
Mô hình MLFlow hỗ trợ các mô hình của nhiều khuôn khổ học máy khác nhau và thực hiện lưu và khôi phục. Tốt cho các mô hình chia sẻ. Tuy nhiên, nó thường không hoàn chỉnh ngay cả khi chỉ chia sẻ mô hình (điều chỉnh lại, v.v.), vì vậy trong hoạt động chung, cần phải chia sẻ mã nguồn với nhau (chính Notebook đã tạo ra mô hình).
Sau đó, tôi muốn tận dụng thời cơ tiếp theo để tiến hành quy mô đã triển khai xong vào sản xuất .
Source: kubet
Category: Tải Phầm Mềm
Leave a Reply