Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, bảo mật và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS

Đây là một bài đăng trên blog của khách được viết với sự giàu có.

sức khỏe vô thần nhà cung cấp phần mềm và dịch vụ hỗ trợ mạng hàng đầu cho các nhóm y tế và hệ thống y tế trên toàn quốc. Hồ sơ sức khỏe điện tử, quản lý chu kỳ doanh thu và các công cụ tham gia của bệnh nhân cho phép truy cập mọi lúc, mọi nơi, mang lại kết quả tài chính tốt hơn cho khách hàng và cho phép khách hàng của nhà cung cấp dịch vụ chăm sóc chất lượng tốt hơn.

Trong không gian trí tuệ nhân tạo (AI), Athenahealth sử dụng khoa học dữ liệu và máy học (ML) để tăng tốc các quy trình kinh doanh và cung cấp các đề xuất, dự đoán và thông tin chi tiết trên nhiều dịch vụ. Từ lần triển khai đầu tiên trong các dịch vụ tài liệu tự động, xử lý liên tục hàng triệu tài liệu của nhà cung cấp - bệnh nhân, đến công việc gần đây hơn trong trợ lý ảo và cải thiện hiệu suất chu kỳ doanh thu, Athenahealth tiếp tục áp dụng AI để giúp thúc đẩy hiệu quả, khả năng dịch vụ và kết quả tốt hơn cho các nhà cung cấp và bệnh nhân của họ.

Bài đăng trên blog này trình bày cách Athenahealth sử dụng Kubeflow trên AWS (một bản phân phối AWS cụ thể của Kubeflow) để xây dựng và hợp lý hóa quy trình làm việc khoa học dữ liệu từ đầu đến cuối nhằm duy trì công cụ thiết yếu, tối ưu hóa hiệu quả hoạt động, tăng năng suất của nhà khoa học dữ liệu và tạo tiền đề để mở rộng khả năng ML của họ dễ dàng hơn.

Kubeflow là nền tảng ML mã nguồn mở dành riêng cho việc triển khai luồng công việc ML trên Kubernetes đơn giản, di động và có thể mở rộng. Kubeflow đạt được điều này bằng cách kết hợp các công cụ mã nguồn mở có liên quan tích hợp tốt với Kubernetes. Một số dự án này bao gồm Argo cho điều phối đường ống, Istio cho lưới dịch vụ, Jupyter cho máy tính xách tay, Spark, TensorBoard và Katib. Kubeflow Pipelines giúp xây dựng và triển khai các quy trình ML di động, có thể mở rộng, có thể bao gồm các bước như trích xuất dữ liệu, tiền xử lý, đào tạo mô hình và đánh giá mô hình dưới dạng các đường ống có thể lặp lại.

AWS đang đóng góp cho cộng đồng Kubeflow mã nguồn mở bằng cách cung cấp bản phân phối Kubeflow của riêng mình (được gọi là Kubeflow trên AWS) giúp các tổ chức như Athenahealth xây dựng quy trình làm việc ML có độ tin cậy cao, an toàn, di động và có thể mở rộng với chi phí hoạt động giảm thông qua tích hợp với các dịch vụ được AWS quản lý. AWS cung cấp các tùy chọn triển khai Kubeflow khác nhau như triển khai với Nhận thức về Amazon, triển khai với Dịch vụ cơ sở dữ liệu quan hệ của Amazon (Amazon RDS) và Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) và triển khai vani. Để biết chi tiết về tích hợp dịch vụ và các tiện ích bổ sung có sẵn cho từng tùy chọn này, hãy tham khảo Triển khai.

Ngày nay, Kubeflow trên AWS cung cấp một đường dẫn rõ ràng để sử dụng Kubeflow, được tăng cường với các dịch vụ AWS sau:

Nhiều khách hàng AWS đang tận dụng lợi thế của Kubeflow trên phân phối AWS, bao gồm cả Athenahealth.

Tại đây, nhóm MLOps của Athenahealth thảo luận về những thách thức mà họ gặp phải và các giải pháp họ đã tạo ra trong hành trình Kubeflow của mình.

Những thách thức với môi trường ML trước đây

