NVIDIA Data Loading Library (DALI) เป็นไลบรารีที่เร่งด้วย GPU สำหรับการโหลดข้อมูลและการประมวลผลล่วงหน้าเพื่อเร่งแอปพลิเคชันการเรียนรู้เชิงลึก โดยเป็นการรวบรวม Building Block ที่ได้รับการปรับให้เหมาะสมที่สุดสำหรับการโหลดและประมวลผลข้อมูลภาพ วิดีโอ และเสียง สามารถใช้แทนแบบดรอปอินแบบพกพาสำหรับตัวโหลดข้อมูลในตัวและตัววนซ้ำข้อมูลในเฟรมเวิร์กการเรียนรู้เชิงลึกยอดนิยม
แอปพลิเคชันการเรียนรู้เชิงลึกต้องใช้ไปป์ไลน์การประมวลผลข้อมูลหลายขั้นตอนที่ซับซ้อน ซึ่งรวมถึงการโหลด การถอดรหัส การครอบตัด การปรับขนาด และส่วนเสริมอื่นๆ อีกมากมาย ไปป์ไลน์การประมวลผลข้อมูลเหล่านี้ซึ่งปัจจุบันดำเนินการบน CPU ได้กลายเป็นปัญหาคอขวด ซึ่งจำกัดประสิทธิภาพและความสามารถในการปรับขนาดของการฝึกอบรมและการอนุมาน
DALI แก้ไขปัญหาคอขวดของ CPU โดยการถ่ายข้อมูลที่ประมวลผลล่วงหน้าไปยัง GPU นอกจากนี้ DALI ยังอาศัยกลไกการดำเนินการของตัวเองซึ่งสร้างขึ้นเพื่อเพิ่มปริมาณงานของไปป์ไลน์อินพุตให้สูงสุด คุณสมบัติต่างๆ เช่น การดึงข้อมูลล่วงหน้า การดำเนินการแบบขนาน และการประมวลผลเป็นชุดจะได้รับการจัดการอย่างโปร่งใสสำหรับผู้ใช้
นอกจากนี้ เฟรมเวิร์กการเรียนรู้เชิงลึกยังมีการใช้งานการประมวลผลข้อมูลล่วงหน้าหลายอย่าง ส่งผลให้เกิดความท้าทาย เช่น ความสามารถในการเคลื่อนย้ายเวิร์กโฟลว์การฝึกอบรมและการอนุมาน และการบำรุงรักษาโค้ด ไปป์ไลน์การประมวลผลข้อมูลที่ปรับใช้โดยใช้ DALI นั้นสามารถพกพาได้ เนื่องจากสามารถกำหนดเป้าหมายใหม่เป็น TensorFlow, PyTorch และ PaddlePaddle ได้อย่างง่ายดาย
ต้าหลี่กำลังดำเนินการ:
จาก nvidia.dali.pipeline import Pipeline_defimport nvidia.dali.types as typesimport nvidia.dali.fn as fnfrom nvidia.dali.plugin.pytorch import DALIGenericIteratorimport os# หากต้องการรันด้วยข้อมูลที่แตกต่างกัน โปรดดูเอกสารประกอบของ nvidia.dali.fn.readers file# ชี้ไปที่ https://github.com/NVIDIA/DALI_extradata_root_dir = os.environ['DALI_EXTRA_PATH']images_dir = os.path.join(data_root_dir, 'db', 'single', 'jpeg')def loss_func(pred , y):passdef model(x):passdef ย้อนกลับ (สูญเสีย, model):pass@pipeline_def(num_threads=4, device_id=0)def get_dali_pipeline():images, label = fn.readers.file(file_root=images_dir, Random_shuffle =True, name="Reader")# ถอดรหัสข้อมูลบน GPUimages = fn.decoders.image_random_crop(images, device="mixed", output_type=types.RGB)# การประมวลผลที่เหลือจะเกิดขึ้นบน GPU เนื่องจาก wellimages = fn ปรับขนาด (รูปภาพ, resize_x=256, resize_y=256)images = fn.crop_mirror_normalize(images,crop_h=224,crop_w=224,mean=[0.485 * 255, 0.456 * 255, 0.406 * 255],std=[0.229 * 255 , 0.224 * 255, 0.225 * 255],mirror=fn.random.coin_flip())ส่งคืนรูปภาพ, labeltrain_data = DALIGenericIterator( [get_dali_pipeline(batch_size=16)], ['data', 'label'],reader_name='Reader')for i, data in enumerate(train_data):x, y = data[0]['data'], data[0]['label']pred = model(x)loss = loss_func(pred, y)backward(loss, model)
Python API สไตล์การทำงานที่ใช้งานง่าย
รองรับรูปแบบข้อมูลหลายรูปแบบ - LMDB, RecordIO, TFRecord, COCO, JPEG, JPEG 2000, WAV, FLAC, OGG, H.264, VP9 และ HEVC
พกพาสะดวกข้ามเฟรมเวิร์กการเรียนรู้เชิงลึกยอดนิยม: TensorFlow, PyTorch, PaddlePaddle, JAX
รองรับการทำงานของ CPU และ GPU
ปรับขนาดได้บน GPU หลายตัว
กราฟที่ยืดหยุ่นช่วยให้นักพัฒนาสามารถสร้างไปป์ไลน์แบบกำหนดเองได้
ขยายได้ตามความต้องการเฉพาะของผู้ใช้ด้วยตัวดำเนินการแบบกำหนดเอง
เร่งการจัดหมวดหมู่รูปภาพ (ResNet-50) ปริมาณงานการตรวจจับวัตถุ (SSD) รวมถึงโมเดล ASR (Jasper, RNN-T)
อนุญาตเส้นทางข้อมูลโดยตรงระหว่างที่เก็บข้อมูลและหน่วยความจำ GPU ด้วย GPUDirect Storage
บูรณาการอย่างง่ายดายกับเซิร์ฟเวอร์การอนุมาน NVIDIA Triton พร้อมแบ็กเอนด์ DALI TRITON
โอเพ่นซอร์ส
ในระหว่างการแข่งขันคอมพิวเตอร์วิทัศน์ของ Kaggle: "DALI เป็นหนึ่งในสิ่งที่ดีที่สุดที่ฉันได้เรียนรู้ในการแข่งขันครั้งนี้"
Lightning Pose - รูปแบบการวิจัยการประมาณค่าท่าทางที่ทันสมัย
เพื่อปรับปรุงการใช้ทรัพยากรในโครงสร้างพื้นฐานคอมพิวเตอร์ขั้นสูง
MLPerf - มาตรฐานอุตสาหกรรมสำหรับการเปรียบเทียบการประมวลผลและฮาร์ดแวร์และซอฟต์แวร์การเรียนรู้เชิงลึก
"เราปรับโมเดลหลักๆ ภายใน eBay ด้วยเฟรมเวิร์ก DALI"
ปัญหาต่อไปนี้แสดงถึงภาพรวมระดับสูงของแผนปี 2024 ของเรา คุณควรทราบว่าแผนงานนี้อาจเปลี่ยนแปลงได้ตลอดเวลา และลำดับของรายการไม่ได้สะท้อนถึงลำดับความสำคัญประเภทใดๆ
เราขอแนะนำให้คุณแสดงความคิดเห็นในแผนงานของเราและให้ข้อเสนอแนะเกี่ยวกับปัญหา GitHub ดังกล่าว
หากต้องการติดตั้ง DALI รุ่นล่าสุดสำหรับ CUDA เวอร์ชันล่าสุด (12.x):
pip ติดตั้ง nvidia-dali-cuda120 # หรือ การติดตั้ง pip --extra-index-url https://pypi.nvidia.com -- อัปเกรด nvidia-dali-cuda120
DALI ต้องการไดรเวอร์ NVIDIA ที่รองรับเวอร์ชัน CUDA ที่เหมาะสม ในกรณีของ DALI ที่ใช้ CUDA 12 จะต้องติดตั้ง CUDA Toolkit
DALI ติดตั้งไว้ล่วงหน้าในคอนเทนเนอร์ TensorFlow, PyTorch และ PaddlePaddle บน NVIDIA GPU Cloud
สำหรับเส้นทางการติดตั้งอื่นๆ (ปลั๊กอิน TensorFlow, CUDA เวอร์ชันเก่า, บิลด์ทุกคืนและรายสัปดาห์ ฯลฯ) และข้อกำหนดเฉพาะ โปรดดูคู่มือการติดตั้ง
หากต้องการสร้าง DALI จากแหล่งที่มา โปรดดูคู่มือการคอมไพล์
ข้อมูลเบื้องต้นเกี่ยวกับ DALI สามารถพบได้ในหน้าเริ่มต้นใช้งาน
คุณสามารถดูตัวอย่างขั้นสูงเพิ่มเติมได้ในหน้าตัวอย่างและบทช่วยสอน
สำหรับตัวอย่างเวอร์ชันโต้ตอบ (สมุดบันทึก Jupyter) ให้ไปที่ไดเร็กทอรี docs/examples
หมายเหตุ: เลือกเอกสารการวางจำหน่ายล่าสุดหรือเอกสารการวางจำหน่ายทุกคืน ซึ่งจะซิงค์กับสาขาหลัก ขึ้นอยู่กับเวอร์ชันของคุณ
การประชุมเทคโนโลยี GPU ปี 2024; การปรับรูปแบบการอนุมานให้เหมาะสมเพื่อประสิทธิภาพสูงสุดที่ eBay ; อี้เหิง หวาง: เหตุการณ์
การประชุมเทคโนโลยี GPU ปี 2023; รายละเอียดของนักพัฒนา: เร่งเวิร์กโฟลว์ระดับองค์กรด้วย Triton Server และ DALI ; แบรนดอน ทัทเทิล: เหตุการณ์
การประชุมเทคโนโลยี GPU ปี 2023; GPU-Accelerating End-to-End เวิร์กโฟลว์ Geospatial ; เควิน กรีน: เหตุการณ์
การประชุมเทคโนโลยี GPU ปี 2022; NVIDIA DALI ที่มีประสิทธิภาพ: เร่งการใช้งานแอปพลิเคชันการเรียนรู้เชิงลึกในชีวิตจริง ; ราฟาล บานาช: event.
การประชุมเทคโนโลยี GPU ปี 2022; ข้อมูลเบื้องต้นเกี่ยวกับ NVIDIA DALI: การประมวลผลข้อมูลล่วงหน้าที่เร่งด้วย GPU ; วาคีน อันตอน กีเรา: เหตุการณ์
การประชุมเทคโนโลยี GPU 2021; NVIDIA DALI: การประมวลผลข้อมูลที่ขับเคลื่อนด้วย GPU โดย Krzysztof Łęcki และ Michał Szołucha: เหตุการณ์
การประชุมเทคโนโลยี GPU 2020; การประมวลผลข้อมูลล่วงหน้าที่รวดเร็วด้วย NVIDIA Data Loading Library (DALI) ; อัลเบิร์ต โวแลนท์, วาคีน แอนตัน กีเรา: บันทึกเสียง
การประชุมเทคโนโลยี GPU 2019; การประมวลผลข้อมูล AI ล่วงหน้าอย่างรวดเร็วด้วย DALI Janusz Lisiecki, Michał Zientkiewicz: สไลด์, บันทึกเสียง
การประชุมเทคโนโลยี GPU 2019; การรวม DALI กับ TensorRT บน Xavier Josh Park และ Anurag Dixit: สไลด์, การบันทึก
การประชุมเทคโนโลยี GPU 2018; ไปป์ไลน์ข้อมูลที่รวดเร็วสำหรับการฝึกอบรมการเรียนรู้เชิงลึก , T. Gale, S. Layton และ P. Trędak: สไลด์, การบันทึก
หน้านักพัฒนา
โพสต์ในบล็อก
เรายินดีต้อนรับการมีส่วนร่วมของ DALI หากต้องการบริจาคให้กับ DALI และทำการดึงคำขอ ให้ปฏิบัติตามแนวทางที่ระบุไว้ในเอกสารการบริจาค
หากคุณกำลังมองหางานที่ดีสำหรับการเริ่มต้น โปรดตรวจสอบงานจากป้ายต้อนรับการสนับสนุนภายนอก
เราขอขอบคุณข้อเสนอแนะ คำถาม หรือรายงานข้อผิดพลาด เมื่อคุณต้องการความช่วยเหลือเกี่ยวกับโค้ด ให้ทำตามขั้นตอนที่ระบุไว้ในเอกสาร Stack Overflow ตรวจสอบให้แน่ใจว่าตัวอย่างที่โพสต์คือ:
minimal : ใช้โค้ดให้น้อยที่สุดเท่าที่จะเป็นไปได้ที่ยังคงสร้างปัญหาเดียวกัน
complete : จัดเตรียมชิ้นส่วนทั้งหมดที่จำเป็นในการเกิดปัญหาซ้ำ ตรวจสอบว่าคุณสามารถตัดการพึ่งพาภายนอกและยังคงแสดงปัญหาได้หรือไม่ ยิ่งเราใช้เวลาในการสร้างปัญหาน้อยลงเท่าไร เราก็จะสามารถทุ่มเทให้กับการแก้ไขได้มากขึ้นเท่านั้น
ตรวจสอบได้ : ทดสอบโค้ดที่คุณกำลังจะจัดเตรียมเพื่อให้แน่ใจว่าทำให้เกิดปัญหาซ้ำ ลบปัญหาอื่นๆ ทั้งหมดที่ไม่เกี่ยวข้องกับคำขอของคุณ
เดิม DALI สร้างขึ้นโดยได้รับการสนับสนุนจาก Trevor Gale, Przemek Tredak, Simon Layton, Andrei Ivanov และ Serge Panev