如何限制對 GPU 的訪問?
我正在 Ubuntu 18.04 下配置一個小型 GPU 伺服器。它應該支持互動式和批處理作業。
它專門由一個小團隊執行機器學習任務。我們還有一些僅在 CPU 上進行大規模並行數據處理的任務。
我的目標是避免一個人無限佔用 GPU,例如,這可能會啟動 IPython 控制台,
import tensorflow
在其中發布並離開辦公室,因為他的工作時間已經結束。另一方面,希望允許使用者以互動方式(在 CPU 上)進行一些原型設計。
考慮到以上所有,我安裝了 SLURM 工作負載管理器來支持作業隊列和調度。
現在我想限制互動式會話對 GPU 的訪問,並將它們完全置於 SLURM 的控制之下。
/dev/nvidia[0-3]
正如此處建議的那樣,限制對 的訪問不起作用,因為 SLURM 將程序使用者從 root 更改為實際的任務所有者。經過一些Google搜尋後,我找到了兩個變體:cgroups 和 udev。
在 systemd-devel 郵件列表中閱讀此主題表明,使用 cgroups 限制訪問可以繞過 systemd 完成,只需發出如下命令
echo "c 195:*" > /sys/fs/cgroup/devices/ blah-blah-blah /device.deny
儘管如此,我在手冊中讀到 systemd 支持 3 個切片。
我還發現由 SLURM 守護程序啟動的程序
system.slice
在user.slice
.原則上,我可以按照此處所述手動編輯文件
/lib/systemd/system/user.slice
並添加,但此文件可能會在下次更新軟體包後更改。DeviceAllow="char-nvidia-frontend"
那麼,
device.deny
在 Ubuntu 18.04 中設置屬性的正確方法是什麼?Systemd 開發人員 Lennart Pottering說,另一個限制訪問的選項是 udev。
我已經開始閱讀手冊,但似乎 udev 主要用於硬碟驅動器或 USB 設備,而不是影片卡。
任何人都可以分享一個範例配置設置權限嗎?
我想,我已經用環境變數解決了我的任務
CUDA_VISIBLE_DEVICES
。我已經排了
/etc/environment
一條線CUDA_VISIBLE_DEVICES=-1
,因此“懇請”互動式會話不要使用 GPU。