Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker

Trong bài đăng này, chúng tôi chứng minh cách Kubeflow trên AWS (một bản phân phối AWS cụ thể của Kubeflow) được sử dụng với AWS Deep Learning ContainerHệ thống tệp đàn hồi Amazon (Amazon EFS) đơn giản hóa việc cộng tác và cung cấp tính linh hoạt trong việc đào tạo các mô hình học sâu trên quy mô Dịch vụ Kubernetes đàn hồi của Amazon (Amazon EKS) và Amazon SageMaker sử dụng cách tiếp cận kiến ​​trúc kết hợp.

Việc phát triển máy học (ML) dựa trên các bộ công cụ và khuôn khổ nguồn mở phức tạp và liên tục phát triển, cũng như hệ sinh thái phần cứng phức tạp và liên tục phát triển. Điều này đặt ra một thách thức khi mở rộng phát triển ML thành một cụm. Các vùng chứa cung cấp một giải pháp, bởi vì chúng có thể đóng gói đầy đủ không chỉ mã đào tạo mà còn toàn bộ ngăn xếp phụ thuộc vào các thư viện phần cứng. Điều này đảm bảo một môi trường ML nhất quán và di động, đồng thời tạo điều kiện tái tạo môi trường đào tạo trên từng nút riêng lẻ của cụm đào tạo.

Kubernetes là một hệ thống được chấp nhận rộng rãi để tự động hóa việc triển khai cơ sở hạ tầng, mở rộng tài nguyên và quản lý các ứng dụng được đóng gói này. Tuy nhiên, Kubernetes không được xây dựng với ML, vì vậy nó có thể cảm thấy phản trực giác với các nhà khoa học dữ liệu do phụ thuộc nhiều vào các tệp đặc tả YAML. Không có trải nghiệm Jupyter và không có nhiều khả năng dành riêng cho ML, chẳng hạn như quản lý quy trình làm việc và đường ống cũng như các khả năng khác mà các chuyên gia ML mong đợi, chẳng hạn như điều chỉnh siêu tham số, lưu trữ mô hình và những khả năng khác. Những khả năng như vậy có thể được xây dựng, nhưng Kubernetes không được thiết kế để làm điều này như mục tiêu chính của nó.

Cộng đồng mã nguồn mở đã chú ý và phát triển một lớp trên Kubernetes được gọi là Kubeflow. Kubeflow nhằm mục đích làm cho việc triển khai các quy trình ML end-to-end trên Kubernetes trở nên đơn giản, di động và có thể mở rộng. Bạn có thể sử dụng Kubeflow để triển khai các hệ thống mã nguồn mở tốt nhất dành cho ML cho các cơ sở hạ tầng đa dạng.

Kubeflow và Kubernetes cung cấp sự linh hoạt và kiểm soát cho các nhóm nhà khoa học dữ liệu. Tuy nhiên, việc đảm bảo sử dụng hiệu quả cao các cụm huấn luyện đang chạy trên quy mô với giảm chi phí hoạt động vẫn còn nhiều thách thức.

Bài đăng này trình bày cách khách hàng có các hạn chế tại chỗ hoặc các khoản đầu tư hiện tại của Kubernetes có thể giải quyết thách thức này bằng cách sử dụng Amazon EKS và Kubeflow trên AWS để triển khai kênh ML cho đào tạo phân tán dựa trên phương pháp tự quản lý và sử dụng SageMaker được quản lý hoàn toàn để tối ưu hóa chi phí, quản lý đầy đủ và cơ sở hạ tầng đào tạo quy mô sản xuất. Điều này bao gồm việc triển khai từng bước một kiến ​​trúc đào tạo phân tán kết hợp cho phép bạn chọn giữa hai cách tiếp cận trong thời gian chạy, mang lại khả năng kiểm soát và tính linh hoạt tối đa với các nhu cầu nghiêm ngặt cho việc triển khai của bạn. Bạn sẽ thấy cách bạn có thể tiếp tục sử dụng các thư viện mã nguồn mở trong tập lệnh đào tạo học sâu của mình và vẫn làm cho nó tương thích để chạy trên cả Kubernetes và SageMaker theo cách bất khả tri.

Kubeflow trên AWS và SageMaker trợ giúp như thế nào?

Các mô hình mạng thần kinh được xây dựng với các khuôn khổ học tập sâu như TensorFlow, PyTorch, MXNet và các mô hình khác cung cấp độ chính xác cao hơn nhiều bằng cách sử dụng bộ dữ liệu đào tạo lớn hơn đáng kể, đặc biệt là trong thị giác máy tính và các trường hợp sử dụng xử lý ngôn ngữ tự nhiên. Tuy nhiên, với các bộ dữ liệu đào tạo lớn, sẽ mất nhiều thời gian hơn để đào tạo các mô hình học sâu, điều này cuối cùng làm chậm thời gian đưa ra thị trường. Nếu chúng ta có thể mở rộng quy mô một cụm và giảm thời gian đào tạo mô hình từ vài tuần xuống vài ngày hoặc vài giờ, điều đó có thể có tác động rất lớn đến năng suất và tốc độ kinh doanh.

Amazon EKS giúp cung cấp máy bay điều khiển Kubernetes được quản lý. Bạn có thể sử dụng Amazon EKS để tạo các cụm đào tạo quy mô lớn với các phiên bản CPU và GPU, đồng thời sử dụng bộ công cụ Kubeflow để cung cấp các công cụ mã nguồn mở, thân thiện với ML và vận hành các quy trình làm việc ML có thể di động và có thể mở rộng bằng cách sử dụng Kubeflow Pipelines để cải thiện năng suất nhóm của bạn và giảm thời gian đi chợ.

