Ncloud TensorFlow Server 作成ガイド(Private Subnet on VPC)

Prev Next

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を作成しましたが、コードはどこで作成できますか?

  • Private Subnetに Ncloud TensorFlow Serverを作成する場合、パブリック IPアドレスを通じて外部からアクセスできないため、少なくとも1つの Public Subnetが追加で必要となります。
    • 1.Private Subnetに Ncloud TensorFlow Server VMを作成します。
    • 2.Public Subnetに Windows VMを作成します。
    • 3.Windows VMにパブリック IPアドレスを割り当てた後、Windows VMにアクセスします。
    • 4.(Windows VMに接続した状態で)Ncloud TensorFlow Server VMのプライベート IPアドレスを通じて Jupyter Notebookにアクセスします。
  • TensorFlowのコードは Jupyter Notebookで作成できます。追加で作成した Public Subnetの Windows VMにアクセスしてから、ウェブブラウザで [プライベート IPアドレス:18888] にアクセスします。
  • 「samples」フォルダにデータ処理と可視化、および TensorFlowのユースケースファイルが保存されています。データ分析が初めての方はご参照ください。

Q.TensorBoardの使い方を教えてください。

  • 追加で作成した Public Subnetの Windows VMにアクセスしてから、ウェブブラウザで [プライベート IPアドレス:18889] にアクセスします(**4.Ncloud TensorFlow Server作成後の Jupyterアクセス環境設定**を参照)。
  • 追加で作成した Public Subnetの Windows VMにアクセスしてから、ウェブブラウザで [プライベート IPアドレス:18889] にアクセスします(**4.Ncloud TensorFlow Server作成後の Jupyterアクセス環境設定**を参照)。
  • Jupyterのデフォルトパス(/home/ncp/workspace)の下位階層に tensorboardディレクトリが作成されています。tensorflowコードで tensorboardディレクトリをログディレクトリとして指定してから使用してください。

Q.Jupyter Notebookにアクセスできません。

  • Ncloud TensorFlow Serverの VM内部で Jupyterプロセスが停止している可能性があります。ターミナルで「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作成

事前タスク 1.VPC作成

NAVERクラウドプラットフォームコンソールの VPC環境の i_menu > Services > Networking > VPCメニューで VPCを作成します。VPCは少なくとも1つ必要です。1つの VPC内に複数の Ncloud Tensorflow Serverを作成できます。

1-VPC_vpc_ko

事前タスク 2.Subnet作成

VPCに Private Subnetを作成して、特定の VPC環境内部でのみアクセスできるように制限できます。

Internet Gateway専用有無のプロパティ値を N(Private) に設定して Subnetを作成します。

2-1-SUB-private_vpc_ko

Step 1.コンソールアクセス

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

tensorflow-vpc-3-1-list_vpc_ko

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

tensorflow-vpc-3-1-tensorflow_vpc_ko

Step 2.Ncloud Tensorflow Server VM設定

VPC、Subnet、ストレージタイプ、サーバタイプ、料金プランを選択し、サーバ名を入力します。

tensorflow-vpc-3-2-spec-priv_vpc_ko

  • VPC: 事前に作成した VPCを選択します(例) vpc-tensorflow)。

  • Subnet: Private Subnetを選択します(例) vpc-sub-pri-tensorflow)。

  • ストレージタイプ: ブートストレージとして使用するストレージタイプを選択します。

    • 高性能 I/Oが必要なサービスの場合は SSDを、一般的なサービスの場合は HDDを選択します。ただし、ブートストレージが SSDの場合にのみ、追加ストレージとして SSDを利用できます。
  • サーバタイプ: 目的のサーバタイプを選択します。

    • 一部のサーバ仕様は起動ディスクタイプによってサポートされない場合があります。
    • 使用目的に応じて Standard、High Memory、GPUサーバタイプの中から1つ選択します。
  • 料金プラン選択: 料金プランは、月額または時間料金プランの中から選択します。

  • サーバ名: サーバ名を入力します。

    • 顧客がサーバを区別するための名前で、重複して使用できません。
  • Network Interface: Network Interfaceを設定します。サーバごとに最大3つまで作成できます。

  • パブリック IPアドレス: Private Subnetにはパブリック IPアドレスを割り当てられません。未設定を選択します。

    • サーバ作成時にパブリック IPアドレスを同時に作成する場合、Subnetタイプは Public Subnet、サーバ台数は1台に設定します。
  • 次へ: サーバ設定が完了したら、 [次へ] ボタンをクリックします。

Step 3.認証キー設定

現在保有している認証キーがある場合は保有している認証キーを利用を選択し、そうでない場合は次の手順に従って新しい認証キーを作成します。

tensorflow-vpc-3-3-auth_vpc_ko

  1. 新しい認証キー作成を選択します。

  2. 認証キー名を入力します。

  3. [認証キーの作成と保存] ボタンをクリックしてローカル PCに認証キーファイルを保存します。

  • 新しい認証キーが発行されます。
  • 発行済みの認証キーは、顧客の PCの安全な場所に保存してください。
  • 認証キーは、初回の管理者パスワードを取得する際に必要です。
  1. [次へ] ボタンをクリックします。

Step 4.ファイアウォール設定

保有中の ACGでファイアウォールを設定できます。

tensorflow-vpc-3-4-acg_vpc_ko

  • ACGは必ず選択する必要があり、VPCを作成するにはデフォルトで提供する VPC default ACGを含めて保有している ACGの中から1つを選択します。

    • 保有中の ACGは、最大5つまで選択できます。
    • ACGを必須として選択すると、 [次へ] ボタンが有効になり設定を行えます。
  • 設定したい ACGを選択し、 [次へ] ボタンをクリックします。

Step 5.最終確認

設定した内容を最終確認します。

tensorflow-vpc-3-5-final-priv_vpc_ko

  • 最終確認: サーバイメージ、サーバ、認証キー、ACGの設定が正常に完了しているかを確認します。

  • [サーバ作成] : 最終確認後、ボタンをクリックしてサーバを作成します。

    • サーバが作成されるまでは数分から数十分がかかります。

Step 6.サーバリストで確認

作成したサーバをリストから確認します。

tensorflow-vpc-3-6-created-priv_vpc_ko

  • サーバが作成されてパッケージのインストールが完了すると、サーバのステータスが運用中に変わります。完了するまでしばらくお待ちください。

4.Ncloud TensorFlow Server作成後の Jupyterアクセス環境設定

Private Subnetに作成された Ncloud Tensorflow Serverの VMにアクセスする方法をご案内します。Private Subnetは外部からアクセスできないため、Public Subnetを作成する必要があります。

Public Subnetに Windows VMを1つ作成すると、Private Subnet内にある VMにアクセスできます。

Public Subnet作成

Internet Gateway専用有無のプロパティ値を Y(Public) に設定して Subnetを作成します。

2-1-SUB-public_vpc_ko

Windows VM作成

Public Subnetに作成した Windows VMにリモートアクセスした後、Private Subnetに作成されている Ncloud TensorFlow Server VMにアクセスします。

Windows VMは必ず Public Subnetを選択してから作成する必要があります。

Windows VM選択

tensorflow-vpc-4-win-1_vpc_ko

Windows VMの仕様選択

VPC、Subnet、ストレージタイプ、サーバタイプ、料金プランを選択し、サーバ名を入力します。

Windows VMは必ず Public Subnetを選択してから作成する必要があります。

tensorflow-vpc-4-win-2_vpc_ko

  • 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台に設定します。
  • 次へ: サーバ設定が完了したら、 [次へ] ボタンをクリックします。

Windows VM認証キー設定

tensorflow-vpc-4-win-3_vpc_ko

Windows VM ACG設定

tensorflow-vpc-4-win-4_vpc_ko

Windows VM作成の最終確認

tensorflow-vpc-4-win-5_vpc_ko

パブリック IPアドレスご利用の申し込み

Windows VMにアクセスするために、パブリック IPアドレスを作成します(パブリック IPアドレスの使用に対する料金は別途課金されます)。

NAVERクラウドプラットフォームの VPC環境で、i_menu > Services > Compute > Server > Public IPメニューに移動してパブリック IPアドレスを作成します。

tensorflow-vpc-4-win-6_vpc_ko

  1. 適用サーバ選択で、パブリック IPアドレスを割り当てる Windowsサーバを選択します。

ACG設定

ターミナルアクセス SSH(TCP/22)および Jupyter Notebook('TCP/18888')ルールが必要な場合、TensorBoard('TCP/18889')ルールを ACGに追加します。

tensorflow-vpc-4-2-acg_vpc_ko

  1. 左側のメニューから ACGメニューを選択します。

  2. サーバ作成時に選択した ACGを選択し、上部の [ACG設定] を選択します。

  3. ACGルール設定でプロトコル、アクセスソース、許可ポートを入力して作成します。

  • プロトコル: TCP、UDP、ICMPから選択
  • アクセスソース: IPアドレスまたは ACG名を入力
  • 許可ポート: 単一ポートまたはその範囲を指定
  • ターミナルにアクセスするためには、アクセスを希望するサーバの ACGに SSH「TCP/22」に関するルールが設定されている必要があります。また、jupyter notebookの使用を希望する場合は「TCP/18888」ルールを、TensorBoardの使用を希望する場合は「TCP/18889」ルールを追加で設定する必要があります。
  • ルールを追加する場合、プロトコル、アクセスソース、許可ポートを記入して [追加] をクリックします。
  1. 設定が完了すると [適用] ボタンをクリックします。

  2. [詳細情報] タブで詳細情報を確認でき、 [ルールを見る] タブでは設定したルールを確認できます。

Windows VMへのリモートアクセス

リモートアクセスプログラム(例: リモートデスクトップ、Microsoft Remote Desktop)を通じて Windows VMにアクセスします。Windows VMのパブリック IPアドレス管理者パスワードを入力します。

Windowsサーバアクセスガイドをご参照ください。

Windows VMへのアクセスアカウントの入力

tensorflow-vpc-4-win-7_vpc_ko

  1. Windows VMの管理者名を入力します。

  2. Windows VMの管理者パスワードを入力します。

Windows VMのパブリック IPアドレスの入力

tensorflow-vpc-4-win-8_vpc_ko

  1. Windows VMのパブリック IPアドレスを入力します。

  2. 先に設定した Windows VMの管理者名とパスワードを入力します。

Windows VMへのリモートアクセス確認

tensorflow-vpc-4-win-9_vpc_ko

Jupyter Notebookの動作確認

Windows VMにリモートアクセスした後、Jupyter Notebookにアクセスします。Chromeブラウザを起動し、Ncloud Tensorflow Server VMのプライベート IPアドレスを入力した後、Jupyter Notebookにアクセスします。

Windows VMでの Jupyter Notebookアクセス

tensorflow-vpc-4-win-10_vpc_ko

  • 「Internet Explorer」はセキュリティ設定により Jupyter Notebookの使用が円滑でないため、「Chromeブラウザ」の使用をお勧めします。

  • Jupyter Notebookにアクセスするアドレスは http://{プライベート-IP}:{18888}です。

    • 例えば、作成したプライベート IPアドレスが 10.0.0.70 の場合、アクセス urlは http://10.0.0.70:18888 です。
  • Jupyter Notebookの初期パスワードは VMのサーバ名です。安全な使用のために、パスワードを変更してから利用することをお勧めします。

Windows VMの Internet Explorerセキュリティ設定

Windows OSで Internet Explorerを介して Jupyter Notebookを円滑に使用するためには、セキュリティ設定で JavaScriptを有効にする必要があります。

tensorflow-vpc-4-win-11_vpc_ko

  • Internet Explorer > ツール > インターネットオプション > セキュリティタブ > ユーザー定義 > JavaScript許可

  • Chromeブラウザを Windows VMにインストールすると、Chromeを介して Jupyter Notebookを使用できます。

5.Jupyter Notebook管理

ターミナルプログラム(Puttyなど)で Ncloud TensorFlow Server VMにアクセスして、Jupyterのパスワードを変更する必要があります。

提供される管理スクリプトで簡単にパスワードを変更し、Jupyterプロセスを管理することができます。

管理者パスワードの確認

ターミナルプログラム(Puttyなど)で Ncloud TensorFlow Server VMにアクセスするには、管理者パスワードを知る必要があります。

tensorflow-vpc-5-1-password_vpc_ko

  1. 左側のメニューから Serverメニューを選択します。

  2. 当該サーバを選択して、サーバ管理と設定変更管理者パスワード確認を選択します。

  3. [マウスでファイルをドラッグするか、ここをクリックしてください] ボタンをクリックして、サーバ作成時にローカル PCに保存した認証キーファイル(.pem)を添付します。

  4. 添付後、 [パスワード確認] ボタンをクリックするとターミナルプログラムでサーバに初めてアクセスする時に使用するパスワードを確認できます。

  • サーバにアクセスした後、管理者が記憶できるパスワードに変更して使用することをお勧めします。

ターミナルプログラムでの VMアクセス方法

管理者パスワードで Ncloud TensorFlow Server VMにアクセスできます。Windows VMにリモートアクセス後、ターミナルプログラムを使用して TensorFlow VMにアクセスします。
tensorflow-vpc-5-2-ssh-priv_vpc_ko

  1. ターミナルプログラムを実行した後、Ncloud TensorFlow Server VMのプライベート IPアドレスを入力します。

  2. Ncloud TensorFlow Server VMのアクセス情報を入力します。

  • login as: root
  • password: 前段階で確認した管理者パスワードを入力
  1. ログインした後は rootアカウントのパスワードを記憶できるパスワードに変更することをお勧めします。
  • 「passwd root」コマンドを入力してから、新しいパスワードを入力します。

Jupyterパスワードの変更

Jupyter Notebookで使用する初回パスワードはサーバ名に設定されています。セキュリティ侵害防止のために、提供されるスクリプトを使ってパスワードを変更します。

tensorflow-vpc-5-4-juppasswd_vpc_ko

  1. ターミナルで「jup passwd」と入力してパスワードを変更します。
  • 初回パスワード確認: コンソール > サーバ > サーバリストでの「サーバ名」と同じ
  • パスワードは英数字、記号をすべて8文字以上含む必要があります。
  • パスワード変更スクリプトを実行すると、Jupyterプロセスが自動的に再起動されます。

Jupyterプロセス管理

環境設定ファイルを変更した場合など Jupyterプロセスを再起動する必要がある場合、提供されるスクリプトでプロセスを停止したり再起動できます。

tensorflow-vpc-5-5-jup_vpc_ko

  1. Jupyterプロセス停止:$ jup stop

  2. Jupyterプロセス起動:$ jup start

  3. Jupyterプロセス停止・起動:$ jup restart

TensorBoardプロセス管理

サーバを作成してから初めて TensorBoardプロセスを起動したりプロセスを再起動する必要がある場合、提供されるスクリプトを通じてプロセスを起動したり停止することができます。

tensorflow-vpc-5-5-tb_vpc_ko

  1. TensorBoardプロセス停止: $ jup tb-stop

  2. TensorBoardプロセス起動: $ jup tb-start