Installation
本書ではKAMONOHASHIのインストール方法、アンインストール方法、バージョンアップ方法について説明します。
インストール方法
ベーシッククラスタの構築
構成について
KAMONOHASHIのクラスタは次の4種類のサーバーで構成されます
- Kubernetes master: ディープラーニングの実行スケジューリング等に使用します
- KAMONOHASHI: KAMONOHASHIのWEBシステム(Web,DBコンテナ)で使用します
- Storage: 学習用データと学習結果ファイルの保管に使用します
- GPUサーバー: ディープラーニングの実行に使用します
ベーシッククラスタ構成では、Kubernetes, KAMONOHASHI, Storage に1台ずつのマシンと、 複数台のGPUサーバーを想定しています
構築の準備
- マシンを用意します
- 物理または仮想のマシンを3台(Kubernetes, KAMONOHASHI, Storage に使用)
- NVIDIA GPUを搭載したマシンを1台以上
- 全てのマシンがAMD64(Intel 64bit CPU)である必要があります
- 各サーバーの最小リソース要件は下記になります。
- データ・ユーザー数・実施するディープラーニングの内容に応じて下記よりも多く必要になる場合があります
マシン種別 CPU メモリ 備考 Kubernetes master 2 コア 2 GB KAMONOHASHI 4 コア 8 GB /var/lib/に10GB以上の空き容量 Storage 1 コア 2 GB /var/lib/に学習データ・学習結果ファイル分の空き容量 GPUサーバー 2 コア 2 GB Fermi (2.1)より後の世代のNVIDIA GPU, /var/libに1学習分のデータが入る空容量 - 全てのマシンに Ubuntu Server 16.04 をインストールします
- 全てのマシンに共通のアカウントでsshログインできるようにします
- そのアカウントが全てのマシンでsudoできるようにします
- sshキーを使用する場合は、id_rsaファイルをKubernetes masterマシンの/root/.ssh/に所有者root、パーミッション0600で配置します
- 用意したマシンの名前解決が出来るようにします
- KAMONOHASHIユーザーの端末、各マシン上で名前解決可能にします。DNS利用を強く推奨します。
- NTPを設定し、各マシンの時刻を揃えます
- 各マシンがインターネットアクセス出来るようにします
- GPUサーバーにGPUドライバをインストールします。
- NVIDIAドライバダウンロードサイトからインストール用ファイルがダウンロード可能です
構築方法
- Kubernetes master用に用意したマシンにログインします
- root userで次を実行します
KQI_VERSION=1.1.4 wget -O /tmp/deploy-tools-$KQI_VERSION.tar.gz https://github.com/KAMONOHASHI/kamonohashi/releases/download/$KQI_VERSION/deploy-tools-$KQI_VERSION.tar.gz mkdir -p /var/lib/kamonohashi/deploy-tools/$KQI_VERSION/ cd /var/lib/kamonohashi/deploy-tools/$KQI_VERSION/ tar --strip=1 -xf /tmp/deploy-tools-$KQI_VERSION.tar.gz ./deploy-basic-cluster.sh deploy
対話形式で設定が聞かれるので、下記に従って設定を入力します
対話形式で以下の項目の質問に答えます。[y/n]形式での質問は大文字の方がデフォルトの値です。
質問文 | 解説 |
---|---|
Kubernetes masterを デプロイするサーバ名 |
|
KAMONOHASHIを デプロイするサーバ名 |
|
Storageをデプロイするサーバ名 | |
GPU サーバ名 | ,区切りで複数指定できます。 例: gpu1,gpu2,gpu3 |
SSHユーザー名 | 構築の準備で用意したSSHユーザー名を指定します |
SSHパスワード | SSHにパスワードを使用する場合は入力します。 SSH認証キー ~/.ssh/id_rsa を使う場合は何も入力せずにEnterを押してこの項目はスキップします |
SUDOパスワード | パスワードなしでsudoコマンド実行可能な場合は何も入力せずにEnterを押してこの項目をスキップします |
プロキシを設定しますか? [y/N] | プロキシ環境にデプロイする場合はyを入力して http_proxy, https_proxy, no_proxy を設定します no_proxyはこれまでの入力内容を元に必要なものが自動生成されます。 自組織のドメイン等を生成されたno_proxyに更に追加することもできます |
KAMONOHASHIのadminパスワード | adminアカウントで使用する8文字以上のパスワードです。数字のみのパスワードは使用不可となっているので注意してください。KAMONOHASHI Web UIログイン・DB接続、Object Storageへのログインに使用します。 一度構築に使用したパスワードはデプロイツールでは変更できません。パスワードを変える場合は、完全にデータを削除するか、パスワード変更手順を実施する必要があります。パスワード変更手順は[kamonohashi-support@jp.nssol.nipponsteel.com]にお問い合わせください |
これでKAMONOHASHIのインストールは完了です。 チュートリアルに進みKAMONOHASHIを用いたAI開発を開始しましょう!
カスタマイズしたクラスタの構築
- ベーシッククラスタの構成では要件が足りず、カスタマイズしたい場合は[kamonohashi-support@jp.nssol.nipponsteel.com]にお問い合わせください
アンインストール方法
./deploy-basic-cluster.sh clean
を実行するとソフトウェアがアンインストールされます。- このコマンドではKAMONOHASHIの内部データ(データベース, ストレージのデータ)は削除しません
- adminパスワードも保存されたままです
- 再度デプロイすると過去のデータベース, ストレージの中身を引き続き使用します
- 完全にデータを削除する場合は KAMONOHASHIノード, STORAGEノードの 2台で
/var/lib/kamonohashi
を削除してください- 構築に失敗してやり直す際にパスワードも変更する場合はこのディレクトリを削除してください
- このコマンドではKAMONOHASHIの内部データ(データベース, ストレージのデータ)は削除しません
バージョンアップ
バージョンアップには次の2種類のバージョンアップがあります
- KAMONOHASHI Webアプリのみのバージョンアップ
- k8sなども含めたインフラ全体のバージョンアップ
どちらもバージョンアップするバージョンのデプロイツールを準備する必要があります
デプロイツールの準備
- 現在のKAMONOHASHIのバージョンをシェル変数で指定します
OLD_KQI_VERSION=1.0.0
- 次のコマンドを実施して新しいデプロイツール取得と設定ファイルのコピーを行います
KQI_VERSION=1.1.4 wget -O /tmp/deploy-tools-$KQI_VERSION.tar.gz https://github.com/KAMONOHASHI/kamonohashi/releases/download/$KQI_VERSION/deploy-tools-$KQI_VERSION.tar.gz mkdir -p /var/lib/kamonohashi/deploy-tools/$KQI_VERSION/ cd /var/lib/kamonohashi/deploy-tools/$KQI_VERSION/ tar --strip=1 -xf /tmp/deploy-tools-$KQI_VERSION.tar.gz cd /var/lib/kamonohashi/deploy-tools/ cp -nr $OLD_KQI_VERSION/infra/conf $KQI_VERSION/infra/ cp -nr $OLD_KQI_VERSION/kamonohashi/conf $KQI_VERSION/kamonohashi/ mkdir -p old mv $OLD_KQI_VERSION old/
KAMONOHASHI Webアプリのみのバージョンアップ
デプロイツールの準備を実施後に次を実施してください
cd /var/lib/kamonohashi/deploy-tools/$KQI_VERSION/kamonohashi/
./deploy-kqi.sh update
1.1.0以前のバージョンから1.1.0以降へのアップデートを行った場合、既存のノードにはNotebook実行可否オプションが”実行しない”に設定されます。 既存のノードでノートブック機能を利用可能とするには、システム設定のノード管理より、Notebookの実行可否オプションを”実行する”に変更してください。
k8sなども含めたインフラ全体のバージョンアップ
現在デプロイツールでは古いバージョンのアンインストールと新しいバージョンのインストールによるアップグレードのみ可能です。 それは次を考慮しているためです。
- k8sを2マイナーバージョン以上アップデートできる
- マシンの移行も同じ方法でサポートできる
- cordonとuncordonによる無停止アップグレードは、ディープラーニングの動いているシステムでは難しい
- ディープラーニングジョブがノードからはけるのに数日かかることからクラスタ全体のアップグレードでは数週間が必要になるためです
インフラ全体のバージョンアップ手順は次になります
- 古いバージョンのデプロイツールでアンインストールを実行
- 詳細はアンインストールの項目を参照
cd /var/lib/kamonohashi/deploy-tools/$OLD_KQI_VERSION/
./deploy-basic-cluster.sh clean
* 新しいバージョンのデプロイツールでインストールを実行
- 詳細はインストールの項目を参照
- パスワードは初期構築時と同じものを指定してください
cd /var/lib/kamonohashi/deploy-tools/$KQI_VERSION/
./deploy-basic-cluster.sh deploy
- 注意事項
- デプロイツールやKAMONOHASHI WEBアプリ外で手で入れた設定は元に戻ります
バージョンダウン
KAMONOHASHI Webアプリのバージョンダウン
バージョンダウンは、バージョンアップ以前のデプロイツールを用いることで行います。以前に利用したデプロイツールは、k8sノードで以下のコマンドを実行することで確認できます。
ls /var/lib/kamonohashi/deploy-tools/old
確認した中で、バージョンダウンする番号をメモし、以下のコマンドを実行します。
cd /var/lib/kamonohashi/deploy-tools/old/{バージョン番号}/kamonohashi/
./deploy-kqi.sh update
DBの切り戻しを含むバージョンダウン
KAMONOHASHIのアップデートを行う際に、下記のバージョンではDBに対するマイグレーション適用が実施され、テーブル変更が行われています。そのためマイグレーション適用後のバージョンから、それ以前のバージョンに戻す際には、切り戻し用スクリプトを実行してDBの切り戻し作業を実施する必要があります(作業中はKAMONOHASHIのサービスが停止します)。 この作業を行った場合、マイグレーション適用後にのみ存在しているテーブルおよびカラムに格納されていたデータは削除されるため注意してください。例えばv1.1.0からv1.0.3にバージョンダウンする場合は、ノートブック機能で管理していた情報は削除されます。
version | Migration | 主な変更 |
---|---|---|
v1.0.0 | 20190515093033_v1.0.0 | 初期構築時 |
v1.1.0 | 20190821040509_v1.1.0 | ノートブック機能用テーブル追加 |
v1.1.3 | 20190911075454_v1.1.3 | zip機能利用履歴保持用カラム追加 |
1.1.3からバージョンダウンする場合の、DB切り戻しスクリプトの実行例
/var/lib/kamonohashi/deploy-tools/1.1.3/rollback/rollback.sh
を実行します。- デプロイされているKAMONOHASHIのバージョンに
1.1.3
、戻したい時点のMigrationファイルに20190821040509_v1.1.0
を入力します。 - DBの切り戻し処理が終了するまで数分間待機します。
- 切り戻し処理終了後、再デプロイ可能なバージョンの一覧が表示されるため、戻したいバージョンを指定します。
- KAMONOHASHIのWEB画面にアクセスし、バージョン情報より、バージョンが戻っていることを確認します。
外部サービスとの互換性
動作を確認した環境は以下の通りです。
KAMONOHASHI | GitLab | MinIO | LDAP | Kubernetes |
---|---|---|---|---|
v1.0.1以降 | 11.8以降 | RELEASE.2019-01-23T23-18-58Z | version 3 | v1.12.7,v1.14.1 |
v1.0.0 | 11.7以前 | RELEASE.2019-01-23T23-18-58Z | version 3 | v1.12.7 |
v1.0.0では11.8以降のGitLabに対応していませんので注意してください。