เผยวิธี install cuDNN สำหรับใช้งาน CUDA บน Ubuntu 16.04

Isada Sukprapa
Super AI Engineer
Published in
3 min readJan 24, 2021

--

สอนลง cuDNN บน Unbuntu 16.04 แบบ step-by-step สำหรับ VM บน Huawei Cloud

Photo by nanadua11 on pixabay

Hi, เนื่องจากที่โครงการ Super AI Engineer 2020 ได้มีการเปิดให้ผู้เข้าร่วมแข่งขันสามารถใช้งาน Huawei Cloud และผมเองก็ได้มีโอกาสเข้าไปเรียนรู้วิธีการใช้งาน รวมถึงรับหน้าที่ในการ set environment ของ VM จึงอยากที่จะมาเผยแพร่ความรู้ที่ได้รับมาเพื่อจะเป็นประโยชน์แก่ผู้อ่าน สำหรับทาง Huawei Cloud ก็มี VM จำพวก GPU Accelerator ที่ช่วยเพิ่มประสิทธิภาพสำหรับการเทรน Neural Network-based Models อย่างเช่นการ์ดจอ NVIDIA Tesla T4 หรือ NVIDIA Tesla V100 มาให้บริการ และสามารถเลือกให้ลง OS เป็น Ubuntu หรือ CentOS

หลังจากลองเล่นตัว VM ไปสักพัก ทีมพบว่าผมและพี่ๆในทีม ใช้เวลาส่วนใหญ่ในการหาวิธีลง cuDNN เพื่อให้สามารถใช้งาน CUDA ได้ นั้นจึงเป็นเหตุผลที่ผมเลือกหยิบบทความนี้มาเขียน เพราะผมมองว่าบทความนี้จะเป็นประโยชน์ต่อผู้เข้าร่วมโครงการในแง่ของการประหยัดเวลา หรือว่าจะเป็นแนวทางให้กับผู้ที่ต้องการที่จะ setup cuDNN บน Ubuntu version 16.04 หรือ version อื่นๆ ถือว่าเป็น Knowledge Sharing

cuDNN คืออะไร

อย่างที่ทุกคนทราบกันดีกว่า library อย่าง Tensorflow หรือ PyTorch ล้วนใช้ประโยชน์จาก CUDA (Parallel Computing Platfrom จาก Nvidia) ในการทำงานทั้งสิ้น NVIDIA cuDNN เป็น library สำหรับตัวกลาง ในการแปลง Neural Network modules เพื่อไปรันบน CUDA และแปลงผลลัพธ์จากคำนวนของ CUDA กลับไป software นั้นเอง

วิธีการ Instrall cuDNN

1. หลังจาก SSH เข้า เครื่อง VM ที่ต้องการจะลงแล้ว ให้ทำการเช็ค CUDA version

  • ตัวอย่างการ SSH
$ ssh username@ipv4

ipv4 คือ IP ของเครื่อง VM

ถ้ายังไม่ได้ set username ให้ทำการ login ด้วย $ ssh root@ipv4 แล้วไปสร้าง username และ assign สิทธิ์ในการรัน sudo ดังต่อไปนี้

$ useradd -m username
$ usermod -aG sudo username

ในการใช้ Unix เราควรหลีกเลี่ยงการใช้ root เพราะว่า 1. เมื่อ build file ผ่าน root file จะติด permission ทำให้ user ที่ต่ำกว่าไม่สามารถใช้งานไฟล์นั้นๆได้ 2. มันเคยมีเคสที่ว่า library มาที่โหลดเกิดมี bug ทำการลบไฟล์ต่างๆ ได้โดยไม่ต้องขอ permission เพราะงั้นเพื่อลด damage เหล่านี้เราจึงควรใช้ user ปกติแทน

จากนั้นทำการ login ผ่าน SSH โดยใช้ $ ssh username@ipv4

  • command สำหรับเช็ค CUDA version
$ nvidia-smi
ตัวอย่าง Nvidia-smi. source

