ผู้นำทางความคิด

หลีกเลี่ยงอันตรายที่ซ่อนอยู่: การนำทางอุปสรรคที่ไม่ชัดเจนใน ML บน iOS

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

คุณต้องการ ML หรือไม่?

การเรียนรู้ของเครื่องมีความสามารถในการระบุรูปแบบที่ดี หากคุณสามารถรวบรวมชุดข้อมูลที่สะอาดสำหรับงานของคุณ มันจะใช้เวลาไม่นานก่อนที่คุณจะสามารถสร้างโมเดล ML ที่มีประสิทธิภาพเหนือมนุษย์ได้ สิ่งนี้เป็นจริงอย่าง đặc biệtในงานคลาสสิก เช่น การจำแนกประเภท การถดถอย และการตรวจจับอาการผิดปกติ

เมื่อคุณพร้อมที่จะแก้ไขปัญหาธุรกิจบางอย่างด้วย ML คุณต้องพิจารณาว่าโมเดล ML ของคุณจะทำงานที่ไหน สำหรับบางคน มันสมเหตุสมผลที่จะทำงานบนโครงสร้างพื้นฐานของเซิร์ฟเวอร์ ซึ่งมีข้อดีในการรักษาโมเดล ML ของคุณให้ riêng tư ทำให้competitor มากกว่า มันจะยากที่จะตามทัน นอกจากนี้ เซิร์ฟเวอร์ยังสามารถทำงานโมเดลที่หลากหลายได้ ตัวอย่างเช่น โมเดล GPT (ที่มีชื่อเสียงจาก ChatGPT) ปัจจุบันต้องการ GPU รุ่นใหม่ๆ ทำให้ไม่สามารถทำงานบนอุปกรณ์ผู้บริโภคได้ ในทางกลับกัน การดูแลโครงสร้างพื้นฐานของคุณมีค่าใช้จ่ายสูง และหากอุปกรณ์ผู้บริโภคสามารถทำงานโมเดลของคุณได้ ทำไมต้องจ่ายมากกว่านี้ นอกจากนี้ อาจมีข้อกังวลเกี่ยวกับความเป็นส่วนตัวที่คุณไม่สามารถส่งข้อมูลผู้ใช้ไปยังเซิร์ฟเวอร์ระยะไกลเพื่อประมวลผลได้

อย่างไรก็ตาม สมมติว่ามันสมเหตุสมผลที่จะใช้อุปกรณ์ iOS ของลูกค้าของคุณเพื่อทำงานโมเดล ML อะไรที่อาจผิดพลาด?

ข้อจำกัดของแพลตฟอร์ม

ข้อจำกัดของหน่วยความจำ

อุปกรณ์ iOS มีหน่วยความจำวิดีโอน้อยกว่าเครื่องคอมพิวเตอร์ตั้งโต๊ะมาก ตัวอย่างเช่น Nvidia RTX 4080 Ti มีหน่วยความจำ 20 GB อุปกรณ์ iPhone มีหน่วยความจำวิดีโอที่ใช้ร่วมกับ RAM ในสิ่งที่เรียกว่า “หน่วยความจำรวม” สำหรับการอ้างอิง iPhone 14 Pro มี RAM 6 GB นอกจากนี้ หากคุณจัดสรรหน่วยความจำมากกว่าครึ่งหนึ่ง iOS มีแนวโน้มที่จะปิดแอปเพื่อให้แน่ใจว่าระบบปฏิบัติการยังคงทำงานได้ตามปกติ ซึ่งหมายความว่าคุณสามารถนับได้ว่ามีหน่วยความจำ 2-3 GB สำหรับการอนุมานของเครือข่ายประสาทเท่านั้น

นักวิจัยมักจะฝึกโมเดลของตนเพื่อเพิ่มความแม่นยำมากกว่าการใช้หน่วยความจำ อย่างไรก็ตาม ก็มีการวิจัยเกี่ยวกับวิธีการเพิ่มความเร็วและขนาดหน่วยความจำด้วย เพื่อให้คุณสามารถหาคำตอบที่ต้องการได้

การสนับสนุนการดำเนินการของชั้นเครือข่าย

โมเดล ML และเครือข่ายประสาทส่วนใหญ่มาจากเฟรมเวิร์กการเรียนรู้ลึกที่มีชื่อเสียงและจากนั้นแปลงเป็น CoreML โดยใช้ Core ML Tools CoreML เป็นเครื่องมืออนุมานที่เขียนโดย Apple (AAPL ) ที่สามารถทำงานโมเดลต่างๆ บนอุปกรณ์ Apple ได้ ชั้นเหล่านี้ได้รับการปรับให้เหมาะสมสำหรับฮาร์ดแวร์และรายการชั้นที่รองรับนั้นยาวมาก จึงเป็นจุดเริ่มต้นที่ดี อย่างไรก็ตาม ตัวเลือกอื่นๆ เช่น Tensorflow Lite ก็มีให้ใช้เช่นกัน