Tuy nhiên, có thể có một vài thách thức với cách tiếp cận này:

  • Đảm bảo sử dụng tối đa một cụm giữa các nhóm khoa học dữ liệu. Ví dụ: bạn nên cung cấp các phiên bản GPU theo yêu cầu và đảm bảo khả năng sử dụng cao cho các tác vụ đòi hỏi ở quy mô sản xuất như đào tạo học tập sâu và sử dụng phiên bản CPU cho các tác vụ ít đòi hỏi hơn như xử lý trước dữ liệu
  • Đảm bảo tính khả dụng cao của các thành phần cơ sở hạ tầng Kubeflow nặng, bao gồm cơ sở dữ liệu, lưu trữ và xác thực, được triển khai trong nút công nhân cụm Kubernetes. Ví dụ: mặt phẳng điều khiển Kubeflow tạo ra các tạo tác (chẳng hạn như các phiên bản MySQL, nhật ký nhóm hoặc lưu trữ MinIO) phát triển theo thời gian và cần khối lượng lưu trữ có thể thay đổi kích thước với khả năng giám sát liên tục.
  • Chia sẻ tập dữ liệu đào tạo, mã và môi trường tính toán giữa các nhà phát triển, cụm đào tạo và dự án là một thách thức. Ví dụ: nếu bạn đang làm việc trên bộ thư viện của riêng mình và các thư viện đó có sự phụ thuộc lẫn nhau mạnh mẽ, thì việc chia sẻ và chạy cùng một đoạn mã giữa các nhà khoa học dữ liệu trong cùng một nhóm sẽ thực sự khó khăn. Ngoài ra, mỗi lần chạy đào tạo yêu cầu bạn tải xuống tập dữ liệu đào tạo và xây dựng hình ảnh đào tạo với các thay đổi mã mới.

Kubeflow trên AWS giúp giải quyết những thách thức này và cung cấp sản phẩm Kubeflow bán quản lý cấp doanh nghiệp. Với Kubeflow trên AWS, bạn có thể thay thế một số dịch vụ máy bay điều khiển Kubeflow như cơ sở dữ liệu, lưu trữ, giám sát và quản lý người dùng bằng các dịch vụ được quản lý AWS như Dịch vụ cơ sở dữ liệu quan hệ của Amazon (Amazon RDS), Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3), Hệ thống tệp đàn hồi Amazon (Amazon EFS), Amazon FSx, amazoncloudwatchNhận thức về Amazon.

Việc thay thế các thành phần Kubeflow này tách rời các bộ phận quan trọng của mặt phẳng điều khiển Kubeflow khỏi Kubernetes, cung cấp một thiết kế an toàn, có thể mở rộng, khả năng phục hồi và tối ưu hóa chi phí. Cách tiếp cận này cũng giải phóng tài nguyên lưu trữ và tính toán từ mặt phẳng dữ liệu EKS, có thể cần thiết bởi các ứng dụng như đào tạo mô hình phân tán hoặc máy chủ sổ ghi chép người dùng. Kubeflow trên AWS cũng cung cấp tích hợp gốc của sổ ghi chép Jupyter với hình ảnh Bộ chứa học sâu (DLC), được đóng gói sẵn và định cấu hình sẵn với các khung học tập sâu được tối ưu hóa AWS như PyTorch và TensorFlow, cho phép bạn bắt đầu viết mã đào tạo của mình ngay lập tức mà không cần xử lý với độ phân giải phụ thuộc và tối ưu hóa khung. Ngoài ra, tích hợp Amazon EFS với các cụm đào tạo và môi trường phát triển cho phép bạn chia sẻ mã của mình và tập dữ liệu đào tạo đã xử lý, giúp tránh việc xây dựng hình ảnh vùng chứa và tải các tập dữ liệu khổng lồ sau mỗi lần thay đổi mã. Những tích hợp này với Kubeflow trên AWS giúp bạn tăng tốc thời gian xây dựng và đào tạo mô hình cũng như cho phép cộng tác tốt hơn với việc chia sẻ dữ liệu và mã dễ dàng hơn.

Kubeflow trên AWS giúp xây dựng một nền tảng ML mạnh mẽ và có tính khả dụng cao. Nền tảng này cung cấp tính linh hoạt để xây dựng và đào tạo các mô hình học sâu và cung cấp quyền truy cập vào nhiều bộ công cụ mã nguồn mở, thông tin chi tiết về nhật ký và gỡ lỗi tương tác để thử nghiệm. Tuy nhiên, việc sử dụng tối đa tài nguyên cơ sở hạ tầng trong khi đào tạo mô hình học sâu trên hàng trăm GPU vẫn đòi hỏi rất nhiều chi phí hoạt động. Điều này có thể được giải quyết bằng cách sử dụng SageMaker, một dịch vụ được quản lý hoàn toàn được thiết kế và tối ưu hóa để xử lý các cụm đào tạo hiệu quả và tối ưu hóa chi phí chỉ được cung cấp khi được yêu cầu, mở rộng quy mô khi cần thiết và tự động tắt khi công việc hoàn thành, do đó cung cấp gần 100 % Tận dụng nguồn tài nguyên. Bạn có thể tích hợp SageMaker với Kubeflow Pipelines bằng cách sử dụng các thành phần SageMaker được quản lý. Điều này cho phép bạn vận hành quy trình công việc ML như một phần của đường ống Kubeflow, nơi bạn có thể sử dụng Kubernetes để đào tạo cục bộ và SageMaker để đào tạo quy mô sản phẩm trong kiến ​​trúc kết hợp.

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

