GPU ที่ไม่ว่าง: วิธีการสุ่มตัวอย่างและการวางท่อช่วยเพิ่มความเร็วในการเรียนรู้เชิงลึกบนกราฟขนาดใหญ่ PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

GPU ที่ไม่ว่าง: วิธีการสุ่มตัวอย่างและการวางท่อช่วยเพิ่มความเร็วในการเรียนรู้เชิงลึกบนกราฟขนาดใหญ่

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

ขณะนี้ วิธีการใหม่ที่เรียกว่า SALIENT (SApling, sLIcing และ data movemeNT) ซึ่งพัฒนาโดยนักวิจัยจาก MIT และ IBM Research ช่วยปรับปรุงประสิทธิภาพการฝึกอบรมและการอนุมานโดยจัดการกับปัญหาคอขวดที่สำคัญ 100 ประการในการคำนวณ สิ่งนี้ลดรันไทม์ของ GNN ลงอย่างมากในชุดข้อมูลขนาดใหญ่ ซึ่งยกตัวอย่างเช่น มีขนาด 1 ล้านโหนดและ 16 พันล้านเอดจ์ นอกจากนี้ ทีมงานยังพบว่าเทคนิคนี้ปรับขนาดได้ดีเมื่อมีการเพิ่มพลังการคำนวณจากหนึ่งถึง XNUMX หน่วยประมวลผลกราฟิก (GPU) งานนี้ได้นำเสนอในการประชุมครั้งที่ห้าเกี่ยวกับการเรียนรู้ของเครื่องและระบบ

“เราเริ่มมองหาความท้าทายที่ระบบปัจจุบันประสบเมื่อปรับขนาดเทคนิคการเรียนรู้ของเครื่องที่ล้ำสมัยสำหรับกราฟเป็นชุดข้อมูลขนาดใหญ่จริงๆ ปรากฎว่ามีงานต้องทำอีกมาก เพราะระบบที่มีอยู่จำนวนมากได้รับประสิทธิภาพที่ดีโดยเฉพาะอย่างยิ่งในชุดข้อมูลขนาดเล็กที่พอดีกับหน่วยความจำ GPU” Tim Kaler ผู้เขียนหลักและ postdoc จาก MIT Computer Science and Artificial Intelligence Laboratory (CSAIL) กล่าว

ด้วยชุดข้อมูลขนาดใหญ่ ผู้เชี่ยวชาญหมายถึงสเกลเช่นเครือข่าย Bitcoin ทั้งหมด ซึ่งรูปแบบและความสัมพันธ์ของข้อมูลบางอย่างอาจบ่งบอกถึงแนวโน้มหรือการเล่นที่ไม่เหมาะสม “มีธุรกรรม Bitcoin เกือบพันล้านธุรกรรมบนบล็อกเชน และหากเราต้องการระบุกิจกรรมที่ผิดกฎหมายภายในเครือข่ายร่วมดังกล่าว เราก็กำลังเผชิญกับกราฟในระดับดังกล่าว” ผู้เขียนร่วม Jie Chen นักวิทยาศาสตร์การวิจัยอาวุโสและผู้จัดการของ IBM Research และ MIT-IBM Watson AI Lab กล่าว “เราต้องการสร้างระบบที่สามารถจัดการกับกราฟประเภทนั้นและช่วยให้การประมวลผลมีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้ เพราะทุกวันเราต้องการตามให้ทันกับข้อมูลใหม่ที่สร้างขึ้น”

ผู้เขียนร่วมของ Kaler และ Chen ได้แก่ Nickolas Stathas MEng '21 จาก Jump Trading ผู้พัฒนา SALIENT โดยเป็นส่วนหนึ่งของผลงานระดับบัณฑิตศึกษาของเขา อดีตนักศึกษาฝึกงาน MIT-IBM Watson AI Lab และนักศึกษาระดับบัณฑิตศึกษาของ MIT Anne Ouyang; MIT CSAIL postdoc อเล็กซานดรอส-สตาฟรอส อิลิโอปูลอส; นักวิทยาศาสตร์วิจัย MIT CSAIL Tao B. Schardl; และ Charles E. Leiserson, Edwin Sibley Webster ศาสตราจารย์ด้านวิศวกรรมไฟฟ้าที่ MIT และนักวิจัยจาก MIT-IBM Watson AI Lab     