วิธีที่ดีที่สุดในการดูสิ่งที่เป็นไปได้กับ CoreML คือการดูโมเดลที่แปลงแล้วโดยใช้เครื่องมือเช่น Netron Apple ระบุโมเดลที่รองรับอย่างเป็นทางการบางส่วน ที่นี่ แต่ก็มีโมเดลที่ได้รับการสนับสนุนจากชุมชนเช่นกัน รายการชั้นที่รองรับทั้งหมดเปลี่ยนแปลงอยู่เสมอ ดังนั้นการดูโค้ดต้นฉบับของ Core ML Tools จึงเป็นจุดเริ่มต้นที่ดี ตัวอย่างเช่น หากคุณต้องการแปลงโมเดล PyTorch คุณสามารถพยายามค้นหาชั้นที่จำเป็น ที่นี่

นอกจากนี้ สถาปัตยกรรมใหม่ๆ บางอย่างอาจมีโค้ด CUDA ที่เขียนด้วยมือสำหรับชั้นบางส่วน ในกรณีเช่นนี้ คุณไม่สามารถคาดหวังให้ CoreML มีชั้นที่กำหนดไว้ล่วงหน้าได้ อย่างไรก็ตาม คุณสามารถให้การนำไปใช้ของคุณเองได้ หากคุณมีวิศวกรที่มีทักษะในการเขียนโค้ด GPU

โดยรวมแล้ว คำแนะนำที่ดีที่สุดคือการลองแปลงโมเดลของคุณเป็น CoreML ในระยะแรกๆ แม้ว่าจะยังไม่ได้ฝึกอบรมก็ตาม หากคุณมีโมเดลที่ไม่ได้แปลงทันที มันจะเป็นไปได้ที่จะแก้ไขคำจำกัดความของเครือข่ายประสาทในเฟรมเวิร์กการเรียนรู้ลึกของคุณหรือโค้ดต้นฉบับของ Core ML Tools เพื่อสร้างโมเดล CoreML ที่ถูกต้องโดยไม่ต้องเขียนชั้นที่กำหนดเองสำหรับการอนุมานของ CoreML

การตรวจสอบ

ข้อผิดพลาดของเครื่องมืออนุมาน

ไม่มีทางที่จะทดสอบชุดค่าผสมที่เป็นไปได้ทั้งหมดของชั้น ดังนั้นเครื่องมืออนุมานจึงจะมีข้อผิดพลาดเสมอ ตัวอย่างเช่น มันเป็นเรื่องปกติที่จะเห็นการขยายตัวของการถ่ายโอนโดยใช้หน่วยความจำมากเกินไปกับ CoreML ซึ่งอาจบ่งบอกถึงการนำไปใช้ที่เขียนไม่ดีโดยมีเคอร์เนลขนาดใหญ่ที่เติมด้วยศูนย์ ข้อผิดพลาดทั่วไปอีกอย่างหนึ่งคือการผลิตเอาต์พุตโมเดลที่ไม่ถูกต้องสำหรับสถาปัตยกรรมโมเดลบางอย่าง

ในกรณีนี้ ลำดับการดำเนินการอาจมีผลกระทบ มันเป็นไปได้ที่จะได้ผลลัพธ์ที่ไม่ถูกต้องขึ้นอยู่กับว่ากระบวนการกระตุ้นหรือการเชื่อมต่อที่เหลือมาแรก การทดสอบจริงๆ ว่าทุกอย่างทำงานได้ถูกต้องคือการนำโมเดลของคุณไปทำงานบนอุปกรณ์ที่ตั้งใจไว้และเปรียบเทียบผลลัพธ์กับเวอร์ชันเดสก์ท็อป สำหรับการทดสอบนี้ มันจะช่วยให้มีโมเดลที่ฝึกอบรมบางส่วนไว้แล้ว ไม่เช่นนั้นข้อผิดพลาดทางตัวเลขจะสะสมสำหรับโมเดลที่เริ่มต้นแบบสุ่ม แม้ว่าโมเดลที่ฝึกอบรมเสร็จสมบูรณ์จะทำงานได้ดี แต่ผลลัพธ์อาจแตกต่างกันมากระหว่างอุปกรณ์และเดสก์ท็อปสำหรับโมเดลที่เริ่มต้นแบบสุ่ม

