Manjaro折騰筆記:我的數據科學環境搭建之路


ss並且開機啟動

0. 安裝shadowsocks

sudo pip install shadowsocks 

1. 建立配置文件ss.json

我的位置是:/home/ray/Documents/shadowsocks/ss.json

{
    "server":"*.*.*.*",
    "server_port":***,
    "local_port":1081,
    "password":"*****",
    "timeout":600,
    "method":"aes-256-cfb"
}

2. 建立sh文件,用以運行

我的位置是:/home/ray/Documents/shadowsocks/ss.sh

#!/bin/bash
#ss.sh
/home/ray/anaconda3/bin/sslocal -c /home/ray/Documents/shadowsocks/ss.json 

echo "connected!"

注意,如果是開機啟動會出現:"sslocal 未知的命令"的情況,一定要附上絕對路徑,或者加入環境變量。

不要忘記增加可執行權限:

sudo chmod +x ss.sh

測試:打開終端后,運行: sh /home/ray/Documents/shadowsocks/ss.sh,不報錯就成功了

3. 開機自動啟動

3.1 首先載啟動文件/etc/rc.local中加入

sh /home/ray/Documents/shadowsocks/ss.sh

增加權限:

sudo chmod +x /etc/rc.local

重啟,如果可以翻牆最好,如果不行則考慮步驟3.2

3.2 添加服務

新建文件:/usr/lib/systemd/system/rc-local.service,在其中加入:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
ExecStart=/etc/rc.local
[Install]
WantedBy=multi-user.target

之后在終端運行:

systemctl enable rc-local.service    # 允許該服務,使其可以開機自運行
systemctl start rc-local.service    # 啟動該服務
systemctl status rc-local.service   # 查看服務狀態

如果發現服務狀態沒有異常,則搞定了,重啟即可

4. github代理

git config --global http.proxy 'socks5://127.0.0.1:1081' 

1081為本地端口號

雙硬盤時,機械硬盤掛載

1. 格式化硬盤為EXT4

如果時windows過來的NTFS,一定要進行格式化,否則無法寫入

fdisk -l   # 列出所有分區,找到想要格式化的分區名,如/dev/sda1
sudo mkfs -t ext4 /dev/sda1   # 格式化完成

2. 分區

sudo fdisk /dev/sda     #格式化后名稱為/dev/sda

輸入n、p、1、兩下回車、wq、回車,分成一個區

3. 掛載

# 新建文件夾作為掛載點
mkdir /home/ray/Documents/Data

# 給定寫入權限
chown -R 500:ray /run/media/ray/data/
sudo chown ray:ray /run/media/ray/data/

# 掛載
sudo mount -t ext4 /dev/sda1 /home/ray/Documents/Data/

4. 開機自動掛載

sudo gedit /etc/fstab

加入:

/dev/sda1 /home/ray/Documents/Data ext4 defaults 0 2 

添加字體

1. 安裝依賴

sudo pacman -S fontconfig

2. 下載對應的字體文件,並且放到指定位置

3. 建立緩存

mkfontscale
mkfontdir
fc-cache -fv

安裝 latex

# 安裝底層(最后一個用於解決bibtex的問題)
sudo pacman -S texlive-core texlive-langchinese texlive-latexextra texlive-publishers

# 安裝IDE
sudo pacman -S texstudio

# 更新texlive
texhash

雙顯卡驅動

manjaro裝機之后的顯卡驅動切換程序:Bumblebee還是有點問題,我們重新安裝

1. 安裝

# 依賴
sudo pacman -S virtualgl lib32-virtualgl lib32-primus primus

# 安裝雙顯卡切換程序bumblebee
sudo mhwd -f -i pci video-hybrid-intel-nvidia-bumblebee

# 允許服務
sudo systemctl enable bumblebeed

# 添加用戶
sudo gpasswd -a $USER bumblebee

2. 防止啟動后無法進入圖形界面

  1. 打開 /etc/default/grub
  2. 找到並且改為:GRUB_CMLINE_LINUX_DEFAULT="quiet acpi_osi=! acpi_osi=Linux acpi_osi=’Windows 2015’ pcie_port_pm=off resume=..."
  3. 運行sudo update-grub,重啟

3. 測試

# 安裝測試軟件
sudo pacman -S mesa-demos