Kiến trúc sau đây mô tả cách chúng tôi sử dụng Kubeflow Pipelines để xây dựng và triển khai các quy trình ML end-to-end di động và có thể mở rộng để chạy đào tạo phân tán có điều kiện trên Kubernetes bằng cách sử dụng đào tạo Kubeflow hoặc SageMaker dựa trên tham số thời gian chạy.

Đào tạo Kubeflow là một nhóm các Nhà khai thác Kubernetes bổ sung vào Kubeflow hỗ trợ đào tạo phân tán các mô hình ML bằng cách sử dụng các khung công tác khác nhau như TensorFlow, PyTorch và các mô hình khác. pytorch-operator là triển khai Kubeflow của Kubernetes tài nguyên tùy chỉnh (PyTorchJob) để chạy các công việc đào tạo PyTorch được phân phối trên Kubernetes.

Chúng tôi sử dụng thành phần Trình khởi chạy PyTorchJob như một phần của quy trình Kubeflow để chạy đào tạo phân tán PyTorch trong giai đoạn thử nghiệm khi chúng tôi cần sự linh hoạt và quyền truy cập vào tất cả các tài nguyên cơ bản để gỡ lỗi và phân tích tương tác.

Chúng tôi cũng sử dụng các thành phần của SageMaker cho Kubeflow Pipelines để chạy chương trình đào tạo mô hình của chúng tôi ở quy mô sản xuất. Điều này cho phép chúng tôi tận dụng các tính năng mạnh mẽ của SageMaker như các dịch vụ được quản lý hoàn toàn, các công việc đào tạo phân tán với mức sử dụng GPU tối đa và đào tạo hiệu quả về chi phí thông qua Đám mây điện toán đàn hồi Amazon (Amazon EC2) Phiên bản Spot.

Là một phần của quá trình tạo dòng công việc, bạn hoàn thành các bước sau (như được hiển thị trong sơ đồ trước) để tạo đường dẫn này:

  1. Sử dụng tệp kê khai Kubeflow để tạo trang tổng quan Kubeflow và truy cập sổ ghi chép Jupyter từ trang tổng quan trung tâm Kubeflow.
  2. Sử dụng SDK đường ống Kubeflow để tạo và biên dịch đường ống Kubeflow bằng mã Python. Biên dịch đường ống chuyển đổi hàm Python thành tài nguyên dòng công việc, là định dạng YAML tương thích với Argo.
  3. Sử dụng ứng dụng khách Kubeflow Pipelines SDK để gọi điểm cuối của dịch vụ đường ống để chạy đường ống.
  4. Đường ống đánh giá các biến thời gian chạy có điều kiện và quyết định giữa SageMaker hoặc Kubernetes làm môi trường chạy mục tiêu.
  5. Sử dụng thành phần Kubeflow PyTorch Launcher để chạy đào tạo phân tán trên môi trường Kubernetes bản địa hoặc sử dụng cấu phần SageMaker để gửi đào tạo trên nền tảng được quản lý bởi SageMaker.

Hình dưới đây cho thấy các thành phần Kubeflow Pipelines liên quan đến kiến ​​trúc cho phép chúng ta linh hoạt lựa chọn giữa các môi trường phân tán Kubernetes hoặc SageMaker.

Các thành phần của đường ống Kubeflow

Quy trình làm việc của Use Case

Chúng tôi sử dụng phương pháp tiếp cận từng bước sau để cài đặt và chạy trường hợp sử dụng cho đào tạo phân tán bằng Amazon EKS và SageMaker bằng Kubeflow trên AWS.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

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

Đối với hướng dẫn này, bạn nên có các điều kiện tiên quyết sau:

  • An Tài khoản AWS.
  • Một cỗ máy với Docker và Giao diện dòng lệnh AWS (AWS CLI) đã được cài đặt.
  • 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. Từ môi trường Cloud9 của bạn, chọn dấu cộng và mở thiết bị đầu cuối mới.
  • Tạo một vai trò với cái tên sagemakerrole. Thêm các chính sách được quản lý AmazonSageMakerFullAccessAmazonS3FullAccess để cấp cho SageMaker quyền truy cập vào nhóm S3. Vai trò này được sử dụng bởi công việc SageMaker đã gửi như một phần của bước Đường ống 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 tăng lên 2 bằng cách sử dụng Bảng điều khiển hạn ngạch dịch vụ

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

Bạn có thể sử dụng một số cách tiếp cận khác nhau để xây dựng một cụm Kubernetes và triển khai Kubeflow. Trong bài đăng này, chúng tôi tập trung vào một cách tiếp cận mà chúng tôi tin rằng mang lại sự đơn giản cho quy trình. Đầu tiên, chúng tôi tạo một cụm EKS, sau đó chúng tôi triển khai Kubeflow trên AWS v1.5 trên đó. Đối với mỗi nhiệm vụ này, chúng tôi sử dụng một dự án mã nguồn mở tương ứng tuân theo các nguyên tắc của Làm khung. Thay vì cài đặt một tập hợp các điều kiện tiên quyết cho mỗi tác vụ, chúng tôi xây dựng các vùng chứa Docker có tất cả các công cụ cần thiết và thực hiện các tác vụ từ bên trong các vùng chứa.

Chúng tôi sử dụng Khung làm việc trong bài đăng này, khung này tự động hóa việc triển khai Kubeflow với Amazon EFS như một tiện ích bổ sung. Để biết Kubeflow chính thức về các tùy chọn triển khai AWS cho triển khai sản xuất, hãy tham khảo Triển khai.

Định cấu hình thư mục làm việc hiện tại và AWS CLI

