Jupyter DashBoards 另類全家桶

概述

今天看到一個(gè)非常好的功能 Jupyter DashBoards

基于Jupyter的儀表盤谨朝,非常Nice的功能带膜,可以實(shí)現(xiàn)定制化,可視化與代碼的分離

然后在這個(gè)基礎(chǔ)上依次修正以及補(bǔ)充,基于Jupyter的一些誤區(qū)和知識(shí)

本機(jī)的環(huán)境是 py3jupyter

感覺今天最大的收貨是對(duì)學(xué)會(huì)看 docker 的配置文件 + 學(xué)會(huì)查找 github issue

插件-nb extensions

Git項(xiàng)目地址是竟秫,nbextensions 以及 nbextensions_configurator彼棍。前者是各類型有用的插件灭忠,后者是能夠直接在Jupyter 上圖形話調(diào)節(jié)界面的功能。

這里今天得到的收獲主要是基于虛擬環(huán)境的一個(gè)配置問題

在官網(wǎng)上座硕,安裝完 nbextensions 之后弛作,本質(zhì)是將一
大堆插件放在下面目錄下

/Users/{user}/Library/Jupyter/extensions

接下來(lái)進(jìn)行插件激活和路徑指定,官網(wǎng)上的提示使用的是

jupyter contrib nbextension install --user

如果這么操作的話华匾,是在用戶目錄 例如 /home/user/.jupyter 下面生成 nbextensions 的配置, 這會(huì)導(dǎo)致環(huán)境不隔離的情況映琳。

正確的做法,切換到新的環(huán)境下的jupyter蜘拉,執(zhí)行

jupyter contrib nbextension install --sys-prefix

這樣就做到只影響該環(huán)境下的Jupyter刊头,在某環(huán)境下的 /etc/jupyter 文件夾下產(chǎn)生對(duì)應(yīng)的配置文件,nb的 和 notebook的都有诸尽,如果對(duì)于 notebook的配置有特殊的配置原杂,可以寫在這里,例如密碼您机,token等穿肄。

如果要?jiǎng)h除該內(nèi)容,install 替換為 uninstall际看。

如果因?yàn)檫x擇的是 users 會(huì)導(dǎo)致的問題是 no module named nbextensions咸产,某些和root 環(huán)境不一致的環(huán)境找不到配置文件

jupynter 版本的問題

2017年06月04日,jupyter notebook 的版本已經(jīng)升級(jí)到了5.0仲闽,但是通過 pip 安裝的 nbextensions 的插件所寫的代碼脑溢,是4.x的程序,這個(gè)通過找 github issues, 發(fā)現(xiàn)作者已經(jīng)在 master 分支上做了修改,nbextensions.py 這個(gè)文件屑彻,修改如下代碼即可

try:
    # notebook > 4.2
    from notebook.nbextensions import _get_nbextension_dir as get_nbext_dir
except:
    # notebook <= 4.2
    from notebook.nbextensions import _get_nbext_dir as get_nbext_dir

Jupyter DashBoard

代碼組成

這是一個(gè)非常另類的套裝, 由以下幾個(gè)部分組成

jupyter/dashboards验庙, notebook 插件將代碼轉(zhuǎn)化為可定制的 dashboard

dashboards_bundlers,notebook 插件將定制好的dashboard 輸出到 server端

dashboards_server社牲,nodejs web框架粪薛,主要作用是與juypter server 通信展示只讀功能的dashboard

kernel_gateway,一個(gè)中間的類似于代理的web框架搏恤,用于和dashboard server 通信

dashboards_setup 违寿,一套基于docker的服務(wù)范例,講解各個(gè)服務(wù)如何配置

架構(gòu)流程如下圖:

image.png

整完這一套熟空,模型開發(fā)人員藤巢,兩行代碼就一套定制化的BI系統(tǒng)。這套系統(tǒng)搭建的時(shí)候最難的地方是連接

dashboard 連接

  • Jupyter Notebook

這個(gè)是一端息罗,啟動(dòng)的時(shí)候需要配置一下啟動(dòng)token和Server 的端口菌瘪,方便和另一端加密驗(yàn)證。

