Ncloud TensorFlow Serverの生成ガイド

Prev Next

Classic環境で利用できます。

使用前に

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.Ncloud TensorFlow Serverはどうやって作成しますか?

  • 希望するスペックのサーバを作成し、必要に応じてストレージを追加します。
  • 月額料金プランか時間料金プランで請求され、サーバを作成してアクセス環境を設定すると利用できます。
  • WebベースのJupyter Notebookを利用するには、グローバルIPを申請し、ACG設定でポートを追加します。
  • コンソールにアクセスした後、次の手順を経て簡単にサーバを作成できます。

tensorflow-1-1-100.svg

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:P40、V100 GPUが装着されたサーバで、速やかなデータ処理を要する環境に適しています。最大5台まで作成することができ、サポートセンターにリクエストすると、台数制限を調整できます。

Q.Ncloud TensorFlow Serverを作成しましたが、コードはどこで作成しますか?

  • TensorFlowコードは、Jupyter Notebookで作成できます。ACGに18888ポートを追加した後、ウェブブラウザで[グローバルIPアドレス:18888]にアクセスしてください。
  • 「samples」フォルダにデータ処理、視覚化及びTensorFlowのサンプルファイルが保存されています。データ分析が初めての方はご参照ください。

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

  • ACGに18889ポートを追加した後、ウェブブラウザで[グローバルIPアドレス:18889]にアクセスしてください('アクセス環境の設定' を参照)。
  • Jupyterのデフォルトパス(/home/ncp/workspace)の下位階層にTensorBoardディレクトリが作成されています。TensorFlowコードでTensorBoardディレクトリをログディレクトリとして指定してから使用してください。

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

  • Jupyter Notebookを利用するには、グローバルIPアドレスを申請してサーバに割り当てる必要があり、ACGに18888ポートが追加されていなければなりません。('アクセス環境の設定' を参照)
  • グローバル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)

Ncloud TensorFlow Serverのご紹介

Ncloud TensorFlow Serverは、データ分析専門家の間で最も多く利用されているTensorFlowをはじめ、深層学習と機械学習の代表的なパッケージをインストール型で提供するサービスです。

データ前処理、視覚化、自然言語処理、機械学習、深層学習でよく使われるパッケージが提供されるため、ほとんどの分析業務に対応できます。必要に応じて、Jupyter NotebookでGUIやコンソールコマンドを用いてパッケージを簡単に追加インストールしたり、アップグレードすることもできます。

WebベースのJupyter Notebookを通じて、場所を問わずいつでも同じ分析環境で業務を行うことができ、分析結果をその場で確認して他の人と容易に共有できます。

また、提供される管理スクリプトを活用すると、ターミナル環境でJupyterプロセスを簡単に管理できます。

さらに、分析業務が初めての方のために、データ探索や視覚化だけでなく、Scikit-learnによる回帰、分類、クラスタリングのような機械学習や、KerasやTensorFlowを用いた深層学習による回帰と分類のサンプルファイルを提供しています。

Ncloud TensorFlow Serverの生成

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

コンソールへアクセスしてServer > Server メニューを選択します。

tensorflow-1-1-101_classic_ja.png

① サーバを生成するために [サーバを生成] ボタンをクリックします。

Step 2. サーバイメージの選択

TensorFlow サーバイメージを選択してサーバを生成します。

tensorflow-1-1-102_classic_ja.png

① Tensorflowイメージを選択します。

  • 'tensorflow-ubuntu-16.04-64-server'または 'tensorflow-centos-7.3-64', 2つの商品は OSの差があるだけで提供されるパッケージは同じで、特別な理由がなければより多く使われているubuntu商品を選択されることをお勧めします。

[次へ] ボタンをクリックします。

③ ポップアップウィンドウの案内(Jupyter Notebook使用のためのパブリックIPアドレスと ACG申請, Jupyterパスワードの変更)を確認します。

[確認] ボタンをクリックしてポップアップウィンドウを閉じます。

Step 3. サーバの設定

ストレージ種類、サーバタイプ、料金制、Zoneを選択してサーバ名を入力します。

tensorflow-1-1-103.png

① Zoneを選択します。

  • 現在提供されるZoneは ‘KR-1’,‘KR-2’があります。

② ブーティングストレージに使用するストレージ種類を選択します。

  • 高性能I/Oが必要なサービスにはSSDを、一般的なサービスにはHDDを選択してください。但し、ブーティングストレージがSSDの場合のみ追加ストレージにSSDを利用できます。