Chúng tôi định cấu hình một thư mục làm việc để chúng tôi có thể coi nó là điểm bắt đầu cho các bước tiếp theo:

export working_dir=$PWD

Chúng tôi cũng định cấu hình hồ sơ AWS CLI. Để 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

1.1 Tạo một cụm EKS

Nếu bạn đã có sẵn một cụm EKS, bạn có thể chuyển sang phần tiếp theo. Đối với bài đăng này, chúng tôi sử dụng dự án aws-do-eks để tạo cụm của chúng tôi.

  1. Đầu tiên sao chép dự án trong thư mục làm việc của bạn
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-eks
    cd aws-do-eks/

  2. Sau đó, xây dựng và chạy aws-do-eks thùng đựng hàng:
    ./build.sh
    ./run.sh

    Sản phẩm build.sh script tạo một hình ảnh vùng chứa Docker có tất cả các công cụ và tập lệnh cần thiết để cung cấp và vận hành các cụm EKS. Các run.sh script bắt đầu một vùng chứa bằng cách sử dụng hình ảnh Docker đã tạo và duy trì nó, vì vậy chúng tôi có thể sử dụng nó làm môi trường quản lý EKS của mình. Để xem trạng thái của aws-do-eks container, bạn có thể chạy ./status.sh. Nếu vùng chứa ở trạng thái Đã thoát, bạn có thể sử dụng ./start.sh script để đưa vùng chứa lên hoặc để khởi động lại vùng chứa, bạn có thể chạy ./stop.sh tiếp theo ./run.sh.

  3. Mở một trình bao đang chạy aws-do-eks thùng đựng hàng:
  4. Để xem lại cấu hình cụm EKS cho việc triển khai KubeFlow của chúng tôi, hãy chạy lệnh sau:
    vi ./eks-kubeflow.yaml

    Theo mặc định, cấu hình này tạo một cụm có tên eks-kubeflow trong us-west-2 Vùng có sáu nút m5.xlarge. Ngoài ra, mã hóa khối lượng EBS không được bật theo mặc định. Bạn có thể kích hoạt nó bằng cách thêm "volumeEncrypted: true" vào nhóm nút và nó sẽ mã hóa bằng khóa mặc định. Sửa đổi cài đặt cấu hình khác nếu cần.

  5. Để tạo cụm, hãy chạy lệnh sau:
    export AWS_PROFILE=kubeflow
    eksctl create cluster -f ./eks-kubeflow.yaml

    Quá trình cung cấp cụm có thể mất đến 30 phút.

  6. Để xác minh rằng cụm đã được tạo thành công, hãy chạy lệnh sau:
    kubectl get nodes

    Đầu ra từ lệnh trước cho một cụm đã được tạo thành công trông giống như mã sau:

    root@cdf4ecbebf62:/eks# kubectl get nodes
    NAME                                           STATUS   ROLES    AGE   VERSION
    ip-192-168-0-166.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-13-28.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-45-240.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-63-84.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-75-56.us-west-2.compute.internal    Ready       23m   v1.21.14-eks-ba74326
    ip-192-168-85-226.us-west-2.compute.internal   Ready       23m   v1.21.14-eks-ba74326

Tạo một khối lượng EFS cho công việc đào tạo SageMaker

Trong trường hợp sử dụng này, bạn tăng tốc công việc đào tạo SageMaker bằng cách đào tạo mô hình học sâu từ dữ liệu đã được lưu trữ trong Amazon EFS. Lựa chọn này mang lại lợi ích là khởi chạy trực tiếp các công việc đào tạo của bạn từ dữ liệu trong Amazon EFS mà không cần di chuyển dữ liệu, dẫn đến thời gian bắt đầu đào tạo nhanh hơn.

Chúng tôi tạo một khối lượng EFS và triển khai trình điều khiển Giao diện Lưu trữ Bộ chứa EFS (CSI). Điều này được thực hiện bằng một tập lệnh triển khai nằm trong /eks/deployment/csi/efs trong aws-do-eks thùng đựng hàng.

Tập lệnh này giả sử bạn có một cụm EKS trong tài khoản của mình. Bộ CLUSTER_NAME= trong trường hợp bạn có nhiều hơn một cụm EKS.

cd /eks/deployment/csi/efs
./deploy.sh

Tập lệnh này cung cấp một khối lượng EFS và tạo các mục tiêu gắn kết cho các mạng con của VPC cụm. Sau đó, nó triển khai trình điều khiển EFS CSI và tạo efs-sc lớp lưu trữ và efs-pv khối lượng liên tục trong cụm EKS.

Sau khi hoàn thành thành công tập lệnh, bạn sẽ thấy đầu ra như sau:

Generating efs-sc.yaml ...

Applying efs-sc.yaml ...
storageclass.storage.k8s.io/efs-sc created
NAME            PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
efs-sc          efs.csi.aws.com         Delete          Immediate              false                  1s
gp2 (default)   kubernetes.io/aws-ebs   Delete          WaitForFirstConsumer   false                  36m

Generating efs-pv.yaml ...
Applying efs-pv.yaml ...
persistentvolume/efs-pv created
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
efs-pv   5Gi        RWX            Retain           Available           efs-sc                  10s

Done ...

Tạo điểm cuối VPC của Amazon S3

Bạn sử dụng VPC riêng mà công việc đào tạo SageMaker và hệ thống tệp EFS của bạn có quyền truy cập. Để cấp cho nhóm đào tạo SageMaker quyền truy cập vào các nhóm S3 từ VPC riêng tư của bạn, bạn tạo một điểm cuối VPC:

cd /eks/vpc 
export CLUSTER_NAME= 
export REGION= 
./vpc-endpoint-create.sh

Bây giờ bạn có thể thoát khỏi aws-do-eks vỏ container và chuyển sang phần tiếp theo:

exit

root@cdf4ecbebf62:/eks/deployment/csi/efs# exit
exit
TeamRole:~/environment/aws-do-eks (main) $

1.2 Triển khai Kubeflow trên AWS trên Amazon EKS

Để triển khai Kubeflow trên Amazon EKS, chúng tôi sử dụng dự án aws-do-kubeflow.

  1. Sao chép kho lưu trữ bằng các lệnh sau:
    cd ${working_dir}
    git clone https://github.com/aws-samples/aws-do-kubeflow
    cd aws-do-kubeflow

  2. Sau đó, cấu hình dự án:
    ./config.sh

    Tập lệnh này mở tệp cấu hình dự án trong trình soạn thảo văn bản. Nó quan trọng đối với AWS_REGION được đặt thành Khu vực mà cụm của bạn đang ở, cũng như AWS_CLUSTER_NAME để khớp với tên của cụm mà bạn đã tạo trước đó. Theo mặc định, cấu hình của bạn đã được đặt đúng cách, vì vậy nếu bạn không cần thực hiện bất kỳ thay đổi nào, chỉ cần đóng trình chỉnh sửa.

    ./build.sh
    ./run.sh
    ./exec.sh

    Sản phẩm build.sh script tạo một hình ảnh vùng chứa Docker có tất cả các công cụ cần thiết để triển khai và quản lý Kubeflow trên một cụm Kubernetes hiện có. Các run.sh script khởi động một vùng chứa, sử dụng hình ảnh Docker và tập lệnh execute.sh sẽ mở một trình bao lệnh vào vùng chứa, chúng ta có thể sử dụng nó làm môi trường quản lý Kubeflow của mình. Bạn có thể dùng ./status.sh kịch bản để xem nếu aws-do-kubeflow container đang hoạt động và ./stop.sh./run.sh tập lệnh để khởi động lại nó nếu cần.

  3. Sau khi bạn mở một shell trong aws-do-eks vùng chứa, bạn có thể xác minh rằng ngữ cảnh cụm được định cấu hình như mong đợi:
    root@ip-172-31-43-155:/kubeflow# kubectx
    kubeflow@eks-kubeflow.us-west-2.eksctl.io

  4. Để triển khai Kubeflow trên cụm EKS, hãy chạy deploy.sh kịch bản:
    ./kubeflow-deploy.sh

    Việc triển khai thành công khi tất cả các nhóm trong không gian tên kubeflow vào trạng thái Đang chạy. Một đầu ra điển hình giống như đoạn mã sau:

    Waiting for all Kubeflow pods to start Running ...
    
    Waiting for all Kubeflow pods to start Running ...
    
    Restarting central dashboard ...
    pod "centraldashboard-79f489b55-vr6lp" deleted
    /kubeflow/deploy/distro/aws/kubeflow-manifests /kubeflow/deploy/distro/aws
    /kubeflow/deploy/distro/aws
    
    Kubeflow deployment succeeded
    Granting cluster access to kubeflow profile user ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    clusterrolebinding.rbac.authorization.k8s.io/kubeflow-user-example-com-cluster-admin-binding created
    Setting up access to Kubeflow Pipelines ...
    Argument not provided, assuming default user namespace kubeflow-user-example-com ...
    
    Creating pod-default for namespace kubeflow-user-example-com ...
    poddefault.kubeflow.org/access-ml-pipeline created

  5. Để theo dõi trạng thái của các nhóm KubeFlow, trong một cửa sổ riêng biệt, bạn có thể sử dụng lệnh sau:
    watch kubectl -n kubeflow get pods

  6. Ấn Bản Ctrl + C khi tất cả các nhóm đang chạy, sau đó hiển thị bảng điều khiển Kubeflow bên ngoài cụm bằng cách chạy lệnh sau:
    ./kubeflow-expose.sh

Bạn sẽ thấy đầu ra giống như mã sau:

root@ip-172-31-43-155:/kubeflow# ./kubeflow-expose.sh
root@ip-172-31-43-155:/kubeflow# Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

Cổng lệnh này chuyển tiếp dịch vụ cổng nhập Istio từ cụm của bạn đến cổng cục bộ 8080. Để truy cập bảng điều khiển Kubeflow, hãy truy cập http://localhost:8080 và đăng nhập bằng thông tin đăng nhập người dùng mặc định (người dùng@example.com/ 12341234). Nếu bạn đang chạy aws-do-kubeflow vùng chứa trong AWS Cloud9, sau đó bạn có thể chọn Xem trước, sau đó chọn Xem trước ứng dụng đang chạy. Nếu bạn đang chạy trên Docker Desktop, bạn có thể cần chạy ./kubeflow-expose.sh kịch bản bên ngoài aws-do-kubeflow thùng đựng hàng.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

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

Để thiết lập Kubeflow của bạn trên môi trường AWS, chúng tôi tạo một tập EFS và một sổ ghi chép Jupyter.

2.1 Tạo một khối lượng EFS

Để tạo một khối lượng EFS, hãy hoàn thành các bước sau:

  • Trên bảng điều khiển Kubeflow, chọn Volumes trong khung điều hướng.
  • Lựa chọn Tập mới.
  • Trong Họ tên, đi vào efs-sc-claim.
  • Trong Kích thước khối lượng, đi vào 10.
  • Trong Lớp lưu trữ, chọn fes-sc.
  • Trong Chế độ truy cập, chọn ĐọcViếtMột lần.
  • Chọn Tạo.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

