ในอุตสาหกรรม IoT การรันโมเดลแมชชีนเลิร์นนิง (ML) บนอุปกรณ์ Edge เป็นสิ่งจำเป็นสำหรับกรณีการใช้งานหลายอย่าง เช่น การบำรุงรักษาเชิงคาดการณ์ การปรับปรุงคุณภาพ การตรวจสอบแบบเรียลไทม์ การเพิ่มประสิทธิภาพกระบวนการ และความปลอดภัย ตัวอย่างเช่น อุตสาหกรรมพลังงานลงทุนมหาศาลใน ML เพื่อส่งพลังงานอัตโนมัติ ตรวจสอบปริมาณการใช้ เพิ่มประสิทธิภาพ และยืดอายุการใช้งานของอุปกรณ์
พลังงานลมเป็นหนึ่งในแหล่งพลังงานหมุนเวียนที่ได้รับความนิยมมากที่สุด ตามที่สภาพลังงานลมโลก กังหันลม 22,893 ตัวได้รับการติดตั้งทั่วโลกในปี 2019 ผลิตจากซัพพลายเออร์ 33 รายและคิดเป็นกำลังการผลิตพลังงานลมมากกว่า 63 GW. ด้วยขนาดดังกล่าว บริษัทด้านพลังงานจำเป็นต้องมีแพลตฟอร์มที่มีประสิทธิภาพในการจัดการและบำรุงรักษาฝูงบินกังหันลม และรุ่น ML ที่ทำงานบนอุปกรณ์ กังหันลมเชิงพาณิชย์มีราคาประมาณ 3-4 ล้านเหรียญสหรัฐ หากกังหันไม่ทำงาน จะมีค่าใช้จ่าย 800-1,600 ดอลลาร์ต่อวัน และส่งผลให้สูญเสียทั้งหมด 7.5 เมกะวัตต์ ซึ่งเป็นพลังงานเพียงพอที่จะจ่ายพลังงานให้กับบ้านเรือนประมาณ 2,500 หลัง
กังหันลมเป็นงานวิศวกรรมที่ซับซ้อนและประกอบด้วยเซ็นเซอร์จำนวนมากที่กลไกการตรวจสอบสามารถใช้เพื่อเก็บข้อมูล เช่น การสั่นสะเทือน อุณหภูมิ ความเร็วลม และความชื้นในอากาศ คุณสามารถฝึกโมเดล ML ด้วยข้อมูลนี้ ปรับใช้กับอุปกรณ์ Edge ที่เชื่อมต่อกับเซ็นเซอร์ของ Turbine และคาดการณ์ความผิดปกติในแบบเรียลไทม์ที่ Edge จะช่วยลดต้นทุนการดำเนินงานของฝูงบินกังหันของคุณ แต่ลองจินตนาการถึงความพยายามที่จะคงไว้ซึ่งโซลูชันนี้ในอุปกรณ์จำนวนหลายพันหรือหลายล้านเครื่อง คุณดำเนินการ รักษาความปลอดภัย ปรับใช้ รัน และตรวจสอบโมเดล ML ในกลุ่มอุปกรณ์ที่ Edge อย่างไร
ผู้จัดการ Amazon SageMaker Edge สามารถช่วยคุณตอบคำถามนี้ได้ บริการนี้ช่วยให้คุณสามารถเพิ่มประสิทธิภาพ รักษาความปลอดภัย ตรวจสอบ และบำรุงรักษาโมเดล ML ในกลุ่มกล้องอัจฉริยะ หุ่นยนต์ คอมพิวเตอร์ส่วนบุคคล อุปกรณ์อุตสาหกรรม อุปกรณ์เคลื่อนที่ และอื่นๆ ด้วย Edge Manager คุณสามารถจัดการวงจรชีวิตของ ML แต่ละรุ่นบนอุปกรณ์แต่ละเครื่องในกลุ่มอุปกรณ์ของคุณได้มากถึงหลายพันหรือล้านอุปกรณ์ บริการนี้มีตัวแทนซอฟต์แวร์ที่ทำงานบนอุปกรณ์ขอบและอินเทอร์เฟซการจัดการบน คอนโซลการจัดการ AWS.
ในโพสต์นี้ เราแสดงวิธีใช้ Edge Manager เพื่อสร้างโซลูชันแบบ end-to-end ที่มีประสิทธิภาพ ซึ่งจัดการวงจรชีวิตของโมเดล ML ที่ปรับใช้กับกลุ่มกังหันลม แต่แทนที่จะใช้กังหันลมจริง คุณจะได้เรียนรู้วิธีสร้างฝูงบินกังหันลมขนาดเล็กที่พิมพ์ 3 มิติของคุณเอง นี่คือโปรเจ็กต์โอเพ่นซอร์สแบบ DIY แบบโอเพ่นซอร์สที่สร้างขึ้นเพื่อสาธิตวิธีสร้าง ML ที่โซลูชันเอดจ์ด้วย อเมซอน SageMaker. คุณสามารถใช้เป็นแพลตฟอร์มในการเรียนรู้ ทดลอง และรับแรงบันดาลใจ
ส่วนถัดไปครอบคลุมหัวข้อต่อไปนี้:
- ข้อมูลจำเพาะของฟาร์มกังหันลม
- วิธีกำหนดค่า Jetson Nano . แต่ละเครื่อง
- วิธีสร้างแบบจำลองการตรวจจับสิ่งผิดปกติโดยใช้ SageMaker
- วิธีการเปิดฟาร์มกังหันลมขนาดเล็กของคุณเอง
ฟาร์มกังหันลม
ฟาร์มกังหันลมที่สร้างขึ้นสำหรับโครงการนี้มีกังหันลมขนาดเล็กที่พิมพ์ 3 มิติจำนวน XNUMX ตัวที่เชื่อมต่อกับ Jetson Nanos ที่แตกต่างกันห้าตัวผ่าน USB Jetson Nanos เชื่อมต่อกับอินเทอร์เน็ตผ่านสายอีเทอร์เน็ตที่เสียบกับเคเบิลโมเด็ม พัดลมที่วางอยู่หน้าฟาร์ม ทำให้เกิดลมจำลองสภาพภายนอกอาคาร ภาพต่อไปนี้แสดงวิธีการจัดระเบียบฟาร์มกังหันลม
กังหันลมขนาดเล็ก
กังหันลมขนาดเล็กของโครงการนี้เป็นอุปกรณ์ทางกลที่รวมเข้ากับไมโครคอนโทรลเลอร์ (แพลตฟอร์มฮาร์ดแวร์) และเซ็นเซอร์บางตัว มันถูกจำลองโดยใช้ FreeCAD, เครื่องมือโอเพ่นซอร์สสำหรับการออกแบบชิ้นส่วนอุตสาหกรรม ชิ้นส่วนเหล่านี้ถูกพิมพ์ 3 มิติโดยใช้ PETG (ชนิดเส้นใยพลาสติก) และประกอบเข้ากับชิ้นส่วนอิเล็กทรอนิกส์ ฐานของมันคือคงที่ ซึ่งหมายความว่ากังหันไม่สอดคล้องกับทิศทางลมด้วยตัวเอง ข้อจำกัดนี้มีความสำคัญในการทำให้โครงการง่ายขึ้น
กังหันแต่ละตัวมีเครื่องกำเนิดแรงดันไฟฟ้าหนึ่งตัว (มอเตอร์ขนาดเล็ก) และเซ็นเซอร์ที่แตกต่างกันเจ็ดตัว:
- การสั่นสะเทือน (MPU6050: มาตรความเร่ง/ไจโรสโคป 6 แกน)
- ตัวเข้ารหัสการหมุนอินฟราเรด (การหมุนต่อวินาที)
- อุณหภูมิเกียร์ (MPU6050)
- อุณหภูมิแวดล้อม (BME680)
- ความกดอากาศ (BME680)
- ความชื้นในอากาศ (BME680)
- คุณภาพอากาศ (BME680)
An อาร์ดุยนี่ มินิ โปร มีหน้าที่เชื่อมต่อกับเซ็นเซอร์เหล่านี้และรวบรวมข้อมูลจากเซ็นเซอร์เหล่านี้ ข้อมูลนี้สตรีมผ่านพินอนุกรม (TX, RX) หนึ่ง อุปกรณ์ FTDI ที่แปลงสัญญาณอนุกรมนี้เป็น USB เป็นสะพานเชื่อมระหว่าง Arduino และ Jetson Nano แอปพลิเคชัน Python ที่ทำงานบน Jetson Nano รับข้อมูลดิบจากเซ็นเซอร์ผ่านบริดจ์นี้
ไมโครเซอร์โวถูกดัดแปลงและแปลงเป็นเครื่องกำเนิดแรงดันไฟฟ้า กล่องเกียร์ภายในเพิ่มความเร็วของเครื่องกำเนิดไฟฟ้า (มอเตอร์) ห้าเท่าเพื่อสร้างแรงดันไฟฟ้า (ต่ำ) ระหว่าง 0–3.3v เครื่องกำเนิดนี้ยังเชื่อมต่อกับ Arduino ผ่านพินอินพุตแบบอะนาล็อก ข้อมูลนี้จะถูกส่งไปพร้อมกับการอ่านของเซ็นเซอร์ด้วย
ความถี่ในการรวบรวมข้อมูลขึ้นอยู่กับเซ็นเซอร์ สัญญาณทั้งหมดจาก BME650 จะถูกรวบรวมทุกๆ 150 มิลลิวินาที ตัวเข้ารหัสการหมุนทุกๆ 1 วินาที และเครื่องกำเนิดแรงดันไฟฟ้าและเซ็นเซอร์การสั่นสะเทือนทุกๆ 50 มิลลิวินาที
หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับรายละเอียดทางเทคนิคเหล่านี้และเรียนรู้วิธีสร้างกังหันลมขนาดเล็กของคุณเอง โปรดดูที่ พื้นที่เก็บข้อมูล GitHub.
อุปกรณ์ขอบ
แต่ละ เจทสันนาโน มี GPU ในตัวพร้อม NVIDIA Maxwell™ 128 คอร์และซีพียู ARM® A57 แบบ Quad-core ที่ทำงานที่ 1.43 GHz ฮาร์ดแวร์นี้เพียงพอที่จะเรียกใช้แอปพลิเคชัน Python ที่รวบรวมและจัดรูปแบบข้อมูลจากเซ็นเซอร์ของกังหันแล้วเรียก ตัวแทน Edge Manager API เพื่อรับการคาดการณ์ แอปพลิเคชันนี้เปรียบเทียบการคาดคะเนกับเกณฑ์เพื่อตรวจสอบความผิดปกติในข้อมูล โมเดลถูกเรียกใช้ตามเวลาจริง
เมื่อ SageMaker นีโอ รวบรวมโมเดล ML สำหรับ Jetson Nano รันไทม์ (dlr) ปรับให้เหมาะสมสำหรับอุปกรณ์เป้าหมายนี้รวมอยู่ในแพ็คเกจการปรับใช้ รันไทม์นี้จะตรวจจับโดยอัตโนมัติว่ากำลังทำงานอยู่บน Jetson Nano และโหลดโมเดลลงใน GPU ของอุปกรณ์โดยตรงเพื่อประสิทธิภาพสูงสุด
เอเจนต์ Edge Manager ยังแจกจ่ายเป็นแอปพลิเคชัน Linux (arm64) ที่สามารถเรียกใช้เป็นกระบวนการพื้นหลัง (daemon) บน Jetson Nano ของคุณ มันใช้รันไทม์ SageMaker Neo ที่รวมอยู่ในแพ็คเกจการคอมไพล์เพื่อเชื่อมต่อกับโมเดลที่ปรับให้เหมาะสมและเปิดเผยเป็น API ที่กำหนดไว้อย่างดี API นี้ถูกรวมเข้ากับแอปพลิเคชันในเครื่องผ่านโปรโตคอลเวลาแฝงต่ำ (ซ็อกเก็ต grpc + unix)
บริการคลาวด์
เมื่อคุณทราบรายละเอียดบางอย่างเกี่ยวกับฮาร์ดแวร์ทางกายภาพที่ใช้ในการพัฒนาฟาร์มกังหันลมแล้ว ก็ถึงเวลาดูว่าบริการของ AWS ใดรองรับโซลูชันบนฝั่งคลาวด์ การตั้งค่าแบบสแตนด์อโลนขั้นต่ำเพื่อให้โมเดลปรับใช้และรันบนเอเจนต์ Edge Manager ต้องการเพียง SageMaker เท่านั้นและไม่ต้องการอะไรเพิ่มเติม อย่างไรก็ตาม โปรเจ็กต์นี้ใช้บริการอื่นๆ โดยมีคุณสมบัติที่สำคัญ XNUMX ประการ ได้แก่ กลไกสำหรับการปรับใช้แบบ over-the-air (OTA) และแดชบอร์ดสำหรับตรวจสอบความผิดปกติในเวลาที่ใกล้เคียงกับเรียลไทม์
โดยสรุป องค์ประกอบที่จำเป็นสำหรับโครงการนี้คือ:
- กลุ่มอุปกรณ์ (Edge Manager) ซึ่งจัดระเบียบและควบคุมอุปกรณ์ที่ลงทะเบียนตั้งแต่หนึ่งเครื่องขึ้นไปผ่านตัวแทน (ทำงานบนอุปกรณ์แต่ละเครื่อง)
- หนึ่ง IoT สิ่ง ต่ออุปกรณ์และ กลุ่มสิ่ง IoTซึ่งใช้โดยกลไก OTA เพื่อสื่อสารกับอุปกรณ์ผ่าน MQTT
- AWS IoT กฎและ AWS แลมบ์ดา ฟังก์ชันเพื่อรับและกรองบันทึกแอปพลิเคชันและนำเข้าข้อมูลเหล่านั้นลงใน บริการ Amazon Elasticsearch (อเมซอน อีเอส)
- ฟังก์ชันแลมบ์ดาเพื่อแยกวิเคราะห์ตัววัดแบบจำลองที่ตัวแทนจับและนำเข้าไปยัง Amazon ES
- เซิร์ฟเวอร์ Elasticsearch ที่มี Kibanaซึ่งมีแดชบอร์ดสำหรับตรวจสอบความผิดปกติ (ไม่บังคับ)
- SageMaker เพื่อสร้าง คอมไพล์ และแพ็คเกจโมเดล ML
ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมนี้
รวมทุกอย่างเข้าด้วยกัน
ตอนนี้เรามีส่วนประกอบทั้งหมดของฟาร์มกังหันลมแล้ว ก็ถึงเวลาทำความเข้าใจขั้นตอนที่เราจำเป็นต้องดำเนินการเพื่อรวมชิ้นส่วนที่เคลื่อนไหวทั้งหมดเหล่านี้ ปรับใช้แบบจำลองกับอุปกรณ์ Edge ของเรา และให้แอปพลิเคชันทำงานและคาดการณ์ความผิดปกติในแบบเรียลไทม์
ไดอะแกรมต่อไปนี้แสดงขั้นตอนทั้งหมดที่เกี่ยวข้องในกระบวนการ
การแก้ปัญหาประกอบด้วยขั้นตอนต่อไปนี้:
- นักวิทยาศาสตร์ข้อมูลสำรวจชุดข้อมูลและออกแบบแบบจำลองการตรวจจับความผิดปกติ (ตัวเข้ารหัสอัตโนมัติ) ด้วย PyTorch โดยใช้ SageMaker สตูดิโอ.
- โมเดลนี้ได้รับการฝึกฝนด้วยงานฝึกอบรม SageMaker
- ด้วย Neo โมเดลนี้ได้รับการปรับให้เหมาะสม (คอมไพล์) กับ Jetson Nano
- Edge Manager สร้างแพ็คเกจการปรับใช้ด้วยโมเดลที่คอมไพล์แล้ว
- นักวิทยาศาสตร์ข้อมูลสร้างงาน IoT ที่ส่งการแจ้งเตือนรูปแบบใหม่ที่พร้อมใช้งานไปยังอุปกรณ์ Edge
- แอปพลิเคชันที่ทำงานบน Jetson Nano ดำเนินการดังต่อไปนี้:
- ได้รับการแจ้งเตือนนี้และดาวน์โหลดแพ็คเกจรุ่นจาก บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) ถัง
- แกะโมเดลและโหลดโดยใช้ Edge Manager agent API (LoadModel)
- อ่านเซ็นเซอร์จากกังหันลม เตรียมข้อมูล เรียกใช้โมเดล ML และรวบรวมเมตริกโมเดลบางส่วนโดยใช้ Edge Manager agent API
- เปรียบเทียบการคาดคะเนกับข้อมูลพื้นฐานเพื่อตรวจหาสิ่งผิดปกติที่อาจเกิดขึ้น
- ส่งข้อมูลเซ็นเซอร์ดิบไปยังหัวข้อ AWS IoT
- ตามกฎ AWS IoT จะอ่านหัวข้อบันทึกของแอปและส่งออกข้อมูลไปยัง Amazon ES
- ฟังก์ชัน Lambda จับตัววัดโมเดล (ข้อผิดพลาดเฉลี่ยเฉลี่ย) ที่ส่งออกโดยตัวแทนและนำเข้าข้อมูลไปยัง Amazon ES
- ผู้ดำเนินการใช้แดชบอร์ด Kibana เพื่อตรวจสอบความผิดปกติ
กำหนดค่าอุปกรณ์ขอบของคุณ
เอเจนต์ Edge Manager ใช้ใบรับรองที่จัดเตรียมโดย AWS IoT คอร์ เพื่อตรวจสอบสิทธิ์และเรียกใช้บริการอื่นๆ ของ AWS ด้วยวิธีนี้ คุณจะต้องสร้างสิ่ง IoT ก่อนแล้วจึงค่อยสร้างกลุ่มอุปกรณ์ที่ขอบ แต่ก่อนอื่น คุณต้องเตรียมทรัพยากรพื้นฐานเพื่อสนับสนุนโซลูชันของคุณ
สร้างทรัพยากรข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น คุณต้องกำหนดค่า อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS ในเวิร์กสเตชันของคุณก่อน (ถ้าจำเป็น) จากนั้นจึงสร้างทรัพยากรต่อไปนี้:
- บัคเก็ต S3 เพื่อจัดเก็บข้อมูลที่จับได้
- An AWS Identity และการจัดการการเข้าถึง บทบาท (IAM) สำหรับอุปกรณ์ของคุณ
- สิ่ง IoT ที่จะจับคู่กับอุปกรณ์ Edge Manager ของคุณ
- นโยบาย IoT เพื่อควบคุมการอนุญาตของข้อมูลประจำตัวชั่วคราวของอุปกรณ์ขอบ
- สร้างที่เก็บข้อมูลใหม่สำหรับโซลูชัน
ทุกครั้งที่คุณเรียกใช้ CaptureData ใน API ของเอเจนต์ ระบบจะอัปโหลดเทนเซอร์ (อินพุตและการคาดการณ์) ลงในบัคเก็ตนี้
ถัดไป คุณสร้างบทบาท IAM ของคุณ
- บนคอนโซล IAM ให้สร้างบทบาทชื่อ WindTurbineFarm เพื่อให้อุปกรณ์สามารถเข้าถึงทรัพยากรในบัญชีของคุณได้
- เพิ่มสิทธิ์ให้กับบทบาทนี้เพื่ออัปโหลดไฟล์ไปยังบัคเก็ต S3 ที่คุณสร้างขึ้น
- เพิ่มเอนทิตีที่เชื่อถือได้ต่อไปนี้ให้กับบทบาท:
amazonaws.com
iot.amazonaws.com
amazonaws.com
ใช้รหัสต่อไปนี้ (ระบุชื่อสำหรับบัคเก็ต S3, บัญชี AWS และภูมิภาคของคุณ):
ตอนนี้คุณพร้อมที่จะสร้างสิ่ง IoT แล้ว ซึ่งคุณจะแมปกับอุปกรณ์ Edge Manager ของคุณในภายหลัง
- บนคอนโซล AWS IoT Core ภายใต้ จัดการเลือก สถานที่
- Choose สร้างบัญชีตัวแทน.
- ตั้งชื่ออุปกรณ์ของคุณ (สำหรับโพสต์นี้ edge-device-0)
- สร้างกลุ่มใหม่หรือเลือกกลุ่มที่มีอยู่ (สำหรับโพสต์นี้ WindTurbineFarm)
- สร้างใบรับรอง
- ดาวน์โหลดใบรับรอง รวมถึงรูท CA
- เปิดใช้งานใบรับรอง
ตอนนี้คุณสร้างนโยบายของคุณ ซึ่งควบคุมการอนุญาตของข้อมูลประจำตัวชั่วคราวของอุปกรณ์ขอบ
- บนคอนโซล AWS IoT Core ภายใต้ ปลอดภัยเลือก นโยบาย.
- Choose สร้างบัญชีตัวแทน.
- ตั้งชื่อนโยบาย (สำหรับโพสต์นี้ WindTurbine)
- Choose โหมดขั้นสูง.
- ป้อนนโยบายต่อไปนี้ โดยระบุบัญชี AWS และภูมิภาคของคุณ:
- Choose สร้างบัญชีตัวแทน.
สุดท้าย คุณแนบกรมธรรม์กับใบรับรอง
- บนคอนโซล AWS IoT Core ภายใต้ ปลอดภัยเลือก ใบรับรอง.
- เลือกใบรับรองที่คุณสร้าง
- เกี่ยวกับ สถานะ เมนูให้เลือก แนบกรมธรรม์.
- เลือกนโยบาย WindTurbine
- Choose แนบ.
ตอนนี้สิ่ง IoT ของคุณพร้อมที่จะเชื่อมโยงกับอุปกรณ์ขอบแล้ว ทำซ้ำขั้นตอนเหล่านี้ (ยกเว้นการสร้างนโยบาย) สำหรับอุปกรณ์เพิ่มเติมแต่ละเครื่องในกลุ่มอุปกรณ์ของคุณ สำหรับสภาพแวดล้อมการผลิตที่มีอุปกรณ์หลายร้อยหรือหลายพันเครื่อง คุณเพียงแค่ใช้แนวทางที่แตกต่างออกไป โดยใช้สคริปต์อัตโนมัติและไฟล์พารามิเตอร์เพื่อจัดเตรียมสิ่ง IoT ทั้งหมด
สร้างกองเรือเอดจ์
ในการสร้าง Edge Fleet ของคุณ ให้ทำตามขั้นตอนต่อไปนี้:
- บนคอนโซล SageMaker ภายใต้ การอนุมานขอบเลือก กองอุปกรณ์ขอบ.
- Choose สร้างกลุ่มอุปกรณ์.
- ป้อนชื่ออุปกรณ์ (สำหรับโพสต์นี้
WindTurbineFarm
). - ป้อน ARN ของบทบาท IAM ที่คุณใช้ในขั้นตอนก่อนหน้า (
arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/WindTurbineFarm
). - ป้อน URI บัคเก็ต S3 ของเอาต์พุต (
s3://<<NAME_OF_YOUR_BUCKET>>/wind_turbine_data/
). - Choose ส่ง.
ตอนนี้ คุณต้องเพิ่มอุปกรณ์ใหม่ไปยังฟลีท
- บนคอนโซล SageMaker ภายใต้ การอนุมานขอบเลือก อุปกรณ์ขอบ.
- Choose ลงทะเบียนอุปกรณ์.
- สำหรับ คุณสมบัติของอุปกรณ์ป้อนชื่อกลุ่มอุปกรณ์ที่คุณสร้าง (
WindTurbineFarm
). - Choose ถัดไป.
- สำหรับ ชื่ออุปกรณ์ป้อนชื่อเฉพาะสำหรับอุปกรณ์ของคุณ (สำหรับโพสต์นี้ เราใช้ชื่อเดียวกับสิ่ง IoT ของเรา
edge-device-wind-turbine-00000000000
). - สำหรับ ชื่อ IoTป้อนชื่อของสิ่งที่คุณสร้างไว้ก่อนหน้านี้ (
edge-device-0
). - Choose ส่ง.
ทำขั้นตอนการลงทะเบียนซ้ำสำหรับอุปกรณ์อื่นๆ ทั้งหมดของคุณ ตอนนี้คุณสามารถ SSH ไปยัง Jetson Nano และกำหนดค่าอุปกรณ์ของคุณให้เสร็จสิ้น
เตรียมอุปกรณ์ขอบ
ก่อนที่คุณจะเริ่มกำหนดค่า 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 คุณสามารถเริ่มกำหนดค่าอุปกรณ์ของคุณด้วยคำสั่งต่อไปนี้:
- ดาวน์โหลดเอเจนต์ Edge Manager เวอร์ชัน Linux ARMv8.
- คัดลอกแพ็คเกจไปยัง Jetson Nano ของคุณ (
scp
). สร้างโฟลเดอร์สำหรับเอเจนต์และคลายแพ็กเกจในโฮมไดเร็กทอรีของคุณ:
- คัดลอกใบรับรอง AWS IoT Core ที่คุณจัดเตรียมไว้ในส่วนก่อนหน้าไปยังไดเรกทอรี
~/agent/certificates/iot
ใน Jetson Nano ของคุณ
คุณควรเห็นไฟล์ต่อไปนี้ในไดเร็กทอรีนี้:
- PEM – ราก 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 – ชื่อผู้ใช้ Linux ที่คุณใช้ใน Jetson Nano
- CERT_PREFIX – คำนำหน้าของไฟล์ใบรับรองที่คุณสร้างเมื่อคุณเตรียมใช้งานสิ่ง IoT ของคุณในส่วนก่อนหน้า
- ข้อมูลประจำตัว_ENDPOINT_HOST – โฮสต์ปลายทางของคุณ คุณสามารถรับปลายทางนี้ผ่านทาง อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI). (ติดตั้ง AWS CLI หากคุณยังไม่มี) ใช้ข้อมูลประจำตัวของบัญชีเดียวกันและภูมิภาคเดียวกับที่คุณใช้ในส่วนก่อนหน้า (นี่ไม่ใช่ URL เงาของ IoT) จากนั้นรันคำสั่งต่อไปนี้เพื่อดึงข้อมูลโฮสต์ปลายทาง:
- S3_ถัง – ชื่อของบัคเก็ต S3 ที่คุณใช้เพื่อกำหนดค่ากลุ่มอุปกรณ์ Edge ของคุณในส่วนก่อนหน้า
- บันทึกไฟล์ด้วยการแก้ไขทั้งหมดเหล่านี้
ตอนนี้คุณพร้อมที่จะเรียกใช้ตัวแทน Edge Manager ใน Jetson Nano ของคุณแล้ว
- ในการทดสอบเอเจนต์ ให้รันคำสั่งต่อไปนี้:
ภาพหน้าจอต่อไปนี้แสดงผลลัพธ์ของคุณ
ตัวแทนกำลังทำงานอยู่ในขณะนี้ หลังจากนั้นไม่กี่นาที คุณจะเห็นการเต้นของหัวใจของอุปกรณ์ รายงานบนคอนโซล หากต้องการดูบนคอนโซล SageMaker ภายใต้ การอนุมานขอบเลือก อุปกรณ์ขอบ และเลือกอุปกรณ์ของคุณ
กำหนดค่าแอปพลิเคชัน
ตอนนี้ได้เวลาตั้งค่าแอปพลิเคชันที่ทำงานบนอุปกรณ์ Edge แอปพลิเคชันนี้มีหน้าที่รับผิดชอบดังต่อไปนี้:
- รับข้อมูลประจำตัวชั่วคราวโดยใช้ใบรับรอง
- ฟังหัวข้อการอัปเดต OTA เพื่อดูว่าแพ็คเกจรุ่นใหม่พร้อมที่จะปรับใช้หรือไม่
- ปรับใช้แพ็คเกจรุ่นที่มีอยู่กับอุปกรณ์ขอบ
- โหลดแบบจำลองไปยังตัวแทนหากจำเป็น
- ดำเนินการวนไม่สิ้นสุด:
- อ่านข้อมูลเซ็นเซอร์
- จัดรูปแบบข้อมูลอินพุต
- เรียกใช้โมเดล ML และจับตัวชี้วัดบางอย่างของการคาดคะเน
- เปรียบเทียบการคาดคะเน MAE (ค่าเฉลี่ยความคลาดเคลื่อนเฉลี่ย) กับเส้นฐาน
- เผยแพร่ข้อมูลดิบไปยังหัวข้อ IoT (MQTT)
ในการติดตั้งแอปพลิเคชัน ขั้นแรกให้รับตำแหน่งข้อมูล AWS IoT แบบกำหนดเอง บนคอนโซล AWS IoT Core ให้เลือก การตั้งค่า. คัดลอกปลายทางและใช้ในรหัสต่อไปนี้:
แอปพลิเคชันแสดงผลบางอย่างเช่นภาพหน้าจอต่อไปนี้
ตัวเลือก: เรียกใช้แอปพลิเคชันนี้ด้วยพารามิเตอร์ – โหมดทดสอบ หากคุณต้องการเรียกใช้การทดสอบโดยไม่มีกังหันลมที่เชื่อมต่อกับอุปกรณ์ขอบ
หากทุกอย่างเป็นไปด้วยดี แอปพลิเคชันจะรอรุ่นใหม่ต่อไป ถึงเวลาฝึกโมเดลใหม่และปรับใช้กับ Jetson Nano
ฝึกและปรับใช้โมเดล ML
โพสต์นี้สาธิตวิธีการตรวจหาความผิดปกติในส่วนประกอบของกังหันลม มีหลายวิธีในการทำเช่นนี้กับข้อมูลที่รวบรวมโดยเซ็นเซอร์ เพื่อให้ตัวอย่างนี้เรียบง่ายที่สุด คุณต้องเตรียมแบบจำลองที่วิเคราะห์การสั่นสะเทือน ความเร็วลม การหมุน (ต่อวินาที) และแรงดันไฟฟ้าที่ผลิตขึ้นเพื่อพิจารณาว่ามีความผิดปกติหรือไม่ เพื่อจุดประสงค์นั้น เราฝึก an ตัวเข้ารหัสอัตโนมัติ การใช้ ไพทอร์ช บน SageMaker และเตรียมพร้อมสำหรับการปรับใช้บน Jetson Nano ของคุณ
สถาปัตยกรรมแบบจำลองนี้มีข้อดีสองประการ: ไม่มีการควบคุมดูแล เราจึงไม่จำเป็นต้องติดป้ายกำกับข้อมูลของเรา และคุณสามารถรวบรวมข้อมูลจากกังหันลมที่ทำงานได้อย่างสมบูรณ์ ดังนั้น โมเดลของคุณจึงได้รับการฝึกฝนให้ตรวจจับสิ่งที่คุณพิจารณาถึงพฤติกรรมปกติของกังหันลมของคุณ เมื่อข้อบกพร่องปรากฏขึ้นในส่วนใดส่วนหนึ่งของกังหัน ข้อมูลเซ็นเซอร์จะลอยขึ้น ซึ่งแบบจำลองจะตีความว่าเป็นพฤติกรรมที่ผิดปกติ (ความผิดปกติ)
ภาพหน้าจอต่อไปนี้คือตัวอย่างข้อมูลดิบที่เซ็นเซอร์เทอร์ไบน์จับได้
ข้อมูลมีคุณสมบัติดังต่อไปนี้:
- นาโนไอดี – ID ของอุปกรณ์ขอบที่รวบรวมข้อมูล
- รหัสกังหัน – ID ของกังหันที่ผลิตข้อมูลนี้
- arduino_timestamp – การประทับเวลาของ Arduino ที่กำลังใช้งานกังหันนี้
- นาโนฟรีเมม: จำนวนหน่วยความจำว่างในหน่วยไบต์
- เหตุการณ์เวลา – การประทับเวลาของแถว
- อาร์พีเอส – การหมุนของโรเตอร์ในการหมุนต่อวินาที
- แรงดันไฟฟ้า – แรงดันไฟฟ้าที่ผลิตโดยเครื่องกำเนิดไฟฟ้าในหน่วยมิลลิโวลต์
- qw, qx, qy, qz – ความเร่งเชิงมุมควอเทอร์เนียน
- gx, gy, gz – การเร่งความเร็วแรงโน้มถ่วง
- ขวาน ay, az – การเร่งความเร็วเชิงเส้น
- กระปุกเกียร์อุณหภูมิ – อุณหภูมิภายใน
- แอมบเทม – อุณหภูมิภายนอก
- ความชื้น – ความชื้นในอากาศ
- ความดัน - ความดันอากาศ
- ก๊าซ - คุณภาพอากาศ
- ลม_ความเร็ว_rps – ความเร็วลมในการหมุนต่อวินาที
คุณสมบัติที่เลือกตามเป้าหมายของเราคือ: qx
,qx
,qy
,qz
(ความเร่งเชิงมุม) wind_speed_rps
, rps
และ voltage
. ภาพต่อไปนี้เป็นตัวอย่างของคุณสมบัติ qx
. ข้อมูลที่ผลิตโดยมาตรความเร่งมีเสียงดังเกินไป เราจึงต้องทำความสะอาดก่อน
ความเร็วเชิงมุม (quaternion) จะถูกแปลงเป็นมุมออยเลอร์ (roll, pitch, yaw) ก่อน จากนั้นเรายกเลิกคุณสมบัติทั้งหมดด้วย Wavelets (พายเวฟ) และทำให้เป็นมาตรฐาน ภาพหน้าจอต่อไปนี้แสดงสัญญาณหลังจากการแปลงเหล่านี้
สุดท้าย เราใช้หน้าต่างบานเลื่อนกับชุดข้อมูลที่เป็นผลลัพธ์ (คุณสมบัติหกประการ) เพื่อบันทึกความสัมพันธ์ชั่วคราวระหว่างการอ่านค่าเพื่อนบ้าน และสร้างเทนเซอร์อินพุตของโมเดล ML ของเรา ช่วงเวลาเฉลี่ยระหว่างสองตัวอย่างตามลำดับคือประมาณ 50 มิลลิวินาที แต่ละช่วงเวลา (ของหน้าต่างบานเลื่อนของเรา) จะถูกแปลงเป็นเทนเซอร์ โดยใช้โครงสร้างต่อไปนี้:
- เมตริกซ์ – 6 คุณสมบัติ x 10 ขั้นตอน (100 ตัวอย่าง) = 6×100
- ขั้นตอน – กลุ่มของขั้นตอนเวลา
- ขั้นตอนเวลา – กลุ่มของช่วงเวลา (time_step=20 = ~5 วินาที)
- ระยะห่าง – กลุ่มตัวอย่าง (ช่วงเวลา = 5 = ~250 มิลลิวินาที)
- เปลี่ยนรูปร่างเทนเซอร์ – 6x10x10
Interval
, time step
และ step
เป็นไฮเปอร์พารามิเตอร์ที่คุณสามารถปรับได้ระหว่างการฝึก ผลลัพธ์สุดท้ายคือกระแสข้อมูล ซึ่งเข้ารหัสเป็นเมตริกซ์หลายมิติ (หมายถึงไม่กี่วินาทีในอดีต) ตัวเข้ารหัสอัตโนมัติที่ผ่านการฝึกอบรมพยายามสร้างเทนเซอร์อินพุตขึ้นใหม่เป็นเอาต์พุต (การทำนาย) ด้วยการวัด MAE ระหว่างอินพุตและเอาต์พุต และเปรียบเทียบกับเกณฑ์ที่กำหนดไว้ล่วงหน้า คุณสามารถระบุความผิดปกติที่อาจเกิดขึ้นได้
แง่มุมที่สำคัญอย่างหนึ่งของแนวทางนี้คือการแยกความสัมพันธ์เชิงเส้นและไม่ใช่เชิงเส้นระหว่างคุณลักษณะต่างๆ เพื่อให้เข้าใจผลกระทบของคุณลักษณะหนึ่งไปสู่อีกคุณลักษณะหนึ่งได้ดีขึ้น เช่น ความเร็วลมในการหมุนหรือแรงดันไฟฟ้าที่ผลิต
ถึงเวลาทำการทดสอบนี้แล้ว
- ครั้งแรกที่คุณจะต้อง ตั้งค่าสภาพแวดล้อมสตูดิโอของคุณ ถ้าคุณยังไม่มี
- โคลน repo GitHub
https://github.com/aws-samples/amazon-sagemaker-edge-manager-demo
ภายในเทอร์มินัลสตูดิโอ
ที่เก็บมีโฟลเดอร์ชื่อ 03_Notebooks
กับโน้ตบุ๊ก Jupyter สองเครื่อง
- ทำตามคำแนะนำในโน้ตบุ๊กเครื่องแรกเพื่อเตรียมชุดข้อมูล เนื่องจากข้อมูลคันเร่งเป็นสัญญาณ จึงมีสัญญาณรบกวน คุณจึงเรียกใช้กลไก denoise เพื่อล้างข้อมูล
ชุดข้อมูลสุดท้ายมีเพียงหกคุณสมบัติ: ม้วน, ขว้าง, หันเห (แปลงจาก a quaternion ไปยัง มุมออยเลอร์), wind_speed_rps, rps (หมุนต่อวินาที), แรงดันไฟฟ้า (ผลิตโดยเครื่องกำเนิดไฟฟ้า)
- ทำตามคำแนะนำในสมุดบันทึกเล่มที่สองเพื่อฝึก บรรจุ และปรับใช้โมเดล:
- ใช้ SageMaker เพื่อฝึก PyTorch autoencoder ของคุณ (ตาม CNN)
- เรียกใช้การคาดการณ์แบบกลุ่มเพื่อคำนวณ MAE และเกณฑ์ที่ใช้โดยแอปเพื่อพิจารณาว่าการคาดคะเนนั้นผิดปกติหรือไม่
- รวบรวมโมเดลเป็น Jetson Nano โดยใช้ Neo
- สร้างแพ็คเกจการปรับใช้ด้วย Edge Manager
- สร้างงาน IoT ที่เผยแพร่เอกสาร JSON ไปยังหัวข้อที่ฟังโดยแอปพลิเคชันที่ทำงานบน Jetson Nano ของคุณ
แอปพลิเคชันรับแพ็คเกจ คลายแพ็ก โหลดโมเดลในเอเจนต์ Edge Manager และปลดบล็อกการรันแอปพลิเคชัน
โน้ตบุ๊กทั้งสองมีรายละเอียดมาก ดังนั้นให้ทำตามขั้นตอนอย่างระมัดระวัง หลังจากนั้นคุณจะมีโมเดลการตรวจจับสิ่งผิดปกติเพื่อปรับใช้ใน Jetson Nano ของคุณ
งานคอมไพล์และการเพิ่มประสิทธิภาพโมเดล
ขั้นตอนที่สำคัญที่สุดอย่างหนึ่งของกระบวนการทั้งหมดคือขั้นตอนการปรับรุ่นให้เหมาะสมในโน้ตบุ๊กเครื่องที่สอง เมื่อคุณคอมไพล์โมเดลด้วย SageMaker Neo มันไม่เพียงแต่ปรับโมเดลให้เหมาะสมเพื่อปรับปรุงประสิทธิภาพการทำนายในอุปกรณ์เป้าหมายเท่านั้น แต่ยังแปลงโมเดลดั้งเดิมให้เป็นตัวแทนระดับกลางด้วย หลังจากการแปลงนี้ คุณไม่จำเป็นต้องใช้เฟรมเวิร์กดั้งเดิมอีกต่อไป (PyTorch, TensorFlow, MXNet) การแสดงนี้จะถูกตีความโดยรันไทม์แบบเบา (dlr) ซึ่งบรรจุอยู่ในรุ่นของ Neo ทั้งรันไทม์และโมเดลที่ปรับให้เหมาะสมคือไลบรารีที่คอมไพล์เป็นโปรแกรมดั้งเดิมสำหรับระบบปฏิบัติการและสถาปัตยกรรมเฉพาะ ในกรณีของ Jetson Nano ระบบปฏิบัติการจะเป็น Linux distro และสถาปัตยกรรม: ARM8 64bits รันไทม์ในกรณีนี้ใช้ เทนเซอร์RT เพื่อประสิทธิภาพสูงสุดบน GPU ของ Jetson
เมื่อคุณเริ่มงานการคอมไพล์บน Neo คุณต้องระบุพารามิเตอร์บางอย่างที่เกี่ยวข้องกับการตั้งค่าอุปกรณ์เป้าหมายของคุณ เช่น:
- trt-ver - 7.1.3
- cuda-ver - 10.2
- รหัส GPU – sm_53
GPU ของ Jetson Nano คือ NVIDIA Maxwell ซึ่งเป็นสถาปัตยกรรมเวอร์ชัน 53 ดังนั้นพารามิเตอร์ gpu-code จึงเหมือนกันสำหรับงานคอมไพล์ทั้งหมด อย่างไรก็ตาม trt-ver และ cuda-ver ขึ้นอยู่กับเวอร์ชันของ TensorRT และ CUDA ที่ติดตั้งบน Nano ของคุณ เมื่อคุณเตรียมอุปกรณ์ Edge คุณต้องตั้งค่า 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
ในการสร้างโซลูชันสำหรับความต้องการของคุณเอง รับโค้ดและอาร์ติแฟกต์ที่ใช้ในโปรเจ็กต์นี้จาก repo GitHub. หากคุณต้องการฝึกฝนเพิ่มเติมโดยใช้ Edge Manager ให้ลองดูที่ เวิร์กชอปแบบ end-to-end สำหรับ Edge Manager บน Studio.
เกี่ยวกับผู้เขียน
ซามีร์ อาเราโจ เป็นสถาปนิกโซลูชัน AI/ML ที่ AWS เขาช่วยลูกค้าสร้างโซลูชัน AI/ML ซึ่งแก้ปัญหาทางธุรกิจโดยใช้ AWS เขาเคยทำงานในโครงการ AI/ML หลายโครงการที่เกี่ยวข้องกับการมองเห็นด้วยคอมพิวเตอร์ การประมวลผลภาษาธรรมชาติ การพยากรณ์ ML ที่ขอบ และอีกมากมาย เขาชอบเล่นโปรเจ็กต์ฮาร์ดแวร์และระบบอัตโนมัติในเวลาว่าง และมีความสนใจเป็นพิเศษในด้านวิทยาการหุ่นยนต์
- 3d
- คันเร่ง
- เข้า
- ลงชื่อเข้าใช้
- การบัญชี
- การกระทำ
- เพิ่มเติม
- อเมซอน
- อเมซอน SageMaker
- การตรวจจับความผิดปกติ
- API
- app
- การใช้งาน
- APT
- สถาปัตยกรรม
- รอบ
- อัตโนมัติ
- อัตโนมัติ
- AWS
- baseline
- สะพาน
- สร้าง
- ธุรกิจ
- สายเคเบิ้ล
- โทรศัพท์
- กล้อง
- กรณี
- ใบรับรอง
- ใบรับรอง
- เมฆ
- ซีเอ็นเอ็น
- รหัส
- การเก็บรวบรวม
- เชิงพาณิชย์
- บริษัท
- คำนวณ
- วิสัยทัศน์คอมพิวเตอร์
- คอมพิวเตอร์
- การบริโภค
- การแปลง
- ค่าใช้จ่าย
- สภา
- การสร้าง
- หนังสือรับรอง
- ปัจจุบัน
- ลูกค้า
- หน้าปัด
- ข้อมูล
- นักวิทยาศาสตร์ข้อมูล
- ฐานข้อมูล
- วัน
- การจัดส่ง
- การตรวจพบ
- พัฒนา
- อุปกรณ์
- DIY
- เสียงสะท้อน
- ขอบ
- อย่างมีประสิทธิภาพ
- ElasticSearch
- อิเล็กทรอนิกส์
- ปลายทาง
- พลังงาน
- ชั้นเยี่ยม
- สิ่งแวดล้อม
- อุปกรณ์
- การทดลอง
- ส่งออก
- การส่งออก
- สารสกัดจาก
- ฟาร์ม
- ลักษณะ
- คุณสมบัติ
- ปลาย
- ชื่อจริง
- FLEET
- ปฏิบัติตาม
- กรอบ
- ฟรี
- ฟังก์ชัน
- ไป
- GitHub
- เหตุการณ์ที่
- GPU
- บัญชีกลุ่ม
- ฮาร์ดแวร์
- หน้าแรก
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- HTTPS
- ร้อย
- AMI
- แยกแยะ
- เอกลักษณ์
- ภาพ
- รวมทั้ง
- อุตสาหกรรม
- อุปกรณ์อุตสาหกรรม
- IoT อุตสาหกรรม
- อุตสาหกรรม
- ข้อมูล
- อยากเรียนรู้
- อินเทอร์เน็ต
- ร่วมมือ
- IOT
- IT
- การสัมภาษณ์
- งาน
- คีย์
- ภาษา
- เปิดตัว
- เรียนรู้
- การเรียนรู้
- เบา
- Line
- ลินุกซ์
- ในประเทศ
- เรียนรู้เครื่อง
- การจัดการ
- แผนที่
- ตัวชี้วัด
- ล้าน
- ML
- โทรศัพท์มือถือ
- อุปกรณ์มือถือ
- แบบ
- การตรวจสอบ
- เป็นที่นิยม
- นาโน
- ภาษาธรรมชาติ
- ประมวลผลภาษาธรรมชาติ
- NEO
- สัญญาณรบกวน
- โน๊ตบุ๊ค
- การประกาศ
- Nvidia
- การดำเนินงาน
- อื่นๆ
- ของเล่นกลางแจ้ง
- การปฏิบัติ
- คอมพิวเตอร์ส่วนบุคคล
- พลาสติก
- เวที
- เสียบ
- นโยบาย
- ยอดนิยม
- อำนาจ
- คำทำนาย
- การคาดการณ์
- ความดัน
- ส่วนตัว
- ผลิต
- การผลิต
- โปรแกรม
- โครงการ
- โครงการ
- สาธารณะ
- ประกาศ
- หลาม
- ไฟฉาย
- คุณภาพ
- ดิบ
- ข้อมูลดิบ
- เรียลไทม์
- ลด
- พลังงานทดแทน
- ทรัพยากร
- แหล่งข้อมูล
- ผลสอบ
- หุ่นยนต์
- หุ่นยนต์
- ม้วน
- กฎระเบียบ
- วิ่ง
- วิ่ง
- RX
- sagemaker
- ขนาด
- ความปลอดภัย
- เลือก
- เซ็นเซอร์
- บริการ
- ชุด
- เงา
- ง่าย
- หก
- เล็ก
- สมาร์ท
- So
- ซอฟต์แวร์
- โซลูชัน
- แก้
- ความเร็ว
- เริ่มต้น
- ข้อความที่เริ่ม
- คำแถลง
- การเก็บรักษา
- จัดเก็บ
- sudo
- ซัพพลายเออร์
- สนับสนุน
- ระบบ
- เป้า
- วิชาการ
- ชั่วคราว
- tensorflow
- ทดสอบ
- เวลา
- หัวข้อ
- การฝึกอบรม
- กังหัน
- บันทึก
- URI
- USB
- ความเร็ว
- วิสัยทัศน์
- การสร้างภาพ
- วิกิพีเดีย
- ลม
- พลังงานลม
- แรงลม
- กังหันลม
- งาน
- X