VPC環境で利用できます。
1.Ncloud TensorFlow Serverの紹介
Ncloud TensorFlow Serverは、データアナリストの間で最も多く利用されている TensorFlowをはじめ、Deep Learningと Machine Learningの代表的なパッケージをインストール型で提供するサービスです。
データ前処理、視覚化、自然言語処理、機械学習、深層学習でよく使われるパッケージが提供されるため、ほとんどの分析業務に対応できます。必要に応じて Jupyter Notebookで GUIやコンソールコマンドを用いてパッケージを簡単に追加インストールしたり、アップグレードすることもできます。
ウェブベースの Jupyter Notebookを通じて、場所を問わずいつでも同じ分析環境で業務を行うことができ、分析結果をその場で確認して他の人と容易に共有できます。
また、提供される管理スクリプトを活用すると、ターミナル環境で Jupyterプロセスを簡単に管理できます。
さらに、分析業務が初めての初心者アナリストのためにデータ検索や可視化だけでなく、Scikit-learnによる回帰、分類、クラスタリングのような Machine Learningや、Kerasおよび TensorFlowを用いた Deep Learningによる回帰と分類のユースケースを提供します。
2.使用前のよくある質問
Q.Ncloud TensorFlow Serverとは何ですか?
- TensorFlowをはじめ、Deep Learningや Machine Learningの代表的なパッケージやコードを作成できるウェブベースの Jupyter Notebookを提供し、速やかに Deep Learningや Machine Learningを実装できるようにするサービスです。
- 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、GPUに分けられます。サーバタイプのそれぞれの特徴は次の通りです。
-
Standard: 様々な ITビジネスに活用できる NAVERクラウドプラットフォームサービスの標準サーバです。バランスの取れたサーバスペックをはじめ、高い可用性と安定性を備えています。
-
High Memory: 64GB以上の大容量メモリサーバで、メモリ性能の影響を受けやすいアプリケーションの運用に適しています。High Memoryサーバは最大10台まで作成でき、サポートにリクエストすると台数制限を調整できます。
-
CPU Intensive: Intel Xeonプロセッサに加え、AVX512 Vector演算に最適化された TensorFlowが搭載されており、高い性能が求められるディープラーニングワークロード処理に適しています。この CPU Typeは現在、Ubuntu 16.04 OSにのみ対応しています。
-
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アクセス環境設定**を参照)。
- Jupyterのデフォルトパス(/home/ncp/workspace)の下位階層に tensorboardディレクトリが作成されています。tensorflowコードで tensorboardディレクトリをログディレクトリとして指定してから使用してください。
Q.Jupyter Notebookにアクセスできません。
- Jupyter Notebookを使用するには、パブリック IPアドレスを申し込んでサーバに割り当て、ACGに18888ポートが追加されている必要があります(**4.Ncloud TensorFlow Server作成後の Jupyterアクセス環境設定**を参照)。
- パブリック IPアドレスや ACGを確認してもアクセスできない場合、プロセスが停止ステータスの可能性があるため、ターミナルで
jup restartコマンドを実行してプロセスを再起動してください(Jupyterプロセス管理を参照)。
Q.(GPU Only) tensorflowコードを実行すると、「メモリ不足」メッセージが表示されて失敗します。
- 方法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つの方法を提供します。
1つ目の方法は、tf.config.experimental.set_memory_growthを呼び出してメモリ増加を許可することです。この方法はランタイムで必要な分だけ GPUメモリを割り当てます。最初はメモリを少しだけ割り当て、プログラムが実行されより多くの GPUメモリが必要になると、TensorFlowプロセスに割り当てられた GPUメモリ領域を拡張します。メモリ解放はフラグメンテーションを悪化させるので、メモリは解放しません。特定の GPUのメモリ増加を許可するには、次のコードを Tensorや演算の前に入力します。
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作成
マイサーバイメージ作成機能を使用する際は、使用中のイメージ仕様を確認する必要があります。
作成された Ncloud TensorFlow Serverイメージを利用する際は、既存イメージのインフラ(CPU/GPU)仕様と同一に作成する必要があります。異なる仕様で作成すると、サービスを正常に利用できません。
| イメージ仕様 | 作成仕様 | 使用有無 |
|---|---|---|
| CPU | CPU | 使用可能 |
| GPU | GPU | 使用可能 |
| CPU | GPU | 使用不可 |
| GPU | CPU | 使用不可 |
事前タスク 1.VPC作成
NAVERクラウドプラットフォームコンソールの VPC環境の
> Services > Networking > VPCメニューで VPCを作成します。VPCは少なくとも1つ必要です。1つの VPC内に複数の Ncloud Tensorflow Serverを作成できます。

