- 印刷する
- PDF
Ncloud TensorFlow Serverの生成ガイド (VPC, Public Subnet)
- 印刷する
- PDF
VPC環境で利用できます。
1. Ncloud TensorFlow Server紹介
Ncloud TensorFlow Serverは、データ分析専門家の間で最も多く利用されているTensorFlowをはじめ、深層学習と機械学習の代表的なパッケージをインストール型で提供するサービスです。
データ前処理、視覚化、自然言語処理、機械学習、深層学習でよく使われるパッケージが提供されるため、ほとんどの分析業務に対応できます。必要に応じて、Jupyter NotebookでGUIやコンソールコマンドを用いてパッケージを簡単に追加インストールしたり、アップグレードすることもできます。
WebベースのJupyter Notebookを通じて、場所を問わずいつでも同じ分析環境で業務を行うことができ、分析結果をその場で確認して他の人と容易に共有できます。
また、提供される管理スクリプトを活用すると、ターミナル環境でJupyterプロセスを簡単に管理できます。
さらに、分析業務が初めての方のために、データ探索や視覚化だけでなく、Scikit-learnによる回帰、分類、クラスタリングのような機械学習や、KerasやTensorFlowを用いた深層学習による回帰と分類のサンプルファイルを提供しています。
2. 使用前のよくある質問
Q.Ncloud TensorFlow Serverはどんなサービスですか?
- TensorFlowをはじめ、深層学習及び機械学習の代表的なパッケージやコードを作成できるWebベースのJupyter Notebookが備えられているため、深層学習及び機械学習を速やかに実装できるサービスです。
- 「Ncloud TensorFlow Server」は、Google Brainチームが開発したオープンソース機械学習ソフトウェアライブラリであるTensorFlowを利用しています。
Q.どんな商品がありますか?
- OSによって、「ubuntu-16」と「centOS-7」の2つの商品が用意されています。(OSのバージョンは異なる場合があります。)
- 上記の商品の違いはOSのみで、パッケージ内容は同じです。特別な理由がない限り、より多く使用されているUbuntu商品を推奨します。
Q.どんなパッケージを提供していますか?提供されるパッケージのみ使用できますか?
- 主なパッケージとしてTensorFlow、Keras、PyTorchがあります。
- Anacondaというパッケージ管理ツールを使用しており、Condaバイナリを用いて他のパッケージを追加インストールできます。
- パッケージのインストール及び管理については、Jupyter Notebook使用ガイドのパッケージ管理をご参照ください。
Q.PythonだけでなくJavaや他の言語も使用できますか?
- TensorFlowは、JavaやGoなどのAPIも提供していますが、安定性が保証されていないため、Pythonの使用をお勧めします。
Q.提供されるサーバタイプはどんなものがありますか?
- NAVERクラウドプラットフォームが提供するNcloud TensorFlow Serverタイプには、Standard、High Memory、CPU Intensive、GPUがあります。サーバタイプのそれぞれの特徴は次のとおりです。
1.Standard:様々なITビジネスに活用できるNAVERクラウドプラットフォームサービスの標準サーバです。バランスの取れたサーバスペックをはじめ、高い可用性と安定性を備えています。
2.High Memory:64GB以上の大容量メモリサーバで、メモリ性能の影響を受けやすいアプリケーションの運用に適しています。High Memoryサーバは最大10台まで作成することができ、サポートセンターにリクエストすると、台数制限を調整できます。
3.CPU Intensive:Intel Xeonプロセッサに加え、AVX512 Vector演算に最適化したTensorFlowが搭載されており、高い性能が求められる深層学習のワークロード処理に適しています。このCPU Typeは現在、Ubuntu 16.04 OSにのみ対応しています。
4.GPU:V100、T4スペックのGPUが装着されたサーバで、速やかなデータ処理を要する環境に適しています。最大5台まで作成することができ、サポートセンターにリクエストすると、台数制限を調整できます。
Q.Ncloud TensorFlow Serverを作成しましたが、コードはどこで作成しますか?
- TensorFlowコードは、Jupyter Notebookで作成できます。ACGに18888ポートを追加した後、ウェブブラウザで[グローバルIPアドレス:18888]にアクセスしてください。
- 「samples」フォルダにデータ処理、視覚化及びTensorFlowのサンプルファイルが保存されています。データ分析が初めての方はご参照ください。
Q.TensorBoardの使い方を教えてください。
- ACGに18889ポートを追加した後、ウェブブラウザで[グローバルIPアドレス:18889]にアクセスしてください(「4.Ncloud TensorFlow Server作成後にJupyterのアクセス環境を設定する方法」参照)。
- ACGに18889ポートを追加した後、ウェブブラウザで[グローバルIPアドレス:18889]にアクセスしてください(「4.Ncloud TensorFlow Server作成後にJupyterのアクセス環境を設定する方法」参照)。
- Jupyterのデフォルトパス(/home/ncp/workspace)の下位階層にTensorBoardディレクトリが作成されています。TensorFlowコードでTensorBoardディレクトリをログディレクトリとして指定してから使用してください。
Q.Jupyter Notebookにアクセスできません。
- Jupyter Notebookを利用するには、グローバルIPアドレスを申請してサーバに割り当てるとともに、ACGに18888ポートが追加されている必要があります(「4.Ncloud TensorFlow Server作成後にJupyterのアクセス環境を設定する方法」を参照)。
- グローバルIPアドレスやACGを確認してもアクセスできない場合、Jupyterプロセスが停止状態の可能性があるため、ターミナルで「jup restart」コマンドを実行してプロセスを再起動してください(「Jupyterプロセスの管理」を参照)。
Q.(GPU Only) TensorFlowコードを実行すると、「out of memory」メッセージが表示されて失敗します。
- 方法1.複数のコードを同時に実行する場合、先に実行したコードでGPUメモリをすべて占有してしまい、OOMが発生することがあります。先に実行したコードを終了(Shutdown)してからもう一度試します。
- 方法2. TensorFlow公式文書でガイドする方法で、以下のようにGPUメモリを制限するコードを追加します。
- 基本的にTensorFlowは、すべてのGPUがほとんどのメモリをプロセスが見えるようにマッピングします(CUDA_VISIBLE_DEVICESに含まれていると仮定します)。これにより、フラグメンテーションを減らして相対的に貴重なGPUメモリリソースをデバイスでより効率的に使用できます。tf.config.experimental.set_visible_devicesメソッドを用いてTensorFlowからアクセスできるGPUを調整できます。
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
# TensorFlowが1番目のGPUだけ使用するように制限
try:
tf.config.experimental.set_visible_devices(gpus[0], 'GPU')
except RuntimeError as e:
# プログラム起動時にアクセス可能なデバイスが設定される必要があります。
print(e)
- 場合によっては、プロセスが使用可能なメモリの一部にのみ割り当てられるようにしたり、プロセスが求める量だけメモリの使用を許可する必要があります。TensorFlowではこれに対応するため、2つの方法を提供します。
一つ目の方法は、tf.config.experimental.set_memory_growthを呼び出してメモリ増加を許可することです。ランタイムで必要な分だけGPUメモリを割り当てます:最初はメモリを少しだけ割り当て、プログラムが実行されより多くのGPUメモリが必要になると、TensorFlowプロセスに割り当てられたGPUメモリ領域を拡張します。メモリ解放はフラグメンテーションを悪化させるので、メモリは解放しません。特定のGPUのメモリ増加を許可するには、次のコードをテンソルか演算の前に入力します。
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
tf.config.experimental.set_memory_growth(gpus[0], True)
except RuntimeError as e:
# プログラム起動時にメモリ増加が設定される必要があります。
print(e)
3. Ncloud TensorFlow Server VMの作成
事前作業 1. VPC作成
コンソール > VPCでVPCを作成します。 VPCは最低1つ必要です。 1つのVPC内に複数のNcloud TensorFlow Serverを作成できます。
事前作業 2. Subnet作成(public)
特定のVPC環境内部でのみアクセスできるように制限しないで、特定のVPCの外部からでもNcloud TensorFlow Serverにアクセスできるように構成できます。 作成されたVPCにPublic Subnetを作成した後、Ncloud TensorFlow ServerにグローバルIPを割り当てます。
Internet Gatewayの属性を Y(Public) に設定してSubnetを作成します。
ステップ1. コンソールへのアクセス
Consoleにアクセスして、Serverメニューを選択します。
- [サーバ作成] ボタンをクリックすると、サーバを作成できます。
ステップ2. Ncloud TensorFlow Server VMの設定
VPC、Subnet、ストレージの種類、サーバタイプ、料金プランを選択して、サーバ名を入力します。
VPC:事前作業で作成したVPCを選択します。 (例:vpc-tensorflow)
Subnet:Public Subnetを選択します。 (例:vpc-sub-pub-tensorflow)
ストレージの種類:ブートストレージとして使用するストレージの種類を選択します。
- 高性能I/Oが必要なサービスにはSSDを、一般的なサービスの場合はHDDを選択してください。 ただし、ブートストレージがSSDの場合にのみ、追加ストレージとしてSSDを利用することができます。
サーバタイプ:希望するサーバタイプを選択します。
- 一部のサーバスペックは、ブートディスクのタイプによってサポートされない場合があります。
- 使用目的に応じてStandard、High Memory、GPUサーバタイプの中から1つ選んでください。
料金プラン:料金プランは、月額制または時間制の中から選択できます。
サーバ名:サーバ名を入力します。
- 顧客がサーバを識別するための名称であり、重複して登録できません。
Network Interface:Network Interfaceを設定します。 サーバごとに最大3つまで作成できます。
グローバルIP:VMを作成する際にグローバルIPを自動的に割り当てる場合は、[新しいグローバルIPの割り当て] ボタンをクリックします。
- サーバ作成時にグローバルIPを同時に作成する場合、SubnetタイプはPublic Subnet、サーバ数は1台に設定してください。
次へ:サーバ設定が完了したら、[次へ] ボタンをクリックします。
ステップ3. 認証キー設定
現在保有している認証キーがある場合、「保有している認証キーを利用」を選択し、そうでない場合は次の手順に従って新しい認証キーを作成します。
① 新しい認証キー作成を選択します。
② 認証キー名を入力します。
③ [認証キーの作成と保存] ボタンをクリックしてローカルに認証キーを保存します。
- これで、新しい認証キーが発行されました。
- 発行された認証キーは、PCの安全な場所に保存してください。
- 認証キーは、初回ログイン用の管理者パスワードを取得する際に必要です。
④ [次へ] ボタンをクリックします。
ステップ4. ファイアウォール設定
保有中のACGでファイアウォールを設定できます。
ACGの選択は必須です。VPCを作成したら、デフォルトで提供される‘VPC default ACG’をはじめ、保有中のACGの中から1つ選択します。
- 保有中のACGは最大5つまで選択できます。
- [次へ] ボタンは、ACGを選択しないと有効になりません。必ずACGを選択してから設定を行ってください。
設定を希望するACGを選択して、[次へ] ボタンをクリックします。
ステップ5. 最終確認
設定した内容を最終確認します。
最終確認:サーバイメージ、サーバ、認証キー、ACGが正常に設定されているか確認します。
[サーバ作成]:最終確認後、ボタンをクリックしてサーバを作成します。
- サーバが作成されるまで数分から数十分かかります。
ステップ6. サーバリストの確認
作成したサーバをリストから確認します。
- サーバが作成され、パッケージのインストールが完了すると、サーバ状態が実行中に変わります。完了するまでしばらくお待ちください。
4. Ncloud TensorFlow Server作成後にJupyterのアクセス環境を設定する方法
グローバルIPアドレスの使用申請
Ncloud TensorFlow Serverを作成した後、インターネットブラウザを介してJupyter Notebookにアクセスするには、必ずPublic Subnetを選択してからVMを作成する必要があります。また、グローバルIPアドレスでJupyterにアクセスしなければなりません。 (グローバルIPアドレスの使用に対する料金は別途課金されます。)
VPC > Server > Public IPに移動してグローバルIPを作成します。
① グローバルIPの割り当てを希望する場合、[グローバルIP申請] ボタンをクリックしてください。
② 適用サーバ選択で、グローバルIPアドレスを割り当てるNcloud TensorFlow Serverを選択します。
ACG設定
ターミナルアクセスSSH(TCP/22)及びJupyter Notebook(TCP/18888)ルールと、必要に応じてTensorBoard(TCP/18889)ルールをACGに追加します。
サーバ作成時に既にルールを追加した場合、この段階のACG設定を行う必要はありません。
① 左側のメニューからACGメニューを選択します。
② サーバ作成時に選択したACGを選択し、上段の [ACG設定] をクリックします。
③ ACGのルール設定でプロトコル、アクセスソース、許可ポートを入力して作成します。
- プロトコル:TCP、UDP、ICMPの中から選択
- アクセスソース:IPアドレスまたはACG名を入力
- 許可ポート:単一ポートまたは範囲を指定
- ターミナルにアクセスするためには、アクセスを希望するサーバのACGにSSH「TCP/22」に関するルールが設定されていなければなりません。また、Jupyter Notebookの使用を希望する場合は「TCP/18888」ルールを、TensorBoardの使用を希望する場合は「TCP/18889」ルールを追加で設定する必要があります。
- ルールを追加する場合、プロトコル、アクセスソース、許可ポートを記入して [追加] をクリックします。
④ 設定が完了すると、[適用] ボタンをクリックします。
⑤ 詳細情報タブで詳細情報を確認することができます。また、ルールを見るタブでは設定したルールを確認できます。
Jupyter Notebookの動作確認
グローバルIP、ACGを設定すると、Jupyter Notebookにアクセスできます。
Jupyter Notebookの初期パスワードはVMのサーバ名です。 安全な使用のためにパスワードを変更してから使用することをお勧めします。
- Jupyter Notebookのパスワードを変更する方法は、Jupyterパスワードの変更を参照してください。
Jupyter Notebookにアクセスするアドレスは
http://{作成したグローバルIP}:{18888}
です。- 例えば、作成したグローバルIPが
101.101.220.51
の場合、アクセスURLはhttp://101.101.220.51:18888
となります。
- 例えば、作成したグローバルIPが
5. Jupyter Notebookの管理
ターミナルプログラム(PuTTYなど)でNcloud TensorFlow Server VMにアクセスして、Jupyterのパスワードを変更する必要があります。
提供される管理スクリプトで簡単にパスワードを変更し、Jupyterプロセスを管理することができます。
管理者パスワードの確認
ターミナルプログラム(PuTTYなど)でNcloud TensorFlow Server VMにアクセスするには、管理者パスワードが必要です。
① 左側のメニューでServerメニューを選択します。
② サーバを選択して、サーバ管理と設定変更で管理者パスワードの確認を選択します。
③ [マウスでファイルをドラッグするか、ここをクリックしてください] ボタンをクリックして、サーバ作成時にローカルに保存した認証キーファイル(.pem)を添付します。
④ 添付した後、[パスワードの確認] ボタンをクリックすると、ターミナルプログラムでサーバの初回アクセス時に使用するパスワードを取得できます。
- サーバにアクセスしてから管理者が覚えやすいパスワードに変更することを推奨します。
ターミナルプログラムでVMにアクセスする方法
管理者パスワードでNcloud TensorFlow Server VMにアクセスできます。
① Ncloud TensorFlow Serverに割り当てたグローバルIPを入力します。
② Ncloud TensorFlow Server VMの管理者パスワードを入力します。
① ターミナルプログラムを実行します。
② sshコマンドを実行してVMへのアクセスをリクエストし、ユーザー情報及びパスワードを入力してログインします。
- VMアクセスのためのコマンドを入力
ssh root@${グローバルIP}
(例えば、グローバルIPが101.101.220.51の場合、ssh root@101.101.220.51
と入力) - login as: root
- password:前段階で確認した管理者パスワードを入力
- VMアクセスのためのコマンドを入力
③ ログインした後、rootアカウントのパスワードを覚えやすいパスワードに変更することを推奨します。
- 「passwd root」コマンドを入力してから、新しいパスワードを入力します。
Jupyterパスワードの変更
Jupyter Notebookで使用する初回パスワードはサーバ名に設定されています。セキュリティ侵害防止のために、提供されるスクリプトを使ってパスワードを変更してください。
- ① ターミナルで「jup passwd」を入力してパスワードを変更します。
- 初期パスワードの確認:コンソール > サーバ > サーバリストに表示されている「サーバ名」が初期パスワードとなります。
- パスワードは英数字、特殊文字をすべて8文字以上含む必要があります。
- パスワード変更スクリプトを実行すると、Jupyterプロセスが自動的に再起動されます。
Jupyterプロセスの管理
環境設定を変更した場合などJupyterプロセスを再起動する必要がある場合、提供されるスクリプトでプロセスを停止したり再起動することができます。
① Jupyterプロセスの停止:$ jup stop
② Jupyterプロセスの起動:$ jup start
③ Jupyterプロセスの停止・起動:$ jup restart
TensorBoardプロセスの管理
サーバを作成してから初めてTensorBoardプロセスを起動したり、プロセスを再起動する必要がある場合、提供されるスクリプトを通じてプロセスを起動したり停止することができます。
① TensorBoardプロセスの停止:$ jup tb-stop
② TensorBoardプロセスの起動:$ jup tb-start