สำหรับปัญหานี้ ทีมงานใช้แนวทางเชิงระบบในการพัฒนาวิธีการของพวกเขา: SALIENT, Kaler กล่าว ในการทำเช่นนี้ นักวิจัยได้ใช้สิ่งที่พวกเขาเห็นว่าสำคัญ การเพิ่มประสิทธิภาพพื้นฐานของส่วนประกอบที่เข้ากับเฟรมเวิร์กการเรียนรู้ของเครื่องที่มีอยู่ เช่น PyTorch Geometric และ Deep Graph Library (DGL) ซึ่งเป็นอินเทอร์เฟซสำหรับสร้างโมเดลการเรียนรู้ของเครื่อง Stathas กล่าวว่ากระบวนการนี้เหมือนกับการเปลี่ยนเครื่องยนต์เพื่อสร้างรถที่เร็วขึ้น วิธีการของพวกเขาได้รับการออกแบบมาให้เข้ากับสถาปัตยกรรม GNN ที่มีอยู่ เพื่อให้ผู้เชี่ยวชาญด้านโดเมนสามารถนำงานนี้ไปใช้กับฟิลด์ที่ระบุได้อย่างง่ายดาย เพื่อเร่งการฝึกโมเดลและแสดงข้อมูลเชิงลึกระหว่างการอนุมานได้เร็วขึ้น เคล็ดลับที่ทีมตั้งใจไว้คือการทำให้ฮาร์ดแวร์ทั้งหมด (CPU, ดาต้าลิงก์ และ GPU) ไม่ว่างตลอดเวลา: ในขณะที่ CPU เก็บตัวอย่างกราฟและเตรียมข้อมูลชุดย่อยที่จะถ่ายโอนผ่านดาต้าลิงก์ GPU ที่สำคัญกว่ากำลังทำงานเพื่อฝึกโมเดลแมชชีนเลิร์นนิงหรือทำการอนุมาน 

นักวิจัยเริ่มต้นด้วยการวิเคราะห์ประสิทธิภาพของไลบรารีแมชชีนเลิร์นนิงที่ใช้กันทั่วไปสำหรับ GNN (PyTorch Geometric) ซึ่งแสดงให้เห็นการใช้ทรัพยากร GPU ที่มีอยู่ต่ำจนน่าตกใจ ด้วยการใช้การปรับให้เหมาะสมอย่างง่าย นักวิจัยสามารถปรับปรุงการใช้งาน GPU จาก 10 เป็น 30 เปอร์เซ็นต์ ส่งผลให้ประสิทธิภาพการทำงานดีขึ้น 1.4 ถึง 50.4 เท่าเมื่อเทียบกับรหัสเกณฑ์มาตรฐานสาธารณะ รหัสพื้นฐานที่รวดเร็วนี้สามารถดำเนินการส่งผ่านชุดข้อมูลการฝึกอบรมขนาดใหญ่ผ่านอัลกอริทึม (ยุค) ได้ใน XNUMX วินาที                          

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

ในระบบก่อนหน้านี้ ขั้นตอนการสุ่มตัวอย่างนี้เป็นวิธีการแบบหลายกระบวนการ ทำให้เกิดข้อมูลเพิ่มเติมและการเคลื่อนย้ายข้อมูลที่ไม่จำเป็นระหว่างกระบวนการ นักวิจัยทำให้วิธีการ SALIENT ของพวกเขาว่องไวขึ้นโดยการสร้างกระบวนการเดียวด้วยเธรดที่มีน้ำหนักเบาซึ่งเก็บข้อมูลบน CPU ไว้ในหน่วยความจำที่ใช้ร่วมกัน ยิ่งไปกว่านั้น SALIENT ยังใช้ประโยชน์จากแคชของโปรเซสเซอร์สมัยใหม่ Stathas กล่าว โดยการแบ่งส่วนคุณลักษณะแบบขนาน ซึ่งดึงข้อมูลที่เกี่ยวข้องจากโหนดที่น่าสนใจและเพื่อนบ้านและเอดจ์โดยรอบภายในหน่วยความจำที่ใช้ร่วมกันของแคชคอร์ของ CPU สิ่งนี้ทำให้รันไทม์ต่อยุคโดยรวมลดลงอีกครั้งจาก 34.6 เป็น 27.8 วินาที

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

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

ความเร็วของ SALIENT ได้รับการประเมินจากชุดข้อมูลมาตรฐานสามชุด ได้แก่ ogbn-arxiv, ogbn-products และ ogbn-papers100M เช่นเดียวกับการตั้งค่าหลายเครื่อง โดยมีระดับของ fanout ที่แตกต่างกัน (จำนวนข้อมูลที่ CPU จะเตรียมไว้สำหรับ GPU) และในสถาปัตยกรรมต่างๆ รวมถึง GraphSAGE-RI อันล้ำสมัยล่าสุด ในแต่ละการตั้งค่า SALIENT มีประสิทธิภาพเหนือกว่า PyTorch Geometric โดยเฉพาะอย่างยิ่งในชุดข้อมูล ogbn-papers100M ขนาดใหญ่ที่มี 100 ล้านโหนดและมากกว่าพันล้านเอดจ์ ที่นี่ เร็วกว่าถึงสามเท่า ทำงานบน GPU เดียว มากกว่าพื้นฐานที่ปรับให้เหมาะสมซึ่งเดิมสร้างขึ้นสำหรับงานนี้ ด้วย GPU 16 ตัว SALIENT เร็วขึ้นอีกแปดเท่า 

