Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.

Kích hoạt quy trình công việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng triển khai Kubeflow trên AWS chỉ bằng một cú nhấp chuột

Ngày nay, nhiều khách hàng của AWS đang xây dựng các nền tảng máy học (ML) sẵn sàng cho doanh nghiệp trên Dịch vụ Kubernetes đàn hồi của Amazon (Amazon EKS) bằng cách sử dụng Kubeflow trên AWS (một bản phân phối Kubeflow dành riêng cho AWS) trong nhiều trường hợp sử dụng, bao gồm thị giác máy tính, hiểu ngôn ngữ tự nhiên, dịch lời nói và lập mô hình tài chính.

Với bản phát hành mới nhất của Kubeflow v1.6.1 mã nguồn mở, cộng đồng Kubeflow tiếp tục hỗ trợ việc áp dụng Kubeflow quy mô lớn này cho các trường hợp sử dụng của doanh nghiệp. Bản phát hành mới nhất bao gồm nhiều tính năng thú vị mới như hỗ trợ cho Kubernetes v1.22, SDK Python kết hợp cho PyTorch, MXNet, MPI, XGBoost trong Nhà điều hành đào tạo phân tán của Kubeflow, CRD ClusterServingRuntime vàServingRuntime mới cho dịch vụ mô hình, v.v.

Đóng góp của AWS cho Kubeflow với sự ra mắt gần đây của Kubeflow trên AWS 1.6.1 hỗ trợ tất cả các tính năng Kubeflow mã nguồn mở ngược dòng và bao gồm nhiều tích hợp mới với các dịch vụ AWS dành cho doanh nghiệp, được tối ưu hóa cao, dành cho đám mây, sẽ giúp bạn xây dựng các dịch vụ có độ tin cậy cao, hệ thống ML an toàn, di động và có thể mở rộng.

Trong bài đăng này, chúng tôi thảo luận về các tính năng mới của Kubeflow trên AWS v1.6.1 và nêu bật ba tích hợp quan trọng đã được tích hợp trên một nền tảng để cung cấp cho bạn::

  • Giải pháp một cú nhấp chuột Cơ sở hạ tầng dưới dạng mã (IaaS) tự động hóa quá trình cài đặt Kubeflow từ đầu đến cuối, bao gồm cả việc tạo cụm EKS
  • Hỗ trợ đào tạo phân tán trên Amazon SageMaker sử dụng Toán tử Amazon SageMaker cho Kubernetes (ACK) và Các thành phần SageMaker cho đường ống Kubeflow và cục bộ trên Kubernetes bằng cách sử dụng Người vận hành đào tạo Kubeflow. Nhiều khách hàng đang sử dụng khả năng này để xây dựng kiến ​​trúc máy học kết hợp, nơi họ đang tận dụng cả điện toán Kubernetes cho giai đoạn thử nghiệm và SageMaker để chạy khối lượng công việc ở quy mô sản xuất.
  • Khả năng giám sát và quan sát nâng cao đối với khối lượng công việc ML bao gồm Amazon EKS, chỉ số Kubeflow và nhật ký ứng dụng bằng Prometheus, Grafana và amazoncloudwatch tích hợp

Trường hợp sử dụng trong blog này sẽ tập trung cụ thể vào việc tích hợp SageMaker với Kubeflow trên AWS có thể được thêm vào quy trình làm việc Kubernetes hiện có của bạn, cho phép bạn xây dựng các kiến ​​trúc máy học lai.

Kubeflow trên AWS

Kubeflow trên AWS 1.6.1 cung cấp một lộ trình rõ ràng để sử dụng Kubeflow, với việc bổ sung các dịch vụ AWS sau trên các khả năng hiện có:

  • Tích hợp SageMaker với Kubeflow để chạy quy trình công việc ML kết hợp bằng cách sử dụng Toán tử SageMaker cho Kubernetes (ACK) và Thành phần SageMaker cho Đường ống Kubeflow.
  • Các tùy chọn triển khai tự động đã được cải thiện và đơn giản hóa bằng cách sử dụng tập lệnh Kustomize và biểu đồ Helm.
  • Đã thêm hỗ trợ triển khai một cú nhấp chuột vào Cơ sở hạ tầng dưới dạng mã (IaC) cho Kubeflow trên AWS bằng cách sử dụng Terraform cho tất cả các dịch vụ có sẵn các tùy chọn triển khai. Tập lệnh này tự động tạo các tài nguyên AWS sau:
  • Hỗ trợ cho Liên kết riêng AWS đối với Amazon S3 cho phép người dùng Khu vực phi thương mại kết nối với điểm cuối S3 tương ứng của họ.
  • Đã thêm tích hợp với Dịch vụ được quản lý của Amazon dành cho Prometheus (AMP) và Grafana do Amazon quản lý để theo dõi số liệu với Kubeflow trên AWS.
  • Cập nhật bộ chứa máy chủ sổ ghi chép Kubeflow với hình ảnh bộ chứa deep learning mới nhất dựa trên TensorFlow 2.10.0 và PyTorch 1.12.1.
  • Tích hợp với AWS DLC để chạy phân tán đào tạosuy luận khối lượng công việc.