Trước khi chúng tôi áp dụng Kubeflow trên AWS, các nhà khoa học dữ liệu của chúng tôi đã sử dụng một bộ công cụ được tiêu chuẩn hóa và quy trình cho phép tính linh hoạt trong công nghệ và quy trình làm việc được sử dụng để đào tạo một mô hình nhất định. Các thành phần mẫu của công cụ tiêu chuẩn hóa bao gồm API nhập dữ liệu, các công cụ quét bảo mật, đường dẫn CI / CD được xây dựng và duy trì bởi một nhóm khác trong Athenahealth và một nền tảng phục vụ chung do nhóm MLOps xây dựng và duy trì. Tuy nhiên, khi việc sử dụng AI và ML của chúng ta ngày càng phát triển, thì sự đa dạng của các công cụ và cơ sở hạ tầng được tạo ra cho mỗi mô hình đã tăng lên. Mặc dù chúng tôi vẫn có thể hỗ trợ quy trình hiện có, nhưng chúng tôi đã thấy những thách thức sau đây:

  • Duy trì và tăng trưởng - Việc tái tạo và duy trì môi trường đào tạo mô hình tốn nhiều công sức hơn do số lượng mô hình được triển khai tăng lên. Mỗi dự án đều duy trì tài liệu chi tiết phác thảo cách sử dụng từng tập lệnh để xây dựng mô hình cuối cùng. Trong nhiều trường hợp, đây là một quá trình phức tạp bao gồm từ 5 đến 10 tập lệnh với một số đầu ra cho mỗi tập lệnh. Chúng phải được theo dõi thủ công với hướng dẫn chi tiết về cách mỗi đầu ra sẽ được sử dụng trong các quy trình tiếp theo. Duy trì điều này theo thời gian trở nên cồng kềnh. Hơn nữa, khi các dự án trở nên phức tạp hơn, số lượng các công cụ cũng tăng lên. Ví dụ: hầu hết các mô hình đều sử dụng Spark và TensorFlow với GPU, đòi hỏi nhiều cấu hình môi trường hơn. Theo thời gian, người dùng sẽ chuyển sang các phiên bản công cụ mới hơn trong môi trường phát triển của họ nhưng sau đó không thể chạy các tập lệnh cũ hơn khi các phiên bản đó trở nên không tương thích. Do đó, việc duy trì và bổ sung các dự án cũ hơn đòi hỏi nhiều thời gian và nỗ lực kỹ thuật hơn. Ngoài ra, khi các nhà khoa học dữ liệu mới tham gia vào nhóm, việc chuyển giao kiến ​​thức và giới thiệu mất nhiều thời gian hơn, vì đồng bộ hóa môi trường cục bộ bao gồm nhiều phụ thuộc không có tài liệu. Việc chuyển đổi giữa các dự án gặp phải các vấn đề giống nhau vì mỗi mô hình có quy trình làm việc riêng.
  • Bảo mật - Chúng tôi coi trọng vấn đề bảo mật và do đó ưu tiên tuân thủ tất cả các nghĩa vụ theo hợp đồng, pháp lý và quy định liên quan đến ML và khoa học dữ liệu. Dữ liệu phải được sử dụng, lưu trữ và truy cập theo những cách cụ thể và chúng tôi đã nhúng các quy trình mạnh mẽ để đảm bảo các hoạt động của chúng tôi tuân thủ các nghĩa vụ pháp lý của chúng tôi cũng như phù hợp với các phương pháp hay nhất trong ngành. Trước khi áp dụng Kubeflow, đảm bảo rằng dữ liệu được lưu trữ và truy cập theo một cách cụ thể liên quan đến việc xác minh thường xuyên trên nhiều quy trình công việc đa dạng. Chúng tôi biết rằng chúng tôi có thể cải thiện hiệu quả bằng cách hợp nhất các quy trình công việc đa dạng này vào một nền tảng duy nhất. Tuy nhiên, nền tảng đó cần phải đủ linh hoạt để tích hợp tốt với công cụ tiêu chuẩn hóa của chúng tôi.
  • Hoạt động - Chúng tôi cũng nhận thấy cơ hội để tăng hiệu quả hoạt động và quản lý thông qua việc tập trung hóa việc ghi nhật ký và giám sát quy trình công việc. Bởi vì mỗi nhóm đã phát triển các công cụ của riêng họ, chúng tôi đã thu thập thông tin này từ từng quy trình làm việc riêng lẻ và tổng hợp chúng.

Nhóm khoa học dữ liệu đã đánh giá các giải pháp khác nhau để hợp nhất các quy trình làm việc. Ngoài việc giải quyết những yêu cầu này, chúng tôi đã tìm kiếm một giải pháp có thể tích hợp hoàn toàn với cơ sở hạ tầng và công cụ được tiêu chuẩn hóa hiện có. Chúng tôi đã chọn Amazon EKS và Kubeflow trên AWS làm giải pháp quy trình làm việc của mình.

Chu trình phát triển nhà khoa học dữ liệu kết hợp Kubeflow

Một dự án khoa học dữ liệu bắt đầu với một phương án rõ ràng: không có dữ liệu, không có mã, chỉ có vấn đề kinh doanh có thể được giải quyết với ML. Nhiệm vụ đầu tiên là bằng chứng khái niệm (POC) để khám phá xem dữ liệu có đủ tín hiệu để tạo ra mô hình ML hiệu quả trong việc giải quyết vấn đề kinh doanh hay không, bắt đầu bằng việc truy vấn tập dữ liệu thô từ kho dữ liệu Snowflake của chúng tôi. Giai đoạn này là lặp đi lặp lại và các nhà khoa học dữ liệu sử dụng các vỏ Kubernetes hoặc sổ ghi chép Kubeflow Jupyter trong quá trình này.

Cụm Kubeflow của chúng tôi sử dụng trình tự động phân tích cụm Karpenter, giúp dễ dàng thu thập tài nguyên đối với các nhà khoa học dữ liệu vì họ chỉ cần tập trung vào việc xác định các loại phiên bản mong muốn, trong khi công việc cung cấp được thực hiện bởi một tập hợp các trình cung cấp Karpenter được xác định trước. Chúng tôi có các bộ cấp phép riêng biệt cho các loại phiên bản CPU và GPU và tất cả các phiên bản được Amazon EKS hỗ trợ đều thuộc một trong hai loại này theo cấu hình bộ cấp phép của chúng tôi. Các nhà khoa học dữ liệu chọn các loại cá thể bằng cách sử dụng bộ chọn nút và Karpenter sẽ quản lý vòng đời của nút.

Sau khi phát triển truy vấn, các nhà khoa học dữ liệu trích xuất dữ liệu thô đến một vị trí trên Amazon S3, sau đó khởi chạy sổ ghi chép Jupyter từ giao diện người dùng AWS Kubeflow để khám phá dữ liệu. Mục đích là tạo bộ tính năng sẽ được sử dụng để đào tạo mô hình đầu tiên. Điều này cho phép các nhà khoa học dữ liệu xác định xem có đủ tín hiệu trong dữ liệu để đáp ứng nhu cầu kinh doanh của khách hàng hay không.