ในขณะที่ระบบอื่นๆ มีฮาร์ดแวร์และการตั้งค่าการทดลองที่แตกต่างกันเล็กน้อย ดังนั้นจึงไม่ใช่การเปรียบเทียบโดยตรงเสมอไป แต่ SALIENT ก็ยังมีประสิทธิภาพดีกว่าระบบเหล่านั้น ในบรรดาระบบที่มีความแม่นยำใกล้เคียงกัน ตัวเลขประสิทธิภาพที่เป็นตัวแทน ได้แก่ 99 วินาทีโดยใช้ GPU หนึ่งตัวและ 32 CPU และ 13 วินาทีโดยใช้ 1,536 CPU ในทางตรงกันข้าม รันไทม์ของ SALIENT ที่ใช้ GPU หนึ่งตัวและ CPU 20 ตัวคือ 16.5 วินาที และเป็นเพียงสองวินาทีด้วย GPU 16 ตัวและ CPU 320 ตัว “หากคุณดูที่ตัวเลขบรรทัดล่างสุดของรายงานการทำงานก่อนหน้านี้ รันไทม์ 16 GPU ของเรา (สองวินาที) นั้นเร็วกว่าตัวเลขอื่นๆ ที่ได้รับการรายงานก่อนหน้านี้ในชุดข้อมูลนี้” Kaler กล่าว นักวิจัยระบุว่าการปรับปรุงประสิทธิภาพส่วนหนึ่งมาจากแนวทางการปรับโค้ดให้เหมาะสมสำหรับเครื่องเดียวก่อนที่จะย้ายไปยังการตั้งค่าแบบกระจาย Stathas กล่าวว่าบทเรียนที่นี่ก็คือสำหรับเงินของคุณ "การใช้ฮาร์ดแวร์ที่คุณมีอย่างมีประสิทธิภาพและสูงสุดนั้นเหมาะสมกว่าก่อนที่คุณจะเริ่มขยายขนาดคอมพิวเตอร์หลายเครื่อง" ซึ่งสามารถประหยัดต้นทุนและการปล่อยคาร์บอนได้อย่างมาก ซึ่งอาจมาพร้อมกับการฝึกอบรมแบบจำลอง

ความจุใหม่นี้จะช่วยให้นักวิจัยสามารถจัดการและเจาะลึกลงไปในกราฟที่ใหญ่ขึ้นและใหญ่ขึ้นได้ ตัวอย่างเช่น เครือข่าย Bitcoin ที่กล่าวถึงก่อนหน้านี้มี 100,000 โหนด; ระบบ SALIENT สามารถจัดการกราฟที่ใหญ่กว่า 1,000 เท่า (หรือสามลำดับขนาด)

“ในอนาคต เราจะไม่ได้มองแค่การใช้งานระบบการฝึกอบรมโครงข่ายประสาทเทียมแบบกราฟนี้บนอัลกอริทึมที่มีอยู่ซึ่งเราใช้สำหรับการจำแนกประเภทหรือทำนายคุณสมบัติของแต่ละโหนด แต่เรายังต้องการทำงานเชิงลึกมากขึ้น เช่น การระบุรูปแบบทั่วไปในกราฟ (รูปแบบกราฟย่อย) [ซึ่ง] อาจน่าสนใจจริง ๆ ในการระบุอาชญากรรมทางการเงิน” Chen กล่าว “เรายังต้องการระบุโหนดในกราฟที่คล้ายกันในแง่ที่ว่าพวกมันอาจสอดคล้องกับตัวการร้ายคนเดียวกันในอาชญากรรมทางการเงิน งานเหล่านี้จำเป็นต้องพัฒนาอัลกอริธึมเพิ่มเติม และอาจรวมถึงสถาปัตยกรรมโครงข่ายประสาทเทียมด้วย”

งานวิจัยนี้ได้รับการสนับสนุนโดย MIT-IBM Watson AI Lab และบางส่วนโดย US Air Force Research Laboratory และ US Air Force Artificial Intelligence Accelerator

ประทับเวลา:

เพิ่มเติมจาก ที่ปรึกษาบล็อคเชน

การซื้ออสังหาริมทรัพย์ครั้งแรกของโลกบน Blockchain! BLOCKCHAIN ​​วิดีโอแชทสดรายสัปดาห์ในวันที่ 24 มกราคม 2018 เวลา 4 น. NY (EU 10 น.)

โหนดต้นทาง: 1756302
ประทับเวลา: พฤศจิกายน 14, 2022