Sơ đồ kiến ​​trúc sau đây là tổng quan nhanh về tất cả các tích hợp dịch vụ (bao gồm cả những tích hợp đã được đề cập) có sẵn cho các thành phần mặt phẳng dữ liệu và điều khiển Kubeflow trong Kubeflow trên AWS. Mặt phẳng điều khiển Kubeflow được cài đặt trên Amazon EKS, đây là dịch vụ bộ chứa được quản lý dùng để chạy và thay đổi quy mô ứng dụng Kubernetes trên đám mây. Các tích hợp dịch vụ AWS này cho phép bạn tách rời các phần quan trọng của mặt phẳng điều khiển Kubeflow khỏi Kubernetes, mang đến một thiết kế an toàn, có thể mở rộng, linh hoạt và tối ưu hóa chi phí. Để biết thêm chi tiết về giá trị mà các tích hợp dịch vụ này thêm vào Kubeflow nguồn mở, hãy tham khảo Xây dựng và triển khai hệ thống học máy có thể mở rộng trên Kubernetes với Kubeflow trên AWS.

Hãy thảo luận chi tiết hơn về cách các tính năng chính của Kubeflow trên AWS 1.6.1 có thể hữu ích cho tổ chức của bạn.

Chi tiết tính năng Kubeflow trên AWS

Với bản phát hành Kubeflow 1.6.1, chúng tôi đã cố gắng cung cấp các công cụ tốt hơn cho các loại khách hàng khác nhau để giúp bạn dễ dàng bắt đầu với Kubeflow bất kể bạn chọn tùy chọn nào. Những công cụ này cung cấp một điểm khởi đầu tốt và có thể được sửa đổi để phù hợp với nhu cầu chính xác của bạn.

Tùy chọn triển khai

Chúng tôi cung cấp các tùy chọn triển khai khác nhau cho các trường hợp sử dụng khác nhau của khách hàng. Tại đây, bạn có thể chọn dịch vụ AWS nào mà bạn muốn tích hợp triển khai Kubeflow của mình. Nếu bạn quyết định thay đổi các tùy chọn triển khai sau này, chúng tôi khuyên bạn nên thực hiện cài đặt mới cho triển khai mới. Các tùy chọn triển khai sau đây có sẵn:

Nếu bạn muốn triển khai Kubeflow với những thay đổi tối thiểu, hãy xem xét vani tùy chọn triển khai. Tất cả các tùy chọn triển khai có sẵn có thể được cài đặt bằng Kustomize, Helm hoặc Terraform.

Chúng tôi cũng có các triển khai tiện ích bổ sung khác nhau có thể được cài đặt trên bất kỳ tùy chọn triển khai nào sau đây:

Tùy chọn cài đặt

Sau khi bạn đã quyết định tùy chọn triển khai nào phù hợp nhất với nhu cầu của mình, bạn có thể chọn cách bạn muốn cài đặt các triển khai này. Trong nỗ lực phục vụ các chuyên gia cũng như người mới, chúng tôi có các cấp độ tự động hóa và cấu hình khác nhau.

Tùy chọn 1: Địa hình (IaC)

Điều này tạo ra một cụm EKS và tất cả các tài nguyên cơ sở hạ tầng AWS có liên quan, sau đó triển khai Kubeflow tất cả trong một lệnh bằng cách sử dụng Terraform. Trong nội bộ, điều này sử dụng bản thiết kế EKS và biểu đồ Helm.

Tùy chọn này có những ưu điểm sau:

  • Nó cung cấp sự linh hoạt cho các doanh nghiệp để triển khai Amazon EKS và Kubeflow bằng một lệnh mà không phải lo lắng về các cấu hình thành phần Kubeflow cụ thể. Điều này sẽ giúp tăng tốc đáng kể việc đánh giá công nghệ, tạo nguyên mẫu và vòng đời phát triển sản phẩm, mang lại sự linh hoạt trong việc sử dụng các mô-đun địa hình và sửa đổi nó để đáp ứng bất kỳ nhu cầu cụ thể nào của dự án.
  • Ngày nay, nhiều tổ chức lấy Terraform làm trung tâm trong chiến lược đám mây của họ giờ đây có thể sử dụng giải pháp Kubeflow trên AWS Terraform để đáp ứng các mục tiêu đám mây của họ.

Tùy chọn 2: Biểu đồ tùy chỉnh hoặc Helm:

Tùy chọn này cho phép bạn triển khai Kubeflow theo quy trình gồm hai bước:

  1. Tạo các tài nguyên AWS như Amazon EKS, Amazon RDS, Amazon S3 và Amazon Cognito, thông qua các tập lệnh tự động có trong bản phân phối AWS hoặc theo cách thủ công step-by-step hướng dẫn.
  2. Cài đặt triển khai Kubeflow bằng biểu đồ Helm hoặc Kustomize.

Tùy chọn này có những ưu điểm sau:

  • Mục tiêu chính của tùy chọn cài đặt này là cung cấp các cấu hình Kubernetes liên quan đến Kubeflow. Do đó, bạn có thể chọn tạo hoặc đưa vào các cụm EKS hiện có hoặc bất kỳ tài nguyên AWS nào có liên quan như Amazon RDS, Amazon S3 và Amazon Cognito, đồng thời định cấu hình và quản lý cụm này để hoạt động với Kubeflow trên AWS.
  • Việc chuyển từ tệp kê khai Kustomize Kubeflow mã nguồn mở sang phân phối AWS Kubeflow sẽ dễ dàng hơn.

Sơ đồ sau đây minh họa kiến ​​trúc của cả hai tùy chọn.

Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.

