内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

Ubuntu 18.04 First Experience

2018-05-10 14:08 出处:清屏网 人气: 评论(0

Ubuntu18.04发布已经有一个多星期了,本来是没有打算这么快换的

不过正好赶上要测试 Facebook 的 ELF OpenGo

顺手把我在实验室使用的台式机换成18.04.

1. Configure Static IP Addresses

装完系统后第一件事是配置网络

新版的Ubuntu设置IP的方法和以往不太一样了

需要使用netplan来进行管理

// 生成yaml文件
sudo netplan generate 
sudo vi /etc/netplan/01-network-manager-all.yaml

// 根据具体情况添加配置
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: networkd
  ethernets:
    enp5s0:
      dhcp4: no
      dhcp6: no
      addresses: [140.xxx.xxx.xxx/27]
      gateway4: xxx.xxx.xxx.xxx
      nameservers:
        addresses: [8.8.8.8, xxx.xxx.xxx.xxx]
        
// 运用配置
sudo netplan apply

2. Install Nvidia Driver

sudo add-apt-repository ppa:graphics-drivers/ppa && sudo apt update
sudo apt install nvidia-390

安装完毕后用 nvidia-smi 查看信息

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48                 Driver Version: 390.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:03:00.0  On |                  N/A |
| 12%   53C    P8    15W / 250W |    423MiB / 11175MiB |      2%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1031      G   /usr/lib/xorg/Xorg                            18MiB |
|    0      1081      G   /usr/bin/gnome-shell                          50MiB |
|    0      1462      G   /usr/lib/xorg/Xorg                           139MiB |
|    0      1618      G   /usr/bin/gnome-shell                         105MiB |
|    0      4110      G   ...-token=B32441878DB1E1469BAFC3010A50CC00   106MiB |
+-----------------------------------------------------------------------------+

3. Install CUDA 9.0 & cuDNN 7.0.5

因为官方还没有放出18.04的deb,就直接下载17.04的deb

sudo dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

装好后设置环境变量,并用nvcc查看版本

sudo vi ~/.bashrc  
//insert the following lines
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

> source ~/.bashrc
> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

cuDNN的话,依然是老样子。

cd Downloads/
tar -zxvf cudnn-9.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*

> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

> cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

4. Install TensorFlow & Keras

因为后面测试要用conda来装ELF,所以就直接和conda一起装了。

5. Install Other Useful Applications

  • vim
  • ssh
  • htop
  • terminator
  • Chrome
  • OBS
  • Sublime Text
  • Code::Blocks
  • Steam & Dota 2
  • 网易云音乐(NetEase Cloud Music)
  • 中文输入法(Intelligent Pinyin)
  • TeamViewer
  • FileZilla

PS: 自从网易云音乐支持Linux以及Dota2可以在Linux完美运行后

再没有什么能够成为打开Windows的理由了。

再从 Github 上copy之前的配置文件( .vimrc .bashrc .screenrcterminator config

6. Install ELF & Run a Go bot

先安装Miniconda

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O $HOME/miniconda.sh
/bin/bash $HOME/miniconda.sh -b
$HOME/miniconda3/bin/conda update -y --all python=3

再使用conda安装PyTorch

export PATH=$HOME/miniconda3/bin:$PATH
sudo apt-get install cmake g++ gcc libboost-all-dev libzmq3-dev
conda install numpy zeromq pyzmq
conda install -c pytorch pytorch-nightly cuda90

最后安装ELF

git clone https://github.com/pytorch/ELF.git
cd ELF
git submodule sync && git submodule update --init --recursive
make

最后从 releases 下载weight文件。 执行shell文件开启AI。 PS: 具体可以看 pytorch/ELF

2 . . . . . . . . . . . . . . . X O . . 2
 1 . . . . . . . . . . . . . . . . . . . 1
   A B C D E F G H J K L M N O P Q R S T
Last move: Q8, nextPlayer: Black

[17] Propose move [P8][oh][183]

= P8


genmove w
[-1] MCTSAI Result: BestA: [P9][oi][204], 
MaxScore: 4907, Info: 107.157/4907 (0.0218376), 
Pr: 0.76997, child node: 3685 Action:204
MCTS: 1899.5ms. Total: 1899.5ms.
Current board: 
   A B C D E F G H J K L M N O P Q R S T
19 . . . . . . . . . . . . . . . . . . . 19
18 . . . . . . . . . . . . . . . . . . . 18
17 . . . . . . . . . . . . . . . . . . . 17
16 . . . X . . . . . + . . . . . X . . . 16
15 . . . . . . . . . . . . . . . . . . . 15
14 . . . . . . . . . . . . . . . . . . . 14
13 . . . . . . . . . . . . . . . . . . . 13
12 . . . . . . . . . . . . . . . . . . . 12
11 . . . . . . . . . . . . . . . . . . . 11     WHITE (O) has captured 0 stones
10 . . . + . . . . . + . . . . . + . . . 10     BLACK (X) has captured 0 stones
 9 . . . . . . . . . . . . . . . . . . . 9
 8 . . . . . . . . . . . . . . X)O . . . 8
 7 . . . . . . . . . . . . . . . X O . . 7
 6 . . . . . . . . . . . . . . . X O . . 6
 5 . . . . . . . . . . . . . . . . . . . 5
 4 . . . O . . . . . + . . . . X + O . . 4
 3 . . . . . . X . . . O . . . X O . . . 3
 2 . . . . . . . . . . . . . . . X O . . 2
 1 . . . . . . . . . . . . . . . . . . . 1
   A B C D E F G H J K L M N O P Q R S T
Last move: P8, nextPlayer: White

[18] Propose move [P9][oi][204]

= P9

7. Run OpenGo with Gogui

没有GUI只能自己手动一直genmove,需要找一个GUI,先尝试GoGui

先装JAVA

sudo add-apt-repository ppa:webupd8team/java
sudo apt update 
sudo apt install oracle-java8-installer
javac -version

然后下载 gogui-1.4.9.zip , 解压并安装。

unzip gogui-1.4.9
cd gogui-1.4.9/
sudo ./install.sh

装完之后会增加 gogui , gogui-client , gogui-server 等一系列指令。 你可以用 gogui 来打开GUI,这里我们单独再写一个shell方便执行 vim run_go.sh

#!/bin/bash
./gtp.sh ./pretrained-go-19x19-v0.bin \
        --verbose \
        --gpu 0 \
        --num_block 20 \
        --dim 224 \
        --mcts_puct 1.50 \
        --batchsize 16 \
        --mcts_rollout_per_batch 16 \
        --mcts_threads 2 \
        --mcts_rollout_per_thread 2192 \
        --resign_thres 0.05 \
        --mcts_virtual_loss 1

然后执行切换到 you_path/ELF/scripts/elfgames/go

执行 gogui-server -port 22222 ./run_go.sh 开启server端,端口为 22222

然后打开 goguiPorgram->New Program 加入新的AI

command设置为 gogui-client localhost 222222

如果是远程连接的话,记得改IP,之后就可以attach我们的AI程序

PS: 要注意一点,OpenGo的GTP没有写好,会吐出一些不该有的资讯,导致GUI无法正常运行。 所以这里可能会有一点小问题,就是在attach的时候,记得选择 wait。

之后就可以正常下棋了。

8. Run Leela Zero with Sabaki

ELF OpenGo 的 weight可以转成leela zero的格式,leela zero又支持Sabaki,

而原本的OpenGo又有很多issue,比如 issue 17

如果非常想用这个weight的话,Leela Zero + Sabaki 是个很好的解决方案

这里下载已经从ELF转好的 weights

解压后放在合适的位置(文件名为 elf_converted_weights.txt )

先Build Sabaki(windows下其实可以直接下载可执行文件)

git clone https://github.com/SabakiHQ/Sabaki.git
cd Sabaki
npm install
npm run build

再build Leela Zero

# Test for OpenCL support & compatibility
sudo apt install clinfo && clinfo

# Clone github repo
git clone https://github.com/gcp/leela-zero
cd leela-zero/src
sudo apt install libboost-dev libboost-program-options-dev libopenblas-dev opencl-headers ocl-icd-libopencl1 ocl-icd-opencl-dev zlib1g-dev
make

打开Sabaki, Engines -> ManageEngines Add
选择LeelaZero编译后的路径, 参数为 --gtp -w your_weights_path

之后就可以很完美的进行 AI VS. AI, 或者 Hunman vs. AI 了

PS: 如果需要修改playout,可以加入参数 --noponder --playout 800

9. Other Sundry Testing

最后测试了找了自己以前的code测试了一下 TensorFlow 和 Keras。

基本上没有什么问题。

总体上对Ubuntu18.04还算满意, 除了放大缩小关闭键位跑到右边去了有点不适应。

用一张桌面图结束这次体验吧。


分享给小伙伴们:
本文标签: Ubuntu

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号