# 集成顯卡性能
glxgears -info

# 獨顯性能
optirun glxgears -info
# 或者
primusrun glxgears -info

之后所有需要用獨顯允許的程序,前面都要加上optirun或者primusrun允許

# 打開nvida面板
optirun -b none nvidia-settings -c :8

# 不依賴Bumblebee來使用CUDA
sudo tee /proc/acpi/bbswitch <<< 'ON'

# 使用完CUDA 停止NVIDIA顯卡
sudo rmmod nvidia_uvm nvidia && sudo tee /proc/acpi/bbswitch <<< OFF
inxi -G # 查看顯卡情況

optirun nvidia-smi # 查看CPU情況

4. 兩種用法

  1. 用bumblebee切換:
    命令前面加上 optirun 或者primusrun運行
  2. 用bbswitch:
# 一直開啟獨顯
sudo tee /proc/acpi/bbswitch <<< 'ON'
# 一直禁用獨顯
sudo tee /proc/acpi/bbswitch <<< 'OFF'

docker + pyspark + jupyter 安裝

參考: http://maxmelnick.com/2016/06/04/spark-docker.html

1. 本地安裝docker

1.1 安裝docker包

sudo pacman -S docker

1.2 防止權限問題,加入用戶權限

sudo usermod -aG docker ray

1.3 重啟服務(或者重啟計算機)

sudo systemctl restart docker

1.4 查看安裝是否成功

sudo docker -info

2 配置spark 鏡像(images)和容器(containers)

首先,直接建立容器,如果鏡像不存在,則會自動下載:

sudo docker run -d -p 8888:8888 --name spark -v $PWD:/home/jovyan/work jupyter/all-spark-notebook start-notebook.sh --NotebookApp.password='sha1:5b1e121347e8:15266c00b25c2e497714de20a674d5b8935e09dd'