ความสูญเสียของความแม่นยำ

iPhone ใช้ความแม่นยำครึ่งความแม่นยำอย่างกว้างขวางสำหรับการอนุมาน ในขณะที่บางโมเดลไม่มีการเสื่อมสภาพความแม่นยำที่สังเกตได้เนื่องจากจำนวนบิตที่น้อยกว่าในการแสดงจุดลอยตัว โมเดลอื่นๆ อาจได้รับผลกระทบ คุณสามารถประมาณการความสูญเสียของความแม่นยำได้โดยการประเมินโมเดลของคุณบนเดสก์ท็อปด้วยความแม่นยำครึ่งความแม่นยำและคำนวณเมตริกทดสอบสำหรับโมเดลของคุณ วิธีที่ดีกว่าคือการทำงานบนอุปกรณ์จริงเพื่อดูว่าโมเดลมีความแม่นยำตามที่ตั้งใจหรือไม่

การสร้างโปรไฟล์

รุ่น iPhone ที่แตกต่างกันมีความสามารถฮาร์ดแวร์ที่แตกต่างกัน รุ่นล่าสุดมีหน่วยประมวลผล Neural Engine ที่ดีขึ้นซึ่งสามารถเพิ่มประสิทธิภาพโดยรวมได้อย่างมาก พวกมันถูกปรับให้เหมาะสมสำหรับการดำเนินการที่เฉพาะเจาะจงและ CoreML สามารถแจกจ่ายงานระหว่าง CPU, GPU และ Neural Engine ได้อย่างฉลาด GPU ของ Apple ก็มีการปรับปรุงตามเวลา ดังนั้นจึงเป็นเรื่องปกติที่จะเห็นประสิทธิภาพที่แตกต่างกันไปตามรุ่น iPhone ที่แตกต่างกัน เป็นความคิดที่ดีที่จะทดสอบโมเดลของคุณบนอุปกรณ์ที่รองรับขั้นต่ำเพื่อให้แน่ใจถึงความเข้ากันได้สูงสุดและประสิทธิภาพที่ยอมรับได้สำหรับอุปกรณ์เก่า

นอกจากนี้ CoreML ยังสามารถเพิ่มประสิทธิภาพชั้นกลางและคำนวณบางอย่างได้ ซึ่งสามารถปรับปรุงประสิทธิภาพได้อย่างมาก ปัจจัยอื่นที่ต้องพิจารณาคือบางครั้ง โมเดลที่ทำงานได้ไม่ดีบนเดสก์ท็อปอาจทำงานอนุมานได้เร็วกว่าบน iOS ซึ่งหมายความว่ามันคุ้มค่าที่จะใช้เวลาในการทดลองกับสถาปัตยกรรมที่แตกต่างกัน

สำหรับการปรับให้เหมาะสมเพิ่มเติม Xcode มีเครื่องมือ Instruments ที่ดีพร้อมเทมเพลตสำหรับโมเดล CoreML ที่สามารถให้ข้อมูลเชิงลึกที่ครอบคลุมมากขึ้นเกี่ยวกับสิ่งที่ทำให้โมเดลอนุมานของคุณช้าลง

สรุป

ไม่มีใครสามารถคาดการณ์อุปสรรคที่เป็นไปได้ทั้งหมดเมื่อสร้างโมเดล ML สำหรับ iOS ได้ อย่างไรก็ตาม มีข้อผิดพลาดบางอย่างที่สามารถหลีกเลี่ยงได้หากคุณรู้ว่าจะมองหาอะไร ลองแปลงโมเดล ML ของคุณให้เร็วที่สุดเพื่อให้แน่ใจว่าโมเดลของคุณจะทำงานได้อย่างถูกต้องและตรงตามความต้องการทางธุรกิจของคุณ และปฏิบัติตามคำแนะนำที่กล่าวไว้ข้างต้นเพื่อให้ประสบความสำเร็จได้เร็วที่สุด

Konstantin Semianov, คือ CTO ของ Neatsy.AI, แอปแรกของโลกที่สามารถตรวจจับปัญหาสุขภาพด้านออร์โธปิดิกส์และพอดิแทรี่ โดยใช้ AI และ AR โดยใช้แค่กล้อง iPhone เท่านั้น ก่อนที่จะเข้าร่วม Neatsy.AI เขาทำงานเป็นวิศวกรวิจัยและพัฒนา ที่ Prisma Labs ผู้สร้างแอป Lensa