Nvidia Container Toolkit是Nvidia開發的開源軟體,原始碼位於 Github,當然Nvidia驅動部分還是閉源的。
1. Nvidia Container Toolkit優點?#
有些程式(就是在說你,Tensorflow)非常吃Nvidia閉源驅動+CUDA+Linux系統的版本,三位一體只要有個版本不對就會出亂子,甚至CUDA只要差一兩個版本程式就會不給跑。
這個時候採用Docker容器化開發可以降低困擾,將CUDA塞在Docker裡面就能迴避Linux宿主機版本的要求。
Nvidia Container Toolkit僅求要求宿主機安裝Nvidia閉源驅動即可,卻不需要安裝CUDA Toolkit。
並且由於容器有多重複製的特性,開發者能夠按照不同專案需求開不同的容器環境部署服務,各個容器的CUDA版本是彼此獨立的。
此外,依賴CUDA的cudnn、TensorRT應也可如法炮製。
宿主機只需要安裝Nvidia閉源驅動,剩下的交給Docker容器去處理就好了。而負責讓容器內的CUDA跟宿主機Nvidia驅動溝通的媒介,就是Nvidia Container Toolkit了。
Nvidia Container Toolkit還可以解決依賴特定發行版的問題。如果你系統用的不是Nvidia原廠支援的發行版(Deb-based、RPM-based)的就GG了,這很不公平。
Nvidia Container Toolkit僅依賴宿主機的Nvidia閉源驅動,卻不需要安裝CUDA Toolkit。
於是它可以讓Linux宿主機在沒有安裝CUDA Toolkit的情況下,於Docker/Podman容器使用CUDA進行計算。
特別適合給不方便安裝CUDA的Linux使用。
這適用一種極端的情況:immutable distro,例如Fedora Silverblue、openSUSE MicroOS、Vanilla OS等等。他們雖然可以裝Nvidia驅動,但是沒辦法安裝CUDA套件。透過Nvidia Container Toolkit即可繞過這個問題。
2. 安裝Nvidia Container Toolkit#
參考資料#
Installing the NVIDIA Container Toolkit - NVIDIA CONTAINER TOOLKIT