CV-CUDA เป็นโครงการโอเพนซอร์ซที่ช่วยให้การสร้างภาพอัพชั่นการถ่ายภาพคลาวด์เทียม (AI) และการมองเห็นคอมพิวเตอร์ (CV) (CV) มันใช้การเร่งความเร็วหน่วยประมวลผลกราฟิก (GPU) เพื่อช่วยให้นักพัฒนาสร้างท่อส่งท่อก่อนและหลังการประมวลผลที่มีประสิทธิภาพสูง CV-CUDA มีต้นกำเนิดมาจากความพยายามร่วมกันระหว่าง Nvidia และ Bytedance
อ้างถึงคู่มือนักพัฒนาซอฟต์แวร์ของเราสำหรับข้อมูลเพิ่มเติมเกี่ยวกับผู้ประกอบการที่มีอยู่
เพื่อรับสำเนาท้องถิ่นและเรียกใช้ทำตามขั้นตอนเหล่านี้
| CV-CUDA BUILD | แพลตฟอร์ม | CUDA เวอร์ชัน | ความสามารถในการคำนวณ CUDA | สถาปัตยกรรมฮาร์ดแวร์ | คนขับ Nvidia | รุ่น Python | คอมไพเลอร์ที่รองรับ (สร้างจากแหล่งที่มา) | ความเข้ากันได้ของ API กับไบนารี prebuilt | การแจกแจง OS/Linux ที่ทดสอบด้วยแพ็คเกจ prebuilt |
|---|---|---|---|---|---|---|---|---|---|
| x86_64_cu11 | x86_64 | 11.7 หรือใหม่กว่า | SM7 และภายหลัง | Volta, Turing, Ampere, Hopper, Ada Lovelace | R525 หรือใหม่กว่า *** | 3.8, 3.9, 3.10, 3.11 | gcc> = 9* gcc> = 11 ** | gcc> = 9 | ubuntu> = 20.04 wsl2/ubuntu> = 20.04 |
| x86_64_cu12 | x86_64 | 12.2 หรือใหม่กว่า | SM7 และภายหลัง | Volta, Turing, Ampere, Hopper, Ada Lovelace | R525 หรือใหม่กว่า *** | 3.8, 3.9, 3.10, 3.11 | gcc> = 9* gcc> = 11 ** | gcc> = 9 | ubuntu> = 20.04 wsl2/ubuntu> = 20.04 |
| Aarch64_cu11 | Aarch64 | 11.4 | SM7 และภายหลัง | Jetson Agx orin | Jetpack 5.1 | 3.8 | gcc> = 9* gcc> = 11 ** | gcc> = 9 | Jetson Linux 35.x |
| Aarch64_cu12 | Aarch64 | 12.2 | SM7 และภายหลัง | Jetson Agx Orin, IGX Orin + Ampere RTX6000, IGX Orin + ADA RTX6000 | JetPack 6.0 DP, R535 (IGX OS V0.6) | 3.10 | gcc> = 9* gcc> = 11 ** | gcc> = 9 | Jetson Linux 36.2 IGX OS v0.6 |
* บิลด์บางส่วนไม่มีโมดูลทดสอบ (ดูข้อ จำกัด ที่รู้จัก)
** บิลด์เต็มรูปแบบรวมถึงโมดูลทดสอบ
*** ตัวอย่างต้องการคนขับ R535 หรือใหม่กว่าในการทำงานและได้รับการสนับสนุนอย่างเป็นทางการกับ CUDA 12 เท่านั้น
-DBUILD_TESTS=0pip install --upgrade sphinx ) รวมถึงการแยกวิเคราะห์รุ่น Python เริ่มต้นของระบบอย่างชัดเจน ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>"เพื่อความสะดวกเรามีแพ็คเกจที่สร้างไว้ล่วงหน้าสำหรับการผสมผสานที่หลากหลายของรุ่น CUDA รุ่น Python และสถาปัตยกรรมที่นี่ ขั้นตอนต่อไปนี้อธิบายวิธีการติดตั้ง CV-CUDA จากแพ็คเกจที่สร้างไว้ล่วงหน้า
เราสนับสนุนเส้นทางทางเลือกหลักสองทาง:
เลือกวิธีการติดตั้งที่ตรงกับความต้องการสภาพแวดล้อมของคุณ
ดาวน์โหลดไฟล์. whl ที่เหมาะสมสำหรับสถาปัตยกรรมคอมพิวเตอร์ของคุณรุ่น Python และ Cuda จากสินทรัพย์รีลีสของ CV-CUDA ปัจจุบัน ข้อมูลการเปิดตัวของ CV-CUDA ทั้งหมดสามารถดูได้ที่นี่ เมื่อดาวน์โหลดแล้วให้เรียกใช้คำสั่ง pip install เพื่อติดตั้งล้อ Python ตัวอย่างเช่น:
pip install cvcuda_ < cu_ver > - < x.x.x > -cp < py_ver > -cp < py_ver > -linux_ < arch > .whl โดยที่ <cu_ver> เป็นรุ่น CUDA ที่ต้องการ <xxx> เป็นรุ่น CV-CUDA รุ่น <py_ver> เป็นเวอร์ชัน Python ที่ต้องการและ <arch> เป็นสถาปัตยกรรมที่ต้องการ
โปรดทราบว่าล้อ Python เป็นแบบสแตนด์อโลนพวกเขารวมทั้งไลบรารี C ++/cuda และการผูก python
ติดตั้งไลบรารี C ++/CUDA (CVCUDA-LIB*) และส่วนหัวการพัฒนา (CVCUDA-DEV*) โดยใช้ apt :
sudo apt install -y ./cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.deb ./cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.deb ติดตั้งการผูก Python (cvcuda-python*) โดยใช้ apt :
sudo apt install -y ./cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.deb โดยที่ <cu_ver> เป็นรุ่น Cuda ที่ต้องการ <py_ver> เป็นเวอร์ชัน Python ที่ต้องการและ <arch> เป็นสถาปัตยกรรมที่ต้องการ
ติดตั้งไลบรารี C ++/CUDA (CVCUDA-LIB*) และส่วนหัวการพัฒนา (CVCUDA-DEV*):
tar -xvf cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.tar.xz
tar -xvf cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.tar.xzติดตั้งการผูก Python (cvcuda-python*)
tar -xvf cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.tar.xz โดยที่ <cu_ver> เป็นรุ่น Cuda ที่ต้องการ <py_ver> เป็นเวอร์ชัน Python ที่ต้องการและ <arch> เป็นสถาปัตยกรรมที่ต้องการ
ทำตามคำแนะนำเหล่านี้เพื่อสร้าง CV-CUDA จากแหล่งที่มา:
ติดตั้งการพึ่งพาที่จำเป็นในการตั้งค่าที่เก็บ:
บน ubuntu> = 20.04 ให้ติดตั้งแพ็คเกจต่อไปนี้โดยใช้ apt :
sudo apt install -y git git-lfsโคลนที่เก็บ
git clone https://github.com/CVCUDA/CV-CUDA.git สมมติว่าพื้นที่เก็บข้อมูลถูกโคลนใน ~/cvcuda มันจะต้องได้รับการกำหนดค่าอย่างเหมาะสมโดยเรียกใช้สคริปต์ init_repo.sh เพียงครั้งเดียว
cd ~ /cvcuda
./init_repo.shติดตั้งการอ้างอิงที่จำเป็นในการสร้าง CV-CUDA:
บน ubuntu> = 20.04 ให้ติดตั้งแพ็คเกจต่อไปนี้โดยใช้ apt :
sudo apt install -y g++-11 cmake ninja-build python3-dev libssl-dev patchelfชุดเครื่องมือ CUDA 11.x หรือ 12.x ใด ๆ ควรใช้งานได้ CV-CUDA ได้รับการทดสอบด้วย 11.7 และ 12.2 จึงแนะนำให้ใช้เวอร์ชันเหล่านี้
sudo apt install -y cuda-11-7
# or
sudo apt install -y cuda-12-2สร้างโครงการ:
ci/build.sh [release | debug] [output build tree path] [-DBUILD_TESTS = 1 | 0] [-DPYTHON_VERSIONS = ' 3.8;3.9;3.10;3.11 ' ] [-DPUBLIC_API_COMPILERS = ' gcc-9;gcc-11;clang-11;clang-14 ' ]build-rel สำหรับการสร้างการเปิดตัวและ build-deb สำหรับการดีบักbuild-rel/lib และ Executables (การทดสอบ ฯลฯ ... ) อยู่ใน build-rel/bin-DBUILD_TESTS สามารถใช้เพื่อปิด/เปิดใช้งานการสร้างการทดสอบ (เปิดใช้งานโดยค่าเริ่มต้นดูข้อ จำกัด ที่ทราบ)-DPYTHON_VERSIONS สามารถใช้เพื่อเลือกรุ่น Python เพื่อสร้างการผูกและล้อสำหรับ โดยค่าเริ่มต้นจะมีการเลือกเฉพาะเวอร์ชันระบบ Python3 เริ่มต้นเท่านั้น-DPUBLIC_API_COMPILERS สามารถใช้เพื่อเลือกคอมไพเลอร์ที่ใช้ตรวจสอบความเข้ากันได้ของ API สาธารณะ โดยค่าเริ่มต้น GCC-11, GCC-9, Clang-11 และ Clang-14 ได้รับการพยายามเลือกและตรวจสอบ ข้อ จำกัด ที่รู้จัก: เอกสารที่สร้างขึ้นบน Ubuntu 20.04 ต้องการเวอร์ชันล่าสุดของ Sphinx ( pip install --upgrade sphinx ) รวมถึงการแยกวิเคราะห์ Python รุ่นเริ่มต้นของระบบอย่างชัดเจน ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>"
ติดตั้งการอ้างอิงที่จำเป็นในการสร้างเอกสาร:
บน Ubuntu ติดตั้งแพ็คเกจต่อไปนี้โดยใช้ apt และ pip :
sudo apt install -y doxygen graphviz python3 python3-pip sphinx
python3 -m pip install breathe recommonmark graphviz sphinx-rtd-themeสร้างเอกสาร:
ci/build_docs.sh [build folder]โฟลเดอร์บิลด์เริ่มต้นคือ 'สร้าง'
สำหรับคำแนะนำเกี่ยวกับวิธีการสร้างตัวอย่างจากแหล่งที่มาและเรียกใช้ให้ดูเอกสารตัวอย่าง
ติดตั้งการอ้างอิงที่จำเป็นสำหรับการเรียกใช้การทดสอบ:
บน ubuntu> = 20.04 ให้ติดตั้งแพ็คเกจต่อไปนี้โดยใช้ apt และ pip :
sudo apt install -y python3 python3-pip
python3 -m pip install pytest torch numpy==1.26 การทดสอบอยู่ใน <buildtree>/bin คุณสามารถเรียกใช้สคริปต์ด้านล่างเพื่อเรียกใช้การทดสอบทั้งหมดในครั้งเดียว นี่คือตัวอย่างเมื่อสร้างต้นไม้สร้างใน build-rel :
build-rel/bin/run_tests.shตัวติดตั้งแพ็คเกจ
ผู้ติดตั้งสามารถสร้างได้โดยใช้คำสั่ง cPack ต่อไปนี้เมื่อคุณสร้างโครงการสำเร็จ:
cd build-rel
cpack .สิ่งนี้จะสร้างขึ้นในไดเรกทอรี Build ทั้งผู้ติดตั้ง Debian และ Tarballs (*.tar.xz) ซึ่งจำเป็นสำหรับการรวมเข้ากับ distros อื่น ๆ
สำหรับตัวเลือกที่ดีของสิ่งที่ผู้ติดตั้งสร้างไวยากรณ์เต็มคือ:
cpack . -G [DEB | TXZ]ล้อ Python
โดยค่า release ต้นในระหว่างการสร้างการสร้างการผูก Python และล้อถูกสร้างขึ้นสำหรับรุ่น CUDA ที่มีอยู่และรุ่น Python ที่ระบุ ขณะนี้ล้อถูกส่งออกไปยังโฟลเดอร์ build-rel/python3/repaired_wheels (หลังจากประมวลผลโดยคำสั่ง auditwheel repair ในกรณีของ Manylinux) ล้อ Python ที่สร้างขึ้นเดี่ยวเข้ากันได้กับ Python ทุกรุ่นที่ระบุในระหว่างขั้นตอนการสร้าง CMake ที่นี่ build-rel เป็นไดเรกทอรี Build ที่ใช้ในการสร้างการสร้างรุ่น
ล้อ Python ใหม่สำหรับการปฏิบัติตาม PYPI จะต้องสร้างขึ้นภายในสภาพแวดล้อม Docker Manylinux 2014 สามารถสร้างภาพนักเทียบท่าได้โดยใช้สคริปต์ docker/manylinux/docker_buildx.sh ภาพเหล่านี้ทำให้มั่นใจได้ว่าล้อมีคุณสมบัติตรงตามมาตรฐาน Manylinux 2014 และ PYPI
ล้อที่สร้างขึ้นยังสามารถติดตั้งได้โดยใช้ pip ตัวอย่างเช่นในการติดตั้งล้อ Python ที่สร้างขึ้นสำหรับ CUDA 12.x, Python 3.10 และ 3.11 บนระบบ Linux X86_64:
pip install cvcuda_cu12- < x.x.x > -cp310.cp311-cp310.cp311-linux_x86_64.whlCV-CUDA เป็นโครงการโอเพ่นซอร์ส ในฐานะที่เป็นส่วนหนึ่งของชุมชนโอเพ่นซอร์สเรามุ่งมั่นที่จะวงจรการเรียนรู้ปรับปรุงและอัปเดตที่ทำให้ชุมชนนี้เจริญเติบโต อย่างไรก็ตาม CV-CUDA ยังไม่พร้อมสำหรับการมีส่วนร่วมภายนอก
เพื่อทำความเข้าใจกระบวนการในการสนับสนุน CV-CUDA ให้ดูที่หน้าการบริจาคของเรา เพื่อให้เข้าใจถึงความมุ่งมั่นของเราที่มีต่อชุมชนโอเพ่นซอร์สและจัดหาสภาพแวดล้อมที่สนับสนุนและเคารพความพยายามของผู้มีส่วนร่วมทุกคนโปรดอ่านจรรยาบรรณของเรา
สคริปต์ mkop.sh เป็นเครื่องมือที่ทรงพลังสำหรับการสร้างนั่งร้านสำหรับผู้ให้บริการใหม่ในไลบรารี CV-Cuda มันทำงานโดยอัตโนมัติหลายงานเพื่อให้มั่นใจถึงความสอดคล้องและการประหยัดเวลา
mkop.sh :การสร้างต้นขั้วของผู้ประกอบการ : สร้างเทมเพลตผู้ปฏิบัติงานที่ไม่มีการผ่าตัด (ไม่มีการผ่าตัด) ซึ่งทำหน้าที่เป็นจุดเริ่มต้นสำหรับการใช้งานฟังก์ชันใหม่
การปรับแต่งไฟล์ : ปรับเปลี่ยนไฟล์เทมเพลตเพื่อรวมชื่อผู้ประกอบการใหม่เพื่อให้มั่นใจว่าการประชุมการตั้งชื่อที่สอดคล้องกันทั่ว Codebase
การรวม CMAKE : เพิ่มไฟล์ตัวดำเนินการใหม่ให้กับ CMakelists ที่เหมาะสมอำนวยความสะดวกในการรวบรวมและรวมเข้ากับระบบบิลด์
การผูก Python : สร้างต้นขั้ว Python wrapper สำหรับผู้ให้บริการใหม่ทำให้สามารถใช้งานภายในสภาพแวดล้อม Python
การตั้งค่าการทดสอบ : สร้างไฟล์ทดสอบสำหรับทั้ง C ++ และ Python ทำให้สามารถพัฒนาการทดสอบหน่วยได้ทันทีสำหรับผู้ให้บริการใหม่
mkop.sh : เรียกใช้สคริปต์ด้วยชื่อผู้ประกอบการที่ต้องการ สคริปต์ถือว่าอยู่ใน ~/cvcuda/tools/mkop
./mkop.sh [Operator Name]หากสคริปต์ถูกเรียกใช้จากตำแหน่งอื่นให้ให้เส้นทางไปยังไดเรกทอรีราก CV-CUDA
./mkop.sh [Operator Name] [CV-CUDA root]หมายเหตุ : ตัวอักษรตัวแรกของชื่อผู้ประกอบการใหม่ถูกจับกุมเมื่อจำเป็นเพื่อให้ตรงกับส่วนที่เหลือของโครงสร้างไฟล์
การตั้งค่าเริ่มต้น : สคริปต์เริ่มต้นด้วยการตรวจสอบอินพุตและการตั้งค่าตัวแปรที่จำเป็น จากนั้นจึงใช้ประโยชน์จากตัวอักษรตัวแรกของชื่อผู้ประกอบการเพื่อปฏิบัติตามการตั้งชื่อการประชุม
การปรับเปลี่ยนเทมเพลต : มันประมวลผลไฟล์เทมเพลตต่างๆ ( Public.h , PrivateImpl.cpp ฯลฯ ), แทนที่ตัวยึดตำแหน่งด้วยชื่อผู้ประกอบการใหม่ ซึ่งรวมถึงการปรับส่วนหัวไฟล์เนมสเปซและลายเซ็นฟังก์ชั่น
การรวม CMake และ Python : สคริปต์อัปเดตไฟล์ CMakeLists.txt และไฟล์โมดูล Python เพื่อรวมตัวดำเนินการใหม่เพื่อให้มั่นใจว่าได้รับการยอมรับจากระบบบิลด์และอินเทอร์เฟซ Python
การทดสอบเฟรมเวิร์ก : ในที่สุดก็ตั้งค่าไฟล์ทดสอบสำหรับทั้ง C ++ และ Python ทำให้นักพัฒนาสามารถเริ่มเขียนการทดสอบสำหรับผู้ให้บริการใหม่ได้ทันที
CV-CUDA ดำเนินการภายใต้ใบอนุญาต Apache-2.0
CV-CUDA ในฐานะโปรแกรม NVIDIA มุ่งมั่นที่จะรักษาความปลอดภัยในการพัฒนา โปรดอ่านหน้าความปลอดภัยของเราเพื่อเรียนรู้เพิ่มเติม
CV-CUDA ได้รับการพัฒนาร่วมกันโดย NVIDIA และ BATTEDANCE