Tích hợp với SageMaker

SageMaker là một dịch vụ được quản lý hoàn toàn được thiết kế và tối ưu hóa đặc biệt để quản lý quy trình công việc ML. Nó loại bỏ gánh nặng quản lý cơ sở hạ tầng không phân biệt và loại bỏ nhu cầu đầu tư vào CNTT và DevOps để quản lý các cụm nhằm xây dựng, đào tạo và suy luận mô hình ML.

Nhiều khách hàng AWS có yêu cầu về tính di động hoặc các giới hạn tiêu chuẩn tại chỗ sử dụng Amazon EKS để thiết lập quy trình ML lặp lại chạy khối lượng công việc đào tạo và suy luận. Tuy nhiên, điều này yêu cầu các nhà phát triển viết mã tùy chỉnh để tối ưu hóa cơ sở hạ tầng ML cơ bản, cung cấp tính khả dụng và độ tin cậy cao, đồng thời tuân thủ các yêu cầu quy định và bảo mật thích hợp. Do đó, những khách hàng này muốn sử dụng SageMaker cho cơ sở hạ tầng được quản lý và tối ưu hóa chi phí để đào tạo và triển khai mô hình, đồng thời tiếp tục sử dụng Kubernetes cho quy trình phối hợp và ML để duy trì tiêu chuẩn hóa và tính di động.

Để giải quyết nhu cầu này, AWS cho phép bạn đào tạo, điều chỉnh và triển khai các mô hình trong SageMaker từ Amazon EKS bằng cách sử dụng hai tùy chọn sau:

  • Toán tử ACK của Amazon SageMaker dành cho Kubernetes, dựa trên Bộ điều khiển AWS cho Kubernetes (ACK) khuôn khổ. ACK là chiến lược AWS mang đến tiêu chuẩn hóa để xây dựng bộ điều khiển tùy chỉnh Kubernetes cho phép người dùng Kubernetes cung cấp tài nguyên AWS như cơ sở dữ liệu hoặc hàng đợi tin nhắn chỉ bằng cách sử dụng API Kubernetes. Người vận hành ACK của SageMaker giúp các nhà phát triển ML và nhà khoa học dữ liệu sử dụng Kubernetes làm mặt phẳng điều khiển của họ dễ dàng hơn trong việc đào tạo, điều chỉnh và triển khai các mô hình ML trong SageMaker mà không cần đăng nhập vào bảng điều khiển SageMaker.
  • Sản phẩm Các thành phần SageMaker cho Kubeflow Pipelines, cho phép bạn tích hợp SageMaker với tính di động và điều phối của Kubeflow Pipelines. Với các thành phần SageMaker, mỗi công việc trong quy trình đường ống sẽ chạy trên SageMaker thay vì cụm Kubernetes cục bộ. Điều này cho phép bạn tạo và giám sát các công việc đào tạo, điều chỉnh, triển khai điểm cuối và chuyển đổi hàng loạt SageMaker gốc từ Đường ống Kubeflow của bạn, do đó cho phép bạn di chuyển toàn bộ điện toán bao gồm các công việc đào tạo và xử lý dữ liệu từ cụm Kubernetes sang dịch vụ được quản lý tối ưu hóa cho máy học của SageMaker.

Bắt đầu với Kubeflow trên AWS v1.6.1, tất cả các tùy chọn triển khai Kubeflow có sẵn đều tập hợp cả hai tùy chọn tích hợp Amazon SageMaker theo mặc định trên một nền tảng. Điều đó có nghĩa là, giờ đây bạn có thể gửi công việc SageMaker bằng cách sử dụng toán tử SageMaker ACK từ chính máy chủ Kubeflow Notebook bằng cách gửi tài nguyên SageMaker tùy chỉnh hoặc từ bước quy trình Kubeflow bằng cách sử dụng các thành phần SageMaker.

Có hai phiên bản Thành phần SageMaker – boto3 Các thành phần dựa trên phiên bản 1 (AWS SDK cho AWS SDK cho Python) và các thành phần dựa trên phiên bản 8 dựa trên SageMaker Operator dành cho K2s (ACK). Các thành phần SageMaker mới phiên bản 2 hỗ trợ apis đào tạo SageMaker mới nhất và chúng tôi sẽ tiếp tục bổ sung thêm các tính năng SageMaker cho phiên bản thành phần này. Tuy nhiên, bạn có thể linh hoạt kết hợp các thành phần Sagemaker phiên bản 2 để đào tạo và phiên bản 1 cho các tính năng khác của SageMaker như điều chỉnh siêu tham số, xử lý công việc, lưu trữ, v.v.

Tích hợp với Prometheus và Grafana

Prometheus là một công cụ tổng hợp số liệu mã nguồn mở mà bạn có thể định cấu hình để chạy trên các cụm Kubernetes. Khi chạy trên các cụm Kubernetes, máy chủ Prometheus chính sẽ loại bỏ các điểm cuối của nhóm theo định kỳ.

Các thành phần Kubeflow, chẳng hạn như Kubeflow Pipelines (KFP) và Notebook, phát ra các số liệu Prometheus để cho phép giám sát các tài nguyên thành phần như số lượng thử nghiệm đang chạy hoặc số lượng sổ ghi chép.

