如何在服務器上使用 Tensorflow, Notebook

多數狀況下咱們都是在本地使用 Anaconda 來安裝 tensorflow, notebook 作深度學習, 數據分析.nginx

但有時仍是有須要在服務器上處理這些事, 好比 macbook 空間又雙叕不夠啦, 公司的數據不方便走外網啦, 數據導來導去很是麻煩啦, 還不如直接在服務器上跑 notebook 分析數據.web

好, 不廢話了, 直接上跨域

1. 安裝 conda

Anaconda 其實也是用的 conda 來安裝 package, 因此咱們直接用conda 就好了. 下面就以 Ubuntu 環境下安裝 conda:瀏覽器

# Install our public gpg key to trusted store

curl https://repo.anaconda.com/pkgs/misc/gpgkeys/anaconda.asc | gpg --dearmor > /tmp/conda.gpg

install -o root -g root -m 644 /tmp/conda.gpg /etc/apt/trusted.gpg.d/

# Add our debian repo

echo "deb [arch=amd64] https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main" > /etc/apt/sources.list.d/conda.list

apt-get update

apt-get install conda

複製代碼

2. 經常使用的 conda 命令

# 把 conda 加入環境變量, 你也能夠在 ~/.bash_profile 里加入一行 export PATH
> source /opt/conda/etc/profile.d/conda.sh

# 驗證 conda 命令是否正常
> conda -V
conda 4.5.11

# 更新一下 conda
> conda update conda

# 建立一個 conda 環境
conda create --name <env_name>

# 查看當前有哪些環境
conda info --envs

# 激活環境
conda activate <env_name>

# 在這個環境下安裝庫
conda install <packagename>

# 列出當前環境下安裝的庫
conda list

# 刪除環境下的庫
conda remove <packagename>

# 退出環境
conda deactivate
複製代碼

3. conda 安裝 tf, notebook

下面的例子建立了一個叫 tf 的 conda 環境, 而後安裝 tf, notebook.bash

conda create --name tf
conda activate tf
conda install tensorflow jupyter notebook
複製代碼

4. 啓動 notebook

在這個環境下啓動 notebook, 指定ip, port. 端口避開了經常使用的 8080.服務器

jupyter notebook --ip=127.0.0.1 --port=10082 --allow-root
複製代碼

啓動時留意一下 token, 一會訪問 notebook 時要用到.websocket

啓動notebook

5. 配置 nginx

經過 nginx 把 test.notebook.domain.com 的請求打到第4步的 notebook 的端口.dom

由於 notebook 還用了 websocket, nginx須要支持.curl

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
  server_name test.notebook.domain.com;
  listen 80;

  location / {
    proxy_pass            http://127.0.0.1:10082;
    proxy_set_header      Host $host;
    proxy_http_version    1.1;
    proxy_set_header      Upgrade $http_upgrade;
    proxy_set_header      Connection $connection_upgrade;
  }
}
複製代碼

6. 熱啓動 nginx

nginx -s reload
複製代碼

7. 修改本地 hosts

nginx 裏配置的域名 test.notebook.domain.com 不須要作域名解析, 咱們修改一下本地hosts 就好.socket

[雲服務器ip] test.notebook.domain.com
複製代碼

8. 訪問 notebook

打開瀏覽器, 訪問 test.notebook.domain.com 這時熟悉的 notebook 界面出來了.

訪問notebook

9. 添加 notebook 配置

這時雖然能訪問了, 但建立新的 notebook 腳本時會報錯, 緣由是請求跨域了. 要解決這個問題雖然能夠按跨域請求思路找辦法, 但 jupyter 已經能夠經過配置來解決, 還能去掉token.

touch ~/.jupyter/jupyter_notebook_config.py
複製代碼

添加4行

c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.token = ''
c.NotebookApp.allow_origin = '*'
c.NotebookApp.disable_check_xsrf = True
複製代碼

這裏再從新啓動 notebook 就能夠正常建立了.

有興趣的同窗能夠把這些步驟作成 ansible playbook, 就不用每次都弄一遍了.

相關文章
相關標籤/搜索