Trong IoT công nghiệp, việc chạy các mô hình học máy (ML) trên các thiết bị biên là cần thiết cho nhiều trường hợp sử dụng, chẳng hạn như bảo trì dự đoán, cải thiện chất lượng, giám sát thời gian thực, tối ưu hóa quy trình và bảo mật. Ví dụ, ngành công nghiệp năng lượng đầu tư rất nhiều vào ML để tự động hóa việc cung cấp điện, giám sát mức tiêu thụ, tối ưu hóa hiệu quả và kéo dài tuổi thọ của thiết bị của họ.
Năng lượng gió là một trong những nguồn năng lượng tái tạo phổ biến nhất. Theo Hội đồng Năng lượng Gió Toàn cầu, 22,893 tuabin gió đã được lắp đặt trên toàn cầu vào năm 2019, được sản xuất từ 33 nhà cung cấp và chiếm hơn 63 GW công suất điện gió. Với quy mô như vậy, các công ty năng lượng cần một nền tảng hiệu quả để quản lý và duy trì các đội tuabin gió của họ và các mô hình ML chạy trên các thiết bị này. Một tuabin gió thương mại có giá khoảng 3–4 triệu đô la. Nếu một tuabin ngừng hoạt động, nó sẽ tốn 800–1,600 đô la mỗi ngày và dẫn đến tổn thất tổng cộng 7.5 megawatt, đủ năng lượng để cung cấp điện cho khoảng 2,500 ngôi nhà.
Tua bin gió là một phần kỹ thuật phức tạp và bao gồm nhiều cảm biến có thể được sử dụng bởi một cơ chế giám sát để thu thập dữ liệu như rung động, nhiệt độ, tốc độ gió và độ ẩm không khí. Bạn có thể đào tạo một mô hình ML với dữ liệu này, triển khai nó tới một thiết bị biên được kết nối với các cảm biến của tuabin và dự đoán những bất thường trong thời gian thực ở rìa. Nó sẽ làm giảm chi phí vận hành của đội tua-bin của bạn. Nhưng hãy tưởng tượng nỗ lực duy trì giải pháp này trên một nhóm hàng nghìn hoặc hàng triệu thiết bị. Làm cách nào để bạn vận hành, bảo mật, triển khai, chạy và giám sát các mô hình ML trên một nhóm thiết bị hiện đại?
Trình quản lý Edge của Amazon SageMaker có thể giúp bạn trả lời câu hỏi này. Dịch vụ này cho phép bạn tối ưu hóa, bảo mật, giám sát và duy trì các mô hình ML trên các nhóm máy ảnh thông minh, rô bốt, máy tính cá nhân, thiết bị công nghiệp, thiết bị di động, v.v. Với Edge Manager, bạn có thể quản lý vòng đời của từng mô hình ML trên từng thiết bị trong nhóm thiết bị của mình lên đến hàng nghìn hoặc hàng triệu thiết bị. Dịch vụ cung cấp một tác nhân phần mềm chạy trên các thiết bị tiên tiến và giao diện quản lý trên Bảng điều khiển quản lý AWS.
Trong bài đăng này, chúng tôi hướng dẫn cách sử dụng Edge Manager để tạo ra một giải pháp end-to-end mạnh mẽ quản lý vòng đời của các mô hình ML được triển khai cho đội tuabin gió. Nhưng thay vì sử dụng các tuabin gió thực, bạn học cách xây dựng đội tuabin gió mini in 3D của riêng mình. Đây là một dự án phần cứng mở, mã nguồn mở DIY được tạo ra để chứng minh cách xây dựng một giải pháp ML at the edge với Amazon SageMaker. Bạn có thể sử dụng nó như một nền tảng để học hỏi, thử nghiệm và lấy cảm hứng.
Các phần tiếp theo bao gồm các chủ đề sau:
- Các thông số kỹ thuật của trang trại tuabin gió
- Cách cấu hình từng Jetson Nano
- Cách xây dựng mô hình phát hiện bất thường bằng SageMaker
- Cách vận hành trang trại tuabin gió mini của riêng bạn
Trang trại tuabin gió
Trang trại tuabin gió được tạo ra cho dự án này có năm tuabin gió in 3D mini được kết nối với năm Jetson Nanos riêng biệt qua USB. Jetson Nanos được kết nối với internet thông qua cáp Ethernet được cắm vào modem cáp. Một chiếc quạt, được đặt ở phía trước của trang trại, tạo ra gió để mô phỏng điều kiện ngoài trời. Hình ảnh sau đây cho thấy cách tổ chức trang trại điện gió.
Tua bin gió mini
Tua bin gió mini của dự án này là một thiết bị cơ khí được tích hợp vi điều khiển (Arduino) và một số cảm biến. Nó đã được mô hình hóa bằng cách sử dụng FreeCAD, một công cụ mã nguồn mở để thiết kế các bộ phận công nghiệp. Các bộ phận này sau đó được in 3D bằng PETG (loại sợi nhựa) và lắp ráp với các thành phần điện tử. Cơ sở của nó là tĩnh, có nghĩa là tuabin không tự điều chỉnh theo hướng gió. Hạn chế này rất quan trọng để đơn giản hóa dự án.
Mỗi tuabin có một máy phát điện áp (động cơ nhỏ) và bảy cảm biến khác nhau:
- Rung (MPU6050: gia tốc kế 6 trục / con quay hồi chuyển)
- Bộ mã hóa vòng quay hồng ngoại (vòng quay mỗi giây)
- Nhiệt độ hộp số (MPU6050)
- Nhiệt độ môi trường (BME680)
- Áp suất khí quyển (BME680)
- Độ ẩm không khí (BME680)
- Chất lượng không khí (BME680)
An Arduino Mini Pro chịu trách nhiệm giao tiếp với các cảm biến này và thu thập dữ liệu từ chúng. Dữ liệu này được truyền qua các chân nối tiếp (TX, RX). Một Thiết bị FTDI chuyển đổi tín hiệu nối tiếp này sang USB là cầu nối giữa Arduino và Jetson Nano. Một ứng dụng Python chạy trên Jetson Nano nhận dữ liệu thô từ các cảm biến thông qua cầu nối này.
Một servo vi mô đã được sửa đổi và chuyển đổi thành một máy phát điện áp. Hộp số bên trong của nó tăng tốc độ của máy phát (động cơ) lên năm lần để tạo ra điện áp (thấp) trong khoảng từ 0–3.3v. Bộ tạo này cũng được kết nối với Arduino thông qua một chân đầu vào tương tự. Thông tin này cũng được gửi cùng với các bài đọc của cảm biến.
Tần số mà dữ liệu được thu thập phụ thuộc vào cảm biến. Tất cả các tín hiệu từ BME650 được thu thập mỗi 150 mili giây, bộ mã hóa vòng quay mỗi 1 giây, bộ tạo điện áp và cảm biến rung động mỗi 50 mili giây.
Nếu bạn muốn biết thêm về các chi tiết kỹ thuật này và tìm hiểu cách chế tạo tuabin gió mini của riêng mình, hãy xem Kho GitHub.
Thiết bị cạnh
Mỗi trang web Máy bay phản lực nano có GPU tích hợp với NVIDIA Maxwell ™ 128 lõi và CPU Quad-core ARM® A57 chạy ở tốc độ 1.43 GHz. Phần cứng này đủ để chạy một ứng dụng Python thu thập và định dạng dữ liệu từ các cảm biến của tuabin và sau đó gọi Đại lý Edge Manager API để nhận các dự đoán. Ứng dụng này so sánh dự đoán với một ngưỡng để kiểm tra sự bất thường trong dữ liệu. Mô hình được gọi trong thời gian thực.
Thời Gian SageMaker Neo biên dịch mô hình ML cho Jetson Nano, một thời gian chạy (dlr) được tối ưu hóa cho thiết bị mục tiêu này được bao gồm trong gói triển khai. Thời gian chạy này tự động phát hiện rằng nó đang chạy trên Jetson Nano và tải mô hình trực tiếp vào GPU của thiết bị để có hiệu suất tối đa.
Tác nhân Edge Manager cũng được phân phối dưới dạng ứng dụng Linux (arm64) có thể chạy dưới dạng quy trình nền (daemon) trên Jetson Nano của bạn. Nó sử dụng thời gian chạy mà SageMaker Neo có trong gói biên dịch để giao tiếp với mô hình được tối ưu hóa và hiển thị nó dưới dạng một API được xác định rõ. API này được tích hợp với ứng dụng cục bộ thông qua giao thức có độ trễ thấp (grpc + unix socket).
Các dịch vụ đám mây
Bây giờ bạn đã biết một số chi tiết về phần cứng vật lý được sử dụng để phát triển trang trại tuabin gió, đã đến lúc xem các dịch vụ AWS nào hỗ trợ giải pháp trên nền tảng đám mây. Một thiết lập độc lập, tối thiểu để triển khai và chạy mô hình trên tác nhân Edge Manager chỉ yêu cầu SageMaker và không cần thêm gì nữa. Tuy nhiên, các dịch vụ khác đã được sử dụng trong dự án này với hai tính năng quan trọng: cơ chế triển khai qua mạng (OTA) và bảng điều khiển để theo dõi các bất thường trong thời gian gần thực.
Tóm lại, các thành phần cần thiết cho dự án này là:
- Nhóm thiết bị (Edge Manager), tổ chức và kiểm soát một hoặc nhiều thiết bị đã đăng ký thông qua tác nhân (chạy trên từng thiết bị)
- Một Điều IoT mỗi thiết bị và Nhóm điều IoT, được sử dụng bởi cơ chế OTA để giao tiếp với các thiết bị qua MQTT
- AWS IoT quy tắc và một AWS Lambda chức năng lấy và lọc nhật ký ứng dụng và nhập chúng vào Dịch vụ Amazon Elasticsearch (Amazon ES)
- Một hàm Lambda để phân tích cú pháp các chỉ số mô hình mà tác nhân thu được khi nhập chúng vào Amazon ES
- Một máy chủ Elasticsearch với Kibana, có trang tổng quan để theo dõi các điểm bất thường (tùy chọn)
- SageMaker để xây dựng, biên dịch và đóng gói mô hình ML
Sơ đồ sau minh họa kiến trúc này.
Kết hợp mọi thứ lại với nhau
Bây giờ chúng tôi đã có tất cả các thành phần của trang trại tuabin gió của mình, đã đến lúc hiểu các bước chúng tôi cần thực hiện để tích hợp tất cả các bộ phận chuyển động này, triển khai mô hình cho các thiết bị cạnh của chúng tôi và giữ cho một ứng dụng chạy và dự đoán sự bất thường trong thời gian thực.
Sơ đồ sau đây cho thấy tất cả các bước liên quan đến quy trình.
Giải pháp bao gồm các bước sau:
- Nhà khoa học dữ liệu khám phá tập dữ liệu và thiết kế mô hình phát hiện bất thường (tự động mã hóa) với PyTorch, sử dụng Studio SageMaker.
- Người mẫu được đào tạo với công việc đào tạo SageMaker.
- Với Neo, mô hình được tối ưu hóa (biên dịch) thành Jetson Nano.
- Edge Manager tạo một gói triển khai với mô hình đã biên dịch.
- Nhà khoa học dữ liệu tạo ra một công việc IoT gửi thông báo về mô hình mới có sẵn cho các thiết bị cạnh.
- Ứng dụng chạy trên Jetson Nano thực hiện những điều sau:
- Nhận thông báo này và tải xuống gói mô hình từ Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) xô.
- Giải nén mô hình và tải nó bằng cách sử dụng API tác nhân Trình quản lý Edge (LoadModel).
- Đọc các cảm biến từ tuabin gió, chuẩn bị dữ liệu, gọi mô hình ML và nắm bắt một số chỉ số mô hình bằng cách sử dụng API tác nhân Edge Manager.
- So sánh dự đoán với đường cơ sở để phát hiện các bất thường tiềm ẩn.
- Gửi dữ liệu cảm biến thô tới chủ đề AWS IoT.
- Thông qua một quy tắc, AWS IoT đọc chủ đề nhật ký ứng dụng và xuất dữ liệu sang Amazon ES.
- Một hàm Lambda nắm bắt các chỉ số mô hình (sai số trung bình trung bình) do tác nhân xuất ra và nhập dữ liệu vào Amazon ES.
- Người điều hành sử dụng bảng điều khiển Kibana để kiểm tra bất kỳ sự bất thường nào.
Định cấu hình thiết bị cạnh của bạn
Tác nhân Trình quản lý Edge sử dụng các chứng chỉ được cung cấp bởi Lõi AWS IoT để xác thực và gọi các dịch vụ AWS khác. Theo cách đó, bạn cần tạo ra một thứ IoT trước tiên và sau đó là một nhóm thiết bị tiên tiến. Nhưng trước tiên, bạn cần chuẩn bị một số nguồn lực cơ bản để hỗ trợ giải pháp của mình.
Tạo tài nguyên tiên quyết
Trước khi bắt đầu, bạn cần cấu hình Giao diện dòng lệnh AWS trong máy trạm của bạn trước (nếu cần) và sau đó để tạo các tài nguyên sau:
- Một thùng S3 để lưu trữ dữ liệu đã chụp
- An Quản lý truy cập và nhận dạng AWS (IAM) vai trò cho thiết bị của bạn
- Một thứ IoT để ánh xạ tới thiết bị Edge Manager của bạn
- Chính sách IoT để kiểm soát quyền của thông tin đăng nhập tạm thời của thiết bị cạnh
- Tạo một nhóm mới cho giải pháp.
Mỗi lần bạn gọi CaptureData trong API tác nhân, nó sẽ tải các tensors (đầu vào và dự đoán) vào nhóm này.
Tiếp theo, bạn tạo vai trò IAM của mình.
- Trên bảng điều khiển IAM, tạo một vai trò có tên WindTurbineFarm để thiết bị có thể truy cập tài nguyên trong tài khoản của bạn.
- Thêm quyền vào vai trò này để tải tệp lên nhóm S3 mà bạn đã tạo.
- Thêm các thực thể đáng tin cậy sau vào vai trò:
amazonaws.com
iot.amazonaws.com
amazonaws.com
Sử dụng mã sau (cung cấp tên cho nhóm S3, tài khoản AWS của bạn và Khu vực):
Bây giờ bạn đã sẵn sàng để tạo ra thứ IoT của mình, thứ mà sau này bạn sẽ ánh xạ tới thiết bị Edge Manager của mình.
- Trên bảng điều khiển AWS IoT Core, dưới Quản lý, chọn Những điều
- Chọn Tạo.
- Đặt tên cho thiết bị của bạn (cho bài đăng này, edge-device-0).
- Tạo một nhóm mới hoặc chọn một nhóm hiện có (cho bài đăng này, WindTurbineFarm).
- Tạo chứng chỉ.
- Tải xuống các chứng chỉ, bao gồm cả CA gốc.
- Kích hoạt chứng chỉ.
Bây giờ bạn tạo chính sách của mình, chính sách này kiểm soát quyền của thông tin đăng nhập tạm thời của thiết bị cạnh.
- Trên bảng điều khiển AWS IoT Core, dưới Bảo mật, chọn Điều Luật.
- Chọn Tạo.
- Đặt tên cho chính sách (cho bài đăng này, WindTurbine).
- Chọn Chế độ nâng cao.
- Nhập chính sách sau, cung cấp tài khoản AWS và Khu vực của bạn:
- Chọn Tạo.
Cuối cùng, bạn đính kèm chính sách vào chứng chỉ.
- Trên bảng điều khiển AWS IoT Core, dưới Bảo mật, chọn Giấy chứng nhận.
- Chọn chứng chỉ bạn đã tạo.
- trên Hoạt động menu, chọn Đính kèm chính sách.
- Chọn chính sách WindTurbine.
- Chọn Đính kèm.
Bây giờ, thiết bị IoT của bạn đã sẵn sàng để được liên kết với một thiết bị cạnh. Lặp lại các bước này (ngoại trừ việc tạo chính sách) cho từng thiết bị bổ sung trong nhóm thiết bị của bạn. Đối với môi trường sản xuất với hàng trăm hoặc hàng nghìn thiết bị, bạn chỉ cần áp dụng một cách tiếp cận khác, sử dụng các tập lệnh tự động và tệp thông số để cung cấp tất cả những thứ IoT.
Tạo đội tàu cạnh tranh
Để tạo đội ngũ cạnh tranh của bạn, hãy hoàn thành các bước sau:
- Trên bảng điều khiển SageMaker, dưới Suy luận cạnh, chọn Nhóm thiết bị cạnh.
- Chọn Tạo nhóm thiết bị.
- Nhập tên cho thiết bị (cho bài đăng này,
WindTurbineFarm
). - Nhập ARN của vai trò IAM mà bạn đã sử dụng trong các bước trước đó (
arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/WindTurbineFarm
). - Nhập URI nhóm S3 đầu ra (
s3://<<NAME_OF_YOUR_BUCKET>>/wind_turbine_data/
). - Chọn Gửi.
Bây giờ bạn cần thêm một thiết bị mới vào hạm đội.
- Trên bảng điều khiển SageMaker, dưới Suy luận cạnh, chọn Thiết bị cạnh.
- Chọn Đăng ký thiết bị.
- Trong Device Properties, nhập tên của nhóm thiết bị bạn đã tạo (
WindTurbineFarm
). - Chọn Sau.
- Trong Tên thiết bị, hãy nhập bất kỳ tên duy nhất nào cho thiết bị của bạn (đối với bài đăng này, chúng tôi sử dụng cùng tên với thiết bị IoT của chúng tôi,
edge-device-wind-turbine-00000000000
). - Trong Tên IoT, nhập tên của thứ bạn đã tạo trước đó (
edge-device-0
). - Chọn Gửi.
Lặp lại quá trình đăng ký cho tất cả các thiết bị khác của bạn. Bây giờ bạn có thể SSH tới Jetson Nano của mình và hoàn thành cấu hình thiết bị của bạn.
Chuẩn bị thiết bị cạnh
Trước khi bắt đầu định cấu hình Jetson Nano, bạn cần cài đặt Máy bay phản lực 4.4.1 trong Nano của bạn. Đây là phiên bản bạn sử dụng để xây dựng, chạy và thử nghiệm bản trình diễn này.
Quá trình chuẩn bị mô hình cho thiết bị mục tiêu của bạn rất nhạy cảm liên quan đến các phiên bản của thư viện được cài đặt trong thiết bị của bạn. Ví dụ: vì thiết bị đích là Jetson Nano, Neo sẽ tối ưu hóa mô hình và thời gian chạy cho một phiên bản nhất định của TensorRT và CUDA. Thời gian chạy (libdlr.so
) được liên kết vật lý với các phiên bản bạn chỉ định trong công việc biên dịch. Điều này có nghĩa là nếu bạn biên dịch mô hình của mình bằng Neo cho JetPack 4.4.1, thì mô hình đó không hoạt động với JetPack 3.x. và ngược lại.
- Với JetPack 4.4.1 chạy trên Jetson Nano, bạn có thể bắt đầu định cấu hình thiết bị của mình bằng các lệnh sau:
- Tải xuống phiên bản Linux ARMv8 của tác nhân Edge Manager.
- Sao chép gói vào Jetson Nano của bạn (
scp
). Tạo một thư mục cho tác nhân và giải nén gói trong thư mục chính của bạn:
- Sao chép chứng chỉ AWS IoT Core mà bạn đã cấp phép cho thứ của mình trong phần trước vào thư mục
~/agent/certificates/iot
trong Jetson Nano của bạn.
Bạn sẽ thấy các tệp sau trong thư mục này:
- PEM - gốc CA
- < > -public.pem.key - Khóa công khai
- < > -private.pem.key - Chìa khóa cá nhân
- < > -certificate.pem.crt - Giấy chứng nhận
- Nhận chứng chỉ gốc được sử dụng để ký gói triển khai được tạo bởi Edge Manager. Tác nhân sử dụng điều này để xác nhận mô hình.
- Sao chép chứng chỉ này vào thư mục
~/agent/certificates/root
trong Jetson Nano của bạn.
Tiếp theo, bạn tạo tệp cấu hình tác nhân Edge Manager.
- Mở một tệp trống có tên ~ / agent / sagemaker_edge_config.json và nhập mã sau:
Cung cấp thông tin cho các nguồn sau:
- SAGEMAKER_EDGE_DEVICE_NAME - Tên duy nhất của thiết bị mà bạn đã xác định trước đó.
- AWS_REGION - Khu vực bạn đã tạo thiết bị cạnh của mình.
- LINUX_USER - Tên người dùng Linux bạn đang sử dụng trong Jetson Nano.
- CERT_PREFIX - Tiền tố của các tệp chứng chỉ mà bạn đã tạo khi cung cấp thứ IOT của mình trong phần trước.
- CREDENTIALS_ENDPOINT_HOST - Máy chủ lưu trữ điểm cuối của bạn. Bạn có thể lấy điểm cuối này thông qua Giao diện dòng lệnh AWS (AWS CLI). (Cài đặt AWS CLI nếu bạn chưa có). Sử dụng thông tin đăng nhập của cùng một tài khoản và cùng Khu vực bạn đã sử dụng trong các phần trước (đây không phải là URL bóng của IoT). Sau đó chạy lệnh sau để truy xuất máy chủ điểm cuối:
- S3_BUCKET - Tên của nhóm S3 mà bạn đã sử dụng để định cấu hình nhóm thiết bị cạnh của mình trong phần trước.
- Lưu tệp với tất cả các sửa đổi này.
Bây giờ bạn đã sẵn sàng để chạy tác nhân Edge Manager trong Jetson Nano của mình.
- Để kiểm tra tác nhân, hãy chạy các lệnh sau:
Ảnh chụp màn hình sau đây hiển thị đầu ra của bạn.
Đại lý hiện đang hoạt động. Sau một vài phút, bạn có thể thấy nhịp tim của thiết bị, được báo cáo trên bảng điều khiển. Để xem nó trên bảng điều khiển SageMaker, dưới Suy luận cạnh, chọn Thiết bị cạnh và chọn thiết bị của bạn.
Định cấu hình ứng dụng
Bây giờ là lúc thiết lập ứng dụng chạy trên thiết bị cạnh. Ứng dụng này chịu trách nhiệm về những việc sau:
- Nhận thông tin đăng nhập tạm thời bằng chứng chỉ
- Nghe các chủ đề cập nhật OTA để xem gói mô hình mới đã sẵn sàng để triển khai hay chưa
- Triển khai gói mô hình có sẵn cho thiết bị cạnh
- Tải mô hình cho đại lý nếu cần thiết
- Thực hiện một vòng lặp vô hạn:
- Đọc dữ liệu cảm biến
- Định dạng dữ liệu đầu vào
- Gọi mô hình ML và nắm bắt một số chỉ số của dự đoán
- So sánh các dự đoán MAE (sai số trung bình trung bình) với đường cơ sở
- Xuất bản dữ liệu thô cho một chủ đề IoT (MQTT)
Để cài đặt ứng dụng, trước tiên hãy tải điểm cuối AWS IoT tùy chỉnh. Trên bảng điều khiển AWS IoT Core, hãy chọn Cài đặt. Sao chép điểm cuối và sử dụng nó trong đoạn mã sau:
Ứng dụng xuất ra một cái gì đó giống như ảnh chụp màn hình sau đây.
Tùy chọn: chạy ứng dụng này với tham số –test-mode nếu bạn chỉ muốn chạy thử nghiệm mà không có tuabin gió được kết nối với thiết bị biên.
Nếu mọi thứ diễn ra tốt đẹp, ứng dụng sẽ tiếp tục chờ đợi một mô hình mới. Đã đến lúc đào tạo một mô hình mới và triển khai nó cho Jetson Nano.
Đào tạo và triển khai mô hình ML
Bài đăng này trình bày cách phát hiện sự bất thường trong các bộ phận của tuabin gió. Có nhiều cách để thực hiện việc này với dữ liệu được thu thập bởi các cảm biến của nó. Để giữ cho ví dụ này đơn giản nhất có thể, bạn chuẩn bị một mô hình phân tích độ rung, tốc độ gió, vòng quay (mỗi giây) và điện áp tạo ra để xác định xem có tồn tại sự bất thường hay không. Vì mục đích đó, chúng tôi đào tạo một tự động mã hóa sử dụng Kim tự tháp trên SageMaker và chuẩn bị để triển khai trên Jetson Nano của bạn.
Kiến trúc mô hình này có hai ưu điểm: không bị giám sát, vì vậy chúng tôi không cần gắn nhãn dữ liệu của mình và bạn có thể thu thập dữ liệu từ các tuabin gió đang hoạt động hoàn hảo. Do đó, mô hình của bạn được đào tạo để phát hiện những gì bạn cho là hành vi bình thường của các tuabin gió. Khi một khuyết tật xuất hiện trong bất kỳ bộ phận nào của tuabin, thì dữ liệu cảm biến sẽ xảy ra, mà mô hình này hiểu là hành vi bất thường (dị thường).
Ảnh chụp màn hình sau đây là một mẫu dữ liệu thô được các cảm biến tuabin thu lại.
Dữ liệu có các tính năng sau:
- nanoId - ID của thiết bị cạnh đã thu thập dữ liệu
- tuabinId - ID của tuabin tạo ra dữ liệu này
- arduino_timestamp - Dấu thời gian của Arduino đang vận hành tuabin này
- nanoFreemem: Dung lượng bộ nhớ trống tính bằng byte
- thời gian sự kiện - Dấu thời gian của hàng
- rps - Quay rôto theo số vòng quay trên giây
- Vôn - Điện áp do máy phát sinh ra tính bằng milivôn
- qw, qx, qy, qz - Gia tốc góc Quaternion
- gx, gy, gz - Gia tốc trọng trường
- rìu, ay, az - Gia tốc tuyến tính
- hộp số - Nhiệt độ bên trong
- âm lượng - Nhiệt độ bên ngoài
- độ ẩm - Độ ẩm không khí
- áp lực - Áp suất không khí
- xăng - Chất lượng không khí
- gió_speed_rps - Tốc độ gió theo vòng quay trên giây
Các tính năng được chọn dựa trên mục tiêu của chúng tôi là: qx
,qx
,qy
,qz
(gia tốc góc), wind_speed_rps
, rps
và voltage
. Hình ảnh sau đây là một ví dụ về tính năng qx
. Dữ liệu do gia tốc kế tạo ra quá nhiễu nên trước tiên chúng ta cần làm sạch nó.
Vận tốc góc (quaternion) đầu tiên được chuyển đổi thành Góc Euler (lăn, cao độ, yaw). Sau đó, chúng tôi loại bỏ tất cả các tính năng bằng Wavelets (PyWavelet), và bình thường hóa chúng. Ảnh chụp màn hình sau đây cho thấy các tín hiệu sau những biến đổi này.
Cuối cùng, chúng tôi áp dụng một cửa sổ trượt cho tập dữ liệu kết quả này (sáu tính năng) để nắm bắt mối quan hệ thời gian giữa các lần đọc hàng xóm và tạo ra tensor đầu vào của mô hình ML của chúng tôi. Khoảng thời gian trung bình giữa hai mẫu liên tiếp là khoảng 50 mili giây. Mỗi cửa sổ thời gian (trong cửa sổ trượt của chúng tôi) sau đó được chuyển đổi thành một tensor, sử dụng cấu trúc sau:
- máy căng - 6 tính năng x 10 bước (100 mẫu) = 6 × 100
- Bước - Nhóm các bước thời gian
- Bước thời gian - Nhóm khoảng thời gian (time_step = 20 = ~ 5 giây)
- Khoảng thời gian - Nhóm mẫu (khoảng thời gian = 5 = ~ 250 mili giây)
- Định hình lại tensor - 6x10x10
Interval
, time step
và step
là các siêu tham số mà bạn có thể điều chỉnh trong quá trình đào tạo. Kết quả cuối cùng là một luồng dữ liệu, được mã hóa dưới dạng tensor đa chiều (đại diện cho một vài giây trong quá khứ). Bộ mã tự động được đào tạo cố gắng tạo lại tensor đầu vào làm đầu ra (dự đoán). Bằng cách đo MAE giữa đầu vào và đầu ra và so sánh với ngưỡng được xác định trước, bạn có thể xác định các điểm bất thường tiềm ẩn.
Một khía cạnh quan trọng của phương pháp này là nó trích xuất các mối tương quan tuyến tính và phi tuyến tính giữa các đối tượng địa lý, để hiểu rõ hơn về tác động của một đối tượng địa lý này đối với đối tượng địa lý khác, chẳng hạn như tốc độ gió lên vòng quay hoặc điện áp tạo ra.
Bây giờ đã đến lúc chạy thử nghiệm này.
- Trước hết, bạn cần thiết lập môi trường Studio của bạn nếu bạn chưa có.
- Sao chép repo GitHub
https://github.com/aws-samples/amazon-sagemaker-edge-manager-demo
bên trong một thiết bị đầu cuối Studio.
Kho chứa một thư mục có tên 03_Notebooks
với hai máy tính xách tay Jupyter.
- Làm theo hướng dẫn trong sổ ghi chép đầu tiên để chuẩn bị tập dữ liệu - Vì dữ liệu bộ gia tốc là một tín hiệu, nó chứa nhiễu, vì vậy bạn chạy cơ chế khử nhiễu để làm sạch dữ liệu.
Tập dữ liệu cuối cùng chỉ có sáu tính năng: cuộn, cao độ, yaw (được chuyển đổi từ Đệ tứ đến Góc Euler), wind_speed_rps, rps (vòng quay mỗi giây), điện áp (do máy phát tạo ra).
- Thực hiện theo các hướng dẫn trong sổ tay thứ hai để đào tạo, đóng gói và triển khai mô hình:
- Sử dụng SageMaker để đào tạo trình mã tự động PyTorch của bạn (dựa trên CNN).
- Chạy dự đoán hàng loạt để tính MAE và ngưỡng được ứng dụng sử dụng để xác định xem dự đoán đó có phải là bất thường hay không.
- Biên dịch mô hình sang Jetson Nano bằng Neo.
- Tạo gói triển khai với Edge Manager.
- Tạo một công việc IoT xuất bản tài liệu JSON cho một chủ đề được ứng dụng đang chạy trên Jetson Nano của bạn lắng nghe.
Ứng dụng nhận gói, giải nén nó, tải mô hình trong tác nhân Trình quản lý Edge và bỏ chặn việc chạy ứng dụng.
Cả hai máy tính xách tay đều rất chi tiết, vì vậy hãy làm theo các bước một cách cẩn thận, sau đó bạn sẽ có một mô hình phát hiện bất thường để triển khai trong Jetson Nano của mình.
Công việc biên dịch và tối ưu hóa mô hình
Một trong những bước quan trọng nhất của toàn bộ quy trình là bước tối ưu hóa mô hình trong sổ ghi chép thứ hai. Khi bạn biên dịch một mô hình với SageMaker Neo, nó không chỉ tối ưu hóa mô hình để cải thiện hiệu suất dự đoán trong thiết bị mục tiêu, nó còn chuyển đổi mô hình ban đầu thành một đại diện trung gian. Sau khi chuyển đổi này, bạn không cần phải sử dụng khuôn khổ ban đầu nữa (PyTorch, TensorFlow, MXNet). Biểu diễn này sau đó được giải thích bằng thời gian chạy nhẹ (dlr), được đóng gói cùng với mô hình của Neo. Cả thời gian chạy và mô hình được tối ưu hóa đều là thư viện, được biên dịch dưới dạng chương trình gốc cho một hệ thống hoạt động và kiến trúc cụ thể. Trong trường hợp của Jetson Nano, hệ điều hành là một bản phân phối Linux và kiến trúc: ARM8 64bits. Thời gian chạy trong trường hợp này sử dụng TenorRT để có hiệu suất tối đa trên GPU của Jetson.
Khi bạn khởi chạy công việc biên dịch trên Neo, bạn cần chỉ định một số thông số liên quan đến việc thiết lập thiết bị mục tiêu của mình, ví dụ:
- trt-ver - 7.1.3
- cuda-ver - 10.2
- mã gpu - sm_53
GPU của Jetson Nano là NVIDIA Maxwell, phiên bản kiến trúc 53, vì vậy tham số gpu-code là giống nhau cho tất cả các công việc biên dịch. Tuy nhiên, trt-ver và cuda-ver phụ thuộc vào phiên bản của TensorRT và CUDA được cài đặt trên Nano của bạn. Khi bạn chuẩn bị thiết bị cạnh của mình, bạn thiết lập Jetson Nano của mình với JetPack 4.4.1. Điều này đảm bảo rằng kiểu máy bạn tối ưu hóa bằng Neo tương thích với Jetson Nano của bạn.
Hình dung kết quả
Thiết lập trang tổng quan không nằm trong phạm vi cho bài đăng này. Để biết thêm thông tin, hãy xem Phân tích dữ liệu do thiết bị tạo với AWS IoT và Amazon Elasticsearch Service.
Bây giờ bạn đã triển khai và chạy mô hình của mình trên Jetson Nano, đã đến lúc xem xét hoạt động của các tuabin gió của bạn thông qua bảng điều khiển. Ứng dụng bạn đã triển khai cho Jetson Nano thu thập một số nhật ký và gửi chúng đến hai nơi khác nhau:
- Chủ đề IoT MQTT
wind-turbine/logs/<<iot_thing_name>>
chứa nhật ký ứng dụng và dữ liệu thô được thu thập từ các cảm biến tuabin gió - Nhóm S3
s3://<<S3_BUCKET>>/wind_turbine_data
chứa các chỉ số của mô hình ML
Bạn có thể lấy dữ liệu này và nhập nó vào Amazon ES hoặc cơ sở dữ liệu khác. Sau đó, bạn có thể sử dụng báo cáo ưa thích của mình để chuẩn bị trang tổng quan.
Hình ảnh trực quan sau đây cho thấy ba điều khác nhau nhưng có tương quan với mỗi một trong năm tuabin: tốc độ quay (tính bằng RPS), điện áp được tạo ra và các điểm bất thường được phát hiện đối với điện áp, vòng quay và độ rung.
Một số tiếng ồn đã được đưa vào dữ liệu thô từ các tuabin để mô phỏng sự cố.
Hình ảnh sau đây cho thấy tổng hợp tốc độ của tuabin và sự bất thường về điện áp được tạo ra theo thời gian.
Kết luận
Duy trì một cách an toàn và đáng tin cậy vòng đời của một mô hình ML được triển khai trên một nhóm thiết bị không phải là một nhiệm vụ dễ dàng. Tuy nhiên, với Edge Manager, bạn có thể giảm nỗ lực triển khai và chi phí vận hành của một giải pháp như vậy. Ngoài ra, với bản demo như trang trại tuabin gió mini, bạn có thể thử nghiệm, tối ưu hóa và tự động hóa đường ống ML của mình với các dịch vụ và chuyên môn do AWS cung cấp.
Để xây dựng một giải pháp cho nhu cầu của riêng bạn, hãy lấy mã và hiện vật được sử dụng trong dự án này từ Repo GitHub. Nếu bạn muốn thực hành nhiều hơn bằng cách sử dụng Trình quản lý Edge, hãy xem hội thảo end-to-end cho Edge Manager trên Studio.
Lưu ý
Samir Araújo là Kiến trúc sư Giải pháp AI / ML tại AWS. Anh ấy giúp khách hàng tạo ra các giải pháp AI / ML giải quyết các thách thức kinh doanh của họ bằng AWS. Anh ấy đã và đang thực hiện một số dự án AI / ML liên quan đến thị giác máy tính, xử lý ngôn ngữ tự nhiên, dự báo, ML ở rìa và hơn thế nữa. Anh ấy thích chơi với các dự án phần cứng và tự động hóa trong thời gian rảnh, và anh ấy có niềm yêu thích đặc biệt với người máy.
- 3d
- gia tốc
- truy cập
- Tài khoản
- Kế toán
- Hoạt động
- thêm vào
- đàn bà gan dạ
- Amazon SageMaker
- phát hiện bất thường
- api
- ứng dụng
- Các Ứng Dụng
- APT
- kiến trúc
- xung quanh
- Tự động
- Tự động hóa
- AWS
- Baseline
- CẦU
- xây dựng
- kinh doanh
- cáp
- cuộc gọi
- máy ảnh
- trường hợp
- Giấy chứng nhận
- Giấy chứng nhận
- đám mây
- CNN
- mã
- Thu
- thương gia
- Các công ty
- Tính
- Tầm nhìn máy tính
- máy tính
- tiêu thụ
- Chuyển đổi
- Chi phí
- hội đồng
- Tạo
- Credentials
- Current
- khách hàng
- bảng điều khiển
- dữ liệu
- nhà khoa học dữ liệu
- Cơ sở dữ liệu
- ngày
- giao hàng
- Phát hiện
- phát triển
- Thiết bị (Devices)
- Tự làm
- bỏ lỡ
- Cạnh
- hiệu quả
- Elasticsearch
- Thiết bị điện tử
- Điểm cuối
- năng lượng
- Kỹ Sư
- Môi trường
- Trang thiết bị
- thử nghiệm
- xuất khẩu
- xuất khẩu
- Chất chiết xuất
- trang trại
- Đặc tính
- Tính năng
- cuối
- Tên
- VÒI
- theo
- Khung
- Miễn phí
- chức năng
- đi
- GitHub
- Toàn cầu
- GPU
- Nhóm
- phần cứng
- Trang Chủ
- Độ đáng tin của
- Hướng dẫn
- HTTPS
- Hàng trăm
- IAM
- xác định
- Bản sắc
- hình ảnh
- Bao gồm
- công nghiệp
- thiết bị công nghiệp
- IoT công nghiệp
- ngành công nghiệp
- thông tin
- quan tâm
- Internet
- tham gia
- iốt
- IT
- Việc làm
- việc làm
- Key
- Ngôn ngữ
- phóng
- LEARN
- học tập
- ánh sáng
- Dòng
- linux
- địa phương
- học máy
- quản lý
- bản đồ
- Metrics
- triệu
- ML
- di động
- thiết bị di động
- kiểu mẫu
- giám sát
- Phổ biến nhất
- nano
- Ngôn ngữ tự nhiên
- Xử lý ngôn ngữ tự nhiên
- NEO
- Tiếng ồn
- máy tính xách tay
- thông báo
- Nvidia
- hoạt động
- Nền tảng khác
- Ngoài trời
- hiệu suất
- Những máy tính cá nhân
- nhựa
- nền tảng
- Đã cắm
- điều luật
- Phổ biến
- quyền lực
- dự đoán
- Dự đoán
- áp lực
- riêng
- Sản xuất
- Sản lượng
- Khóa Học
- dự án
- dự án
- công khai
- xuất bản
- Python
- ngọn đuốc
- chất lượng
- Nguyên
- dữ liệu thô
- thời gian thực
- giảm
- năng lượng tái tạo
- tài nguyên
- Thông tin
- Kết quả
- robotics
- robot
- Lăn
- quy tắc
- chạy
- chạy
- RX
- nhà làm hiền triết
- Quy mô
- an ninh
- chọn
- cảm biến
- DỊCH VỤ
- định
- Bóng tối
- Đơn giản
- Six
- nhỏ
- thông minh
- So
- Phần mềm
- Giải pháp
- động SOLVE
- tốc độ
- Bắt đầu
- bắt đầu
- Tuyên bố
- là gắn
- hàng
- Sudo
- nhà cung cấp
- hỗ trợ
- hệ thống
- Mục tiêu
- Kỹ thuật
- tạm thời
- tensorflow
- thử nghiệm
- thời gian
- Chủ đề
- Hội thảo
- tuabin
- Cập nhật
- URI
- usb
- Thành phố Velo
- tầm nhìn
- hình dung
- Wikipedia
- gió
- năng lượng gió
- năng lượng gió
- tuabin gió
- Công việc
- X