首頁>技術>

人工智慧(AI)和機器學習(ML)正在成為技術領域的關鍵差異化因素。從本質上講,人工智慧和機器學習都是計算量巨大的工作負載,它們需要一流的分散式計算環境才能夠蓬勃發展。因此,AI和ML為Kubernetes提供了一個完美的用例,他們能夠最大化展現Kubernetes可以執行大量工作負載的特點。

什麼是JupyterHub?

Jupyter Notebook是用於科學資料分析的利器,JupyterHub可以在伺服器環境下為多個使用者託管Jupyter執行環境。JupyterHub是一個多使用者資料探索工具,通常是資料科學和機器學習研究與開發的關鍵工具。它為工程師、科學家、研究人員和學生提供了雲或資料中心的計算能力,同時仍然像本地開發環境一樣易於使用。本質上,JupyterHub使使用者可以訪問計算環境和資源,而不會給他們增加安裝和維護任務的負擔。使用者可以在工作區中使用共享資源,系統管理員會對其進行有效管理。

在AI/ML工作負載中使用Kubernetes

Kubernetes非常擅長讓我們利用大型分散式計算環境。因為其宣告式設計和基於發現的伺服器定址方法,所以將計算資源應用於工作負載很容易。通常在AI/ML工作負載中,工程師或研究人員需要分配更多的資源。而Kubernetes讓在物理基礎架構之間遷移工作負載更加可行。在本文中,我們將展示如何使用Rancher安裝JupyterHub。

使用Rancher安裝JupyterHub

首先,假設我們在Rancher環境中擁有現代化的Kubernetes部署。在本文釋出時,Kubernetes的穩定版本是1.16。對於JupyterHub來說,其中一個前期準備是持久化儲存,所以你將需要思考如何在這個叢集中提供它。出於演示的目的,我們可以使用Rancher Catalog中包含的實驗性NFS提供程式來提供持久化儲存。點開App Catalog並選擇【啟動】。然後搜尋NFS提供程式。保留預設設定,然後單擊螢幕底部的【啟動】。如果你已經有持久化儲存的解決方案,也可以直接使用它。

導航到Rancher App Catalog

搜尋NFS提供程式

啟動NFS提供程式

現在我們已經有了儲存提供程式並且定義了預設儲存類,我們可以繼續部署應用程式元件。我們將使用Helm3來完成這一操作。檢視helm官方文件(https://helm.sh/docs/intro/install/),在你的電腦上安裝helm3客戶端。另外,你也可以使用Rancher Catalog來部署helm chart,而無需任何其他工具。需要確保將repo新增到Rancher catalog中。

在我們使用helm之前,我們需要為應用程式建立一個名稱空間。在Rancher UI中,進入叢集並選擇頂端選單欄的【專案/名稱空間】。你可以為JupyterHub建立一個新的名稱空間。例如,我們將名稱空間稱為“jhub“。請注意此名稱,因為我們將之後會使用。

建立一個名稱空間

接下來,我們可以為將要使用的JupyterHub Chart新增Helm repo。如果使用的是Rancher catalog,你需要在UI上完成此操作而不是Helm CLI:

helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/helm repo update

然後,讓我們建立一個config檔案,其中包含了我們要與此chart一起使用的設定。我們將該檔案命名為config.yaml:

proxy: secretToken: "<secret token>"ingress: enabled: true hosts: - <host name>

讓我們替換幾個專案,使它們是唯一的。用以下輸出替換secretToken:

openssl rand -hex 32

並替換為你打算用來訪問JyupiterHub UI的可解析DNS名稱。

有了配置檔案之後,就可以安裝chart了。我們將引用該配置檔案,因此請確保該檔案存在你當前的工作目錄中:

RELEASE=jhubNAMESPACE=jhubhelm upgrade --install $RELEASE jupyterhub/jupyterhub --namespace $NAMESPACE --version=0.8.2 --values config.yaml

Helm現在應該部署所需的元件。這將需要一些時間,但是最終你應該能夠通過之前設定的主機名訪問UI。你也可以通過轉到Rancher UI中的“工作負載“選項卡來檢查狀態。當我們嘗試在瀏覽器中設定的主機名時,它將顯示以下登入介面:

主機名登入介面

在撰寫本文時,有一個issue是Kubernetes 1.16中的更改導致Jyupiter Hub的程式碼在嘗試與Kuberentes API互動時中斷。如果要立即修復,我們可以執行以下patch命令:

kubectl patch deploy -n $NAMESPACE hub --type json --patch '[{"op": "replace", "path": "/spec/template/spec/containers/0/command", "value": ["bash", "-c", "\\nmkdir -p ~/hotfix\\ncp -r /usr/local/lib/python3.6/dist-packages/kubespawner ~/hotfix\\nls -R ~/hotfix\\npatch ~/hotfix/kubespawner/spawner.py << EOT\\n72c72\\n<             key=lambda x: x.last_timestamp,\\n---\\n>             key=lambda x: x.last_timestamp and x.last_timestamp.timestamp() or 0.,\\nEOT\\n\\nPYTHONPATH=$HOME/hotfix jupyterhub --config /srv/jupyterhub_config.py --upgrade-db\\n"]}]'

你現在已經在Rancher上部署了可以正常工作的JupyterHub環境。預設情況下,JupyterHub使用PAM身份驗證。因此,可以使用系統上的任何有效Linux使用者登入。登入後,我們應該能夠建立新的notebook:

建立新的notebook

另外,你可以檢視其他你可能想配置的身份驗證選項。例如,你可以使用Github身份驗證來允許使用者登入並且建立基於他們Github ID的notebook。你選擇好一個身份驗證的工具之後,需要按照說明更新我們之前建立的config.yml檔案,然後重新執行helm upgrade命令。

總 結

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • python文字轉語音開發實戰,主功能不難,這3個細節才是重點