2.2 Tạo sổ ghi chép Jupyter

Để tạo sổ tay mới, hãy hoàn thành các bước sau:

  • Trên bảng điều khiển Kubeflow, chọn máy tính xách tay trong khung điều hướng.
  • Chọn Sổ tay mới.
  • Trong Họ tên, đi vào aws-hybrid-nb.
  • Trong Hình ảnh Jupyter Docket, chọn hình ảnh c9e4w0g3/notebook-servers/jupyter-pytorch:1.11.0-cpu-py38-ubuntu20.04-e3-v1.1 (hình ảnh jupyter-pytorch DLC mới nhất hiện có).
  • Trong CPU, đi vào 1.
  • Trong Bộ nhớ, đi vào 5.
  • Trong GPU, để lại như Không áp dụng.
  • Không thực hiện bất kỳ thay đổi nào đối với Khối lượng không gian làm việc phần.
  • Trong tạp chí Khối lượng dữ liệu phần, chọn Đính kèm tập hiện có và mở rộng phần Khối lượng hiện có
  • Trong Họ tên, chọn efs-sc-claim.
  • Trong Đường dẫn gắn kết, đi vào /home/jovyan/efs-sc-claim.
    Điều này gắn khối lượng EFS vào nhóm máy tính xách tay Jupyter của bạn và bạn có thể thấy thư mục efs-sc-claim trong giao diện phòng thí nghiệm Jupyter của bạn. Bạn lưu tập dữ liệu đào tạo và mã đào tạo vào thư mục này để các cụm đào tạo có thể truy cập nó mà không cần phải xây dựng lại các hình ảnh vùng chứa để thử nghiệm.Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.
  • Chọn Cho phép truy cập vào Kubeflow Pipelines trong phần Cấu hình.
  • Chọn Khởi động.
    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).Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.
  • trên máy tính xách tay trang, chọn Kết nối để đăng nhập vào môi trường JupyterLab.
  • trên đi menu, chọn Sao chép kho lưu trữ.
  • Trong Sao chép một repo, đi vào https://github.com/aws-samples/aws-do-kubeflow.
    Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

3. Chạy đà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 aws-do-kubeflow/workshop trong kho lưu trữ nhân bản:

  • Tập lệnh đào tạo PyTorch dữ liệu phân tán song song (DDP): Tham khảo tập lệnh đào tạo PyTorch DDP cifar10-distributed-gpu-final.py, bao gồm một mạng nơ-ron tích hợp mẫu và logic để phân phối đào tạo trên cụm CPU và GPU nhiều nút. (Tham khảo 3.1 để biết thêm chi tiết)
  • Cài đặt thư viện: Chạy sổ ghi chép 0_initialize_dependencies.ipynb để khởi tạo tất cả các phụ thuộc. (Tham khảo 3.2 để biết thêm chi tiết)
  • Chạy chương trình đào tạo việc làm PyTorch được phân phối trên Kubernetes: Chạy sổ ghi chép 1_submit_pytorchdist_k8s.ipynb để tạo và gửi đào tạo phân tán trên một vùng chứa chính và hai vùng chứa công nhân bằng cách sử dụng tệp PyTorchJob YAML của tài nguyên tùy chỉnh Kubernetes bằng cách sử dụng mã Python. (Tham khảo 3.3 để biết thêm chi tiết)
  • Tạo một đường dẫn Kubeflow kết hợp: Chạy sổ ghi chép 2_create_pipeline_k8s_sagemaker.ipynb để tạo kênh Kubeflow kết hợp chạy đào tạo phân tán trên SageMaker hoặc Amazon EKS bằng cách sử dụng biến thời gian chạy training_runtime. (Tham khảo 3.4 để biết thêm chi tiết)

Đảm bảo rằng bạn đã chạy sổ ghi chép 1_submit_pytorchdist_k8s.ipynb trước khi bạn bắt đầu sổ ghi chép 2_create_pipeline_k8s_sagemaker.ipynb.

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.

3.1 Tập lệnh đào tạo PyTorch dữ liệu phân tán song song (DDP)

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 tụ, gộp tối đa và tuyến tính mà hàm kích hoạt relu được áp dụng trong chuyển tiếp của quá trình đà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

Chúng tôi sử dụng DataLoader ngọn đuốc kết hợp tập dữ liệu và DistributedSampler (tải một tập hợp con dữ liệu theo cách phân tán bằng cách sử dụng torch.nn.parallel.DistributedDataParallel) và cung cấp trình lặp một quá trình hoặc nhiều quá trình trên dữ liệu:

# Define data loader for training dataset
def _get_train_data_loader(batch_size, training_dir, is_distributed):
logger.info("Get train data loader")

train_set = torchvision.datasets.CIFAR10(root=training_dir,
train=True,
download=False,
transform=_get_transforms())

train_sampler = (
torch.utils.data.distributed.DistributedSampler(train_set) if is_distributed else None
)

return torch.utils.data.DataLoader(
train_set,
batch_size=batch_size,
shuffle=train_sampler is None,
sampler=train_sampler)
...

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 như một đối tượng bao bọc xung 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 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ị.

model = Net().to(device)

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

...

3.2 Cài đặt thư viện

Bạn sẽ cài đặt tất cả các thư viện cần thiết để chạy ví dụ đào tạo phân tán PyTorch. Điều này bao gồm SDK đường ống Kubeflow, SDK Python của nhà điều hành đào tạo, ứng dụng khách Python cho Kubernetes và SDK Python của Amazon SageMaker.

#Please run the below commands to install necessary libraries

!pip install kfp==1.8.4

