ปัญหาสำหรับงาน Machine Learning ส่วนหนึ่งเลยคือปัญหาการติดตั้ง และจัดการ Environment สำหรับการใช้งานทีประกอบไปด้วยปัญหาการติดตั้งเครื่องมือ ปัญหาการติดตั้งไลบรารี และปัญหาการตั้งค่า
ปัญหาเหล่านี้ส่งผลทำให้งานเป็นไปได้ล่าช้า หรือถึงแม้ติดตั้งเองได้แต่ก็ลืม รวมถึงถึงติดตั้งได้ แต่เครื่องมือเหล่านี้ก็เป็นเวอร์ชันเก่าแล้ว
โดยสำหรับเรา เดิมที่เราติดตั้งผ่านการใช้งาน Miniconda3 ที่มีปัญหาว่าเราจำเป็นต้องติดตั้งเครื่องมือเยอะแยะ หลายขั้นตอนไปหมด ส่งผลให้การทำงานเป็นได้อย่างล่าช้า แต่ปัญหานี้จะหมดไปได้ด้วยการใช้งาน Docker
Docker เป็นเครื่องมือที่ช่วยในการพัฒนา ช่วยรันโปรแกรมต่าง ๆ ที่ช่วยทำให้ผู้ใช้สามารถใช้งานได้ง่ายขึ้น โดยเราสามารถติดตั้งเครื่องมือ ไลบารีที่จำเป็นลงไปในตัว Container นั้นได้เลย และเราสามารถย้ายตัว Container ไปใช้งานกับคอมพิวเตอร์เครื่องอื่นได้โดยไม่จำเป็นต้องตั้งค่าให้ยุ่งยากแต่อย่างใด
วิธีการเริ่มใช้งานทำได้ไม่ยาก ผู้อ่านสามารถเข้าไปอ่านได้ที่คู่มือการติดตั้ง Docker โดยผู้อ่านสามารถเลือกได้ว่าจะติดตั้ง
- Docker Desktop ที่มีหน้าต่างแบบวินโดว์ หรือ
- ติดตั้งตัว Docker เฉย ๆ ที่ใช้งานผ่านคอมมานไลน์ก็ได้
วิธีติดตั้งแพคเกจ Docker แบบคอมมานไลน์
ส่วนของเราที่ใช้ลินุกซ์ Ubuntu อยู่แล้ว ก็ติดตั้งแบบที่ใช้งานผ่านคอมมานไลน์ วิธีการติดตั้งทำได้ไม่ยาก ทำได้โดยการติดตั้งแพคเกจที่จำเป็นต่อการใช้งาน Docker ด้วยการพิมพ์คำสั่งด้านล่างนี้
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg
ต่อมา ระบบจะติดตั้งแพคเกจที่จำเป็นต่อการรติดตั้ง Docker ขั้นตอนต่อไป เราจะเพิ่มตำแหน่งแพคเกจของ Docker (Docker package repository) เพื่อติดตั้ง Docker ได้สองขั้นตอน
ขั้นตอนแรก เป็นการเพิ่มคีย์สำหรับการเพิ่มตำแหน่งแพคเกจของ Docker
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
ขั้นตอนที่สอง เพิ่มตำแหน่งแพคเกจของ Docker ได้โดยการพิมพ์คำสั่งตามด้านล่างนี้
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
จากนั้น พิมพ์คำสั่งหลังจากเปลี่ยนแปลงทีอยู่ของแพคเกจสำหรับการติดตั้ง Docker เพื่ออัพเดทได้ตามด้านล่างนี้
$ sudo apt-get update
สุดท้าย ติดตั้งแพคเกจ Docker
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
เมื่อติดตั้งเสร็จแล้ว ผู้ใช้สามารถทดสอบการใช้งานได้โดยการพิมพ์คำสั่ง
$ sudo docker run hello-world
ระบบจะปรากฏหน้าจอสำหรับการทดสอบของแพคเกจ hello-world เพื่อแสดงว่าการติดตั้งแพคเกจ Docker สำเร็จด้วยดี
จากข้างบนนี้เป็นการติดตั้ง Docker สำหรับการนำไปใช้ทำอะไรก็ได้ เช่นการพัฒนาโปรแกรม การติดตั้งตัวเว็บเซิร์ฟเวอร์ และอื่น ๆ แล้วครับ
การติดตั้ง NVIDIA Container Toolkit
ส่วนถ้าต้องการติดตั้งเพื่อใช้งานการ์ดจอเพิ่มเติม ผู้อ่านสามารถติดตั้งแพคเกจ NVIDIA Container Toolkit โดยเราสามารถติดตั้งได้ตามด้านล่างนี้
หนึ่ง เพิ่มตำแหน่งแพคเกจของ NVIDIA Container Toolkit ได้โดยการพิมพ์คำสั่งตามด้านล่างนี้
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
สอง ติดตั้งแพคเกจ NVIDIA Container Toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
สาม ตั้งค่าให้ Docker รับทราบถึง NVIDIA Container Toolkit ตามด้านล่างนี้
sudo nvidia-ctk runtime configure --runtime=docker
สี่ รีสตาร์ทตัวเครื่องมือ Docker แล้วทดสอบการใช้งาน NVIDIA Container Toolkit ได้โดยการพิมพ์คำสั่งตามด้านล่างนี้
sudo nvidia-ctk runtime configure --runtime=docker
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
เมื่อพิมพ์เสร็จแล้ว ระบบจะแสดงหน้าจอของเครื่องมือ ์nvidia-smi โดยแสดงตัวอย่างตามด้านล่างนี้
เมื่อแสดงตามด้านบนนี้ก็แสดงว่าเราติดตั้ง Docker และ NVIDIA Container Toolkit เรียบร้อย เราสามารถดึงแพคเกจ PyTorch หรือ Tensorflow หรืออื่น ๆ เพื่อใช้งานทางด้าน Machine Learning ต่อไปได้ครับ