Sau khi có kết quả mỹ mãn, các nhà khoa học dữ liệu chuyển sang giai đoạn tiếp theo của chu kỳ phát triển và biến những khám phá của họ thành một đường dẫn mạnh mẽ. Họ chuyển đổi mã POC thành mã chất lượng sản xuất chạy trên quy mô lớn. Để đảm bảo tuân thủ thông qua việc sử dụng các thư viện đã được phê duyệt, một vùng chứa được tạo với hình ảnh Docker cơ sở thích hợp. Đối với các nhà khoa học dữ liệu của chúng tôi, chúng tôi nhận thấy rằng việc cung cấp hình ảnh cơ sở Python, TensorFlow và Spark tiêu chuẩn mang lại đủ tính linh hoạt cho hầu hết, nếu không phải tất cả, khối lượng công việc. Sau đó, họ có thể sử dụng Dockerfile của thành phần của họ để tùy chỉnh thêm môi trường phát triển của họ. Dockerfile này sau đó được sử dụng bởi quy trình CI / CD để xây dựng hình ảnh các thành phần sẽ được sử dụng trong sản xuất, do đó duy trì tính nhất quán giữa môi trường phát triển và sản xuất.

Chúng tôi có một công cụ cung cấp cho các nhà khoa học dữ liệu khả năng khởi chạy môi trường phát triển của họ trong một nhóm chạy trên Kubernetes. Khi nhóm này đang chạy, các nhà khoa học dữ liệu sau đó có thể đính kèm Visual Studio Code IDE trực tiếp vào nhóm và gỡ lỗi mã mô hình của chúng. Sau khi mã chạy thành công, họ có thể đẩy các thay đổi của mình sang git và một môi trường phát triển mới được tạo với những thay đổi gần đây nhất.

Quy trình khoa học dữ liệu tiêu chuẩn bao gồm các giai đoạn bao gồm trích xuất, tiền xử lý, đào tạo và đánh giá. Mỗi giai đoạn trong đường dẫn xuất hiện dưới dạng một thành phần trong Kubeflow, bao gồm một nhóm Kubernetes chạy một lệnh với một số thông tin được chuyển vào dưới dạng tham số. Các tham số này có thể là giá trị tĩnh hoặc tham chiếu đến đầu ra từ một thành phần trước đó. Hình ảnh Docker được sử dụng trong nhóm được xây dựng từ quy trình CI / CD. Chi tiết về quy trình này xuất hiện trong quy trình làm việc CI / CD được thảo luận trong phần tiếp theo.

Chu kỳ phát triển trên Kubeflow. Quy trình phát triển bắt đầu ở bên trái với POC. Mô hình hoàn chỉnh sẽ được triển khai trên nền tảng phục vụ mô hình athenahealth chạy trên Amazon ECS.

Chu kỳ phát triển trên Kubeflow. Quy trình phát triển bắt đầu ở bên trái với POC. Mô hình đã hoàn thành được triển khai cho nền tảng phục vụ mô hình sức khỏe nhân dân chạy trên Amazon ECS.

Quy trình CI / CD hỗ trợ quy trình làm việc tự động

Là một phần của quy trình CI / CD của chúng tôi, chúng tôi sử dụng Jenkins để xây dựng và kiểm tra tất cả các hình ảnh thành phần Kubeflow song song. Khi hoàn thành thành công, mẫu thành phần đường ống chứa các con trỏ tham chiếu đến hình ảnh và đường dẫn kết quả được tải lên Kubeflow. Các thông số trong đường ống Jenkins cho phép người dùng khởi chạy đường ống và chạy các bài kiểm tra đào tạo mô hình của họ sau khi xây dựng thành công.

Ngoài ra, để duy trì một chu kỳ phát triển ngắn, các nhà khoa học dữ liệu cũng có thể khởi chạy đường ống từ máy cục bộ của họ, sửa đổi bất kỳ thông số đường ống nào mà họ có thể đang thử nghiệm.

Công cụ tồn tại để đảm bảo các con trỏ tham chiếu từ bản dựng CI / CD được sử dụng theo mặc định. Nếu có một cấu phần có thể triển khai trong repo, thì logic CI / CD sẽ tiếp tục triển khai cấu phần đó cho nền tảng phục vụ mô hình sức khỏe vô thần (Dịch vụ Dự đoán) chạy trên Amazon ECS với Cổng xa AWS. Sau khi tất cả các giai đoạn này trôi qua, nhà khoa học dữ liệu kết hợp mã với nhánh chính. Sau đó, các đường ống và các đồ tạo tác có thể triển khai được đưa vào sản xuất.

Quy trình triển khai CI / CD. Sơ đồ này mô tả quy trình xây dựng và triển khai Khoa học dữ liệu. Quá trình CI / CD được điều khiển bởi Jenkins.

Bảo mật

Trong việc hợp nhất quy trình làm việc khoa học dữ liệu của mình, chúng tôi đã có thể tập trung hóa cách tiếp cận của mình để đảm bảo quy trình đào tạo. Trong phần này, chúng tôi thảo luận về cách tiếp cận của chúng tôi đối với dữ liệu và bảo mật cụm.

Bảo mật dữ liệu

Bảo mật dữ liệu là điều quan trọng hàng đầu tại Athenahealth. Vì lý do này, chúng tôi phát triển và duy trì cơ sở hạ tầng hoàn toàn tuân thủ các quy định và tiêu chuẩn để bảo vệ tính bảo mật và tính toàn vẹn của những dữ liệu này.