③ 必要なサーバタイプを選択します。

  • 一部のサーバスペックはブーティングディスクタイプによってサポートされないこともあります。
  • 使用目的によってStandard, High Memory, GPU サーバタイプの中から1つを選択してください。

④ 料金制は月額料金制または時間料金制の中から選択できます。

⑤ サーバ名を入力します。

  • お客様がサーバを区別するための名称ですので重複して使用できません。

[次へ] ボタンをクリックします。

Step 4. 認証キーの設定

保有している認証キーがある場合’保有している認証キーを利用’を選択し、ない場合は以下の手続きで新たな認証キーを生成します。
tensorflow-1-1-104.png

新たな認証キーを生成を選択します。

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

[認証キーを生成及び保存] ボタンをクリックしてローカルパソコンに認証キーファイルを保存します。

  • 新たな認証キーを発行します。
  • 保存した認証キーはお客様パソコンの安全な位置に保管してください。
  • 認証キーは最初の管理者パスワードを呼び出す際に使います。

[次へ] ボタンをクリックします。

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

保有しているACGを利用したり、新規ACGを生成し、ファイアウォールを設定できます。

まず、保有しているACGを利用してファイアウォールを設定する場合です。
tensorflow-1-1-105_classic_ja.png

① ACGは必須選択事項で、基本で提供される ‘ncloud-default-acg’を含めて保有しているACGの中から1つを選択します。

  • 保有しているACGは最大5個まで選択できます。
  • 必須でACGを選択すると [次へ] ボタンが有効になり設定を進めることができます。

② 保有しているACG以外に新規ACGを生成して設定したい時は新規 ACGを生成を選択します。

[次へ] ボタンをクリックします。

新たなACGを生成してファイアウォールを設定する方法は以下の通りです。

tensorflow-1-1-106_classic_ja.png

① 新規ACGの生成から [ACGを生成] ボタンをクリックします。

ACG 名を入力します。

③ ACG 設定からプロトコル、アクセスソース、許可ポートを入力して生成します。

  • プロトコル: TCP, UDP, ICMPから選択

  • アクセスソース: IPアドレスまたはACG名を入力

  • 許可ポート: 単一ポートまたは範囲を指定

  • ターミナルにアクセスするためにはアクセスしようとするサーバのACGにSSH 'TCP/22'に関するルールが設定されている必要があり、jupyter notebook 使用のためには'TCP/18888'ルールが、TensorBoard使用のためには'TCP/18889' ルールが追加で設定されていなければなりません。

  • ルールを追加する際はプロトコル、アクセスソース、許可ポートを記載して [追加] ボタンをクリックします。

④ 22と18888, 18889 ポートが全て追加されたら [生成] ボタンをクリックします。

Step 6. 最終確認

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

tensorflow-1-1-107_classic_ja.png

① サーバイメージ、サーバ、認証キー、 ACGが正常に設定されたか確認します。

② 最終確認が終わったら [サーバを生成] ボタンをクリックします。

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

サーバリストから確認

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

tensorflow-1-1-108_classic_ja.png

① 生成されたサーバがリストに表示されます。

② サーバが生成されてパッケージが設置完了し、サーバの状態が 運営中になるまでお待ちください。

アクセス環境の設定

パブリック IPアドレス使用のお申込み

jupyter notebookを使用するためには必ずパブリックIPアドレスを利用してアクセスする必要があり、パブリックIPアドレスの使用に対して別途料金が請求されます。

tensorflow-1-1-201_classic_ja.png

① 左側メニューから Public IP メニューを選択します。

② パブリックIPの割り当てを受けるためには [パブリック IPのお申込み] ボタンをクリックします。

適用サーバを選択からパブリックIPアドレスを割り当てるNcloud TensorFlow Serverを選択します。

[確認] ボタンをクリックします。

⑤ 適用サーバ名を確認して再度 [確認] ボタンをクリックします。

ポートフォワーディングの設定

ターミナルプログラム(Puttyなど)でサーバにアクセスするためにはポートフォワーディングを設定する必要があります。

tensorflow-1-1-202.png

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

② サーバにアクセスするためには [ポートフォワーディングを設定] をクリックします。

③ ポートフォワーディングの設定画面から外部ポート番号を設定します。外部ポート番号の入力範囲は1024~65,534で、サーバアクセスのための機能以外にサービス用途では使用できません。(内部ポート番号は22に定まっています。)

[追加] ボタンをクリックすると設定内訳が下段に追加され、[修正], [削除] ボタンをクリックして設定内訳を修正、削除できます。

