การติดตั้ง GPU Cuda ใน Windows

Kritthanit Malathong
4 min readNov 15, 2022

--

Post id: 46
Date: 15/11/2022

1. Cuda คืออะไร

Cuda ย่อมาจากคำว่า “Compute Unified Device Architecture” ซึ่งความหมายโดยละเอียดของมัน ผมเชื่อว่าทุกคนคงสามารถหาอ่านได้ง่ายๆ ในเน็ต ดังนั้นผมจะสรุปให้สั้นๆ เลยก็แล้วกัน

Cuda ก็คือ OS สำหรับ GPU

คำอธิบายเพิ่มเติมก็คือ…

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

2. ใครที่ควรใช้ Cuda บ้าง

คำตอบก็คือ โปรแกรมเมอร์ด้าน Computer vision, Machine Learning, Deep Learning กลุ่มคนเหล่านี้แหละครับที่จะได้รับประโยชน์จาก Cuda สูงสุด เพราะมันจะทำให้การประมวลผลภาพเร็วขึ้นมาก

3. ถ้าอยากจะใช้งาน Cuda ต้องทำอย่างไร

โดยปกติ ถ้าเราอยากใช้งานโปรแกรมอะไร เราก็แค่ต้องติดตั้งมันก็แค่นั้น แต่สำหรับ Cuda จะต่างออกไปเยอะเลยนะ เพราะยังมีอีกหลาย process ที่เราต้องทำเพิ่มเติมนอกเหนือไปจากการติดตั้ง cuda ซึ่งขั้นตอนโดยรวมมีดังนี้

1. ตรวจสอบว่าการ์ดจอในเครื่องของคุณรองรับการทำงานกับ CUDA หรือไม่

โดยตรวจสอบได้จากลิงค์ด้านล่างนี้

ถ้าใครหาการ์ดจอของตัวเองไม่เจอ แสดงว่าคุณหมดสิทธิ์ใช้งาน Cuda นะครับ

2. ติดตั้ง Visual Studio

เพราะตัว Cuda มันทำงานด้วยภาษา C++ ดังนั้นเราจึงต้องติดตั้งคอมไพเลอร์ของ C++ เอาไว้ในเครื่องด้วย ใครที่ยังไม่มีไฟล์ติดตั้งก็เข้าไปโหลดได้ตามนี้

จากนั้นเวลาติดตั้งก็ให้เลือกติดตั้ง C++ ตามนี้ (จะติดตั้งตัวอื่นด้วยก็ได้ถ้าอยากใช้)

3. ดาวน์โหลดและติดตั้ง Cuda Toolkit จากลิงค์นี้

ส่วนเรื่องที่ว่าจะใช้เวอร์ชั่นไหนดี ผมแนะนำว่าให้ไปตรวจสอบจากโมดูลที่คุณจะนำไปใช้งานนะ อย่างเช่น ถ้าจะเอาไปใช้กับ pytorch ก็ไปเช็คที่เว็บ pytorch ว่าตอนนี้เขารองรับ cuda เวอร์ชั่นเท่าไร หรือถ้าจะเอาไปใช้กับ tensorflow ก็ต้องไปอ่านดูคู่มือของ tensorflow ว่าเขาแนะนำยังไง

Toolkit ตัวนี้ เมื่อโหลดมาแล้วจะได้ไฟล์นามสกุล .exe สามารถติดตั้งได้ตามปกติเหมือนโปรแกรมทั่วไปเลยครับ

4. ดาวน์โหลดและติดตั้ง cuDNN จากลิงค์นี้

cuDNN คือไลบารี่ที่เอาไว้ใช้เร่งความเร็วการทำงานของ GPU ในการประมวลผลการคำนวณด้าน deep neural network

แต่ว่า กว่าจะติดตั้งได้ก็ไม่ง่ายนะครับ ต้องไปสมัครสมาชิกของ Nvidia ก่อนถึงจะดาวน์โหลดมาใช้งานได้

และอย่างที่บอกไปครับว่ามันเป็นไลบารี่ ดังนั้นไฟล์ที่โหลดมาได้จะเป็น .dll ซึ่งเราจะต้องนำมาติดตั้งเอง

ปล. ก่อนจะติดตั้ง cuDNN จะต้องติดตั้งไดรฟ์เวอร์การ์ดจอ และติดตั้ง Cuda Toolkit ให้เรียบร้อยก่อนนะ

  1. ติดตั้ง Zlib ดาวน์โหลดไฟล์ที่นี่

เมื่อดาวน์โหลดมาแล้วจะได้ไฟล์ประมาณนี้

Zlib

ให้เราแตกไฟล์เอาไปไว้ที่ไหนก็ได้ แล้วให้เซ็ต PATH ของ System Enviralment Variable ไปที่ตำแหน่งนั้น (ผมติดตั้งไว้ที่ C:\Zlib\)