命令解釋:

  • docker run 載鏡像基礎上建立容器
  • -d 后台運行
  • -p 8888:8888 指定端口
  • -- name spark 命名容器
  • -v $PWD:/home/jovyan/work 掛載 all-spark-notebook的工作目錄到當前目錄,使得文件可以在docker內外共享(jovyan是該鏡像內置的用戶名,不要更改!)
  • jupyter/all-spark-notebook 鏡像名稱,來自https://hub.docker.com/r/jupyter/all-spark-notebook/
  • start-notebook.sh --NotebookApp.password='sha1:5b1e121347e8:15266c00b25c2e497714de20a674d5b8935e09dd' 指定密碼而不是token,密碼先得轉為hash碼(怎么轉

在瀏覽器中輸入'http://localhost:8888',即可打開容器對應的notebook

其次,查看docker狀態

# 顯示當前容器
docker ps

# 顯示所有容器
docker ps -a

# 顯示所有鏡像 
docker images

# 刪除容器
docker rm container_name

# 刪除鏡像,必須先刪除依賴該鏡像的容器
docker rmi image_name

最后,直接打開或是關閉

# 關閉容器
docker stop spark

# 打開容器
docker start spark

3 推薦的pyspark docker

安裝 ZSH

zsh,shell中的極品(為什么

1. 安裝zsh

sudo pacman -S git, zsh

2. 安裝 oh-my-zsh

oh-my-zsh是zsh的一個封裝,類似spacemacs和emacs的關系

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

記着將.bashrc中添加的語句復制到.zshrc

3. 設置為默認shell

chsh -s /bin/zsha

4. 添加powerline

pip install git+git://github.com/powerline/powerline

然后將

powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. /usr/local/lib/python2.7/dist-packages/powerline/bindings/zsh/powerline.zsh

添加到.zshrc中,注意powerline的位置不一定是上面的,需要自行更改

最后重啟

tensorflow 環境搭建

我們的配置是:

  • CUDA-8.0
  • cuDNN-6
  • tensorflow-gpu 1.4

1. 雙顯卡切換為獨顯

獨顯必須一直保持開着的狀態,才可以穩定運行cuda等程序,我們通過bbswitch切換獨顯

sudo tee /proc/acpi/bbswitch <<< ‘ON’

注意,如果nvidia-smi -pm為1的話上述方法是無效的,必須變為0,即實時切換狀態

nvidia-smi -pm 0

2. 安裝CUDA

2.1 yaourt 安裝

yaourt -S cuda-8.0

如果遇到yaourt報告空間不夠,則:

  1. 打開/etc/yaourtrc
  2. #TMPDIR="/tmp" 改為TMPDIR="/home/$USER/tmp"即可

2.2 加入環境變量

通過安裝日志可以發現,yaourt將安裝包遷移到了/opt中,因此我們在 .bashrc.zshrc、以及/etc/profile中加入:

export CUDA_HOME=/opt/cuda
export PATH=/opt/cuda/bin:$PATH
export LD_LIBRARY_PATH=/opt/cuda/lib64:$LD_LIBRARY_PATH

2.3 驗證安裝

查看CUDA版本

nvcc -V

編譯samples,CUDA安裝時自帶了samples文件夾,進入該文件夾后直接編譯(gcc啥的都給你裝好了),但是一定記得用sudo,否則報錯

cd /opt/cuda/samples

sudo make

查看編譯結果:

cd bin/x86_64/linux/release


./deviceQuery    # 最后如果返回pass,則通過

./bandwidthTest    # 最后如果返回pass,則通過

reboot            # 最好重啟一下

恭喜你,到了這一步,CUDA已經順利安裝完成啦!!

3. cuDNN安裝

cuDNN是nivida提供的深度學習GPU庫,在manjaro下非常好安裝:

# 先確定獨顯是開着的
sudo tee /proc/acpi/bbswitch <<< ‘ON’

yaourt -S cudnn6

裝好之后,將cudnn文件拷貝到cuda中:

sudo cp /opt/cudnn6/include/cudnn.h /opt/cuda/include
sudo cp cudnn6/lib64/libcudnn* /opt/cuda/lib64

# 增加權限
sudo chmod a+r cuda/include/cudnn.h
sudo chmod a+r cuda/include/cudnn.h

恭喜,至此你已經完成了准備工作啦!

4. 安裝tensorflow-gpu版本

為了跟CUDA8兼容,我們安裝1.4版本的tensorflow-gpu

pip install tensorflow-gpu==1.4

重啟,很關鍵*

reboot 

重啟之后,打開ipython,輸入命令進行測試:

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()

如果提示中不包含ERRORFAIL字樣,且包含了你的獨顯名稱,那么就是正確安裝了。

最后設置CPU按需求使用,在每次導入tf時:

# 設置tendorflow對顯存使用按需增長。
import tensorflow as tf
config  = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)

5. 安裝keras

pip install keras

keras默認使用tensorflow后端,並且會直接調用其GPU,因此無需做任何改動

linux備份

0. 權限問題

 sudo gedit /etc/rsyncd.conf

將其中的

uid = nobody
gid = nobody

改為

uid = root 
gid = root

備份結束之后一定要改回來!!

1. 備份

sudo time rsync -Pa / /run/media/ray/Elements/LinuxBackup/2018_05_10 --exclude="/sys/*" --exclude="/proc/*" --exclude="/mnt/*" --exclude="/tmp/*" --exclude="/run/media/*"

2. 恢復

sudo rsync -Pa /run/media/ray/Elements/LinuxBackup/2018_05_10 /

teamviewer

manjaro的teamviewer有一些問題,pacman裝上之后會出現"Not ready,.."的情況,此時應該:

sudo teamviewer --daemon enable

再打開teamviewer即可!

連接鼠標

1. 藍牙直連

2. 有線連接,安裝驅動

ltunify unpair mouse
ltunify pair

開機互換 caps和ctrl

每次打開終端時互換

在 ~/.bashrc或者~/.zshrc中添加

setxkbmap -option ctrl:swapcaps

jupyter notebook 連接遠程服務器

服務器端:

生成配置文件

$ jupyter notebook --generate-config
In [1]: from IPython.lib import passwd

In [2]: passwd()
Enter password: 
Verify password: 
Out[2]: 'sha1:0e422dfccef2:84cfbcbb3ef95872fb8e23be3999c123f862d856' 

打開配置文件

$vim ~/.jupyter/jupyter_notebook_config.py 

修改:


c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha:ce...剛才復制的那個密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #隨便指定一個端口
c.NotebookApp.allow_remote_access = True

打開jupyter notebook

本地端

網頁輸入 http:// ip_address:8888


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM