در اینترنت اشیا صنعتی، اجرای مدلهای یادگیری ماشین (ML) بر روی دستگاههای لبه برای بسیاری از موارد استفاده، مانند نگهداری پیشبینیکننده، بهبود کیفیت، نظارت در زمان واقعی، بهینهسازی فرآیند و امنیت ضروری است. به عنوان مثال، صنعت انرژی سرمایه گذاری زیادی در ML انجام می دهد تا تحویل برق را خودکار کند، مصرف را نظارت کند، کارایی را بهینه کند و طول عمر تجهیزات خود را افزایش دهد.
انرژی باد یکی از محبوب ترین منابع انرژی تجدیدپذیر است. طبق اعلام شورای جهانی انرژی بادی، 22,893 توربین بادی در سال 2019 در سراسر جهان نصب شد که از 33 تامین کننده تولید شد و بیش از 63 گیگاوات ظرفیت انرژی باد را به خود اختصاص داد.. با چنین مقیاسی، شرکتهای انرژی به یک پلتفرم کارآمد برای مدیریت و نگهداری ناوگان توربینهای بادی خود و مدلهای ML در حال اجرا بر روی دستگاهها نیاز دارند. یک توربین بادی تجاری حدود 3 تا 4 میلیون دلار هزینه دارد. اگر یک توربین از کار بیفتد، هزینه آن 800 تا 1,600 دلار در روز است و در مجموع 7.5 مگاوات تلف می شود که برای تامین انرژی تقریباً 2,500 خانه کافی است.
توربین بادی یک قطعه مهندسی پیچیده است و از حسگرهای زیادی تشکیل شده است که می توانند توسط مکانیزم نظارتی برای گرفتن داده هایی مانند لرزش، دما، سرعت باد و رطوبت هوا استفاده شوند. شما می توانید یک مدل ML را با این داده ها آموزش دهید، آن را در یک دستگاه لبه متصل به حسگرهای توربین مستقر کنید و ناهنجاری ها را در زمان واقعی در لبه پیش بینی کنید. این امر هزینه عملیاتی ناوگان توربین های شما را کاهش می دهد. اما تلاش برای حفظ این راه حل در ناوگانی متشکل از هزاران یا میلیون ها دستگاه را تصور کنید. چگونه مدلهای ML را در ناوگانی از دستگاههای لبه کار، ایمن، استقرار، اجرا و نظارت میکنید؟
Amazon SageMaker Edge Manager می تواند به شما در پاسخ به این سوال کمک کند. این سرویس به شما امکان می دهد مدل های ML را در ناوگان دوربین های هوشمند، ربات ها، رایانه های شخصی، تجهیزات صنعتی، دستگاه های تلفن همراه و غیره بهینه سازی، ایمن، نظارت و نگهداری کنید. با Edge Manager، میتوانید چرخه عمر هر مدل ML را در هر دستگاه در ناوگان دستگاه خود تا هزاران یا میلیونها دستگاه مدیریت کنید. این سرویس یک عامل نرمافزاری را ارائه میکند که روی دستگاههای لبه اجرا میشود و یک رابط مدیریتی روی آن کنسول مدیریت AWS.
در این پست، نحوه استفاده از Edge Manager را برای ایجاد یک راهحل قوی از انتها به انتها نشان میدهیم که چرخه عمر مدلهای ML مستقر در ناوگان توربین بادی را مدیریت میکند. اما به جای استفاده از توربین های بادی واقعی، یاد می گیرید که چگونه ناوگان خود را از توربین های بادی چاپ سه بعدی کوچک بسازید. این یک پروژه DIY منبع باز و سخت افزاری باز است که برای نشان دادن نحوه ساخت یک ML در راه حل لبه ایجاد شده است. آمازون SageMaker. می توانید از آن به عنوان بستری برای یادگیری، آزمایش و الهام گرفتن استفاده کنید.
بخش های بعدی موضوعات زیر را پوشش می دهد:
- مشخصات مزرعه توربین بادی
- نحوه پیکربندی هر جتسون نانو
- چگونه با استفاده از SageMaker یک مدل تشخیص ناهنجاری بسازیم
- چگونه مزرعه مینی توربین بادی خود را راه اندازی کنید
مزرعه توربین بادی
مزرعه توربین بادی ایجاد شده برای این پروژه دارای پنج توربین بادی مینی پرینت سه بعدی است که از طریق USB به پنج جتسون نانو مجزا متصل هستند. جتسون نانوها از طریق کابل های اترنت متصل به مودم کابلی به اینترنت متصل می شوند. یک فن که در جلوی مزرعه قرار دارد، باد را برای شبیه سازی شرایط در فضای باز تولید می کند. تصویر زیر نحوه سازماندهی مزرعه بادی را نشان می دهد.
مینی توربین بادی
مینی توربین بادی این پروژه یک دستگاه مکانیکی است که با یک میکروکنترلر (آردوینو) و تعدادی سنسور. با استفاده از آن مدل سازی شد FreeCADابزاری متن باز برای طراحی قطعات صنعتی. سپس این قطعات با استفاده از PETG (نوع رشته پلاستیکی) پرینت سه بعدی شدند و با قطعات الکترونیکی مونتاژ شدند. پایه آن ثابت است، به این معنی که توربین به خودی خود با جهت باد همسو نمی شود. این محدودیت برای ساده سازی پروژه مهم بود.
هر توربین دارای یک ژنراتور ولتاژ (موتور کوچک) و هفت سنسور مختلف است:
- لرزش (MPU6050: شتابسنج/ژیروسکوپ 6 محوره)
- رمزگذار چرخش مادون قرمز (چرخش در ثانیه)
- دمای گیربکس (MPU6050)
- دمای محیط (BME680)
- فشار اتمسفر (BME680)
- رطوبت هوا (BME680)
- کیفیت هوا (BME680)
An آردوینی مینی پرو وظیفه ارتباط با این حسگرها و جمع آوری داده ها از آنها را بر عهده دارد. این داده ها از طریق پین های سریال (TX, RX) پخش می شوند. یک دستگاه FTDI که این سیگنال سریال را به USB تبدیل می کند، پل بین آردوینو و جتسون نانو است. یک برنامه پایتون که روی Jetson Nano اجرا می شود، داده های خام را از حسگرها از طریق این پل دریافت می کند.
یک میکرو سروو اصلاح شد و به یک ژنراتور ولتاژ تبدیل شد. گیربکس داخلی آن سرعت ژنراتور (موتور) را پنج برابر افزایش می دهد تا ولتاژ (کم) بین 0 تا 3.3 ولت تولید کند. این ژنراتور نیز از طریق یک پایه ورودی آنالوگ به آردوینو متصل می شود. این اطلاعات همراه با قرائت سنسور نیز ارسال می شود.
فرکانس جمع آوری داده ها به سنسور بستگی دارد. تمام سیگنال های BME650 هر 150 میلی ثانیه، رمزگذار چرخش هر 1 ثانیه، و مولد ولتاژ و سنسور ارتعاش هر 50 میلی ثانیه جمع آوری می شوند.
اگر می خواهید در مورد این جزئیات فنی بیشتر بدانید و یاد بگیرید که چگونه توربین بادی کوچک خود را بسازید، به قسمت زیر مراجعه کنید. مخزن GitHub.
دستگاه لبه
هر یک جتسون نانو دارای یک پردازنده گرافیکی داخلی با 128 هسته NVIDIA Maxwell™ و یک پردازنده چهار هسته ای ARM® A57 که با فرکانس 1.43 گیگاهرتز کار می کند. این سخت افزار برای اجرای یک برنامه پایتون کافی است که داده ها را از حسگرهای توربین جمع آوری و فرمت می کند و سپس آن را فراخوانی می کند. عامل Edge Manager API برای دریافت پیش بینی ها. این نرم افزار پیش بینی را با یک آستانه برای بررسی ناهنجاری در داده ها مقایسه می کند. مدل در زمان واقعی فراخوانی می شود.
چه زمانی ساژ ساز نئو مدل ML را برای Jetson Nano، یک زمان اجرا (DLR) بهینه سازی شده برای این دستگاه هدف در بسته استقرار گنجانده شده است. این زمان اجرا به طور خودکار تشخیص می دهد که روی یک Jetson Nano اجرا می شود و مدل را مستقیماً در GPU دستگاه برای حداکثر کارایی بارگذاری می کند.
عامل Edge Manager نیز به عنوان یک برنامه لینوکس (arm64) توزیع شده است که می تواند به عنوان یک فرآیند پس زمینه (دیمون) روی Jetson Nano شما اجرا شود. این برنامه از زمان اجرا شامل SageMaker Neo در بسته کامپایل برای ارتباط با مدل بهینه شده و نمایش آن به عنوان یک API کاملاً تعریف شده استفاده می کند. این API از طریق یک پروتکل با تاخیر کم (grpc + سوکت یونیکس) با برنامه محلی یکپارچه شده است.
خدمات ابری
اکنون که جزئیاتی در مورد سخت افزار فیزیکی مورد استفاده برای توسعه مزرعه توربین بادی می دانید، زمان آن رسیده است که ببینید کدام سرویس های AWS از راه حل در سمت ابر پشتیبانی می کنند. راه اندازی حداقلی و مستقل برای استقرار و اجرای یک مدل در عامل Edge Manager فقط به SageMaker نیاز دارد و هیچ چیز بیشتر. با این حال، خدمات دیگری در این پروژه با دو ویژگی مهم مورد استفاده قرار گرفت: مکانیزم برای استقرار هوایی (OTA) و داشبوردی برای نظارت بر ناهنجاری ها در زمان نزدیک.
به طور خلاصه، اجزای مورد نیاز برای این پروژه عبارتند از:
- ناوگان دستگاه (Edge Manager)، که یک یا چند دستگاه ثبت شده را از طریق عامل سازماندهی و کنترل می کند (در حال اجرا در هر دستگاه)
- یک چیز اینترنت اشیا در هر دستگاه و گروه چیزهای اینترنت اشیاکه توسط مکانیزم OTA برای برقراری ارتباط با دستگاه ها از طریق MQTT استفاده می شود
- AWS IoT قوانین، و یک AWS لامبدا عملکردی برای دریافت و فیلتر کردن گزارش های برنامه و ورود آنها به آن سرویس جستجوی الاستیک آمازون (Amazon ES)
- یک تابع لامبدا برای تجزیه معیارهای مدل گرفته شده توسط عامل در ورود آنها به Amazon ES
- یک سرور Elasticsearch با کیبانا، که دارای داشبورد برای نظارت بر ناهنجاری ها است (اختیاری)
- SageMaker برای ساخت، کامپایل و بسته بندی مدل ML
نمودار زیر این معماری را نشان می دهد.
همه چیز را کنار هم گذاشتن
اکنون که ما تمام اجزای مزرعه توربین بادی خود را داریم، زمان آن فرا رسیده است که مراحلی را که باید برای یکپارچه کردن تمام این قطعات متحرک، استقرار یک مدل در دستگاههای لبهای خود، و اجرای برنامه و پیشبینی ناهنجاریها در زمان واقعی انجام دهیم، درک کنیم.
نمودار زیر تمام مراحل مربوط به فرآیند را نشان می دهد.
راه حل شامل مراحل زیر است:
- دانشمند داده مجموعه داده را بررسی می کند و یک مدل تشخیص ناهنجاری طراحی می کند (رمزگذار خودکار) با PyTorch، با استفاده از SageMaker Studio.
- این مدل با یک شغل آموزشی SageMaker آموزش دیده است.
- با Neo، مدل به Jetson Nano بهینه سازی (کامپایل) شده است.
- Edge Manager یک بسته استقرار با مدل کامپایل شده ایجاد می کند.
- دانشمند داده یک شغل اینترنت اشیا ایجاد می کند که اعلان مدل جدید موجود را برای دستگاه های لبه ارسال می کند.
- برنامه ای که روی Jetson Nano اجرا می شود کارهای زیر را انجام می دهد:
- این اعلان را دریافت می کند و بسته مدل را از سایت دانلود می کند سرویس ذخیره سازی ساده آمازون سطل (Amazon S3).
- مدل را باز می کند و با استفاده از API عامل Edge Manager (LoadModel) آن را بارگیری می کند.
- حسگرها را از توربین بادی میخواند، دادهها را آماده میکند، مدل ML را فراخوانی میکند، و برخی معیارهای مدل را با استفاده از API عامل Edge Manager ضبط میکند.
- برای تشخیص ناهنجاریهای احتمالی، پیشبینی را با خط پایه مقایسه میکند.
- دادههای خام حسگر را به موضوع AWS IoT ارسال میکند.
- از طریق یک قانون، AWS IoT موضوع گزارش های برنامه را می خواند و داده ها را به Amazon ES صادر می کند.
- یک تابع Lambda معیارهای مدل (میانگین خطای متوسط) صادر شده توسط عامل را ضبط می کند و داده ها را به Amazon ES وارد می کند.
- اپراتور از داشبورد Kibana برای بررسی هر گونه ناهنجاری استفاده می کند.
دستگاه لبه خود را پیکربندی کنید
عامل Edge Manager از گواهی های ارائه شده توسط استفاده می کند AWS IoT Core برای احراز هویت و تماس با سایر خدمات AWS. به این ترتیب ابتدا باید یک چیز IoT و سپس یک ناوگان دستگاه لبه ایجاد کنید. اما ابتدا باید برخی منابع اولیه را برای پشتیبانی از راه حل خود آماده کنید.
منابع پیش نیاز ایجاد کنید
قبل از شروع، باید پیکربندی کنید رابط خط فرمان AWS ابتدا در ایستگاه کاری خود (در صورت لزوم) و سپس منابع زیر را ایجاد کنید:
- یک سطل S3 برای ذخیره داده های گرفته شده
- An هویت AWS و مدیریت دسترسی نقش (IAM) برای دستگاه های شما
- یک چیز IoT برای نقشه برداری به دستگاه Edge Manager شما
- یک خط مشی اینترنت اشیا برای کنترل مجوزهای اعتبارنامه موقت دستگاه لبه
- یک سطل جدید برای راه حل ایجاد کنید.
هر بار که CaptureData را در API عامل فراخوانی می کنید، تانسورها (ورودی و پیش بینی ها) را در این سطل آپلود می کند.
بعد، نقش IAM خود را ایجاد می کنید.
- در کنسول IAM، نقشی به نام WindTurbineFarm ایجاد کنید تا دستگاه ها بتوانند به منابع موجود در حساب شما دسترسی داشته باشند.
- برای آپلود فایلها در سطل S3 که ایجاد کردهاید، مجوزهایی را به این نقش اضافه کنید.
- موجودیت های مورد اعتماد زیر را به نقش اضافه کنید:
amazonaws.com
iot.amazonaws.com
amazonaws.com
از کد زیر استفاده کنید (نام سطل S3، حساب AWS خود و منطقه را وارد کنید):
اکنون آماده هستید که چیز IoT خود را ایجاد کنید، که بعداً آن را به دستگاه Edge Manager خود نگاشت می کنید.
- در کنسول AWS IoT Core، در زیر مدیریت، انتخاب کنید اشیاء
- را انتخاب کنید ساختن.
- نام دستگاه خود را بگذارید (برای این پست، edge-device-0).
- یک گروه جدید ایجاد کنید یا یک گروه موجود را انتخاب کنید (برای این پست، WindTurbineFarm).
- یک گواهی ایجاد کنید.
- گواهینامه ها، از جمله ریشه CA را دانلود کنید.
- گواهی را فعال کنید
اکنون خط مشی خود را ایجاد می کنید، که مجوزهای اعتبارنامه موقت دستگاه لبه را کنترل می کند.
- در کنسول AWS IoT Core، در زیر امن، انتخاب کنید سیاست.
- را انتخاب کنید ساختن.
- خط مشی را نام ببرید (برای این پست، WindTurbine).
- را انتخاب کنید حالت پیشرفته.
- خط مشی زیر را با ارائه حساب AWS و منطقه خود وارد کنید:
- را انتخاب کنید ساختن.
در آخر، شما خط مشی را به گواهی پیوست می کنید.
- در کنسول AWS IoT Core، در زیر امن، انتخاب کنید گواهینامه ها.
- گواهی ایجاد شده را انتخاب کنید.
- بر اعمال منو ، انتخاب کنید خط مشی را ضمیمه کنید.
- سیاست WindTurbine را انتخاب کنید.
- را انتخاب کنید ضمیمه کردن.
اکنون چیز IoT شما آماده است تا به یک دستگاه لبه متصل شود. این مراحل را (به جز ایجاد خط مشی) برای هر دستگاه اضافی در ناوگان دستگاه خود تکرار کنید. برای یک محیط تولیدی با صدها یا هزاران دستگاه، شما فقط از یک رویکرد متفاوت استفاده میکنید و از اسکریپتهای خودکار و فایلهای پارامتر برای ارائه همه چیزهای IoT استفاده میکنید.
ناوگان لبه را ایجاد کنید
برای ایجاد ناوگان لبه خود، مراحل زیر را انجام دهید:
- در کنسول SageMaker، در زیر استنتاج لبه، انتخاب کنید ناوگان دستگاه Edge.
- را انتخاب کنید ناوگان دستگاه ایجاد کنید.
- یک نام برای دستگاه وارد کنید (برای این پست،
WindTurbineFarm
). - ARN نقش IAM را که در مراحل قبلی استفاده کردید وارد کنید (
arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/WindTurbineFarm
). - URI سطل خروجی S3 را وارد کنید (
s3://<<NAME_OF_YOUR_BUCKET>>/wind_turbine_data/
). - را انتخاب کنید ارسال.
اکنون باید یک دستگاه جدید به ناوگان اضافه کنید.
- در کنسول SageMaker، در زیر استنتاج لبه، انتخاب کنید دستگاه های لبه.
- را انتخاب کنید ثبت دستگاه ها.
- برای ویژگی های دستگاه، نام ناوگان دستگاهی که ایجاد کردید را وارد کنید (
WindTurbineFarm
). - را انتخاب کنید بعدی.
- برای نام دستگاه، هر نام منحصر به فردی را برای دستگاه خود وارد کنید (برای این پست، ما از همان نام IoT خود استفاده می کنیم،
edge-device-wind-turbine-00000000000
). - برای نام اینترنت اشیا، نام چیزی را که قبلا ایجاد کرده اید وارد کنید (
edge-device-0
). - را انتخاب کنید ارسال.
فرآیند ثبت نام را برای تمام دستگاه های دیگر خود تکرار کنید. اکنون می توانید به Jetson Nano خود SSH کنید و پیکربندی دستگاه خود را کامل کنید.
دستگاه لبه را آماده کنید
قبل از شروع پیکربندی Jetson Nano، باید نصب کنید جت پک 4.4.1 در نانو شما این نسخه ای است که برای ساخت، اجرا و آزمایش این دمو استفاده می کنید.
فرآیند آماده سازی مدل برای دستگاه مورد نظر شما نسبت به نسخه های کتابخانه های نصب شده در دستگاه شما بسیار حساس است. به عنوان مثال، از آنجایی که دستگاه مورد نظر یک Jetson Nano است، Neo مدل و زمان اجرا را به یک نسخه معین از TensorRT و CUDA بهینه میکند. زمان اجرا (libdlr.so
) از نظر فیزیکی به نسخه هایی که در کار کامپایل مشخص کرده اید پیوند دارد. این بدان معنی است که اگر مدل خود را با استفاده از Neo برای JetPack 4.4.1 کامپایل کنید، با JetPack 3.x کار نمی کند. و بالعکس.
- با اجرای JetPack 4.4.1 روی Jetson Nano، میتوانید پیکربندی دستگاه خود را با دستورات زیر شروع کنید:
- نسخه لینوکس ARMv8 عامل Edge Manager را دانلود کنید.
- بسته را در Jetson Nano خود کپی کنید (
scp
). یک پوشه برای عامل ایجاد کنید و بسته را در فهرست اصلی خود باز کنید:
- گواهیهای AWS IoT Core را که در بخش قبلی برای چیز خود تهیه کردهاید، در دایرکتوری کپی کنید
~/agent/certificates/iot
در Jetson Nano شما.
شما باید فایل های زیر را در این دایرکتوری ببینید:
- گل میخ – ریشه CA
- < >-public.pem.key - کلید عمومی
- < >-private.pem.key - کلید خصوصی
- < >-certificate.pem.crt - گواهینامه
- گواهی ریشه مورد استفاده برای امضای بسته استقرار ایجاد شده توسط Edge Manager را دریافت کنید. عامل از این برای اعتبارسنجی مدل استفاده می کند.
- این گواهی را در دایرکتوری کپی کنید
~/agent/certificates/root
در Jetson Nano شما.
در مرحله بعد، فایل پیکربندی عامل Edge Manager را ایجاد می کنید.
- یک فایل خالی با نام ~/agent/sagemaker_edge_config.json باز کنید و کد زیر را وارد کنید:
اطلاعات منابع زیر را ارائه دهید:
- SAGEMAKER_EDGE_DEVICE_NAME - نام منحصر به فرد دستگاه خود که قبلاً تعریف کرده اید.
- AWS_REGION – منطقه ای که دستگاه لبه خود را در آن ایجاد کرده اید.
- linux_user – نام کاربری لینوکس که در Jetson Nano استفاده می کنید.
- CERT_PREFIX – پیشوند فایلهای گواهی که هنگام ارائه IoT خود در بخش قبلی ایجاد کردید.
- CREDENTIALS_ENDPOINT_HOST – میزبان نقطه پایانی شما شما می توانید این نقطه پایانی را از طریق دریافت کنید رابط خط فرمان AWS (AWS CLI). (اگر قبلاً AWS CLI را ندارید نصب کنید). از اعتبارنامههای همان حساب و همان منطقهای که در بخشهای قبلی استفاده کردهاید استفاده کنید (این نشانی وب سایه چیز اینترنت اشیا نیست). سپس دستور زیر را برای بازیابی میزبان نقطه پایانی اجرا کنید:
- s3_bucket – نام سطل S3 که برای پیکربندی ناوگان دستگاه لبه خود در قسمت قبل استفاده کردید.
- فایل را با تمام این تغییرات ذخیره کنید.
اکنون شما آماده اجرای عامل Edge Manager در Jetson Nano خود هستید.
- برای تست عامل، دستورات زیر را اجرا کنید:
تصویر زیر خروجی شما را نشان می دهد.
نماینده اکنون در حال اجراست. پس از چند دقیقه می توانید ضربان قلب دستگاه را که روی کنسول گزارش شده است مشاهده کنید. برای دیدن آن در کنسول SageMaker، در زیر استنتاج لبه، انتخاب کنید دستگاه های لبه و دستگاه خود را انتخاب کنید.
برنامه را پیکربندی کنید
اکنون زمان راه اندازی برنامه ای است که روی دستگاه لبه اجرا می شود. این اپلیکیشن مسئولیت موارد زیر را بر عهده دارد:
- با استفاده از گواهینامه، اعتبار موقت را دریافت کنید
- به موضوعات به روز رسانی OTA گوش دهید تا ببینید آیا بسته مدل جدید آماده استقرار است یا خیر
- بسته مدل موجود را در دستگاه لبه مستقر کنید
- در صورت لزوم مدل را در نمایندگی بارگیری کنید
- یک حلقه بی نهایت انجام دهید:
- داده های سنسور را بخوانید
- داده های ورودی را فرمت کنید
- مدل ML را فراخوانی کنید و برخی از معیارهای پیش بینی را ثبت کنید
- پیشبینیهای MAE (میانگین میانگین خطا) را با خط مبنا مقایسه کنید
- انتشار داده های خام در یک موضوع اینترنت اشیا (MQTT)
برای نصب برنامه، ابتدا نقطه پایانی سفارشی AWS IoT را دریافت کنید. در کنسول AWS IoT Core، را انتخاب کنید تنظیمات. نقطه پایانی را کپی کرده و در کد زیر استفاده کنید:
خروجی برنامه چیزی شبیه تصویر زیر است.
اختیاری: اگر فقط می خواهید آزمایشی را بدون توربین بادی متصل به دستگاه لبه اجرا کنید، این برنامه را با پارامتر –test-mode اجرا کنید.
اگر همه چیز خوب پیش رفت، برنامه همچنان منتظر مدل جدیدی است. زمان آموزش یک مدل جدید و استقرار آن در Jetson Nano فرا رسیده است.
آموزش و استقرار مدل ML
این پست نحوه تشخیص ناهنجاری ها در اجزای یک توربین بادی را نشان می دهد. راه های زیادی برای انجام این کار با داده های جمع آوری شده توسط حسگرهای آن وجود دارد. برای ساده نگه داشتن این مثال تا حد امکان، مدلی را آماده میکنید که ارتعاش، سرعت باد، چرخش (در هر ثانیه) و ولتاژ تولید شده را تجزیه و تحلیل میکند تا مشخص کند که آیا ناهنجاری وجود دارد یا خیر. برای این منظور، ما آموزش می دهیم رمزگذار خودکار با استفاده از PyTorch در SageMaker و آن را برای استقرار در Jetson Nano خود آماده کنید.
این معماری مدل دو مزیت دارد: بدون نظارت است، بنابراین ما نیازی به برچسب گذاری داده های خود نداریم، و شما می توانید داده ها را از توربین های بادی که به خوبی کار می کنند جمع آوری کنید. بنابراین، مدل شما برای تشخیص رفتار طبیعی توربینهای بادی شما آموزش دیده است. هنگامی که یک نقص در هر بخشی از توربین ظاهر می شود، یک رانش در داده های حسگر رخ می دهد که مدل آن را به عنوان رفتار غیر طبیعی (یک ناهنجاری) تفسیر می کند.
تصویر زیر نمونه ای از داده های خام گرفته شده توسط حسگرهای توربین است.
داده ها دارای ویژگی های زیر هستند:
- نانو شناسه - شناسه دستگاه لبه ای که داده ها را جمع آوری کرده است
- توربین شناسه – شناسه توربینی که این داده ها را تولید کرده است
- arduino_timestamp - مهر زمانی آردوینو که این توربین را کار می کرد
- نانوآزاد: مقدار حافظه آزاد بر حسب بایت
- زمان رویداد - مهر زمانی ردیف
- rps – چرخش روتور بر حسب چرخش در ثانیه
- ولتاژ – ولتاژ تولید شده توسط ژنراتور بر حسب میلی ولت
- qw، qx، qy، qz - شتاب زاویه ای کواترنیون
- gx، gy، gz - شتاب گرانش
- تبر، آی، آز - شتاب خطی
- گیربکس تمپ - دمای داخلی
- ambtemp - دمای خارجی
- رطوبت - رطوبت هوا
- فشار - فشار هوا
- گاز - کیفیت هوا
- باد_سرعت_rps - سرعت باد بر حسب چرخش در ثانیه
ویژگی های انتخاب شده بر اساس اهداف ما عبارتند از: qx
,qx
,qy
,qz
(شتاب زاویه ای) wind_speed_rps
, rps
و voltage
. تصویر زیر نمونه ای از این ویژگی است qx
. داده های تولید شده توسط شتاب سنج بیش از حد نویز دارند، بنابراین ابتدا باید آن را تمیز کنیم.
سرعت زاویه ای (کواترنیون) ابتدا به زوایای اویلر (رول، گام، انحراف) تبدیل می شود. سپس تمام ویژگی ها را با Wavelets حذف می کنیم (PyWavelets) و آنها را عادی کنید. تصویر زیر سیگنال های پس از این تبدیل ها را نشان می دهد.
در نهایت، ما یک پنجره کشویی به این مجموعه داده به دست آمده (شش ویژگی) اعمال می کنیم تا رابطه زمانی بین قرائت های همسایه را به تصویر بکشیم و تانسور ورودی مدل ML خود را ایجاد کنیم. میانگین فاصله بین دو نمونه متوالی تقریباً 50 میلی ثانیه است. سپس هر پنجره زمانی (پنجره کشویی ما) با استفاده از ساختار زیر به یک تانسور تبدیل می شود:
- تانسور – 6 ویژگی x 10 مرحله (100 نمونه) = 6×100
- گام – گروهی از مراحل زمانی
- مرحله زمانی – گروه فواصل (time_step=20 =~5 ثانیه)
- فاصله - گروه نمونه ها (فاصله = 5 = ~ 250 میلی ثانیه)
- تانسور تغییر شکل یافته - 6x10x10
Interval
, time step
و step
هایپرپارامترهایی هستند که می توانید در طول تمرین آنها را تنظیم کنید. نتیجه نهایی جریانی از داده است که به عنوان یک تانسور چند بعدی (که نشان دهنده چند ثانیه در گذشته است) کدگذاری شده است. رمزگذار خودکار آموزش دیده سعی می کند تانسور ورودی را به عنوان خروجی (پیش بینی) دوباره ایجاد کند. با اندازه گیری MAE بین ورودی و خروجی و مقایسه آن با یک آستانه از پیش تعریف شده، می توانید ناهنجاری های احتمالی را شناسایی کنید.
یکی از جنبههای مهم این رویکرد این است که همبستگیهای خطی و غیرخطی بین ویژگیها را استخراج میکند تا تأثیرات یک ویژگی بر ویژگی دیگر، مانند سرعت باد بر روی چرخش یا ولتاژ تولیدی را بهتر درک کند.
اکنون زمان اجرای این آزمایش است.
- اول، شما نیاز دارید محیط Studio خود را تنظیم کنید اگر هنوز یکی را ندارید
- مخزن GitHub را شبیه سازی کنید
https://github.com/aws-samples/amazon-sagemaker-edge-manager-demo
داخل ترمینال استودیو
مخزن حاوی پوشه ای به نام است 03_Notebooks
با دو دفترچه یادداشت Jupyter.
- دستورالعمل های دفترچه اول را برای تهیه مجموعه داده دنبال کنید - از آنجایی که داده های شتاب دهنده یک سیگنال هستند، حاوی نویز هستند، بنابراین مکانیسم حذف نویز را برای تمیز کردن داده ها اجرا می کنید.
مجموعه داده نهایی تنها دارای شش ویژگی است: رول، پیچ، انحراف (تبدیل شده از a کواترنیون به زاویه های اویلر، باد_سرعت_rps، rps (چرخش در ثانیه)، ولتاژ (تولید شده توسط ژنراتور).
- برای آموزش، بسته بندی و استقرار مدل، دستورالعمل های دفترچه دوم را دنبال کنید:
- از SageMaker برای آموزش رمزگذار خودکار PyTorch خود (بر اساس CNN) استفاده کنید.
- پیشبینی دستهای را برای محاسبه MAE و آستانه استفاده شده توسط برنامه برای تعیین اینکه آیا پیشبینی یک ناهنجاری است یا نه، اجرا کنید.
- با استفاده از Neo مدل را به Jetson Nano کامپایل کنید.
- با Edge Manager یک بسته استقرار ایجاد کنید.
- یک کار اینترنت اشیا ایجاد کنید که یک سند JSON را در موضوعی منتشر می کند که توسط برنامه ای که روی Jetson Nano شما اجرا می شود گوش داده است.
برنامه بسته را دریافت می کند، آن را باز می کند، مدل را در عامل Edge Manager بارگیری می کند و اجرای برنامه را از حالت انسداد خارج می کند.
هر دو نوت بوک بسیار دقیق هستند، بنابراین مراحل را با دقت دنبال کنید، پس از آن یک مدل تشخیص ناهنجاری برای استقرار در Jetson Nano خواهید داشت.
کار تالیف و بهینه سازی مدل
یکی از مهمترین مراحل کل فرآیند، مرحله بهینه سازی مدل در نوت بوک دوم است. وقتی یک مدل را با SageMaker Neo کامپایل میکنید، نه تنها مدل را برای بهبود عملکرد پیشبینی در دستگاه مورد نظر بهینه میکند، بلکه مدل اصلی را به یک نمایش متوسط نیز تبدیل میکند. پس از این تبدیل، دیگر نیازی به استفاده از چارچوب اصلی (PyTorch، TensorFlow، MXNet) ندارید. سپس این نمایش توسط یک زمان اجرا سبک تفسیر می شود (DLR) که با مدل نئو بسته بندی شده است. هم زمان اجرا و هم مدل بهینه شده، کتابخانه هایی هستند که به عنوان برنامه های بومی برای یک سیستم عملیاتی و معماری خاص کامپایل شده اند. در مورد Jetson Nano، سیستم عامل یک توزیع لینوکس است و معماری آن: ARM8 64 بیتی است. زمان اجرا در این مورد استفاده می کند تنفر برای حداکثر عملکرد در GPU جتسون.
هنگامی که یک کار کامپایل را در Neo راه اندازی می کنید، باید برخی از پارامترهای مربوط به تنظیمات دستگاه مورد نظر خود را مشخص کنید، به عنوان مثال:
- ترست - 7.1.3
- منسور - 10.2
- کد gpu - SM_53
پردازنده گرافیکی Jetson Nano یک NVIDIA Maxwell، معماری نسخه 53 است، بنابراین پارامتر gpu-code برای همه کارهای کامپایل یکسان است. با این حال، trt-ver و cuda-ver بستگی به نسخه TensorRT و CUDA نصب شده روی نانو شما دارد. هنگامی که دستگاه لبه خود را آماده می کردید، Jetson Nano خود را با JetPack 4.4.1 راه اندازی کردید. این اطمینان حاصل می کند که مدلی که با استفاده از Neo بهینه می کنید با Jetson Nano شما سازگار است.
نتایج را تجسم کنید
تنظیم داشبورد خارج از محدوده این پست است. برای اطلاعات بیشتر ببین داده های تولید شده توسط دستگاه را با AWS IoT و Amazon Elasticsearch Service تجزیه و تحلیل کنید.
اکنون که مدل خود را نصب کرده اید و روی Jetson Nano خود کار می کنید، وقت آن است که از طریق داشبورد به رفتار توربین های بادی خود نگاه کنید. برنامهای که در Jetson Nano مستقر کردهاید، برخی گزارشها را جمعآوری کرده و به دو مکان مختلف ارسال میکند:
- موضوع IoT MQTT
wind-turbine/logs/<<iot_thing_name>>
شامل لاگ برنامه ها و داده های خام جمع آوری شده از حسگرهای توربین بادی است - سطل S3
s3://<<S3_BUCKET>>/wind_turbine_data
شامل معیارهای مدل ML است
میتوانید این دادهها را دریافت کرده و آنها را در Amazon ES یا پایگاه داده دیگری وارد کنید. سپس می توانید از گزارش دلخواه خود برای تهیه داشبورد استفاده کنید.
تجسم زیر سه چیز متفاوت اما مرتبط را برای هر یک از پنج توربین نشان میدهد: سرعت چرخش (به RPS)، ولتاژ تولید شده، و ناهنجاریهای شناساییشده برای ولتاژ، چرخش و ارتعاش.
مقداری نویز در داده های خام توربین ها برای شبیه سازی خرابی ها تزریق شد.
تصویر زیر تجمعی از سرعت توربین ها و ناهنجاری های ولتاژ تولید شده را در طول زمان نشان می دهد.
نتیجه
حفظ ایمن و قابل اعتماد چرخه عمر یک مدل ML مستقر در ناوگانی از دستگاه ها کار آسانی نیست. با این حال، با Edge Manager، می توانید تلاش پیاده سازی و هزینه عملیاتی چنین راه حلی را کاهش دهید. همچنین، با نسخهای مانند مزرعه مینی توربین بادی، میتوانید خط لوله ML خود را با خدمات و تخصص ارائه شده توسط AWS آزمایش، بهینهسازی و خودکار کنید.
برای ایجاد راه حل برای نیازهای خود، کد و مصنوعات مورد استفاده در این پروژه را از سایت دریافت کنید GitHub repo. اگر می خواهید تمرین بیشتری با استفاده از Edge Manager داشته باشید، این را بررسی کنید کارگاه پایانی برای Edge Manager در استودیو.
درباره نویسنده
سمیر آرائوخو یک معمار راه حل های AI/ML در AWS است. او به مشتریان کمک می کند تا راه حل های AI/ML ایجاد کنند که چالش های تجاری آنها را با استفاده از AWS حل کند. او روی چندین پروژه AI/ML مربوط به بینایی کامپیوتر، پردازش زبان طبیعی، پیش بینی، ML در لبه و غیره کار کرده است. او دوست دارد در اوقات فراغت خود با پروژه های سخت افزاری و اتوماسیون بازی کند و علاقه خاصی به رباتیک دارد.
- 3d
- شتاب دهنده
- دسترسی
- حساب
- حسابداری (Accounting)
- عمل
- اضافی
- آمازون
- آمازون SageMaker
- تشخیص ناهنجاری
- API
- نرم افزار
- کاربرد
- APT
- معماری
- دور و بر
- خودکار
- اتوماسیون
- AWS
- خط مقدم
- بریج
- ساختن
- کسب و کار
- کابل
- صدا
- دوربین
- موارد
- گواهی نامه
- گواهینامه ها
- ابر
- CNN
- رمز
- جمع آوری
- تجاری
- شرکت
- محاسبه
- چشم انداز کامپیوتر
- کامپیوتر
- مصرف
- تبدیل
- هزینه
- شورا
- ایجاد
- مجوزها و اعتبارات
- جاری
- مشتریان
- داشبورد
- داده ها
- دانشمند داده
- پایگاه داده
- روز
- تحویل
- کشف
- توسعه
- دستگاه ها
- DIY
- از دست
- لبه
- بهره وری
- ارزیابی جستجو
- الکترونیک
- نقطه پایانی
- انرژی
- مهندسی
- محیط
- تجهیزات
- تجربه
- صادرات
- صادرات
- عصاره ها
- مزرعه
- ویژگی
- امکانات
- پایان
- نام خانوادگی
- ناوگان
- به دنبال
- چارچوب
- رایگان
- تابع
- رفتن
- GitHub
- جهانی
- GPU
- گروه
- سخت افزار
- صفحه اصلی
- چگونه
- چگونه
- HTTPS
- صدها نفر
- IAM
- شناسایی
- هویت
- تصویر
- از جمله
- صنعتی
- تجهیزات صنعتی
- IoT صنعتی
- صنعت
- اطلاعات
- علاقه
- اینترنت
- گرفتار
- اینترنت اشیا
- IT
- کار
- شغل ها
- کلید
- زبان
- راه اندازی
- یاد گرفتن
- یادگیری
- سبک
- لاین
- لینوکس
- محلی
- فراگیری ماشین
- مدیریت
- نقشه
- متریک
- میلیون
- ML
- موبایل
- دستگاه های تلفن همراه
- مدل
- نظارت بر
- محبوبترین
- نانو
- زبان طبیعی
- پردازش زبان طبیعی
- NEO
- سر و صدا
- نوت بوک
- اخطار
- کارت گرافیک Nvidia
- عملیاتی
- دیگر
- خارج از منزل
- کارایی
- کامپیوترهای شخصی
- پلاستیک
- سکو
- وصل شده
- سیاست
- محبوب
- قدرت
- پیش گویی
- پیش بینی
- فشار
- خصوصی
- ساخته
- تولید
- برنامه ها
- پروژه
- پروژه ها
- عمومی
- منتشر کردن
- پــایتــون
- مارماهی
- کیفیت
- خام
- داده های خام
- زمان واقعی
- كاهش دادن
- انرژی تجدید پذیر
- منابع
- منابع
- نتایج
- رباتیک
- ربات ها
- نورد
- قوانین
- دویدن
- در حال اجرا
- RX
- حکیم ساز
- مقیاس
- تیم امنیت لاتاری
- انتخاب شد
- سنسور
- خدمات
- تنظیم
- سایه
- ساده
- شش
- کوچک
- هوشمند
- So
- نرم افزار
- مزایا
- حل
- سرعت
- شروع
- آغاز شده
- بیانیه
- ذخیره سازی
- opbevare
- سودو
- تامین کنندگان
- پشتیبانی
- سیستم
- هدف
- فنی
- موقت
- جریان تنسور
- آزمون
- زمان
- تاپیک
- آموزش
- توربین
- بروزرسانی
- URI
- USB
- VeloCity
- دید
- تجسم
- ویکیپدیا
- باد
- انرژی باد
- قدرت باد
- توربین بادی
- مهاجرت کاری
- X