Để đảm bảo chúng tôi đáp ứng các tiêu chuẩn tuân thủ dữ liệu, chúng tôi cung cấp cơ sở hạ tầng AWS của mình theo các nguyên tắc dành cho doanh nghiệp của chúng tôi. Hai kho lưu trữ dữ liệu chính là Amazon RDS cho siêu dữ liệu đường ống có khả năng mở rộng cao và Amazon S3 cho các tạo tác mô hình và đường ống. Đối với Amazon S3, chúng tôi đảm bảo các nhóm được mã hóa, các điểm cuối HTTPS được thực thi và các chính sách nhóm và Quản lý truy cập và nhận dạng AWS (IAM) các vai trò tuân theo các nguyên tắc về đặc quyền ít nhất khi cho phép truy cập vào dữ liệu. Điều này cũng đúng với dữ liệu Amazon RDS: mã hóa luôn được bật và các nhóm bảo mật và quyền truy cập thông tin xác thực tuân theo nguyên tắc ít đặc quyền nhất. Việc tiêu chuẩn hóa này đảm bảo rằng chỉ các bên được ủy quyền mới có quyền truy cập vào dữ liệu và quyền truy cập này được theo dõi.

Ngoài các biện pháp này, nền tảng cũng trải qua các đánh giá về mối đe dọa bảo mật và quét bảo mật và tuân thủ liên tục.

Chúng tôi cũng giải quyết các yêu cầu lưu giữ dữ liệu thông qua quản lý vòng đời dữ liệu cho tất cả các nhóm S3 có chứa dữ liệu nhạy cảm. Chính sách này tự động di chuyển dữ liệu sang Sông băng Amazon S3 sau 30 ngày tạo. Các trường hợp ngoại lệ được quản lý thông qua các yêu cầu truy xuất dữ liệu và được chấp thuận hoặc từ chối trên cơ sở từng trường hợp. Điều này đảm bảo rằng tất cả các quy trình làm việc đều tuân thủ chính sách lưu giữ dữ liệu. Điều này cũng giải quyết vấn đề với việc khôi phục dữ liệu nếu một mô hình hoạt động kém và cần phải đào tạo lại hoặc khi một mô hình mới phải được đánh giá dựa trên sự lặp lại lịch sử của tập dữ liệu của mô hình cũ hơn.

Để hạn chế quyền truy cập vào Amazon S3 và Amazon RDS từ bên trong Kubeflow trên AWS và Amazon EKS, chúng tôi sử dụng IRSA (Vai trò IAM cho Tài khoản Dịch vụ), cung cấp cấp phép dựa trên IAM cho các tài nguyên trong Kubernetes. Mỗi người thuê trong Kubeflow có một tài khoản dịch vụ được tạo trước duy nhất mà chúng tôi liên kết với một vai trò IAM được tạo riêng để đáp ứng các yêu cầu truy cập của người thuê. Quyền truy cập của người dùng đối với người thuê cũng bị hạn chế khi sử dụng tư cách thành viên nhóm nhóm người dùng Amazon Cognito cho mỗi người dùng. Khi người dùng được xác thực vào cụm, mã thông báo được tạo chứa xác nhận quyền sở hữu nhóm và Kubernetes RBAC sử dụng thông tin này để cho phép hoặc từ chối quyền truy cập vào một tài nguyên cụ thể trong cụm. Thiết lập này được giải thích chi tiết hơn trong phần tiếp theo.

Bảo mật cụm bằng cách sử dụng cách ly nhiều người dùng

Như chúng ta đã lưu ý trong phần trước, các nhà khoa học dữ liệu thực hiện phân tích dữ liệu khám phá, chạy phân tích dữ liệu và đào tạo các mô hình ML. Để phân bổ tài nguyên, tổ chức dữ liệu và quản lý quy trình làm việc dựa trên các dự án, Kubeflow trên AWS cung cấp sự cô lập dựa trên không gian tên Kubernetes. Sự cô lập này hoạt động để tương tác với giao diện người dùng Kubeflow; tuy nhiên, nó không cung cấp bất kỳ công cụ nào để kiểm soát quyền truy cập vào API Kubernetes bằng Kubectl. Điều này có nghĩa là quyền truy cập của người dùng có thể được kiểm soát trên giao diện người dùng Kubeflow nhưng không qua API Kubernetes thông qua Kubectl.

Kiến trúc được mô tả trong sơ đồ sau giải quyết vấn đề này bằng cách thống nhất quyền truy cập vào các dự án trong Kubeflow dựa trên tư cách thành viên nhóm. Để đạt được điều này, chúng tôi đã tận dụng các tệp kê khai Kubeflow trên AWS, có tích hợp với nhóm người dùng Amazon Cognito. Ngoài ra, chúng tôi sử dụng kiểm soát truy cập dựa trên vai trò của Kubernetes (RBAC) để kiểm soát ủy quyền trong cụm. Quyền của người dùng được cấp phép dựa trên tư cách thành viên nhóm Amazon Cognito. Thông tin này được chuyển đến cụm với mã thông báo được tạo bởi ứng dụng khách OIDC. Quá trình này được đơn giản hóa nhờ chức năng Amazon EKS tích hợp cho phép các nhà cung cấp danh tính OIDC liên kết xác thực với cụm.

Theo mặc định, xác thực Amazon EKS được thực hiện bởi trình xác thực IAM, đây là một công cụ cho phép xác thực với một cụm EKS sử dụng thông tin xác thực IAM. Phương pháp xác thực này có giá trị của nó; tuy nhiên, nó không phù hợp với trường hợp sử dụng của chúng tôi vì Athenahealth sử dụng Microsoft Azure Active Directory cho dịch vụ nhận dạng trên toàn tổ chức.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Kubernetes cô lập không gian tên. Các nhà khoa học dữ liệu có thể trở thành thành viên của một hoặc nhiều nhóm khi cần thiết cho công việc của họ. Quyền truy cập được xem xét một cách thường xuyên và bị xóa khi thích hợp.

Azure Active Directory, là một dịch vụ nhận dạng toàn doanh nghiệp, là nguồn chân lý để kiểm soát quyền truy cập của người dùng vào cụm Kubeflow. Việc thiết lập cho việc này bao gồm tạo Ứng dụng Azure Enterprise hoạt động như dịch vụ chính và thêm nhóm cho các đối tượng thuê khác nhau yêu cầu quyền truy cập vào cụm. Thiết lập này trên Azure được phản ánh trong Amazon Cognito bằng cách thiết lập nhà cung cấp danh tính OIDC được liên kết cung cấp trách nhiệm xác thực cho Azure. Quyền truy cập vào nhóm Azure được kiểm soát bởi SailPoint IdentityIQ, SailPoint IdentityIQ sẽ gửi yêu cầu truy cập đến chủ sở hữu dự án để cho phép hoặc từ chối nếu thích hợp. Trong nhóm người dùng Amazon Cognito, hai ứng dụng khách được tạo: một ứng dụng được sử dụng để thiết lập xác thực cho cụm Kubernetes bằng cách sử dụng nhà cung cấp danh tính OIDC và ứng dụng còn lại để bảo mật xác thực Kubeflow vào giao diện người dùng Kubeflow. Các ứng dụng khách này được định cấu hình để chuyển các xác nhận quyền sở hữu nhóm khi xác thực với cụm và các xác nhận quyền sở hữu nhóm này được sử dụng cùng với RBAC để thiết lập ủy quyền trong cụm.

Các ràng buộc vai trò Kubernetes RBAC được thiết lập giữa các nhóm và vai trò cụm Kubeflow-edit, được tạo khi cài đặt Kubeflow trong nhóm. Ràng buộc vai trò này đảm bảo bất kỳ người dùng nào tương tác với cụm sau khi đăng nhập qua OIDC đều có thể truy cập các không gian tên mà họ có quyền như được xác định trong các xác nhận quyền sở hữu nhóm của họ. Mặc dù điều này hoạt động đối với người dùng tương tác với cụm bằng Kubectl, nhưng giao diện người dùng Kubeflow hiện không cung cấp quyền truy cập cho người dùng dựa trên tư cách thành viên nhóm vì nó không sử dụng RBAC. Thay vào đó, nó sử dụng tài nguyên Chính sách ủy quyền Istio để kiểm soát quyền truy cập cho người dùng. Để vượt qua thách thức này, chúng tôi đã phát triển một bộ điều khiển tùy chỉnh đồng bộ hóa người dùng bằng cách thăm dò các nhóm Amazon Cognito và thêm hoặc xóa các ràng buộc vai trò tương ứng cho từng người dùng thay vì theo nhóm. Thiết lập này cho phép người dùng có cùng mức quyền khi tương tác với cả giao diện người dùng Kubeflow và Kubectl.

Hiệu quả hoạt động

Trong phần này, chúng tôi thảo luận về cách chúng tôi đã tận dụng các công cụ nguồn mở và AWS có sẵn cho chúng tôi để quản lý và gỡ lỗi quy trình công việc của chúng tôi cũng như để giảm thiểu tác động hoạt động của việc nâng cấp Kubeflow.

Ghi nhật ký và giám sát

Để ghi nhật ký, chúng tôi sử dụng FluentD để đẩy tất cả nhật ký vùng chứa của chúng tôi sang Dịch vụ Tìm kiếm Mở của Amazon và chỉ số hệ thống cho Prometheus. Sau đó, chúng tôi sử dụng Kibana và giao diện người dùng Grafana để tìm kiếm và lọc các nhật ký và chỉ số. Sơ đồ sau đây mô tả cách chúng tôi thiết lập điều này.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Ghi nhật ký Kubeflow. Chúng tôi sử dụng cả giao diện người dùng Grafana và Kibana để xem và sàng lọc các nhật ký

Ảnh chụp màn hình sau là giao diện người dùng Kibana từ đường dẫn của chúng tôi.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Chế độ xem giao diện người dùng Kibana mẫu. Kibana cho phép các chế độ xem tùy chỉnh.

Nâng cấp cụm Kubeflow an toàn

Khi đưa người dùng vào Kubeflow trên AWS, chúng tôi duy trì trải nghiệm người dùng đáng tin cậy và nhất quán đồng thời cho phép nhóm MLOps luôn nhanh nhẹn với việc phát hành và tích hợp các tính năng mới. Nhìn bề ngoài, Kustomize có vẻ theo mô-đun để chúng tôi cho phép làm việc và nâng cấp từng thành phần một mà không ảnh hưởng đến những thành phần khác, do đó cho phép chúng tôi thêm các khả năng mới mà không gây gián đoạn tối thiểu cho người dùng. Tuy nhiên, trong thực tế, có những tình huống trong đó cách tiếp cận tốt nhất là chỉ cần tạo một cụm Kubernetes mới hơn là áp dụng các nâng cấp cấp thành phần cho các cụm hiện có. Chúng tôi đã tìm thấy hai trường hợp sử dụng trong đó việc tạo các cụm hoàn toàn mới sẽ có ý nghĩa hơn:

  • Nâng cấp lên phiên bản Kubernetes trong đó AWS cung cấp các nâng cấp cụm tại chỗ. Tuy nhiên, thật khó để kiểm tra xem từng tài nguyên Kubeflow và Kubernetes có hoạt động như dự kiến ​​hay không và các tệp kê khai vẫn tương thích ngược.
  • Nâng cấp Kubeflow lên bản phát hành mới hơn trong đó có một số tính năng được thêm vào hoặc sửa đổi và hầu như luôn luôn không phải là một ý tưởng đầy hứa hẹn để thực hiện nâng cấp tại chỗ trên một cụm Kubernetes hiện có.

Để giải quyết vấn đề này, chúng tôi đã phát triển một chiến lược cho phép chúng tôi có các thay thế cụm an toàn mà không ảnh hưởng đến bất kỳ khối lượng công việc hiện có nào. Để đạt được điều này, chúng tôi phải đáp ứng các tiêu chí sau:

  • Tách biệt tài nguyên lưu trữ và tính toán Kubeflow để siêu dữ liệu đường ống, cấu phần đường ống và dữ liệu người dùng được giữ lại khi hủy cấp phép cụm cũ hơn
  • Tích hợp với Kubeflow trên các tệp kê khai AWS để khi xảy ra nâng cấp phiên bản Kubeflow, các thay đổi tối thiểu là bắt buộc
  • Có một cách dễ dàng để quay trở lại nếu sự cố xảy ra sau khi nâng cấp cụm
  • Có một giao diện đơn giản để thúc đẩy một cụm ứng viên vào sản xuất

Sơ đồ sau minh họa kiến ​​trúc này.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Nâng cấp cụm Kubeflow an toàn. Sau khi thử nghiệm Ứng cử viên Kubeflow thành công, nó được thăng cấp lên Kubeflow Prod thông qua bản cập nhật cho Lộ trình 53.

Kubeflow trên các tệp kê khai AWS được đóng gói sẵn với các tích hợp Amazon RDS và Amazon S3. Với các dịch vụ được quản lý này hoạt động như các kho lưu trữ dữ liệu chung, chúng tôi có thể thiết lập chiến lược triển khai màu xanh lam. Để đạt được điều này, chúng tôi đảm bảo rằng siêu dữ liệu đường ống vẫn tồn tại trong Amazon RDS, hoạt động độc lập với cụm EKS và các bản ghi đường ống cũng như hiện vật vẫn tồn tại trong Amazon S3. Ngoài siêu dữ liệu và tạo tác đường ống, chúng tôi cũng thiết lập FluentD để định tuyến nhật ký nhóm đến Dịch vụ Tìm kiếm Mở của Amazon.

Điều này đảm bảo rằng lớp lưu trữ được tách biệt hoàn toàn khỏi lớp tính toán và do đó cho phép thử nghiệm các thay đổi trong quá trình cập nhật phiên bản Kubeflow trên một cụm EKS hoàn toàn mới. Sau khi tất cả các thử nghiệm thành công, chúng tôi có thể chỉ cần thay đổi Amazon Route 53 Bản ghi DNS vào cụm ứng viên lưu trữ Kubeflow. Ngoài ra, chúng tôi giữ cho cụm cũ chạy như một bản sao lưu trong vài ngày để đề phòng trường hợp chúng tôi cần khôi phục lại.

Lợi ích của Amazon EKS và Kubeflow trên AWS đối với đường dẫn ML của chúng tôi

Amazon EKS và gói Kubeflow trên AWS đã chuyển quy trình phát triển của chúng tôi sang một mô hình khuyến khích mạnh mẽ việc đào tạo mô hình có thể lặp lại. Những công cụ này cho phép chúng tôi có các cụm được xác định đầy đủ với người thuê được xác định đầy đủ và chạy mã được xác định đầy đủ.

Rất nhiều chiến thắng từ việc xây dựng nền tảng này ít mang tính định lượng hơn và liên quan nhiều hơn đến cách quy trình làm việc đã được cải thiện cho cả nhà phát triển nền tảng và người dùng. Ví dụ: MinIO đã được thay thế bằng quyền truy cập trực tiếp vào Amazon S3, điều này đưa chúng ta đến gần hơn với quy trình công việc ban đầu và giảm số lượng dịch vụ mà chúng ta phải duy trì. Chúng tôi cũng có thể sử dụng Amazon RDS làm chương trình phụ trợ cho Kubeflow, cho phép di chuyển giữa các cụm dễ dàng hơn và cung cấp cho chúng tôi khả năng sao lưu đường ống hàng đêm.

Chúng tôi cũng nhận thấy những cải tiến trong tích hợp Kubeflow với các dịch vụ được quản lý AWS có lợi. Ví dụ: với Amazon RDS, Amazon S3 và Amazon Cognito được định cấu hình sẵn trong tệp kê khai Kubeflow trên AWS, chúng tôi tiết kiệm thời gian và công sức cập nhật lên các bản phân phối mới hơn của Kubeflow. Khi chúng tôi sử dụng để sửa đổi bản kê khai Kubeflow chính thức theo cách thủ công, việc cập nhật lên phiên bản mới sẽ mất vài tuần, từ thiết kế đến thử nghiệm.

Chuyển sang Amazon EKS cho chúng tôi cơ hội xác định cụm của mình trong Kustomize (hiện là một phần của Kubectl) và Terraform. Hóa ra là đối với công việc nền tảng, Kubernetes và Terraform rất dễ làm việc sau khi dành đủ thời gian để tìm hiểu. Sau nhiều lần lặp lại, các công cụ có sẵn cho chúng tôi giúp chúng tôi rất dễ dàng thực hiện các hoạt động nền tảng tiêu chuẩn như nâng cấp một thành phần hoặc hoán đổi toàn bộ cụm phát triển. So với chạy công việc thô Đám mây điện toán đàn hồi Amazon (Amazon EC2), thật khó để so sánh sự khác biệt to lớn mà nó tạo ra để có các nhóm được xác định rõ ràng với các cơ chế thử lại và dọn dẹp tài nguyên được đảm bảo được tích hợp sẵn.

Kubernetes cung cấp các tiêu chuẩn bảo mật tuyệt vời và chúng tôi mới chỉ sơ lược về những gì mà sự cách ly nhiều người dùng cho phép chúng tôi thực hiện. Chúng tôi coi sự cô lập nhiều người dùng là một mô hình có nhiều lợi nhuận hơn trong tương lai khi nền tảng đào tạo tạo ra dữ liệu cấp sản xuất và chúng tôi thu hút các nhà phát triển từ bên ngoài nhóm của mình.

Trong khi đó, Kubeflow cho phép chúng tôi đào tạo mô hình có thể tái tạo. Ngay cả với cùng một dữ liệu, không có khóa đào tạo nào tạo ra các mô hình giống hệt nhau, nhưng chúng tôi có điều tốt nhất tiếp theo. Với Kubeflow, chúng tôi biết chính xác mã và dữ liệu nào được sử dụng để đào tạo một mô hình. Việc giới thiệu đã được cải thiện rất nhiều vì mỗi bước trong quy trình của chúng tôi đều được xác định rõ ràng và có lập trình. Khi các nhà khoa học dữ liệu mới có nhiệm vụ sửa lỗi, họ cần ít thao tác hơn nhiều vì có một cấu trúc rõ ràng về cách sử dụng đầu ra của mã giữa các giai đoạn.

Sử dụng Kubeflow cũng mang lại nhiều cải tiến về hiệu suất so với chạy trên một phiên bản EC2 duy nhất. Thông thường trong đào tạo mô hình, các nhà khoa học dữ liệu cần các công cụ và tối ưu hóa khác nhau để tiền xử lý và đào tạo. Ví dụ: tiền xử lý thường được chạy bằng các công cụ xử lý dữ liệu phân tán, như Spark, trong khi quá trình đào tạo thường được chạy bằng các phiên bản GPU. Với các đường ống Kubeflow, họ có thể chỉ định các loại phiên bản khác nhau cho các giai đoạn khác nhau trong đường ống. Điều này cho phép họ sử dụng các phiên bản GPU mạnh mẽ trong một giai đoạn và một nhóm các máy nhỏ hơn để xử lý phân tán trong một giai đoạn khác. Ngoài ra, vì đường ống Kubeflow mô tả sự phụ thuộc giữa các giai đoạn, các đường ống có thể chạy các giai đoạn song song.

Cuối cùng, vì chúng tôi đã tạo một quy trình để thêm người thuê vào cụm, nên giờ đây có một cách chính thức hơn để đăng ký nhóm với người thuê trên cụm. Bởi vì chúng tôi sử dụng Kubecost để theo dõi chi phí trong cụm EKS của mình, nó cho phép chúng tôi phân bổ chi phí cho một dự án duy nhất thay vì phân bổ chi phí ở cấp tài khoản, bao gồm tất cả các dự án khoa học dữ liệu. Kubecost trình bày một báo cáo về số tiền đã chi tiêu cho mỗi không gian tên, được liên kết chặt chẽ với người thuê hoặc nhóm chịu trách nhiệm điều hành đường ống.

Mặc dù có tất cả các lợi ích, chúng tôi sẽ thận trọng chỉ thực hiện loại di chuyển này nếu có tổng lượt mua từ người dùng. Người dùng dành thời gian nhận được rất nhiều lợi ích từ việc sử dụng Amazon EKS và Kubernetes, nhưng có một đường cong học tập đáng kể.

Kết luận

Với việc triển khai đường ống Kubeflow trên AWS trong cơ sở hạ tầng ML end-to-end của chúng tôi, chúng tôi đã có thể củng cố và chuẩn hóa quy trình công việc khoa học dữ liệu của mình trong khi vẫn giữ lại công cụ thiết yếu của chúng tôi (chẳng hạn như CI / CD và phục vụ mô hình). Các nhà khoa học dữ liệu của chúng tôi hiện có thể di chuyển giữa các dự án dựa trên quy trình làm việc này mà không cần phải học cách duy trì một bộ công cụ hoàn toàn khác. Đối với một số mô hình của chúng tôi, chúng tôi cũng ngạc nhiên thú vị về tốc độ của quy trình làm việc mới (nhanh hơn năm lần), cho phép nhiều lần lặp lại đào tạo hơn và do đó tạo ra các mô hình có dự đoán tốt hơn.

Chúng tôi cũng đã thiết lập một nền tảng vững chắc để tăng cường khả năng MLOps và mở rộng số lượng và quy mô các dự án của chúng tôi. Ví dụ: khi chúng tôi tăng cường tư thế quản trị của mình theo mô hình truyền thống và theo dõi, chúng tôi đã giảm trọng tâm từ hơn 15 quy trình công việc xuống chỉ còn một quy trình. Và khi lỗ hổng Log4shell lộ ra vào cuối năm 2021, chúng tôi có thể tập trung vào một quy trình làm việc duy nhất và nhanh chóng khắc phục khi cần (thực hiện Đăng ký container đàn hồi Amazon (Amazon ECR) quét, nâng cấp Dịch vụ Tìm kiếm Mở của Amazon, cập nhật công cụ của chúng tôi, v.v.) với tác động tối thiểu đến công việc đang diễn ra của các nhà khoa học dữ liệu. Khi các cải tiến AWS và Kubeflow có sẵn, chúng tôi có thể kết hợp chúng khi chúng tôi thấy phù hợp.

Điều này đưa chúng ta đến một khía cạnh quan trọng và rõ ràng của Kubeflow về việc áp dụng AWS. Một trong những kết quả quan trọng của hành trình này là khả năng triển khai các bản nâng cấp và cải tiến đối với Kubeflow một cách liền mạch cho các nhà khoa học dữ liệu của chúng tôi. Mặc dù chúng tôi đã thảo luận về cách tiếp cận của chúng tôi đối với vấn đề này trước đó, nhưng chúng tôi cũng dựa trên các tệp kê khai Kubeflow do AWS cung cấp. Chúng tôi đã bắt đầu hành trình Kubeflow của mình như một bằng chứng về khái niệm vào năm 2019, trước khi phát hành phiên bản 1.0.0. (Chúng tôi hiện đang sử dụng phiên bản 1.4.1, đánh giá 1.5. AWS đã làm việc trên phiên bản 1.6.) Trong 3 năm qua, đã có ít nhất sáu bản phát hành có nội dung đáng kể. Thông qua cách tiếp cận có kỷ luật của họ để tích hợp và xác thực các nâng cấp này và phát hành các bản kê khai theo một lịch trình có thể dự đoán được, đáng tin cậy, nhóm Kubeflow tại AWS đã đóng vai trò quan trọng trong việc cho phép nhóm MLOps của Athenahealth lập kế hoạch lộ trình phát triển của chúng tôi, và do đó, phân bổ nguồn lực và các lĩnh vực trọng tâm của chúng tôi , tiến xa hơn vào tương lai với sự tự tin lớn hơn.

Bạn có thể theo Kho lưu trữ AWS Labs GitHub để theo dõi tất cả các đóng góp AWS cho Kubeflow. Bạn cũng có thể tìm thấy các nhóm AWS trên Kênh Slack Kubeflow #AWS; phản hồi của bạn ở đó giúp AWS ư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ả

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. 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.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái. Tyler Kalbach là Thành viên Chính của Nhân viên Kỹ thuật tại Athenahealth. Tyler có khoảng 7 năm kinh nghiệm trong Phân tích, Khoa học dữ liệu, Mạng thần kinh và phát triển các ứng dụng Máy học trong không gian Chăm sóc sức khỏe. Anh ấy đã đóng góp vào một số giải pháp Học máy hiện đang phục vụ lưu lượng truy cập sản xuất. Hiện đang làm việc với tư cách là Nhà khoa học dữ liệu chính trong tổ chức Kỹ thuật của Athenahealth, Tyler là một phần của nhóm đã xây dựng Nền tảng đào tạo Máy học mới cho sức khỏe vô thần ngay từ khi bắt đầu nỗ lực đó.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Victor Krylov là Thành viên Chính của Nhân viên Kỹ thuật tại Athenahealth. Victor là một kỹ sư và bậc thầy scrum, giúp các nhà khoa học dữ liệu xây dựng các đường dẫn máy học nhanh an toàn. Trong lĩnh vực chăm sóc sức khỏe, ông đã làm việc trên các giao diện, đặt hàng lâm sàng, kê đơn, lập lịch trình, phân tích và bây giờ là học máy. Anh ấy coi trọng mã được viết rõ ràng và được kiểm tra đơn vị tốt, nhưng lại có một nỗi ám ảnh không lành mạnh với mã một dòng. Khi rảnh rỗi, anh ấy thích nghe podcast trong khi dắt chó đi dạo.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Sasank Vemuri là Thành viên Chính của Nhân viên Kỹ thuật tại Athenahealth. Ông có kinh nghiệm làm việc với việc phát triển các giải pháp theo hướng dữ liệu trên các lĩnh vực như chăm sóc sức khỏe, bảo hiểm và tin sinh học. Sasank hiện đang làm việc với việc thiết kế và phát triển các nền tảng đào tạo và suy luận máy học trên AWS và Kubernetes giúp đào tạo và triển khai các giải pháp ML trên quy mô lớn.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Anu Tumkur là một Kiến trúc sư tại Athenahealth. Anu có hơn hai thập kỷ kinh nghiệm về kiến ​​trúc, thiết kế, phát triển xây dựng các sản phẩm phần mềm khác nhau trong máy học, hoạt động trên đám mây, dữ liệu lớn, đường ống dữ liệu phân tán theo thời gian thực, công nghệ quảng cáo, phân tích dữ liệu, phân tích truyền thông xã hội. Anu hiện đang làm kiến ​​trúc sư trong tổ chức Kỹ thuật Sản phẩm của Athenahealth trên các nhóm Nền tảng Học máy và Đường ống Dữ liệu.

Xây dựng quy trình học máy từ đầu đến cuối có thể lặp lại, an toàn và có thể mở rộng bằng cách sử dụng Kubeflow trên AWS PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.William Tsen là Giám đốc Kỹ thuật Cấp cao tại Athenahealth. Ông có hơn 20 năm kinh nghiệm lãnh đạo kỹ thuật xây dựng các giải pháp trong CNTT chăm sóc sức khỏe, điện toán phân tán dữ liệu lớn, mạng quang thông minh, hệ thống chỉnh sửa video thời gian thực, phần mềm doanh nghiệp và bảo lãnh chăm sóc sức khỏe nhóm. William hiện đang lãnh đạo hai nhóm tuyệt vời tại Athenahealth, Nhóm Vận hành Máy học và Nhóm kỹ sư DevOps, trong tổ chức Kỹ thuật Sản phẩm.

Dấu thời gian:

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