Các chỉ số này có thể được tổng hợp bởi máy chủ Prometheus chạy trong cụm Kubernetes và được truy vấn bằng Ngôn ngữ truy vấn Prometheus (PromQL). Để biết thêm chi tiết về các tính năng mà Prometheus hỗ trợ, hãy xem tài liệu Prometheus.

Bản phân phối Kubeflow trên AWS cung cấp hỗ trợ tích hợp với các dịch vụ do AWS quản lý sau:

  1. Amazon Managed Prometheus (AMP) là một Prometheus-dịch vụ giám sát tương thích cho cơ sở hạ tầng vùng chứa và số liệu ứng dụng cho vùng chứa giúp khách hàng dễ dàng giám sát an toàn môi trường vùng chứa trên quy mô lớn. Khi sử dụng AMP, bạn có thể trực quan hóa, phân tích và báo động về các chỉ số, nhật ký và dấu vết được thu thập từ nhiều nguồn dữ liệu trong hệ thống có thể quan sát của bạn, bao gồm AWS, ISV của bên thứ ba và các tài nguyên khác trong danh mục CNTT của bạn.
  2. Amazon Managed Grafana, một dịch vụ trực quan hóa dữ liệu an toàn và được quản lý hoàn toàn dựa trên mã nguồn mở grafana dự án, cho phép khách hàng ngay lập tức truy vấn, tương quan và trực quan hóa các chỉ số hoạt động, nhật ký và dấu vết cho các ứng dụng của họ từ nhiều nguồn dữ liệu. Amazon Managed Grafana giảm tải công việc quản lý vận hành của Grafana bằng cách tự động thay đổi quy mô cơ sở hạ tầng cơ sở dữ liệu và điện toán khi nhu cầu sử dụng tăng lên, với các bản cập nhật phiên bản tự động và bản vá bảo mật.

Bản phân phối Kubeflow trên AWS hỗ trợ tích hợp Amazon Managed Service cho Prometheus và Amazon Managed Grafana để tạo điều kiện thuận lợi cho việc nhập và trực quan hóa các chỉ số Prometheus một cách an toàn trên quy mô lớn.

Các chỉ số sau được nhập và có thể hiển thị trực quan:

Để định cấu hình Amazon Managed Service cho Prometheus và Amazon Managed Grafana cho cụm Kubeflow của bạn, hãy tham khảo Sử dụng Prometheus, Amazon Managed Service cho Prometheus và Amazon Managed Grafana để theo dõi số liệu với Kubeflow trên AWS.

Tổng quan về giải pháp

Trong trường hợp sử dụng này, chúng tôi sử dụng triển khai vanilla Kubeflow bằng cách sử dụng tùy chọn cài đặt Terraform. Khi cài đặt hoàn tất, chúng tôi đăng nhập vào bảng điều khiển Kubeflow. Từ bảng điều khiển, chúng tôi khởi động máy chủ sổ ghi chép Kubeflow Jupyter để xây dựng quy trình Kubeflow sử dụng SageMaker để chạy đào tạo phân tán cho mô hình phân loại hình ảnh và điểm cuối SageMaker để triển khai mô hình.

Điều kiện tiên quyết

Đảm bảo bạn đáp ứng các điều kiện tiên quyết sau:

  • Bạn có một Tài khoản AWS.
  • Đảm bảo rằng bạn đang ở us-west-2 Vùng để chạy ví dụ này.
  • Sử dụng Google Chrome để tương tác với Bảng điều khiển quản lý AWS và Kubeflow.
  • Đảm bảo tài khoản của bạn có giới hạn loại tài nguyên Đào tạo SageMaker cho ml.p3.2xlarge được tăng lên 2 bằng cách sử dụng bảng điều khiển Định mức dịch vụ.
  • Tùy chọn, bạn có thể sử dụng Đám mây AWS9, một môi trường phát triển tích hợp dựa trên đám mây (IDE) cho phép hoàn thành tất cả công việc từ trình duyệt web của bạn. Để biết hướng dẫn thiết lập, hãy tham khảo Thiết lập IDE Cloud9. Chọn Ubuntu Server 18.04 làm nền tảng trong cài đặt AWS Cloud9.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.Sau đó, từ môi trường AWS Cloud9 của bạn, chọn dấu cộng và mở thiết bị đầu cuối mới.

Bạn cũng cấu hình một Giao diện dòng lệnh AWS (AWS CLI) hồ sơ. Để làm như vậy, bạn cần có ID khóa truy cập và khóa truy cập bí mật của một Quản lý truy cập và nhận dạng AWS (TÔI LÀ) người sử dụng tài khoản có đặc quyền quản trị (đính kèm chính sách được quản lý hiện có) và quyền truy cập có lập trình. Xem đoạn mã sau:

aws configure --profile=kubeflow

AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: us-west-2
Default output format [None]: json

# (In Cloud9, select “Cancel” and “Permanently disable” when the AWS managed temporary credentials dialog pops up)

export AWS_PROFILE=kubeflow

Xác minh các quyền mà cloud9 sẽ sử dụng để gọi tài nguyên AWS.

aws sts get-caller-identity

Xác minh từ đầu ra bên dưới rằng bạn thấy nhóm người dùng quản trị viên mà bạn đã định cấu hình trong cấu hình AWS CLI. Trong ví dụ này là “kubeflow-user”

{
    "UserId": "*******",
    "Account": "********",
    "Arn": "arn:aws:iam::*******:user/kubeflow-user"
}