!pip install kubeflow-training

!pip install kubernetes

!pip install sagemaker

3.3 Chạy chương trình đào tạo công việc PyTorch được phân phối trên Kubernetes

Cuốn tập 1_submit_pytorchdist_k8s.ipynb tạo tệp PyTorchJob YAML tài nguyên tùy chỉnh Kubernetes bằng cách sử dụng đào tạo Kubeflow và SDK Python ứng dụng khách Kubernetes. Sau đây là một vài đoạn trích quan trọng từ sổ tay này.

Chúng tôi tạo PyTorchJob YAML với vùng chứa chính và vùng chứa công nhân như được hiển thị trong mã sau:

# Define PyTorchJob custom resource manifest
pytorchjob = V1PyTorchJob(
api_version="kubeflow.org/v1",
kind="PyTorchJob",
metadata=V1ObjectMeta(name=pytorch_distributed_jobname,namespace=user_namespace),
spec=V1PyTorchJobSpec(
run_policy=V1RunPolicy(clean_pod_policy="None"),
pytorch_replica_specs={"Master": master,
"Worker": worker}
)
)

Điều này được gửi tới máy bay điều khiển Kubernetes bằng cách sử dụng PyTorchJobClient:

# Creates and Submits PyTorchJob custom resource file to Kubernetes
pytorchjob_client = PyTorchJobClient()

pytorch_job_manifest=pytorchjob_client.create(pytorchjob):

Xem nhật ký đào tạo Kubernetes

Bạn có thể xem nhật ký đào tạo từ cùng một sổ ghi chép Jupyter bằng cách sử dụng mã Python hoặc từ trình bao ứng dụng Kubernetes.

3.4 Tạo một đường ống Kubeflow kết hợp

Cuốn tập 2_create_pipeline_k8s_sagemaker.ipynb tạo một đường ống Kubeflow kết hợp dựa trên biến thời gian chạy có điều kiện training_runtime, như được hiển thị trong đoạn mã sau. Máy tính xách tay sử dụng SDK đường ống Kubeflow và nó cung cấp một tập hợp các gói Python để chỉ định và chạy các đường ống luồng công việc ML. Là một phần của SDK này, chúng tôi sử dụng các gói sau:

  • Trình trang trí gói ngôn ngữ cụ thể cho miền (DSL) dsl.pipeline, trang trí các hàm Python để trả về một đường dẫn
  • Sản phẩm dsl.Condition gói, đại diện cho một nhóm hoạt động chỉ được chạy khi một điều kiện nhất định được đáp ứng, chẳng hạn như kiểm tra training_runtime giá trị như sagemaker or kubernetes

Xem mã sau đây:

# Define your training runtime value with either 'sagemaker' or 'kubernetes'
training_runtime='sagemaker'

# Create Hybrid Pipeline using Kubeflow PyTorch Training Operators and Amazon SageMaker Service
@dsl.pipeline(name="PyTorch Training pipeline", description="Sample training job test")
def pytorch_cnn_pipeline():

# Pipeline Step 1: to evaluate the condition. You can enter any logic here. For demonstration we are checking if GPU is needed for training
condition_result = check_condition_op(training_runtime)

# Pipeline Step 2: to run training on Kuberentes using PyTorch Training Operators. This will be executed if gpus are not needed
with dsl.Condition(condition_result.output == 'kubernetes', name="PyTorch_Comp"):
train_task = pytorch_job_op(
name=training_job_name,
namespace=user_namespace,
master_spec=json.dumps(master_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_master_spec.yml
worker_spec=json.dumps(worker_spec_loaded), # Please refer file at pipeline_yaml_specifications/pipeline_worker_spec.yml
delete_after_done=False
).after(condition_result)

# Pipeline Step 3: to run training on SageMaker using SageMaker Components for Pipeline. This will be executed if gpus are needed
with dsl.Condition(condition_result.output == 'sagemaker', name="SageMaker_Comp"):
training = sagemaker_train_op(
region=region,
image=train_image,
job_name=training_job_name,
training_input_mode=training_input_mode,
hyperparameters='{ 
"backend": "'+str(pytorch_backend)+'", 
"batch-size": "64", 
"epochs": "3", 
"lr": "'+str(learning_rate)+'", 
"model-type": "custom", 
"sagemaker_container_log_level": "20", 
"sagemaker_program": "cifar10-distributed-gpu-final.py", 
"sagemaker_region": "us-west-2", 
"sagemaker_submit_directory": "'+source_s3+'" 
}',
channels=channels,
instance_type=instance_type,
instance_count=instance_count,
volume_size=volume_size,
max_run_time=max_run_time,
model_artifact_path=f's3://{bucket_name}/jobs',
network_isolation=network_isolation,
traffic_encryption=traffic_encryption,
role=role,
vpc_subnets=subnet_id,
vpc_security_group_ids=security_group_id
).after(condition_result)

Chúng tôi định cấu hình đào tạo phân tán SageMaker bằng cách sử dụng hai phiên bản ml.p3.2xlarge.

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 đường ống này bằng ứng dụng khách Kubeflow Pipeline SDK, ứng dụng này gọi điểm cuối của dịch vụ Pipelines và chuyển các tiêu đề xác thực thích 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="kubeflow")

# 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.

Nếu bạn nhận được một sagemaker import lỗi, chạy! pip cài đặt sagemaker và khởi động lại hạt nhân (trên Hạt nhân menu, chọn Khởi động lại Kernel).

Chọn Chạy chi tiết liên kết dưới ô cuối cùng để xem đường dẫn Kubeflow.

