Bài đăng trên blog này được đồng viết bởi Jonathan Lee, Nelson Leung, Paul Min và Troy Squillaci từ Intel.
In Phần 1 của bài đăng này, chúng tôi đã thảo luận về cách Intel®3DAT cộng tác với Dịch vụ chuyên nghiệp về học máy của AWS (MLPS) để xây dựng một ứng dụng AI SaaS có thể mở rộng. 3DAT sử dụng thị giác máy tính và AI để nhận dạng, theo dõi và phân tích hơn 1,000 điểm dữ liệu cơ sinh học từ video tiêu chuẩn. Nó cho phép khách hàng tạo ra các sản phẩm dựa trên cơ chế sinh học phong phú và mạnh mẽ, chẳng hạn như ứng dụng web và thiết bị di động với dữ liệu hiệu suất chi tiết và hình ảnh trực quan ba chiều.
Trong Phần 2 của bài đăng này, chúng ta sẽ đi sâu hơn vào từng giai đoạn của kiến trúc. Chúng tôi khám phá các dịch vụ AWS được sử dụng để đáp ứng các yêu cầu thiết kế 3DAT, bao gồm Luồng dữ liệu Amazon Kinesis và Dịch vụ Kubernetes đàn hồi của Amazon (Amazon EKS), để triển khai theo quy mô các mô hình ước tính tư thế cần thiết cho phần mềm này dưới dạng ứng dụng dịch vụ (SaaS).
Tổng quan kiến trúc
Mục tiêu chính của nhóm MLPS là sản xuất các đường ống dẫn mô hình ước tính tư thế 2D và 3D và tạo ra một ứng dụng có chức năng và khả năng mở rộng. Sơ đồ sau minh họa kiến trúc giải pháp.
Kiến trúc hoàn chỉnh được chia thành năm thành phần chính:
- Các lớp giao diện ứng dụng người dùng
- Cơ sở dữ liệu
- Điều phối quy trình làm việc
- Tạo suy luận ước lượng tư thế có thể mở rộng
- Giám sát hoạt động
Hãy đi vào chi tiết về từng thành phần, tương tác của chúng và lý do đằng sau các lựa chọn thiết kế.
Các lớp giao diện ứng dụng người dùng
Sơ đồ sau đây cho thấy các lớp giao diện ứng dụng cung cấp quyền truy cập và kiểm soát của người dùng đối với ứng dụng cũng như các tài nguyên của nó.
Các điểm truy cập này hỗ trợ các trường hợp sử dụng khác nhau dựa trên các tính cách khách hàng khác nhau. Ví dụ: người dùng ứng dụng có thể gửi công việc qua CLI, trong khi nhà phát triển có thể xây dựng ứng dụng bằng Python SDK và nhúng thông minh ước tính đặt ra vào ứng dụng của họ. CLI và SDK được xây dựng dưới dạng các thành phần mô-đun — cả hai lớp đều là trình bao bọc của lớp API, được xây dựng bằng cách sử dụng Cổng API Amazon để giải quyết các lệnh gọi API và AWS Lambda được liên kết các hàm, quản lý logic phụ trợ được liên kết với mỗi lệnh gọi API. Các lớp này là một thành phần quan trọng đối với nhóm Intel OTG vì nó mở ra một lượng lớn khách hàng có thể sử dụng hiệu quả ứng dụng SaaS này.
Lớp API
Giải pháp có một bộ lõi gồm chín API, tương ứng với các loại đối tượng hoạt động trên nền tảng này. Mỗi API có một tệp Python xác định các hành động API có thể chạy. Việc tạo các đối tượng mới được tự động gán một ID đối tượng theo tuần tự. Các thuộc tính của các đối tượng này được lưu trữ và theo dõi trong Máy chủ Amazon Aurora cơ sở dữ liệu sử dụng ID này. Do đó, các hành động API liên kết lại với các hàm được xác định trong một tệp trung tâm có chứa logic phụ trợ để truy vấn cơ sở dữ liệu Aurora. Logic phụ trợ này sử dụng Boto3 Ứng dụng khách Amazon RDS DataService để truy cập cụm cơ sở dữ liệu.
Một ngoại lệ là /job
API, có một create_job
phương pháp xử lý việc gửi video để tạo một công việc xử lý mới. Phương thức này bắt đầu Chức năng bước AWS logic quy trình làm việc để thực hiện công việc. Bằng cách vượt qua một job_id
, phương pháp này sử dụng Boto3 Ứng dụng khách Step Functions để gọi start_execution
phương pháp cho một stateMachineARN
(Tên tài nguyên Amazon).
Tám API đối tượng có các phương thức và mẫu truy cập tương tự như được tóm tắt trong bảng sau.
Loại phương pháp | Tên chức năng | Mô tả |
GET | list_[object_name]s |
Chọn tất cả các đối tượng thuộc loại này từ cơ sở dữ liệu và hiển thị. |
POST | create_[object] |
Chèn một bản ghi đối tượng mới với các đầu vào bắt buộc vào cơ sở dữ liệu. |
GET | get_[object] |
Chọn thuộc tính đối tượng dựa trên ID đối tượng từ cơ sở dữ liệu và hiển thị. |
PUT | update_[object] |
Cập nhật bản ghi đối tượng hiện có với các đầu vào bắt buộc. |
DELETE | delete_[object] |
Xóa bản ghi đối tượng hiện có khỏi cơ sở dữ liệu dựa trên ID đối tượng. |
Chi tiết của chín API như sau:
- /người sử dụng - Người dùng là danh tính của người được ủy quyền để gửi công việc cho ứng dụng này. Việc tạo người dùng yêu cầu tên người dùng, email người dùng và ID nhóm mà người dùng đó thuộc về.
- /nhóm người dùng - Nhóm người dùng là một tập hợp những người dùng. Mỗi nhóm người dùng được ánh xạ tới một dự án và một bộ tham số đường ống. Để có các cấp khác nhau (về tài nguyên cơ sở hạ tầng và thông số đường ống), người dùng được chia thành các nhóm người dùng. Mỗi người dùng chỉ có thể thuộc về một nhóm người dùng. Việc tạo nhóm người dùng yêu cầu ID dự án, ID tập hợp thông số đường ống, tên nhóm người dùng và mô tả nhóm người dùng. Lưu ý rằng nhóm người dùng khác với vai trò người dùng được xác định trong tài khoản AWS. Sau này được sử dụng để cung cấp mức độ truy cập khác nhau dựa trên vai trò truy cập của họ (ví dụ: quản trị viên).
- /dự án - Một dự án được sử dụng để nhóm các nhóm tài nguyên cơ sở hạ tầng khác nhau lại với nhau. Một dự án được liên kết với một
project_cluster_url
(Cụm Aurora) để ghi lại người dùng, công việc và siêu dữ liệu khác, aproject_queue_arn
(Kinesis Data Streams ARN) và môi trường thời gian chạy tính toán (hiện được điều khiển qua Cortex) được sử dụng để chạy suy luận trên các lô khung hình hoặc xử lý hậu kỳ trên video. Mỗi nhóm người dùng được liên kết với một dự án và cơ chế này là cách các tầng khác nhau được kích hoạt về độ trễ và sức mạnh tính toán cho các nhóm người dùng khác nhau. Việc tạo dự án yêu cầu tên dự án, URL cụm dự án và ARN hàng đợi dự án. - / đường ống - Một đường ống được liên kết với một cấu hình duy nhất cho một chuỗi các vùng chứa xử lý thực hiện xử lý video trong cụm tạo suy luận Amazon EKS do Cortex điều phối (xem phần tạo suy luận xử lý video để biết thêm chi tiết). Thông thường, điều này bao gồm ba vùng chứa: tiền xử lý và giải mã, phát hiện đối tượng và ước lượng tư thế. Ví dụ: bước giải mã và phát hiện đối tượng giống nhau đối với các đường ống 2D và 3D, nhưng việc hoán đổi vùng chứa cuối cùng bằng HRNet hoặc 3DMPPE sẽ dẫn đến thông số được đặt cho đường ống xử lý 2D so với 3D. Bạn có thể tạo cấu hình mới để xác định các đường ống khả thi có thể được sử dụng để xử lý và nó yêu cầu đầu vào một tệp Python mới trong đại diện Cortex chi tiết trình tự lệnh gọi điểm cuối mô hình xác định đường ống đó (xem phần tạo suy luận xử lý video ). Điểm cuối đường ống là điểm cuối Cortex được gọi để xử lý một khung đơn. Việc tạo đường ống yêu cầu tên đường ống, mô tả đường ống và điểm cuối đường ống.
- / pipe_parameter_set - Bộ tham số đường ống là một tập hợp JSON linh hoạt của nhiều tham số (thời gian chạy cấu hình đường ống) cho một đường ống cụ thể và được thêm vào để cung cấp tính linh hoạt cho việc tùy chỉnh trong tương lai khi yêu cầu nhiều thời gian chạy cấu hình đường ống. Nhóm người dùng có thể được liên kết với một bộ thông số đường ống cụ thể và mục đích của nó là có các nhóm thông số khác nhau cho mỗi nhóm người dùng và mỗi đường ống. Đây là một bổ sung quan trọng trong tương lai cho Intel OTG nhằm xây dựng khả năng tùy chỉnh hỗ trợ tính di động khi các khách hàng khác nhau, đặc biệt là ISV, bắt đầu sử dụng ứng dụng.
- / pipe_parameters - Một tập hợp các thông số đường ống đơn lẻ là một khởi tạo của một bộ tham số đường ống. Điều này làm cho nó trở thành ánh xạ 1: nhiều của một tham số đường ống được đặt thành các tham số đường ống. API này yêu cầu ID đường ống để liên kết với tập hợp các thông số đường ống cho phép tạo đường ống cho ánh xạ 1: 1 của các thông số đường ống tới đường ống. Các đầu vào khác được API này yêu cầu là ID tập hợp thông số đường ống, giá trị thông số đường ống và tên thông số đường ống.
- /băng hình - Một đối tượng video được sử dụng để xác định các video riêng lẻ tạo nên gói .zip được gửi trong một công việc. Tệp này được chia thành nhiều video sau khi gửi. Một video có liên quan đến
job_id
cho công việc mà gói .zip được gửi và Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) đường dẫn cho vị trí của các video thô được phân tách và kết quả xử lý sau của mỗi video. Đối tượng video cũng chứa phần trăm tiến độ video, được cập nhật liên tục trong quá trình xử lý các lô khung hình riêng lẻ của video đó, cũng như cờ trạng thái video là hoàn thành hoặc chưa hoàn thành. Việc tạo video yêu cầu ID công việc, đường dẫn video, đường dẫn kết quả video, tỷ lệ phần trăm tiến trình video và trạng thái video. - / frame_batch - A
frame_batch
đối tượng là một loạt khung hình nhỏ được tạo ra bằng cách lấy mẫu một video. Việc tách video thành các lô khung hình có kích thước thông thường cung cấp một đòn bẩy để điều chỉnh độ trễ và tăng độ song song và thông lượng. Đây là đơn vị chi tiết được chạy qua Kinesis Data Streams để suy luận. Việc tạo lô khung yêu cầu ID video, số bắt đầu lô khung, số kết thúc lô khung, đường dẫn nhập lô khung, đường dẫn kết quả lô khung và trạng thái lô khung. - /Công việc - API tương tác này được sử dụng để gửi tệp để bắt đầu công việc xử lý. API này có chức năng khác với các API đối tượng khác vì đó là đường dẫn trực tiếp để tương tác với điều phối quy trình làm việc của Step Functions phụ trợ xử lý video và cụm Amazon EKS. API này yêu cầu ID người dùng, ID dự án, ID đường ống, ID bộ tham số đường ống, thông số công việc và trạng thái công việc. Trong thông số công việc, một đường dẫn tệp đầu vào được chỉ định, đó là vị trí trong Amazon S3 nơi chứa gói video .zip được xử lý. Tải lên tệp được xử lý với
upload_handler
phương thức này tạo URL S3 được chỉ định trước để người dùng đặt tệp. WORKFLOW_STATEMACHINE_ARN là một biến môi trường được chuyển đếncreate_job
API để chỉ định nơi gửi gói .zip video với đường dẫn tệp đầu vào để bắt đầu công việc.
Bảng sau đây tóm tắt các chức năng của API.
Loại phương pháp | Chức năng | Mô tả |
GET | list_jobs |
Chọn tất cả các công việc từ cơ sở dữ liệu và hiển thị. |
POST | create_ job |
Chèn bản ghi công việc mới với ID người dùng, ID dự án, ID đường ống, ID bộ tham số đường ống, đường dẫn kết quả công việc, thông số công việc và trạng thái công việc. |
GET | get_ job |
Chọn các thuộc tính công việc dựa trên ID công việc từ cơ sở dữ liệu và hiển thị. |
GET | upload_handler |
Tạo URL S3 được chỉ định trước làm vị trí để tải lên tệp .zip. Yêu cầu tên nhóm S3 và yêu cầu loại tệp ứng dụng / zip. |
Lớp SDK Python
Dựa trên các API, nhóm đã tạo một thư viện ứng dụng Python SDK dưới dạng trình bao bọc để giúp các nhà phát triển truy cập các phương thức API dễ dàng hơn. Họ đã sử dụng mã nguồn mở Thơ, xử lý đóng gói Python và quản lý phụ thuộc. Họ đã tạo ra một client.py
tệp chứa các hàm gói từng API bằng Python requests
thư viện để xử lý các yêu cầu API và các ngoại lệ.
Để các nhà phát triển khởi chạy Intel 3DAT SDK, họ cần cài đặt và xây dựng gói Thơ. Sau đó, họ có thể thêm nhập Python đơn giản của intel_3dat_sdk
sang bất kỳ mã Python nào.
Để sử dụng ứng dụng khách, bạn có thể tạo một phiên bản của ứng dụng khách, chỉ định điểm cuối API:
Sau đó, bạn có thể sử dụng ứng dụng khách để gọi các phương thức riêng lẻ, chẳng hạn như create_pipeline
(xem đoạn mã sau), sử dụng các đối số thích hợp như tên đường ống và mô tả đường ống.
Lớp CLI
Tương tự, nhóm đã xây dựng dựa trên các API để tạo giao diện dòng lệnh cho người dùng muốn truy cập các phương thức API với giao diện đơn giản mà không cần viết mã Python. Họ đã sử dụng gói Python nguồn mở Nhấp chuột (Bộ tạo giao diện dòng lệnh). Các lợi ích của khuôn khổ này là lồng các lệnh tùy ý, tạo trang trợ giúp tự động và hỗ trợ tải chậm các lệnh con trong thời gian chạy. Trong cùng một client.py
như trong SDK, mỗi phương thức ứng dụng khách SDK được bao bọc bằng cách sử dụng Click và các đối số phương thức bắt buộc được chuyển đổi thành cờ dòng lệnh. Các đầu vào cờ sau đó được sử dụng khi gọi lệnh SDK.
Để khởi chạy CLI, bạn có thể sử dụng CLI configure
yêu cầu. Bạn được nhắc nhập URL điểm cuối:
Bây giờ bạn có thể sử dụng CLI để gọi các lệnh khác nhau liên quan đến các phương thức API, ví dụ:
Cơ sở dữ liệu
Là một cơ sở dữ liệu, ứng dụng này sử dụng Aurora Serverless để lưu trữ siêu dữ liệu được liên kết với từng API với MYSQL làm cơ sở dữ liệu. Việc chọn dịch vụ cơ sở dữ liệu Aurora Serverless tuân theo nguyên tắc thiết kế để giảm thiểu chi phí cơ sở hạ tầng bằng cách sử dụng các dịch vụ AWS không máy chủ khi có thể. Sơ đồ sau đây minh họa kiến trúc này.
Sản phẩm chế độ máy chủ không máy chủ đáp ứng mô hình sử dụng không liên tục vì ứng dụng này mở rộng tới khách hàng mới và khối lượng công việc vẫn chưa chắc chắn. Khi khởi chạy một điểm cuối cơ sở dữ liệu, kích thước phiên bản DB cụ thể không bắt buộc, chỉ có phạm vi tối thiểu và tối đa cho dung lượng cụm. Aurora Serverless xử lý việc cấp phép thích hợp cho nhóm bộ định tuyến và phân phối khối lượng công việc giữa các tài nguyên. Aurora Serverless tự động thực hiện lưu giữ bản sao lưu trong thời gian tối thiểu 1 ngày lên đến 35 ngày. Nhóm đã tối ưu hóa sự an toàn bằng cách đặt giá trị mặc định thành giá trị lớn nhất là 35.
Ngoài ra, nhóm đã sử dụng API dữ liệu để xử lý quyền truy cập vào cụm Aurora Serverless, không yêu cầu kết nối liên tục và thay vào đó cung cấp điểm cuối HTTP an toàn và tích hợp với AWS SDK. Tính năng này sử dụng Quản lý bí mật AWS để lưu trữ thông tin xác thực cơ sở dữ liệu, do đó không cần phải chuyển thông tin xác thực một cách rõ ràng. Các tập lệnh CREATE TABLE được viết trong các tệp .sql cho mỗi trong số chín bảng tương ứng với chín API. Bởi vì cơ sở dữ liệu này chứa tất cả siêu dữ liệu và trạng thái của các đối tượng trong hệ thống, các phương thức API được chạy bằng cách sử dụng các lệnh SQL thích hợp (ví dụ: select * from Job
cho list_jobs
API) và được chuyển đến execute_statement
từ ứng dụng Amazon RDS trong API dữ liệu.
Điều phối quy trình làm việc
Xương sống chức năng của ứng dụng đã được xử lý bằng cách sử dụng Các hàm bước để điều phối quy trình làm việc, như thể hiện trong sơ đồ sau.
Máy trạng thái bao gồm một chuỗi bốn hàm Lambda, bắt đầu khi một công việc được gửi bằng cách sử dụng create_job
phương pháp từ job
API. ID người dùng, ID dự án, ID đường ống, ID bộ tham số đường ống, đường dẫn kết quả công việc, thông số công việc và trạng thái công việc là bắt buộc để tạo công việc. Trước tiên, bạn có thể tải lên gói tệp video .zip bằng cách sử dụng upload_handler
từ API công việc để tạo URL S3 được chỉ định trước. Trong quá trình gửi công việc, đường dẫn tệp đầu vào được chuyển qua các tham số công việc, để chỉ định vị trí của tệp. Thao tác này bắt đầu chạy máy trạng thái dòng công việc, kích hoạt bốn bước chính:
- Hàm Lambda khởi tạo
- Chức năng Submitter Lambda
- Kiểm tra hoàn thành chức năng Lambda
- Chức năng Collector Lambda
Hàm Lambda khởi tạo
Chức năng chính của Trình khởi tạo là tách gói .zip thành các tệp video riêng lẻ và chuẩn bị chúng cho Trình gửi. Đầu tiên, tệp .zip được tải xuống, sau đó từng tệp riêng lẻ, bao gồm các tệp video, được giải nén và giải nén. Các video, tốt nhất là ở định dạng .mp4, được tải lại vào một thùng S3. Sử dụng create_video
phương pháp trong video
API, một đối tượng video được tạo với đường dẫn video làm đầu vào. Điều này sẽ chèn dữ liệu trên mỗi video vào cơ sở dữ liệu Aurora. Bất kỳ loại tệp nào khác, chẳng hạn như tệp JSON, được coi là siêu dữ liệu và được tải lên tương tự, nhưng không có đối tượng video nào được tạo. Danh sách tên của các tệp và tệp video được trích xuất sẽ được chuyển sang bước tiếp theo.
Chức năng Submitter Lambda
Chức năng Submitter lấy các tệp video đã được trích xuất bởi Bộ khởi tạo và tạo các loạt khung video nhỏ dưới dạng hình ảnh. Hầu hết các mô hình thị giác máy tính hiện tại trong quá trình sản xuất đã được đào tạo về hình ảnh nên ngay cả khi video được xử lý, chúng lần đầu tiên được tách thành các khung hình ảnh trước khi suy luận mô hình. Giải pháp hiện tại sử dụng mô hình ước tính tư thế hiện đại này cũng không khác gì — các lô khung từ Trình gửi được chuyển đến Luồng dữ liệu Kinesis để bắt đầu bước tạo suy luận.
Đầu tiên, tệp video được tải xuống bằng hàm Lambda. Tốc độ khung hình và số lượng khung hình được tính bằng cách sử dụng FileVideoStream
mô-đun từ imutils.video
thư viện xử lý. Các khung được trích xuất và nhóm lại theo kích thước lô nhỏ được chỉ định, đây là một trong những tham số có thể điều chỉnh chính của đường dẫn này. Sử dụng thư viện dưa chua Python, dữ liệu được tuần tự hóa và tải lên Amazon S3. Sau đó, một đối tượng lô khung được tạo và mục siêu dữ liệu được tạo trong cơ sở dữ liệu Aurora. Hàm Lambda này được xây dựng bằng Dockerfile với các phụ thuộc vào opencv-python
, numpy
và imutils
thư viện.
Kiểm tra hoàn thành chức năng Lambda
Chức năng Kiểm tra Hoàn thành tiếp tục truy vấn cơ sở dữ liệu Aurora để xem, đối với mỗi video trong gói .zip cho công việc hiện tại này, có bao nhiêu lô khung hình ở trạng thái ĐÃ HOÀN THÀNH. Khi tất cả các lô khung hình cho tất cả các video đã hoàn tất, thì quá trình kiểm tra này đã hoàn tất.
Chức năng Collector Lambda
Chức năng Collector lấy kết quả đầu ra của các suy luận đã được thực hiện trên mỗi khung hình trong giai đoạn Người tiêu dùng và kết hợp chúng trên một lô khung hình và trên một video. Sau đó, dữ liệu đã hợp nhất được kết hợp sẽ được tải lên nhóm S3. Sau đó, hàm này gọi API hậu xử lý Cortex cho một đường ống ML cụ thể để thực hiện bất kỳ tính toán hậu xử lý nào và thêm kết quả tổng hợp bằng video vào nhóm đầu ra. Nhiều chỉ số trong số này được tính toán trên các khung, chẳng hạn như tốc độ, gia tốc và góc khớp, do đó, phép tính này cần được thực hiện trên dữ liệu tổng hợp. Kết quả đầu ra chính bao gồm dữ liệu các điểm chính của cơ thể (được tổng hợp thành định dạng CSV), tính toán BMA (chẳng hạn như gia tốc) và lớp phủ trực quan của các điểm chính được thêm vào mỗi khung hình trong tệp hình ảnh.
Tạo suy luận ước lượng tư thế có thể mở rộng
Công cụ xử lý hỗ trợ mở rộng quy mô của suy luận ML xảy ra trong giai đoạn này. Nó liên quan đến ba phần chính, mỗi phần có đòn bẩy đồng thời của riêng chúng có thể được điều chỉnh để cân bằng độ trễ (xem sơ đồ sau).
Kiến trúc này cho phép thử nghiệm trong việc kiểm tra độ trễ tăng lên, cũng như tính linh hoạt trong tương lai khi khối lượng công việc có thể thay đổi với các hỗn hợp khác nhau của các phân khúc người dùng cuối truy cập ứng dụng.
Luồng dữ liệu Kinesis
Nhóm đã chọn Kinesis Data Streams vì nó thường được sử dụng để xử lý dữ liệu phát trực tuyến và trong trường hợp này là phù hợp vì nó có thể xử lý các lô khung hình theo cách tương tự để cung cấp khả năng mở rộng và song song hóa. Trong hàm Submitter Lambda, ứng dụng khách Kinesis Boto3 được sử dụng, với put_record
phương thức truyền trong siêu dữ liệu được liên kết với một lô khung hình, chẳng hạn như ID lô khung, khung bắt đầu lô khung, khung kết thúc loạt khung, hình dạng hình ảnh, tốc độ khung hình và ID video.
Chúng tôi đã xác định các cấu hình hàng đợi công việc và luồng dữ liệu Kinesis khác nhau để đặt các mức thông lượng ràng buộc trở lại mức ưu tiên của các nhóm người dùng khác nhau. Quyền truy cập vào các mức năng lực xử lý khác nhau được liên kết bằng cách chuyển ARN hàng đợi dự án khi tạo một dự án mới bằng cách sử dụng project
API. Mọi nhóm người dùng sau đó được liên kết với một dự án cụ thể trong quá trình tạo nhóm người dùng. Ba cấu hình luồng mặc định được xác định trong Mô hình ứng dụng không có máy chủ AWS Mẫu cơ sở hạ tầng (AWS SAM):
- Tiêu chuẩn –
JobStreamShardCount
- Ưu tiên –
PriorityJobStreamShardCount
- Ưu tiên cao –
HighPriorityJobStreamShardCount
Nhóm đã sử dụng một số đòn bẩy khác nhau để phân biệt sức mạnh xử lý của từng luồng hoặc điều chỉnh độ trễ của hệ thống, như được tóm tắt trong bảng sau.
Lever | Mô tả | Giá trị mặc định |
Mảnh vỡ | Một phân đoạn có nguồn gốc từ Kinesis Data Streams; nó là đơn vị cơ bản của thông lượng để nhập. Giá trị mặc định là 1MB / giây, tương đương với 1,000 bản ghi dữ liệu mỗi giây. | 2 |
KinesisBatchSize |
Số lượng bản ghi tối đa mà Kinesis Data Streams truy xuất trong một lô duy nhất trước khi gọi hàm Lambda của người tiêu dùng. | 1 |
KinesisParallelizationFactor |
Số lô để xử lý đồng thời từ mỗi phân đoạn. | 1 |
Tăng cường quạt ra | Người tiêu dùng dữ liệu đã kích hoạt tính năng quạt ra nâng cao có thông lượng nhập dành riêng cho mỗi người tiêu dùng (chẳng hạn như 1MB / giây mặc định) thay vì chia sẻ thông lượng giữa những người tiêu dùng. | tắt |
Hàm Lambda dành cho người tiêu dùng
Theo quan điểm của Kinesis Data Streams, người tiêu dùng dữ liệu là một dịch vụ AWS lấy dữ liệu từ phân đoạn luồng dữ liệu khi dữ liệu được tạo trong một luồng. Ứng dụng này sử dụng một hàm Consumer Lambda, được gọi khi các thông báo được chuyển từ các hàng đợi luồng dữ liệu. Mỗi chức năng Người tiêu dùng xử lý một lô khung bằng cách thực hiện các bước sau. Đầu tiên, một lệnh gọi được thực hiện đồng bộ với API bộ xử lý Cortex, là điểm cuối lưu trữ đường ống suy luận mô hình (xem phần tiếp theo về Amazon EKS với Cortex để biết thêm chi tiết). Kết quả được lưu trữ trong Amazon S3 và cập nhật được thực hiện cho cơ sở dữ liệu bằng cách thay đổi trạng thái của lô khung đã xử lý thành Complete
. Xử lý lỗi được tích hợp để quản lý lệnh gọi API Cortex với vòng lặp thử lại để xử lý bất kỳ lỗi 504 nào từ cụm Cortex, với số lần thử lại được đặt thành 5.
Amazon EKS với Cortex để suy luận ML
Nhóm đã sử dụng Amazon EKS, một dịch vụ Kubernetes được quản lý trong AWS, làm công cụ tính toán cho suy luận ML. Một lựa chọn thiết kế đã được thực hiện để sử dụng Amazon EKS để lưu trữ các điểm cuối ML, mang lại sự linh hoạt khi chạy Kubernetes ngược dòng với tùy chọn các cụm được quản lý hoàn toàn trong AWS thông qua Cổng xa AWShoặc phần cứng tại chỗ thông qua Amazon EKS mọi nơi. Đây là một phần chức năng quan trọng mà Intel OTG mong muốn, ví dụ, cung cấp tùy chọn kết nối ứng dụng này với phần cứng tại chỗ chuyên dụng.
Ba mô hình ML là nền tảng để xây dựng các đường ống suy luận là mô hình Yolo tùy chỉnh (để phát hiện đối tượng), mô hình HRNet tùy chỉnh (để ước tính tư thế 2D) và mô hình 3DMPPE (để ước tính tư thế 3D) (xem phần trước Phần ML để biết thêm chi tiết). Họ đã sử dụng mã nguồn mở Cortex thư viện để xử lý việc triển khai và quản lý các điểm cuối của đường ống suy luận ML cũng như khởi chạy và triển khai các cụm Amazon EKS. Mỗi mô hình trong số này được đóng gói thành bộ chứa Docker — tệp mô hình được lưu trữ trong Amazon S3 và hình ảnh mô hình được lưu trữ trong Đăng ký container đàn hồi Amazon (Amazon ECR) —và được triển khai dưới dạng API thời gian thực của Cortex. Các phiên bản của vùng chứa mô hình chạy trên CPU và GPU đã được tạo ra để cung cấp tính linh hoạt cho loại phần cứng máy tính. Trong tương lai, nếu cần thêm các mô hình bổ sung hoặc đường ống mô hình, họ có thể chỉ cần tạo các API thời gian thực Cortex bổ sung.
Sau đó, họ xây dựng các đường ống suy luận bằng cách tổng hợp các API mô hình Thời gian thực Cortex lại với nhau thành các API Đường ống Thời gian thực của Cortex. Một API đường ống thời gian thực duy nhất bao gồm việc gọi một chuỗi các API mô hình Thời gian thực. Các chức năng của Consumer Lambda đã xử lý pipeline
API như một hộp đen, sử dụng một lệnh gọi API để truy xuất đầu ra suy luận cuối cùng cho một hình ảnh. Hai đường ống đã được tạo ra: một đường ống 2D và một đường ống 3D.
Đường ống 2D kết hợp bước tiền xử lý giải mã, phát hiện đối tượng bằng mô hình Yolo tùy chỉnh để xác định vị trí vận động viên và tạo các hộp giới hạn, và cuối cùng là mô hình HRNet tùy chỉnh để tạo các điểm chính 2D cho ước tính tư thế.
Đường ống 3D kết hợp bước tiền xử lý giải mã, phát hiện đối tượng bằng mô hình Yolo tùy chỉnh để xác định vị trí vận động viên và tạo ra các hộp giới hạn và cuối cùng là mô hình 3DMPPE để tạo các điểm chính 3D để ước tính tư thế.
Sau khi tạo ra các suy luận về một loạt các khung, mỗi đường ống cũng bao gồm một điểm cuối Realtime Cortex sau xử lý riêng biệt tạo ra ba đầu ra chính:
- Dữ liệu điểm chính của nội dung được tổng hợp thành một tệp CSV duy nhất
- Tính toán BMA (chẳng hạn như gia tốc)
- Lớp phủ trực quan của các điểm chính được thêm vào mỗi khung hình trong tệp hình ảnh
Hàm Collector Lambda gửi siêu dữ liệu thích hợp được liên kết với một video cụ thể, chẳng hạn như ID khung và vị trí S3 của đầu ra suy luận ước lượng tư thế, tới điểm cuối để tạo ra các đầu ra sau xử lý này.
Cortex được thiết kế để tích hợp với Amazon EKS và chỉ yêu cầu tệp cấu hình cụm và một lệnh đơn giản để khởi chạy cụm Kubernetes:
Một đòn bẩy khác để điều chỉnh hiệu suất là cấu hình cá thể cho các cụm máy tính. Ba tầng đã được tạo với các hỗn hợp khác nhau của các phiên bản M5 và G4dn, được mã hóa dưới dạng tệp .yaml với các thông số kỹ thuật như tên cụm, Khu vực, cấu hình và kết hợp phiên bản. Các phiên bản M5 dựa trên CPU chi phí thấp hơn và G4dn dựa trên GPU chi phí cao hơn để cung cấp một số sự cân bằng về chi phí / hiệu suất.
Giám sát hoạt động
Để duy trì các tiêu chuẩn ghi nhật ký hoạt động, tất cả các chức năng của Lambda bao gồm mã để ghi và nhập nhật ký qua Amazon Kinesis Dữ liệu Firehose. Ví dụ: mọi lô khung được xử lý từ hàm Lambda của Trình gửi sẽ được ghi lại bằng dấu thời gian, tên của hành động và phản hồi của hàm Lambda JSON và được lưu vào Amazon S3. Sơ đồ sau minh họa bước này trong kiến trúc.
Triển khai
Quá trình triển khai được xử lý bằng AWS SAM, một khuôn khổ mã nguồn mở để xây dựng các ứng dụng không máy chủ trong AWS. AWS SAM cho phép thiết kế cơ sở hạ tầng, bao gồm các chức năng, API, cơ sở dữ liệu và ánh xạ nguồn sự kiện được mã hóa và triển khai dễ dàng trong môi trường AWS mới. Trong quá trình triển khai, cú pháp AWS SAM được dịch thành Hình thành đám mây AWS để xử lý việc cung cấp cơ sở hạ tầng.
A template.yaml
tệp chứa các thông số kỹ thuật cơ sở hạ tầng cùng với các thông số có thể điều chỉnh, chẳng hạn như đòn bẩy độ trễ Kinesis Data Streams được nêu chi tiết trong các phần trước. Một samconfig.toml
tệp chứa các tham số triển khai như tên ngăn xếp, tên nhóm S3 nơi các tệp ứng dụng như mã chức năng Lambda được lưu trữ và các thẻ tài nguyên để theo dõi chi phí. Một tập lệnh shell deploy.sh với các lệnh đơn giản là tất cả những gì cần thiết để xây dựng và triển khai toàn bộ mẫu:
Luồng công việc của người dùng
Tóm lại, sau khi cơ sở hạ tầng đã được triển khai, bạn có thể làm theo quy trình làm việc này để bắt đầu:
- Tạo một ứng dụng khách Intel 3DAT bằng cách sử dụng thư viện ứng dụng khách.
- Sử dụng API để tạo một phiên bản mới của một đường ống tương ứng với kiểu xử lý được yêu cầu, chẳng hạn như một phiên bản để ước tính tư thế 3D.
- Tạo một phiên bản mới của một dự án, chuyển ARN cụm và ARN hàng đợi Kinesis.
- Tạo một phiên bản mới của tập thông số đường ống.
- Tạo một phiên bản mới của các tham số đường ống ánh xạ đến tập tham số đường ống.
- Tạo nhóm người dùng mới được liên kết với ID dự án và ID tập hợp thông số đường ống.
- Tạo người dùng mới được liên kết với nhóm người dùng.
- Tải tệp .zip video lên Amazon S3 bằng cách sử dụng URL S3 được chỉ định trước được tạo bởi chức năng tải lên trong API công việc.
- Nộp
create_job
Lệnh gọi API, với các tham số công việc chỉ định vị trí của các tệp video. Điều này bắt đầu công việc xử lý.
Kết luận
Ứng dụng hiện đã hoạt động và sẵn sàng để thử nghiệm với các vận động viên và huấn luyện viên như nhau. Intel OTG rất vui mừng tạo ra công nghệ ước tính tư thế sáng tạo bằng cách sử dụng thị giác máy tính có thể truy cập được cho nhiều người dùng, từ các nhà phát triển, vận động viên đến các đối tác nhà cung cấp phần mềm.
Nhóm AWS rất đam mê giúp những khách hàng như Intel OTG đẩy nhanh hành trình ML của họ, từ giai đoạn hình thành và khám phá với ML Solutions Lab đến giai đoạn hoàn thiện và triển khai với AWS ML ProServe. Tất cả chúng ta sẽ theo dõi chặt chẽ Thế vận hội Tokyo 2021 vào mùa hè này để hình dung tất cả những tiến bộ mà ML có thể mở ra trong thể thao.
Bắt đầu từ hôm nay! Khám phá trường hợp sử dụng của bạn với các dịch vụ được đề cập trong bài đăng này và nhiều dịch vụ khác trên Bảng điều khiển quản lý AWS.
Về các tác giả
Hàn Mẫn là Quản lý cấp cao- Học máy & AI tại AWS có trụ sở tại San Diego, CA. Ông có bằng Tiến sĩ kỹ thuật tại Đại học Northwestern và có nhiều năm kinh nghiệm làm tư vấn quản lý tư vấn cho khách hàng trong lĩnh vực sản xuất, dịch vụ tài chính và năng lượng. Hôm nay, anh ấy đang say mê làm việc với khách hàng từ nhiều ngành khác nhau để phát triển và triển khai các giải pháp máy học & AI trên AWS. Anh ấy thích theo dõi NBA và chơi bóng rổ khi rảnh rỗi.
Iman Kamyabi là Kỹ sư ML với Dịch vụ Chuyên nghiệp AWS. Anh ấy đã làm việc với nhiều khách hàng AWS để đưa ra các phương pháp hay nhất trong việc thiết lập đường ống ML có thể lặp lại và đáng tin cậy.
Jonathan Lee là Giám đốc Công nghệ Hiệu suất Thể thao, Nhóm Công nghệ Olympic tại Intel. Anh ấy đã nghiên cứu ứng dụng của máy học vào sức khỏe khi còn là sinh viên đại học tại UCLA và trong quá trình làm việc sau đại học tại Đại học Oxford. Sự nghiệp của ông tập trung vào phát triển thuật toán và cảm biến cho sức khỏe và hiệu suất của con người. Hiện anh đang dẫn đầu dự án Theo dõi vận động viên 3D tại Intel.
Nelson Leung là Kiến trúc sư nền tảng trong Sports Performance CoE tại Intel, nơi ông xác định kiến trúc end-to-end cho các sản phẩm tiên tiến giúp nâng cao hiệu suất của vận động viên. Ông cũng dẫn đầu việc thực hiện, triển khai và sản xuất các giải pháp học máy này trên quy mô lớn cho các đối tác Intel khác nhau.
Troy Squillaci là một kỹ sư DecSecOps tại Intel, nơi anh ấy cung cấp các giải pháp phần mềm chuyên nghiệp cho khách hàng thông qua các phương pháp hay nhất của DevOps. Anh ấy thích tích hợp các giải pháp AI vào các nền tảng có thể mở rộng trong nhiều lĩnh vực khác nhau.
Paul Min là Thực tập sinh kiến trúc sư giải pháp liên kết tại Amazon Web Services (AWS), nơi anh ấy giúp khách hàng trên các ngành dọc khác nhau thúc đẩy sứ mệnh của họ và đẩy nhanh việc áp dụng đám mây của họ. Trước đây tại Intel, anh ấy đã từng làm việc với tư cách là Thực tập sinh kỹ thuật phần mềm để giúp phát triển SDK đám mây theo dõi vận động viên 3D. Ngoài giờ làm việc, Paul thích chơi gôn và có thể nghe thấy tiếng hát.
- Coinsmart. Sàn giao dịch Bitcoin và tiền điện tử tốt nhất Châu Âu.
- Platoblockchain. Web3 Metaverse Intelligence. Khuếch đại kiến thức. TRUY CẬP MIỄN PHÍ.
- CryptoHawk. Radar Altcoin. Dùng thử miễn phí.
- Nguồn: https://aws.amazon.com/blogs/machine-learning/the-intel3d-athlete-tracking-3dat-scalable-architecture-deploys-pose-estimation-models-using-amazon-kinesis-data-streams- và-amazon-eks /
- "
- &
- 000
- 100
- 2021
- 3d
- Giới thiệu
- đẩy nhanh tiến độ
- truy cập
- có thể truy cập
- Theo
- Tài khoản
- ngang qua
- Hoạt động
- hành động
- Ngoài ra
- thêm vào
- quản trị viên
- Nhận con nuôi
- AI
- thuật toán
- Tất cả
- đàn bà gan dạ
- Amazon Web Services
- giữa
- api
- API
- Các Ứng Dụng
- các ứng dụng
- thích hợp
- kiến trúc
- đối số
- giao
- Liên kết
- vận động viên
- thuộc tính
- Tự động
- AWS
- sao lưu
- Bóng rổ
- trước
- Lợi ích
- BEST
- thực hành tốt nhất
- Đen
- Blog
- thân hình
- Hộp
- xây dựng
- Xây dựng
- cuộc gọi
- Sức chứa
- mà
- Tuyển Dụng
- trường hợp
- trung tâm
- nhà vô địch
- thay đổi
- lựa chọn
- khách hàng
- đám mây
- mã
- bộ sưu tập
- thu
- kết hợp
- thành phần
- Tính
- máy tính
- Cấu hình
- liên quan
- chuyên gia tư vấn
- người tiêu dùng
- Người tiêu dùng
- Container
- Container
- chứa
- liên tiếp
- điều khiển
- phối hợp
- Trung tâm
- Tương ứng
- tạo
- tạo ra
- tạo ra
- Tạo
- tạo
- Credentials
- quan trọng
- quan trọng
- Current
- Hiện nay
- khách hàng
- khách hàng
- khách hàng
- tiên tiến
- dữ liệu
- Cơ sở dữ liệu
- cơ sở dữ liệu
- ngày
- dành riêng
- sâu sắc hơn
- cung cấp
- triển khai
- triển khai
- triển khai
- triển khai
- Thiết kế
- thiết kế
- chi tiết
- chi tiết
- chi tiết
- Phát hiện
- phát triển
- Nhà phát triển
- phát triển
- Phát triển
- khác nhau
- phân biệt
- trực tiếp
- Giám đốc
- phát hiện
- màn hình
- phu bến tàu
- Không
- lĩnh vực
- xuống
- suốt trong
- dễ dàng
- Điểm cuối
- năng lượng
- Động cơ
- ky sư
- Kỹ Sư
- Môi trường
- Sự kiện
- ví dụ
- kích thích
- hiện tại
- kỳ vọng
- kinh nghiệm
- khám phá
- Đặc tính
- Cuối cùng
- tài chính
- dịch vụ tài chính
- Tên
- phù hợp với
- VÒI
- Linh hoạt
- linh hoạt
- tập trung
- theo
- tiếp theo
- sau
- định dạng
- hướng tới tương lai
- FRAME
- Khung
- chức năng
- chức năng
- chức năng
- chức năng
- tương lai
- tạo ra
- tạo ra
- thế hệ
- Cho
- mục tiêu
- tốt
- GPU
- tốt nghiệp
- Nhóm
- Các nhóm
- xử lý
- Xử lý
- phần cứng
- cho sức khoẻ
- nghe
- giúp đỡ
- giúp đỡ
- giúp
- tại đây
- cao hơn
- Độ đáng tin của
- HTTPS
- Nhân loại
- Bản sắc
- hình ảnh
- thực hiện
- thực hiện
- quan trọng
- bao gồm
- bao gồm
- Bao gồm
- hệ thống riêng biệt,
- các ngành công nghiệp
- ngành công nghiệp
- Cơ sở hạ tầng
- sáng tạo
- đầu vào
- Chèn
- cài đặt, dựng lên
- tích hợp
- hội nhập
- Intel
- Sự thông minh
- tương tác
- Giao thức
- IT
- Việc làm
- việc làm
- cuộc hành trình
- Key
- phòng thí nghiệm
- phóng
- ra mắt
- Dẫn
- học tập
- Cấp
- Thư viện
- Dòng
- Danh sách
- tải
- địa điểm thư viện nào
- . Các địa điểm
- máy
- học máy
- thực hiện
- duy trì
- chính
- LÀM CHO
- người đàn ông
- quản lý
- quản lý
- quản lý
- sản xuất
- bản đồ
- lập bản đồ
- đề cập
- phương pháp
- Metrics
- tối thiểu
- Sứ mệnh
- ML
- di động
- Ứng dụng di động
- kiểu mẫu
- mô hình
- mô-đun
- chi tiết
- hầu hết
- nhiều
- tên
- NBA
- cần thiết
- nhu cầu
- con số
- olympics
- mở ra
- hoạt động
- tối ưu hóa
- Tùy chọn
- gọi món
- Nền tảng khác
- riêng
- Oxford
- gói
- một phần
- riêng
- đặc biệt
- Đối tác
- Đi qua
- đam mê
- Họa tiết
- tỷ lệ phần trăm
- hiệu suất
- biểu diễn
- quan điểm
- mảnh
- nền tảng
- Nền tảng
- chơi
- Thơ
- điểm
- có thể
- quyền lực
- mạnh mẽ
- Chuẩn bị
- trước
- chính
- nguyên tắc
- ưu tiên
- quá trình
- Quy trình
- xử lý
- Bộ xử lý
- sản xuất
- Sản lượng
- Sản phẩm
- chuyên nghiệp
- dự án
- cho
- cung cấp
- mục đích
- phạm vi
- Nguyên
- thời gian thực
- công nhận
- ghi
- hồ sơ
- về
- đáng tin cậy
- yêu cầu
- yêu cầu
- cần phải
- Yêu cầu
- đòi hỏi
- tài nguyên
- Thông tin
- phản ứng
- Kết quả
- chạy
- chạy
- Sự An Toàn
- San
- khả năng mở rộng
- khả năng mở rộng
- Quy mô
- mở rộng quy mô
- sdk
- an toàn
- phân đoạn
- Không có máy chủ
- dịch vụ
- DỊCH VỤ
- định
- thiết lập
- Hình dạng
- chia sẻ
- Shell
- thể hiện
- tương tự
- Tương tự
- Đơn giản
- Kích thước máy
- So
- Phần mềm
- phần mềm như là một dịch vụ
- kỹ thuật phần mềm
- giải pháp
- Giải pháp
- một số
- Một người nào đó
- chuyên nghành
- thông số kỹ thuật
- tốc độ
- Thể thao
- ngăn xếp
- Traineeship
- Tiêu chuẩn
- tiêu chuẩn
- Bắt đầu
- bắt đầu
- bắt đầu
- Tiểu bang
- nhà nước-of-the-art
- Trạng thái
- là gắn
- hàng
- dòng
- trực tuyến
- trình
- Sau đó
- mùa hè
- hỗ trợ
- Hỗ trợ
- hệ thống
- dùng
- nhóm
- Công nghệ
- Kiểm tra
- vì thế
- Thông qua
- TIE
- thời gian
- bây giờ
- bên nhau
- tokyo
- theo dõi
- Theo dõi
- loại
- thường
- ucla
- trường đại học
- Đại học Oxford
- mở khóa
- Cập nhật
- sử dụng
- Người sử dụng
- Bằng cách sử dụng
- giá trị
- nhiều
- khác nhau
- ngành dọc
- Video
- Video
- tầm nhìn
- web
- các dịch vụ web
- CHÚNG TÔI LÀ
- không có
- Công việc
- làm việc
- đang làm việc
- năm