# token 的配置寫在了配置文件里
# 端口設(shè)置在環(huán)境變量中
jupyter notebook
  • Dashboard Server

用于HTML展示阱当。有兩個(gè)主要輸入俏扩,一個(gè)是token作為加密驗(yàn)證的功能,一個(gè)是 gateway的地址 http://host:port 即可

# 和 kernal 指定的ip 一致
# token 設(shè)置在了環(huán)境變量里
jupyter-dashboards-server --KERNEL_GATEWAY_URL=http://{kernal}:8888
  • kernal gateway

這個(gè)是在 dashboard_server 和 jupyter server 之間的一道橋梁弊添。它和jupyter server的連接方式比較神奇录淡,應(yīng)該是通過jupyter 內(nèi)核來(lái)通信,也就是?二者需要在同一臺(tái)機(jī)器上即可油坝。

但是最合理的方式是嫉戚,kernal gateway 和 jupyter 在同一目錄下,統(tǒng)一端口上啟動(dòng)澈圈,否則將會(huì)有一些模板加載等小錯(cuò)彬檀,這里更神奇的是同一端口。

jupyter kernelgateway --KernelGatewayApp.ip=0.0.0.0
  • 環(huán)境變量

除了命令行直接傳進(jìn)去的配置瞬女,為了保持獨(dú)立性窍帝,還需要在環(huán)境變量中增加兩項(xiàng)的設(shè)置

export DASHBOARD_SERVER_URL=http://{dash_server_host}:3000
export KG_AUTH_TOKEN='xxxxxxxxxxxxxxxxxxxx' # 與Jupyter Notebook 的驗(yàn)證Token保持一致

環(huán)境隔離

在安裝這些工具的時(shí)候,他們很多是 nbextension诽偷,所以啟用的時(shí)候注意環(huán)境的隔離
例如 dashboard的啟動(dòng)方式 jupyter dashboards quick-setup --sys-prefix
這樣就做到與環(huán)境隔離了

Docker當(dāng)文檔

這一部分坤学,其實(shí)我是感覺最精華的一部分。

首先我大概了解了一下 docker是什么

相當(dāng)于 一臺(tái)機(jī)器上的 一個(gè) container 容器报慕,虛擬機(jī)深浮,跟本機(jī)系統(tǒng)環(huán)境無(wú)關(guān),能在docker的鏡像中跑成功的程序眠冈,一定能在其他機(jī)器上跑成功飞苇。

我自己按照 dashboards_setup的教程,在本地拉了三個(gè)鏡像服務(wù),然后啟動(dòng)布卡,結(jié)果耗時(shí)兩小時(shí)雨让,發(fā)現(xiàn)可以跑成功

看是看懂了MakeFile的意義,我直接去看了這三個(gè)鏡像分別干了什么羽利,notebook 和 dserver 都和我想的一樣

后來(lái)發(fā)現(xiàn)困擾我最久的kernal的啟動(dòng)方式,真實(shí)跪了總體配置

kernel_gateway:
   build:
     context: .
     dockerfile: Dockerfile.kernel
     args:
       # pip versioning by default
       # Replace with local tarballs like /src/jupyter_declarativewidgets-someversion.tar.gz
       DECLWIDGETS_PKG: 'jupyter_declarativewidgets==0.7.*'
       IPYWIDGETS_PKG: 'ipywidgets==5.1.*'
   volumes_from:
     - notebook
   environment:
     KG_ALLOW_ORIGIN: '*'

得出的結(jié)論是 和 notebook 共享啟動(dòng)地址

在看具體配置

# run kernel gateway, not notebook server
CMD ["jupyter", "kernelgateway", "--KernelGatewayApp.ip=0.0.0.0"]

得出的結(jié)論是用默認(rèn)端口號(hào)刊懈,共享端口

之后我再本地按照這種方式啟動(dòng)了这弧,kernal 直接成功

這件事情讓我得到了很大的啟示,docker 真的很強(qiáng)大虚汛,這是最清楚的文檔匾浪,能讓機(jī)器看懂的文檔,人更能看懂