Cài đặt Amazon EKS và Kubeflow trên AWS

Để cài đặt Amazon EKS và Kubeflow trên AWS, hãy hoàn thành các bước sau:

  1. Thiết lập môi trường của bạn để triển khai Kubeflow trên AWS:
    #Clone the awslabs/kubeflow-manifests and the kubeflow/manifests repositories and check out the release branches of your choosing
    export KUBEFLOW_RELEASE_VERSION=v1.6.1
    export AWS_RELEASE_VERSION=v1.6.1-aws-b1.0.0
    git clone https://github.com/awslabs/kubeflow-manifests.git && cd kubeflow-manifests
    git checkout ${AWS_RELEASE_VERSION}
    git clone --branch ${KUBEFLOW_RELEASE_VERSION} https://github.com/kubeflow/manifests.git upstream
    
    export MANIFEST_DIR=$PWD

    #Install the necessary tools with the following command:
    make install-tools
    source ~/.bash_profile

  2. Triển khai phiên bản cũ của Kubeflow trên AWS và các tài nguyên AWS liên quan như EKS bằng cách sử dụng Terraform. Xin lưu ý rằng khối lượng EBS được sử dụng trong nhóm nút EKS không được mã hóa theo mặc định:
    #Define the following environment variables
    
    #Region to create the cluster in
    export CLUSTER_REGION=us-west-2
    #Name of the cluster to create
    export CLUSTER_NAME=

    cd deployments/vanilla/terraform
    
    #Save the variables to a .tfvars file
    cat < sample.auto.tfvars
    cluster_name="${CLUSTER_NAME}"
    cluster_region="${CLUSTER_REGION}"
    EOF
    
    #Run the following one-click command to deploy terraform to install EKS infrastructure and Kubeflow
    make deploy

Thiết lập Quyền Kubeflow

  1. Thêm quyền vào nhóm Notebook và nhóm thành phần Đường ống để thực hiện lệnh gọi api SageMaker, S3 và IAM bằng cách sử dụng kubeflow_iam_permissions.sh kịch bản.
    export NAMESPACE=kubeflow-user-example-com
    
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/kubeflow_iam_permissions.sh
    chmod +x kubeflow_iam_permissions.sh
    ./kubeflow_iam_permissions.sh $NAMESPACE $CLUSTER_NAME $CLUSTER_REGION

  2. Tạo vai trò thực thi SageMaker để cho phép công việc đào tạo SageMaker truy cập tập dữ liệu đào tạo từ dịch vụ S3 bằng cách sử dụng sagemaker_role.sh kịch bản.
    wget https://raw.githubusercontent.com/aws-samples/eks-kubeflow-cloudformation-quick-start/9e46662d97e1be7edb0be7fc31166e545655636a/utils/sagemaker_role.sh
    chmod +x sagemaker_role.sh
    ./sagemaker_role.sh

Truy cập bảng điều khiển Kubeflow

Để truy cập bảng điều khiển Kubeflow, hãy hoàn thành các bước sau:

  1. Bạn có thể chạy cục bộ bảng điều khiển Kubeflow trong môi trường Cloud9 mà không để lộ URL của mình ra internet công cộng bằng cách chạy các lệnh bên dưới.
    # Configure Kubecontext
    $(terraform output -raw configure_kubectl)
    
    cd ${MANIFEST_DIR}
    make port-forward

  2. Chọn Xem trước ứng dụng đang chạy.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.
  3. Chọn biểu tượng ở góc của bảng điều khiển Kubeflow để mở nó dưới dạng một tab riêng biệt trong Chrome.
  4. Nhập thông tin đăng nhập mặc định (user@example.com/12341234) để đăng nhập vào bảng điều khiển Kubeflow.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.

Thiết lập môi trường Kubeflow trên AWS

Khi bạn đã đăng nhập vào bảng điều khiển Kubeflow, hãy đảm bảo bạn có không gian tên phù hợp (kubeflow-user-example-com) được chọn. Hoàn thành các bước sau để thiết lập môi trường Kubeflow trên AWS của bạn:

  1. Trên bảng điều khiển Kubeflow, chọn máy tính xách tay trong khung điều hướng.
  2. Chọn Sổ tay mới.
  3. Trong Họ tên, đi vào aws-nb.
  4. Trong Hình ảnh Jupyter Docket, chọn hình ảnh jupyter-pytorch:1.12.0-cpu-py38-ubuntu20.04-ec2-2022-09-20 (mới nhất hiện có jupyter-pytorch ảnh DLC).
  5. Trong CPU, đi vào 1.
  6. Trong Bộ nhớ, đi vào 5.
  7. Trong GPU, để lại như Không áp dụng.
  8. Không thực hiện bất kỳ thay đổi nào đối với Không gian làm việcKhối lượng dữ liệu phần.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.
  9. Chọn Cho phép truy cập vào Kubeflow Pipelines trong cấu hình và Chọn Khởi chạy.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.
  10. Xác minh rằng sổ ghi chép của bạn đã được tạo thành công (có thể mất vài phút).Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.
  11. Chọn Kết nối để đăng nhập vào JupyterLab.
  12. Sao chép repo bằng cách nhập https://github.com/aws-samples/eks-kubeflow-cloudformation-quick-start.git trong Sao chép một repo trường.
  13. Chọn Clone.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.

Chạy một ví dụ đào tạo phân tán

Sau khi bạn thiết lập sổ ghi chép Jupyter, bạn có thể chạy toàn bộ bản trình diễn bằng cách sử dụng các bước cấp cao sau từ thư mục eks-kubeflow-cloudformation-quick-start/workshop/pytorch-distributed-training trong kho lưu trữ nhân bản:

  1. Chạy tập lệnh đào tạo Song song dữ liệu phân tán (DDP) của PyTorch – Tham khảo tập lệnh đào tạo DDP của PyTorch cifar10-distributed-gpu-final.py, bao gồm một mạng thần kinh tích chập mẫu và logic để phân phối quá trình đào tạo trên cụm CPU và GPU nhiều nút.
  2. Tạo đường dẫn Kubeflow – Chạy sổ tay STEP1.0_create_pipeline_k8s_sagemaker.ipynb để tạo một quy trình chạy và triển khai các mô hình trên SageMaker. Đảm bảo rằng bạn đã cài đặt thư viện SageMaker như một phần của ô sổ ghi chép đầu tiên và khởi động lại nhân trước khi bạn chạy phần còn lại của các ô sổ ghi chép.
  3. Gọi điểm cuối SageMaker – Chạy sổ tay STEP1.1_invoke_sagemaker_endpoint.ipynb để gọi và kiểm tra điểm cuối suy luận mô hình SageMaker được tạo trong sổ tay trước đó.

Trong các phần tiếp theo, chúng ta sẽ thảo luận chi tiết về từng bước này.

Chạy tập lệnh đào tạo DDP của PyTorch

Là một phần của đào tạo phân tán, chúng tôi đào tạo một mô hình phân loại được tạo bởi một mạng nơ-ron phức hợp đơn giản hoạt động trên tập dữ liệu CIFAR10. Kịch bản đào tạo cifar10-distributed-gpu-final.py chỉ chứa các thư viện mã nguồn mở và tương thích để chạy cả trên các cụm đào tạo Kubernetes và SageMaker trên các thiết bị GPU hoặc phiên bản CPU. Hãy xem xét một số khía cạnh quan trọng của tập lệnh đào tạo trước khi chúng tôi chạy các ví dụ về sổ ghi chép của mình.

Chúng tôi sử dụng torch.distributed mô-đun, chứa hỗ trợ PyTorch và các nguyên thủy giao tiếp cho song song nhiều quá trình giữa các nút trong cụm:

...
import torch
import torch.distributed as dist
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.utils.data
import torch.utils.data.distributed
import torchvision
from torchvision import datasets, transforms
...

Chúng tôi tạo một mô hình phân loại hình ảnh đơn giản bằng cách sử dụng kết hợp các lớp tích chập, tổng hợp tối đa và lớp tuyến tính mà một relu chức năng kích hoạt được áp dụng trong quá trình chuyển tiếp của đào tạo mô hình:

# Define models
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)

def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x

Nếu cụm đào tạo có GPU, tập lệnh chạy đào tạo trên thiết bị CUDA và biến thiết bị giữ thiết bị CUDA mặc định:

device = "cuda" if torch.cuda.is_available() else "cpu"
...

Trước khi bạn chạy đào tạo phân tán bằng PyTorch DistributedDataParallel để chạy xử lý phân tán trên nhiều nút, bạn cần khởi tạo môi trường phân tán bằng cách gọi init_process_group. Điều này được khởi tạo trên mỗi máy của cụm đào tạo.

dist.init_process_group(backend=args.backend, rank=host_rank, world_size=world_size)
...

Chúng tôi khởi tạo mô hình bộ phân loại và sao chép qua mô hình đó vào thiết bị đích. Nếu đào tạo phân tán được bật để chạy trên nhiều nút, DistributedDataParallel lớp được sử dụng làm đối tượng bao quanh đối tượng mô hình, cho phép đào tạo phân tán đồng bộ trên nhiều máy. Dữ liệu đầu vào được phân chia theo kích thước lô và một bản sao của mô hình được đặt trên mỗi máy và mỗi thiết bị. Xem đoạn mã sau:

model = Net().to(device)

if is_distributed:
model = torch.nn.parallel.DistributedDataParallel(model)

...

Tạo đường dẫn Kubeflow

Sổ ghi chép sử dụng SDK đường ống Kubeflow và tập hợp các gói Python được cung cấp để chỉ định và chạy các quy trình quy trình công việc ML. Là một phần của SDK này, chúng tôi sử dụng trình trang trí gói ngôn ngữ dành riêng cho miền (DSL) dsl.pipeline, trang trí các hàm Python để trả về một đường dẫn.