2. ถ้ารันได้แสดงว่าเครื่องนี้มีการติดตั้ง CUDA version มาแล้ว จากนั้น ให้ทำการเช็ค CUDA version

  • จากรูป CUDA version คือ
CUDA version 10.1

หมายเหตุ กรณีถ้ารันแล้วไม่ขึ้นแสดงตามภาพข้างต้น ผู้อ่านหาต้องวิธีลง CUDA เอง สำหรับไกด์ไลน์คร่าวๆ คือ download NVIDIA CUDA Toolkit version ที่การ์ดจอ support มา install เองครับ ดูวิธีได้จาก ลิงค์นี้ แต่ในกรณีนี้ทาง Huawei Cloud ได้ทำการลง CUDA มาให้พร้อมใช้งานแล้วครับ

3. ต่อมาให้เอา CUDA version ไปเช็ค TensorFlow, cuDNN, Python, Compiler ที่ support

ตัวอย่าง Version ที่ support
  • จากในรูป CUDA 10.1 ต้องใช้ cuDNN 7.6 และรองรับ Python3.8, Tensorflow 2.3.0

4. เมื่อรู้แล้วว่าเราต้อง Install cuDNN 7.6 เราก็ไป download ตัว Installer มา

  • ตัว Installer แบ่งเป็น 3 ไฟล์คือ Code Samples and User Guide, Runtime Library และ Developer Library ให้โหลดเป็นไฟล์ (.deb)
  • สามารถดาว์โหลดได้จาก ลิงค์นี้
  • ถ้ายังไม่มี account ของ Nvidia ให้ทำการสมัครแล้วจึงสามารถดาว์โหลดได้
ตัวอย่างเวอร์ชั่นที่ต้องดาว์โหลด
ตัวอย่างไฟล์ที่ต้องดาว์โหลด
  • ถ้าโหลดมาเข้าเครื่อง local แล้วต้องการโยนไฟล์เข้าไปเครื่อง server ให้ใช้คำสั่ง SCP ตามตัวอย่าง
$ scp “path/to/target_file.txt” remote_username@10.10.0.2:/remote/directory

5. ทำการ Install cuDNN ทั้งสามไฟล์

  • เนื่องจากเราโหลดมาเป็นไฟล์ Debian ให้ทำการ install โดยใช้คำสั่งต่อไปนี้ ตามลำดับ
  • 5.1 ลงตัว runtime library (กด tap 2 ที เพื่อ auto type directory)
$ sudo dpkg -i libcudnn7_7.6.5.32-1+cudax.x_amd64.deb
  • 5.2 ลงตัว developer library
$ sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cudax.x_amd64.deb
  • 5.3 ลงตัว code samples และ cuDNN library documentation
$ sudo dpkg -i libcudnn7-samples_7.6.5.32-1+cudax.x_amd64.deb

6. ทำการ verify ว่าเราสามารถใช้งาน cuDNN หลังจากที่เรา install เรียบร้อยแล้ว

  • ก๊อปปี้ cuDNN samples ไป path home โดยสามารถใช้คำสั่งตามนี้ได้เลยแต่ต้องแน่ใจว่าชื่อไฟล์ถูกต้อง
$ cp -r /usr/src/cudnn_samples_v7/ $HOME
  • cd ไปที่ cudnn_samples_v7/mnistCUDNN เสริมนิดนึงอันนี้ คือเราจะเทสรัน CUDA โดยใช้ MNIST dataset
$ cd  $HOME/cudnn_samples_v7/mnistCUDNN
  • Compile mnistCUDNN sample
$ make clean && make
  • รัน mnistCUDNN sample.
$ ./mnistCUDNN
  • ถ้า cuDNN รันปกติเราจะได้รับ massage:
Test passed!

เมื่อทำตามครบหมดนี้ ก็เท่ากับว่าเราสามารถใช้ cuDNN และ CUDA ได้ตามปกติครับ หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อยครับ

Reference

--

--