其他

這個(gè)主要是參考卷哩,「工具控」| TL001. 裝扮你的Jupyter
, 學(xué)了很厲害的幾個(gè)小技巧

magic

只要在 notebook 執(zhí)行 %% magic 就能看到介紹
例如

%timeit range(1000)

%env PATH

ipython kernal 預(yù)加載

創(chuàng)建配置文件蛋辈,就能在內(nèi)核中添加一些預(yù)加載的代碼了

ipython profile create

自己添加的代碼如下:

c.InteractiveShellApp.exec_lines = [
        "import pandas as pd",
        "import numpy as np",
        "import scipy.stats as spstats",
        "import scipy as sp",
        "import matplotlib.pyplot as plt",
        "import matplotlib",
        "matplotlib.style.use('ggplot')",
       "%load_ext autoreload",
616    "%autoreload 2"
]

c.IPKernelApp.matplotlib = 'inline'

c.InlineBackend.figure_format = 'retina'



jupyter notebook

jupyter notebook 的配置文件,分為兩種一種是全局的将谊,一種是環(huán)境的冷溶,環(huán)境的上面講過了,主要是在 etc 環(huán)境下尊浓,全局的就是按照官網(wǎng)的生成文件的方式就能搞定逞频。

jupyter-themes

這是一個(gè)很厲害的插件,能實(shí)現(xiàn)將Jupyter 設(shè)置各種 背景栋齿,但是繪圖比較蛋疼苗胀,還是以白底jupyter 為主吧

這個(gè)知道怎么玩酷炫就好了

# 設(shè)置黑色背景
jt -t chesterish
# 恢復(fù)原樣
jt -r
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓦堵,隨后出現(xiàn)的幾起案子基协,更是在濱河造成了極大的恐慌,老刑警劉巖菇用,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澜驮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惋鸥,警方通過查閱死者的電腦和手機(jī)泉唁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)揩慕,“玉大人亭畜,你說我怎么就攤上這事∮保” “怎么了拴鸵?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我劲藐,道長(zhǎng)八堡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任聘芜,我火速辦了婚禮兄渺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汰现。我一直安慰自己挂谍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布瞎饲。 她就那樣靜靜地躺著口叙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗅战。 梳的紋絲不亂的頭發(fā)上妄田,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音驮捍,去河邊找鬼疟呐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛东且,可吹牛的內(nèi)容都是我干的萨醒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼苇倡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼富纸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起旨椒,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晓褪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后综慎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涣仿,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年示惊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了好港。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡米罚,死狀恐怖钧汹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情录择,我是刑警寧澤拔莱,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布碗降,位于F島的核電站,受9級(jí)特大地震影響塘秦,放射性物質(zhì)發(fā)生泄漏讼渊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一尊剔、第九天 我趴在偏房一處隱蔽的房頂上張望爪幻。 院中可真熱鬧,春花似錦须误、人聲如沸挨稿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)叶组。三九已至拯田,卻和暖如春历造,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背船庇。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工吭产, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸭轮。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓臣淤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親窃爷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邑蒋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)按厘,斷路器医吊,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,532評(píng)論 15 147
  • 原文鏈接翻譯版鏈接 Jupyter Notebook Jupyther notebook ,也就是一般說的 Ipy...
    Mingooo閱讀 16,394評(píng)論 0 36
  • 寫作群里有人推薦未來(lái)簡(jiǎn)史,微信公號(hào)里也有看到未來(lái)簡(jiǎn)史的讀后感懒棉,偶然聽邏輯思維羅胖也說了一嘴草描。是這個(gè)節(jié)目或者是他說的...
    Maria_X閱讀 190評(píng)論 4 3
  • 人生有幾次畢業(yè) 幼兒 小學(xué) 中學(xué) 大學(xué) 似乎已完成了學(xué)業(yè) 但果真如此嗎? 其實(shí)社會(huì)大學(xué) 永不會(huì)畢業(yè) 除非你已不在 ...
    黃土高坡上的風(fēng)姑娘閱讀 117評(píng)論 0 0