Quy trình Kubeflow sử dụng thành phần SageMaker V2 để gửi nội dung đào tạo tới SageMaker bằng cách sử dụng Toán tử ACK của SageMaker. Việc tạo và triển khai mô hình SageMaker sử dụng thành phần SageMaker V1, là các thành phần SageMaker dựa trên Boto3. Chúng tôi sử dụng kết hợp cả hai thành phần trong ví dụ này để chứng minh sự linh hoạt mà bạn có trong lựa chọn.

  1. Tải các thành phần SageMaker bằng mã sau:
    # Loads SageMaker training components v2 for Kubeflow pipeline from the URL
    sagemaker_train_ack_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/d4aaa03035f221351ebe72fbd74fcfccaf25bb66/components/aws/sagemaker/TrainingJob/component.yaml')
    
    # Loads SageMaker components v1 for Kubeflow pipeline from the URL
    sagemaker_model_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/model/component.yaml')
    sagemaker_deploy_op = components.load_component_from_url('https://raw.githubusercontent.com/kubeflow/pipelines/cb36f87b727df0578f4c1e3fe9c24a30bb59e5a2/components/aws/sagemaker/deploy/component.yaml')

    Trong đoạn mã sau, chúng tôi tạo quy trình Kubeflow nơi chúng tôi chạy đào tạo phân tán SageMaker bằng hai ml.p3.2xlarge các trường hợp:

    # Create Kubeflow Pipeline using Amazon SageMaker Service
    @dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
    def pytorch_cnn_pipeline(region=target_region,
    train_image=aws_dlc_sagemaker_train_image,
    serving_image=aws_dlc_sagemaker_serving_image,
    learning_rate='0.01',
    pytorch_backend='gloo',
    training_job_name=pytorch_distributed_jobname,
    instance_type='ml.p3.2xlarge',
    instance_count='2',
    network_isolation='False',
    traffic_encryption='False',
    ):
    
    # Step to run training on SageMaker using SageMaker Components V2 for Pipeline.
    training = sagemaker_train_ack_op(
    region=region,
    algorithm_specification=(f'{{ '
    f'"trainingImage": "{train_image}",'
    '"trainingInputMode": "File"'
    f'}}'),
    training_job_name=training_job_name,
    hyper_parameters=(f'{{ '
    f'"backend": "{pytorch_backend}",'
    '"batch-size": "64",'
    '"epochs": "10",'
    f'"lr": "{learning_rate}",'
    '"model-type": "custom",'
    '"sagemaker_container_log_level": "20",'
    '"sagemaker_program": "cifar10-distributed-gpu-final.py",'
    f'"sagemaker_region": "{region}",'
    f'"sagemaker_submit_directory": "{source_s3}"'
    f'}}'),
    resource_config=(f'{{ '
    f'"instanceType": "{instance_type}",'
    f'"instanceCount": {instance_count},'
    '"volumeSizeInGB": 50'
    f'}}'),
    input_data_config=training_input(datasets),
    output_data_config=training_output(bucket_name),
    enable_network_isolation=network_isolation,
    enable_inter_container_traffic_encryption=traffic_encryption,
    role_arn=role,
    stopping_condition={"maxRuntimeInSeconds": 3600}
    )
    
    model_artifact_url = get_s3_model_artifact_op(
    training.outputs["model_artifacts"]
    ).output
    
    # This step creates SageMaker Model which refers to model artifacts and inference script to deserialize the input image
    create_model = sagemaker_model_op(
    region=region,
    model_name=training_job_name,
    image=serving_image,
    model_artifact_url=model_artifact_url,
    network_isolation=network_isolation,
    environment=(f'{{ '
    '"SAGEMAKER_CONTAINER_LOG_LEVEL": "20",'
    '"SAGEMAKER_PROGRAM": "inference.py",'
    f'"SAGEMAKER_REGION": "{region}",'
    f'"SAGEMAKER_SUBMIT_DIRECTORY": "{model_artifact_url}"'
    f'}}'),
    role=role
    )
    
    # This step creates SageMaker Endpoint which will be called to run inference
    prediction = sagemaker_deploy_op(
    region=region,
    model_name_1=create_model.output,
    instance_type_1='ml.c5.xlarge'
    )
    
    #Disable pipeline cache
    training.execution_options.caching_strategy.max_cache_staleness = "P0D"

    Sau khi đường ống được xác định, bạn có thể biên dịch đường ống sang đặc tả Argo YAML bằng cách sử dụng SDK của đường ống Kubeflow kfp.compiler bưu kiện. Bạn có thể chạy quy trình này bằng ứng dụng khách Kubeflow Pipelines SDK, ứng dụng này gọi điểm cuối dịch vụ Đường ống và chuyển các tiêu đề xác thực phù hợp ngay từ sổ ghi chép. Xem đoạn mã sau:

    # DSL Compiler that compiles pipeline functions into workflow yaml.
    kfp.compiler.Compiler().compile(pytorch_cnn_pipeline, "pytorch_cnn_pipeline.yaml")
    
    # Connect to Kubeflow Pipelines using the Kubeflow Pipelines SDK client
    client = kfp.Client()
    
    experiment = client.create_experiment(name="ml_workflow")
    
    # Run a specified pipeline
    my_run = client.run_pipeline(experiment.id, "pytorch_cnn_pipeline", "pytorch_cnn_pipeline.yaml")
    
    # Please click “Run details” link generated below this cell to view your pipeline. You can click every pipeline step to see logs.

  2. Chọn Chạy chi tiết liên kết bên dưới ô cuối cùng để xem đường dẫn Kubeflow. Ảnh chụp màn hình sau đây hiển thị chi tiết quy trình của chúng tôi cho thành phần triển khai và đào tạo SageMaker.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.
  3. Chọn bước công việc đào tạo và trên Logs , chọn liên kết nhật ký CloudWatch để truy cập nhật ký SageMaker.
    Ảnh chụp màn hình sau đây hiển thị nhật ký CloudWatch cho mỗi trong số hai trường hợp phóng to ml.p3.2.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.
  4. Chọn bất kỳ nhóm nào để xem nhật ký.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.
  5. Nắm bắt điểm cuối SageMaker bằng cách chọn Sagemaker – Mô hình triển khai bước và sao chép endpoint_name giá trị hiện vật đầu ra.Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.

Gọi điểm cuối SageMaker

Cuốn tập STEP1.1_invoke_sagemaker_endpoint.ipynb gọi điểm cuối suy luận SageMaker được tạo ở bước trước. Đảm bảo bạn cập nhật tên điểm cuối:

# Invoke SageMaker Endpoint. * Ensure you update the endpoint
# You can grab the SageMaker Endpoint name by either 1) going to the pipeline visualization of Kubeflow console and click the component for deployment, or 2) Go to SageMaker console and go to the list of endpoints, and then substitute the name to the EndpointName='...' in this cell.

endpointName=''

response = client.invoke_endpoint(EndpointName=endpointName,
ContentType='application/x-image',
Body=payload)

pred = json.loads(response['Body'].read().decode())

output_vector_list=pred['score']

# Get outout vector of 10 classes
output_vector = output_vector_list[0]

# Find the class with highest probability
max=output_vector[0]
index = 0
for i in range(1,len(output_vector)):
if output_vector[i] > max:
max = output_vector[i]
index = i

print(f'Index of the maximum value is : {index}')

labels = ['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']

print(labels[index])

Làm sạch

Để dọn dẹp tài nguyên của bạn, hãy hoàn thành các bước sau:

  1. Chạy các lệnh sau trong AWS Cloud9 để xóa tài nguyên AWS:
    cd ${MANIFEST_DIR}/deployments/vanilla/terraform
    make delete

  2. Xóa vai trò IAM “sagemakerrole” sử dụng lệnh AWS CLI sau:
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
    aws iam detach-role-policy --role-name sagemakerrole --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
    aws iam delete-role --role-name sagemakerrole

  3. Xóa điểm cuối SageMaker bằng lệnh AWS CLI sau:
    aws sagemaker delete-endpoint --endpoint-name  --region us-west-2

Tổng kết

Trong bài đăng này, chúng tôi đã nhấn mạnh giá trị mà Kubeflow trên AWS 1.6.1 mang lại thông qua tích hợp dịch vụ gốc do AWS quản lý để giải quyết nhu cầu của các trường hợp sử dụng AI và ML cấp doanh nghiệp. Bạn có thể chọn từ một số tùy chọn triển khai để cài đặt Kubeflow trên AWS với nhiều tích hợp dịch vụ khác nhau bằng cách sử dụng Terraform, Kustomize hoặc Helm. Trường hợp sử dụng trong bài đăng này đã minh họa sự tích hợp Kubeflow với SageMaker sử dụng cụm đào tạo do SageMaker quản lý để chạy đào tạo phân tán cho mô hình phân loại hình ảnh và điểm cuối SageMaker để triển khai mô hình.

Chúng tôi cũng đã cung cấp sẵn một ví dụ về đường ống dẫn mẫu sử dụng các thành phần SageMaker mới nhất; bạn có thể chạy nó trực tiếp từ bảng điều khiển Kubeflow. Đường ống này yêu cầu Dữ liệu Amazon S3Vai trò IAM thực thi SageMaker như các đầu vào cần thiết.

Để bắt đầu với Kubeflow trên AWS, hãy tham khảo các tùy chọn triển khai tích hợp AWS có sẵn trong Kubeflow trên AWS. Bạn có thể làm theo Kho AWS Labs để theo dõi tất cả các đóng góp AWS cho Kubeflow. Bạn cũng có thể tìm thấy chúng tôi trên Kênh Slack Kubeflow #AWS; phản hồi của bạn ở đó sẽ giúp chúng tôi ưu tiên các tính năng tiếp theo để đóng góp cho dự án Kubeflow.


Giới thiệu về tác giả

Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.Kanwaljit Khurmi là Kiến trúc sư giải pháp cao cấp tại Amazon Web Services. Anh ấy làm việc với các khách hàng AWS để cung cấp hướng dẫn và hỗ trợ kỹ thuật giúp họ nâng cao giá trị của các giải pháp khi sử dụng AWS. Kanwaljit chuyên trợ giúp khách hàng với các ứng dụng học máy và công cụ chứa.

Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.Kartik Kalamadi là Kỹ sư phát triển phần mềm tại Amazon AI. Hiện đang tập trung vào các dự án mã nguồn mở Kubernetes của Machine Learning như Kubeflow và AWS SageMaker Controller cho k8s. Trong thời gian rảnh rỗi, tôi thích chơi Trò chơi trên PC và nghịch VR bằng công cụ Unity.

Kích hoạt quy trình làm việc ML kết hợp trên Amazon EKS và Amazon SageMaker bằng Kubeflow chỉ bằng một cú nhấp chuột khi triển khai PlatoBlockchain Data Intelligence trên AWS. Tìm kiếm dọc. Ái.Rahul Kharse là Kỹ sư phát triển phần mềm tại Amazon Web Services. Công việc của anh ấy tập trung vào việc tích hợp các dịch vụ AWS với các nền tảng ML Ops được chứa trong bộ chứa mã nguồn mở để cải thiện khả năng mở rộng, độ tin cậy và bảo mật của chúng. Ngoài việc tập trung vào các yêu cầu của khách hàng về các tính năng, Rahul còn thích thử nghiệm những phát triển công nghệ mới nhất trong lĩnh vực này.

Dấu thời gian:

Thêm từ Học máy AWS