เอ็นวิเดีย (NVIDIA, $NVDA) เผยแพร่ตัวอย่างสำหรับนักพัฒนาเมื่อวันที่ 13 เพื่อสาธิตการตั้งค่า DLA inference ด้วย Python บน Jetson AGX Orin ตัวอย่างนี้แสดงวิธีส่งงานคำนวณโครงข่ายประสาทเทียมที่รองรับให้ DLA ทำงาน และเชื่อมต่อกับการประมวลผลก่อนและหลัง inference บน GPU
ส่วนสำคัญของตัวอย่างคือ cuda.bindings.cudla ซึ่งเป็น Python layer ที่เพิ่มเข้ามาใน cuda-bindings 13.3.0 ช่วยให้โปรแกรม Python เรียกใช้ cuDLA C++ API ที่มีอยู่แล้วได้
Python ทำหน้าที่จัดการอุปกรณ์และงาน inference ส่วนการคำนวณโครงข่ายประสาทเทียมเกิดขึ้นบนฮาร์ดแวร์ DLA ของ Jetson AGX Orin จึงไม่ได้หมายความว่าโค้ด Python ทำงานบน DLA โดยตรง
ตัวอย่างจัดลำดับการประมวลผลก่อน inference บน GPU, DLA inference และการประมวลผลหลัง inference บน GPU ไว้ใน CUDA stream เดียวกัน โดย CUDA stream ควบคุมลำดับการทำงานเหล่านี้
นักพัฒนาต้องคอมไพล์โมเดลที่ฝึกแล้วล่วงหน้าด้วย trtexec ของ TensorRT เพื่อสร้างไฟล์ loadable ที่ DLA อ่านได้ จากนั้นแอปพลิเคชัน Python จะโหลดไฟล์นี้เมื่อเริ่ม inference
โปรแกรมจะโหลดไฟล์เข้าสู่หน่วยความจำ ตรวจสอบขนาดและรูปแบบของเทนเซอร์อินพุตกับเอาต์พุต แล้วลงทะเบียนหน่วยความจำ GPU กับ cuDLA เพื่อส่งงาน inference เมื่อทำงานเสร็จจึงอ่านผลลัพธ์
TensorRT ใช้สร้างไฟล์สำหรับ DLA ส่วนขั้นตอนทำงานจริงต้องใช้ runtime libcudla.so ที่รวมอยู่ใน JetPack การคอมไพล์โมเดลกับการรัน inference จึงเป็นหน้าที่ขององค์ประกอบคนละส่วน
ตัวอย่างนี้ใช้โหมดไฮบริด CUDA_DLA ซึ่งประสานงานระหว่าง GPU กับ DLA ผ่าน CUDA stream เอ็นวิเดียระบุว่ารีลีสนี้ยังไม่รองรับโหมด cuDLA แบบทำงานแยกอิสระ ซึ่งต้องใช้บัฟเฟอร์ NvSci และกลไกซิงโครไนซ์แยกต่างหาก
DLA เป็นตัวเร่งการทำงานแบบฟังก์ชันตายตัว จึงไม่รองรับทุกเลเยอร์ของโครงข่ายประสาทเทียมที่ GPU ประมวลผลได้ เอ็นวิเดียอธิบายว่า หากมีเลเยอร์ที่เข้ากันไม่ได้ นักพัฒนาอาจต้องปรับกราฟของโมเดล ONNX และควรตรวจสอบเลเยอร์ที่ DLA รองรับ รวมถึงเงื่อนไขด้านรูปแบบเทนเซอร์
เอกสาร TensorRT ยังระบุถึงความสามารถในการส่งเลเยอร์ที่ DLA รันไม่ได้ไปประมวลผลบน GPU หากเปิดใช้ความสามารถนี้ บางเลเยอร์อาจทำงานบน GPU ดังนั้นจึงควรตรวจสอบว่า DLA ประมวลผลส่วนใดของโมเดลจริง
ในบล็อกเทคนิคที่เผยแพร่เมื่อวันที่ 13 เอ็นวิเดียระบุว่า การส่งงานคำนวณที่รองรับไปยัง DLA อาจช่วยเพิ่มประสิทธิภาพด้านพลังงานและเหลือทรัพยากร GPU ไว้สำหรับงานอื่น อย่างไรก็ตาม บล็อกดังกล่าวไม่ได้ระบุตัวเลขการใช้พลังงานของ Jetson AGX Orin หรือผลวัดความเร็วเมื่อเทียบกับ GPU
เอ็นวิเดียยก Edge AI, หุ่นยนต์ และคอมพิวเตอร์วิทัศน์เป็นตัวอย่างการใช้งาน ก่อนหน้านี้ TokenPost เคยรายงานการใช้หน่วยความจำของ Nemotron 3.5 Volt E4B บน Jetson Orin Nano พร้อมตัวเลขที่เอ็นวิเดียเผยแพร่
สภาพแวดล้อมสำหรับคอมไพล์โมเดลในตัวอย่างประกอบด้วย TensorRT 11.4.1, CUDA 13.4 Update 1 และ JetPack 7.2.2 ขึ้นไป เอกสาร TensorRT ก็ระบุว่า Jetson AGX Orin ต้องใช้ JetPack 7.2.2 ขึ้นไปเพื่อรองรับ DLA
คำแนะนำการติดตั้งในบล็อกเทคนิคกำหนดให้ใช้ Python 3.10 เป็นอย่างต่ำ แต่บันทึกรีลีสของ cuda-bindings 13.5.0 ระบุว่ายุติการรองรับ Python 3.10 นักพัฒนาจึงควรตรวจสอบช่วงเวอร์ชันที่แต่ละแพ็กเกจรองรับก่อนติดตั้ง
Comment 0