基礎配置
CPU: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz * 16
MEM: 120 GiB
GPU: NVIDIA P100 * 2
OS: Ubuntu 18.04 64bit
環境配置
GPU驅動 cuda cuDNN
| version | url | file | |
|---|---|---|---|
| GPU Driver | Tesla P100 | https://www.nvidia.cn/Download/index.aspx | NVIDIA-Linux-x86_64-418.67.run |
| cuda | 10.1 | https://developer.nvidia.com/cuda-downloads | cuda_10.1.168_418.67_linux.run |
| cuDNN | 7.6.2 for cuda10.1 | https://developer.nvidia.com/rdp/cudnn-download | cudnn-10.1-linux-x64-v7.6.2.24.tgz |
- GPU Driver
chmod +x NVIDIA-Linux-x86_64-418.67.run
./NVIDIA-Linux-x86_64-418.67.run
注意:
默認檢查cc版本7.3,但本機是7.4,忽略即可
未發現X,如果X沒有發現此驅動,需要安裝pkg-cinfig和x.org sdk/development包
提醒32位未裝
- cuda
chmod +x cuda_10.1.168_418.67_linux.run
./cuda_10.1.168_418.67_linux.run
- cudnn
cp cudnn-10.1-linux-x64-v7.6.2.24.tgz /usr/local/
cd /usr/local/
tar xvf cudnn-10.1-linux-x64-v7.6.2.24.tgz
ls cuda/lib64 | grep cudnn
環境變量:
# .bashrc
export PATH=$PATH:/usr/local/cuda-10.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
軟件環境
- python包
# 首先在本地生成項目的requirements.txt, 壓縮上傳
sudo pip3.6 install pipreqs
pipreqs Inverse-Reinforcement-Learning/
zip -r Inverse-Reinforcement-Learning.zip Inverse-Reinforcement-Learning/
scp Inverse-Reinforcement-Learning.zip root@39.104.56.54:~/
# 服務器上解壓,安裝對應包
unzip Inverse-Reinforcement-Learning.zip
apt install python3-pip # 注意服務器上pip對應python2
pip3 install -r requirment.txt
- gnome & vnc
呃 我們的項目需要用到窗口來做交互 同時方便大家使用 嘗試裝個gnome
apt install gnome-session gdm3
# 待續
- jupyter notebook
pip3 install notebook
jupyter notebook --generate-config
# ipython
from notebook.auth import passwd
passwd() # 輸入密碼,復制該hash值
# vim ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip = '內網ip' # 注意內網
c.NotebookApp.password = u'密碼hash值'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888
c.NotebookApp.notebook_dir = '/root'
screen -S jupyter_notebook
jupyter notebook --allow-root
<C-a> d
最后注意去ECS的控制台,選中該實例,添加一個允許8888/8888端口的自定義TCP安全組規則即可
遇到的問題
- 在強化學習的過程中涉及到真正的游戲環境, 所以需要把窗口取消掉
# 在pygame的環境下, 添加環境變量即可
os.environ["SDL_VIDEODRIVER"] = "dummy"
- 同時音頻雖然可以不用取消, 但由於總是報錯, 屏幕上出現很多的ALSA報錯信息.
第一次這么解決了, 但問題時python的tqdm信息也是通過錯誤信息提供的, 這樣就把tqdm和真正的報錯去掉了.
python3 xxx.py 2>/dev/null
這之后突然腦子上線, 用grep過濾掉ALSA的報錯吧, 這樣tqdm不會亂掉同時其他報錯也都在, 缺點是這些信息都當做正常信息輸出了
python3 xxx.py 1>&1 2>&1 | grep -v "ALSA" >&1
順便一提, shell中雙引號類似與python中的f"", 而單引號類似與r""