事前タスク 2.Subnet作成(public)
特定の VPC環境内からのみアクセスできるように制限せず、特定の VPC外部からも Ncloud Tensorflow Serverにアクセスできるように構成できます。作成された VPCに Public Subnetを作成した後、Tensorflow Serverにパブリック IPアドレスを割り当てます。
Internet Gateway専用有無のプロパティ値を Y(Public) に設定して Subnetを作成します。

Step 1.コンソールアクセス
NAVERクラウドプラットフォームコンソールの VPC環境で、
> Services > Compute > Serverメニューを順にクリックします。

- サーバを作成するには [サーバ作成] ボタンをクリックします。

Step 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台に設定します。
-
次へ: サーバ設定が完了したら、 [次へ] ボタンをクリックします。
Step 3.認証キー設定
現在保有している認証キーがある場合は保有している認証キーを利用を選択し、そうでない場合は次の手順に従って新しい認証キーを作成します。

-
新しい認証キー作成を選択します。
-
認証キー名を入力します。
-
[認証キーの作成と保存] ボタンをクリックしてローカル PCに認証キーファイルを保存します。
- 新しい認証キーが発行されます。
- 発行済みの認証キーは、顧客の PCの安全な場所に保存してください。
- 認証キーは、初回の管理者パスワードを取得する際に必要です。
- [次へ] ボタンをクリックします。
Step 4.ファイアウォール設定
保有中の ACGでファイアウォールを設定できます。

-
ACGは必ず選択する必要があり、VPCを作成するにはデフォルトで提供する「VPC default ACG」を含めて保有している ACGの中から1つを選択します。
- 保有中の ACGは、最大5つまで選択できます。
- ACGを必須として選択すると、 [次へ] ボタンが有効になり設定を行えます。
-
設定したい ACGを選択し、 [次へ] ボタンをクリックします。
Step 5.最終確認
設定した内容を最終確認します。

-
最終確認: サーバイメージ、サーバ、認証キー、ACGの設定が正常に完了しているかを確認します。
-
[サーバ作成] : 最終確認後、ボタンをクリックしてサーバを作成します。
- サーバが作成されるまでは数分から数十分がかかります。
Step 6.サーバリストで確認
作成したサーバをリストから確認します。

- サーバが作成されてパッケージのインストールが完了すると、サーバのステータスが運用中に変わります。完了するまでしばらくお待ちください。
4.Ncloud TensorFlow Server作成後の Jupyterアクセス環境設定
パブリック IPアドレスご利用の申し込み
Ncloud TensorFlow Serverを作成した後、インターネットブラウザを介して Jupyter Notebookにアクセスするには、必ず Public Subnetを選択してから VMを作成し、パブリック IPアドレスで Jupyterにアクセスする必要があります(パブリック IPアドレスの使用に対する料金は別途課金されます)。
NAVERクラウドプラットフォームの VPC環境で、
> Services > Compute > 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となります。
5.Jupyter Notebook管理
ターミナルプログラム(Puttyなど)で Ncloud TensorFlow Server VMにアクセスして、Jupyterのパスワードを変更する必要があります。
提供される管理スクリプトで簡単にパスワードを変更し、Jupyterプロセスを管理することができます。
管理者パスワードの確認
ターミナルプログラム(Puttyなど)で Ncloud TensorFlow Server VMにアクセスするには、管理者パスワードを知る必要があります。

-
左側のメニューから Serverメニューを選択します。
-
当該サーバを選択して、サーバ管理と設定変更で管理者パスワード確認を選択します。
-
[マウスでファイルをドラッグするか、ここをクリックしてください] ボタンをクリックして、サーバ作成時にローカル PCに保存した認証キーファイル(.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: 上記で確認した管理者パスワードを入力
- ログインした後は 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