Lặp lại bước tạo đường ống với training_runtime='kubernetes' để kiểm tra đường ống chạy trên môi trường Kubernetes. Các training_runtime biến cũng có thể được chuyển vào đường dẫn CI / CD của bạn trong một kịch bản sản xuất.

Xem nhật ký chạy đường ống Kubeflow cho thành phần SageMaker

Ảnh chụp màn hình sau đây cho thấy chi tiết đường dẫn của chúng tôi cho thành phần SageMaker.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

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.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Ả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.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Chọn bất kỳ nhóm nào để xem nhật ký.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Xem nhật ký chạy đường ống Kubeflow cho thành phần Trình khởi chạy Kubeflow PyTorchJob

Ảnh chụp màn hình sau đây hiển thị chi tiết đường dẫn cho thành phần Kubeflow của chúng tôi.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Chạy các lệnh sau bằng cách sử dụng Kubectl trên vỏ ứng dụng Kubernetes của bạn được kết nối với cụm Kubernetes để xem nhật ký (thay thế không gian tên và tên nhóm của bạn):

kubectl get pods -n kubeflow-user-example-com
kubectl logs  -n kubeflow-user-example-com -f

4.1 Dọn dẹp

Để xóa tất cả các tài nguyên chúng tôi đã tạo trong tài khoản, chúng tôi cần xóa chúng theo thứ tự ngược lại.

  1. Xóa cài đặt Kubeflow bằng cách chạy ./kubeflow-remove.sh trong aws-do-kubeflow thùng đựng hàng. Tập hợp lệnh đầu tiên là tùy chọn và có thể được sử dụng trong trường hợp bạn chưa có trình bao lệnh trong aws-do-kubeflow thùng hàng mở.
    cd aws-do-kubeflow
    ./status.sh
    ./start.sh
    ./exec.sh
    
    ./kubeflow-remove.sh

  2. Từ aws-do-eks thư mục chứa, loại bỏ khối lượng EFS. Tập hợp lệnh đầu tiên là tùy chọn và có thể được sử dụng trong trường hợp bạn chưa có trình bao lệnh trong aws-do-eks thùng hàng mở.
    cd aws-do-eks
    ./status.sh
    ./start.sh
    ./exec.sh
    
    cd /eks/deployment/csi/efs
    ./delete.sh
    ./efs-delete.sh

    Xóa Amazon EFS là cần thiết để giải phóng giao diện mạng được liên kết với VPC mà chúng tôi đã tạo cho cụm của mình. Lưu ý rằng việc xóa ổ đĩa EFS sẽ phá hủy mọi dữ liệu được lưu trữ trên đó.

  3. Từ aws-do-eks container, chạy eks-delete.sh script để xóa cụm và bất kỳ tài nguyên nào khác được liên kết với nó, bao gồm cả VPC:
    cd /eks
    ./eks-delete.sh

Tổng kết

Trong bài đăng này, chúng tôi đã thảo luận về một số thách thức điển hình của đào tạo mô hình phân tán và quy trình làm việc ML. Chúng tôi đã cung cấp tổng quan về phân phối Kubeflow trên AWS và chia sẻ hai dự án mã nguồn mở (ôi-ôi-ôiaws-do-kubeflow) giúp đơn giản hóa việc cung cấp cơ sở hạ tầng và triển khai Kubeflow trên đó. Cuối cùng, chúng tôi đã mô tả và trình diễn một kiến ​​trúc kết hợp cho phép khối lượng công việc chuyển đổi liền mạch giữa chạy trên Kubernetes tự quản lý và cơ sở hạ tầng SageMaker được quản lý hoàn toàn. Chúng tôi khuyến khích bạn sử dụng kiến ​​trúc kết hợp này cho các trường hợp sử dụng của riêng bạn.

Bạn có thể 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.

Đặc biệt cảm ơn Sree Arasanagatta (Giám đốc phát triển phần mềm AWS ML) và Suraj Kota (Kỹ sư phát triển phần mềm) đã hỗ trợ họ cho ra mắt bài đăng này.


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

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Kanwaljit Khurmi là Kiến trúc sư Giải pháp Chuyên gia về AI / ML tại Amazon Web Services. Anh ấy làm việc với sản phẩm, kỹ thuật và khách hàng của 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 ML kết hợ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.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Gautam Kumar là Kỹ sư phần mềm với AWS AI Deep Learning. Anh ấy đã phát triển AWS Deep Learning Containers và AWS Deep Learning AMI. Anh ấy đam mê xây dựng các công cụ và hệ thống cho AI. Khi rảnh rỗi, anh thích đi xe đạp và đọc sách.

Xây dựng kiến ​​trúc đào tạo phân tán linh hoạt và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Alex Iankoulski là một kiến ​​trúc sư cơ sở hạ tầng và phần mềm full-stack thích làm những công việc chuyên sâu, thực hành. Anh hiện là Kiến trúc sư giải pháp chính cho Học máy tự quản lý tại AWS. Trong vai trò của mình, anh ấy tập trung vào việc giúp khách hàng container hóa và điều phối khối lượng công việc ML và AI trên các dịch vụ AWS hỗ trợ container. Anh ấy cũng là tác giả của mã nguồn mở Làm khuôn khổ và một đội trưởng Docker, người thích áp dụng công nghệ container để đẩy nhanh tốc độ đổi mới đồng thời giải quyết những thách thức lớn nhất trên thế giới. Trong 10 năm qua, Alex đã nỗ lực chống biến đổi khí hậu, dân chủ hóa AI và ML, giúp việc đi lại an toàn hơn, chăm sóc sức khỏe tốt hơn và năng lượng thông minh hơn.

Dấu thời gian:

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