[適用] ボタンをクリックすると設定した外部ポートにターミナルプログラムを利用してSSHアクセスできます。

ACG設定

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

サーバ生成の際にルールを既に追加した場合はこの段階のACG設定作業を実行する必要がありません。

tensorflow-1-1-203.png

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

② サーバ生成の際に選択したACGを選択して上段の [ACGを設定] を選択します。

③ ACG ルール設定からプロトコル、アクセスソース、許可ポートを入力して生成します。

  • プロトコル: TCP, UDP, ICMPから選択

  • アクセスソース: IPアドレスまたはACG名を入力

  • 許可ポート: 単一ポートまたは範囲指定

  • ターミナルをアクセスするためにはアクセスしようとするサーバのACGにSSH 'TCP/22'に対するルールが設定されている必要があり、jupyter notebook 使用のためには'TCP/18888' ルールが、TensorBoard使用のためには'TCP/18889'ルールが追加で設定されていなければなりません。

  • ルールを追加するためにはプロトコル、アクセスソース、許可ポートを記載して [追加] をクリックします。

④ 設定が完了したら [適用] ボタンをクリックします。

詳細情報タブから詳細な情報を確認でき、ルールをみる タブからは設定したルールを確認できます。

管理者パスワードの確認

ターミナルプログラム(Putty など)からサーバにアクセスするためには管理者のパスワードが必要です。
tensorflow-1-1-204_classic_ja.png

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

② 当該サーバを選択して、サーバ管理及び設定の変更から 管理者パスワードを確認を選択します。

[Drop files here or click to upload] ボタンをクリックしてサーバ生成の際に個人パソコンに保存した認証キーファイル(.pem)を添付します。

④ 添付してから [パスワードを確認] ボタンをクリックするとターミナルプログラムから最初のサーバアクセスの際に使用するパスワードを取得できます。

  • サーバにアクセスしてからは管理者が覚えられるパスワードに変更されて使用されることをお勧めします。

ターミナルアクセス

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

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

ターミナルプログラムでサーバアクセス

tensorflow-1-1-301_classic_ja.png

① ターミナルプログラム(Puttyなど)を実行します。

② サーバリストまたは内容をみるから確認した 'サーバアクセス用パブリックIP'と'外部ポート'の値を入力して [Open] ボタンをクリックするとサーバにアクセスできます。

  • サーバアクセス用パブリック IPの確認: コンソール > サーバ > サーバリストからサーバを選択して [内容をみる]からポートフォワーディング情報の ‘サーバアクセス用パブリックIP’
  • 外部ポート番号の確認: コンソール> サーバ> サーバリストからサーバを選択して [内容をみる]からポートフォワーディング情報の ‘外部ポート’

③ ユーザー情報及びパスワードを入力してログインします。

  • login as: root
  • password: 上で確認した管理者パスワード

④ ログイン後には root アカウントのパスワードを覚えやすいパスワードに変更されることをお勧めします。
'passwd root' 命令語を入力して新たなパスワードを入力します。

Jupyter パスワードの変更

Jupyter Notebookで使う初期パスワードはサーバ名で設定されているので、セキュリティ侵害の防止のために提供されるスクリプトを通じてパスワードを変更してください。
tensorflow-1-1-302_classic_ja.png

① ターミナルから 'jup passwd'を入力してパスワードを変更します。

  • 最初のパスワードを確認: コンソール >サーバ >サーバリストで ‘サーバ名’と同じ

  • パスワードは英文字、数字、特殊文字を全て含めている必要があり、8字以上でなければなりません。

  • パスワードの変更スクリプトを実行する場合は自動で Jupyterプロセスがリスタートします。

Jupyter プロセス管理

環境設定ファイルを変更する場合などJupyter プロセスをリスタートする必要がある場合、提供されるスクリプトを通じてプロセスを停止するかリスタートできます。

tensorflow-1-1-303_classic_ja.png

① Jupyter プロセスを停止: $ jup stop

② Jupyter プロセスを開始: $ jup start

③ Jupyter プロセスを停止&開始: $ jup restart

TensorBoard プロセス管理

サーバを生成して初めて TensorBoard プロセスを開始したり、プロセスをリスタートする必要がある場合、提供されるスクリプトを通じてプロセスを開始したり停止できます。

tensorflow-1-1-304_classic_ja.png

① TensorBoard プロセスを停止: $ jup tb-stop

② TensorBoard プロセスを開始: $ jup tb-start