จากนั้นให้เซ็ต PATH ไปที่โฟลเดอร์ของไฟล์ zlibwapi.dll

2. แตกไฟล์ cuDNN ซึ่งจะได้ไฟล์แบบนี้

cuDNN

จากนั้นย้ายไฟล์ตามนี้

  • ไฟล์ทั้งหมดในโฟลเดอร์ bin ให้ย้ายไปไว้ที่โฟลเดอร์ที่เราติดตั้ง Cuda Toolkit
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
  • ไฟล์ทั้งหมดในโฟลเดอร์ include ให้ย้ายไปไว้ที่
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include
  • ไฟล์ทั้งหมดในโฟลเดอร์ lib ให้ย้ายไปไว้ที่
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib

หมายเหตุ ชื่อโฟลเดอร์อาจจะแตกต่างจากนี้ ขึ้นอยู่กับว่าคุณติดตั้ง cuda toolkit เวอร์ชั่นไหน

จากนั้นให้ Set PATH ไปที่

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin

3. ถ้าใครอยากใช้ cuDNN ใน Visual Studio ด้วย ให้เซ็ตตามนี้

1) เปิด Visual Studio แล้วไปที่ Solution Explorer แล้วคลิกขวาเลือก Properties

2) คลิกที่ VC++ Directories ในช่อง Include Directories ให้เพิ่ม

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include

3) คลิกที่ Linker > Input ในช่อง Additional Dependencies ให้เพิ่ม

cudnn.lib

แล้วคลิก OK

5. ติดตั้งโมดูลใน Python

  1. ติดตั้ง PyTorch

เข้าไปที่เว็บ

https://pytorch.org/get-started/locally/

แล้วก็อปปี้โค้ดในช่อง Run this Command เอามารันใน windows terminal (เหมือนการติดตั้ง pip ตามปกติ)

2. ติดตั้ง nvidia runtime โดยใช้โค้ดตามนี้

pip install nvidia-cuda-runtime-cu11

6. ทดสอบผลการติดตั้ง

  1. ทดสอบใน CMD ของ Windows เพื่อดูว่า Windows รู้จักไลบารี่ CUDA รึยังโดยพิมพ์คำสั่ง nvcc -V ดังตัวอย่างนี้
ทดสอบการติดตั้ง Cuda ใน CMD

ถ้าได้ผลตามในรูปก็แสดงว่าติดตั้ง Cuda ใน Window สำเร็จแล้ว แต่….

อย่าเพิ่งรีบดีใจไปนะครับ Windows รู้จัก Cuda แล้วก็จริง แต่ใช่ว่า Python จะรู้จักตาม Window นะ

2. ทดสอบใน Python

import torch

x = torch.rand(5, 3)
print(x)

print(torch.cuda.is_available()) # True = ใช้งานได้
print(torch.cuda.device_count()) # 1 หรือ 2, 3, 4, ... คือจำนวณการ์ดจอในเครื่อง
print(torch.cuda.current_device()) # ID ของการ์ดจอที่ใช้ปัจจุบัน เริ่มจาก 0, 1, 2,...
print(torch.cuda.get_device_name(0)) # ชื่อรุ่นการ์ดจอ

ตัวอย่างผลรัน

ถ้าขึ้นประมาณนี้ก็แสดงว่าเราสามารถใช้ cuda ใน python ได้แล้วครับ

Update!!!

ถ้าเราสร้าง evironment ใหม่แล้ว python ไม่เจอ cuda (แต่เช็คใน env เดิมยังเจอตามปกติ) ให้แก้ไขดังนี้

1. ถอนการติดตั้ง torch ใน env ตัวใหม่

pip uninstall torch

2. ติดตั้ง torch ใหม่

เข้าไปเช็คเวอร์ชั่นล่าสุดได้ที่นี่

https://pytorch.org/get-started/locally/

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117

เท่านี้ก็น่าจะใช้ได้แล้วนะ ลองรันโค้ดทดสอบดูได้เลย

แต่ถ้ายังใช้ไม่ได้ ให้เช็ค package ที่เราติดตั้งเอาไว้ดังนี้

วิธีแรก

pip freeze

วิธีที่สอง

ไปที่เมนู Tool>Sync Python Requirements… ที่อยู่ใน Pycharm

จากนั้น Generate “requirement.txt” ออกมาดู (วิธีนี้จะเห็นเฉพาะแพ็คเก็จที่เราใช้ ซึ่งทำให้ตรวจเช็คได้ง่ายกว่า)

จากนั้นให้ค้นหาแพ็คเก็จที่ชื่อว่า torch

แพ็คเก็จ torch ที่สามารถใช้งานกับ cuda ได้จะต้องอยู่ในรูปแบบประมาณนี้

torch==1.13.0+cu117

ถ้าหาก torch ที่ติดตั้งไม่มี +cuXXX ที่ด้านหลังจะใช้งาน cuda ไม่ได้ (torch ไม่รู้จัก GPU)

--

--