序文ディープラーニングは機械学習と人工知能研究の人気の分野であり、今日最も人気のある科学研究トレンドの 1 つです。ディープラーニング手法はコンピュータービジョンと機械学習に革命的な進歩をもたらし、新しいディープラーニング技術が絶えず登場しています。ディープラーニングは急速に発展しているため、新しい研究者がその技術に追いつくのは困難です。国内の大手パブリッククラウドベンダーはいずれも対応するディープラーニング関連製品を提供しているが、初心者にとってはあまり実用的ではない。この記事では、製品化されたクラウドプラットフォーム「ZStack」をベースに、初心者にも優しく、操作しやすく、使いやすいディープラーニングクラウドプラットフォームの構築方法を紹介します。 ZStack は軽量なので、クラウド プラットフォームを展開し、通常の PC のみを使用してディープラーニング プラットフォームを構築できます。読者はこの記事を、より大規模で包括的なディープラーニング クラウド プラットフォームに簡単に拡張できます。 1. ZStackの紹介ZStack は、次世代のオープンソース クラウド コンピューティング IaaS (Infrastructure as a Service) ソフトウェアです。これは主に将来のインテリジェント データ センターを対象としており、柔軟で完全な API を提供することで、コンピューティング、ストレージ、ネットワークなどのデータ センター リソースを管理します。ユーザーは、ZStack を使用して独自のインテリジェント クラウド データ センターを迅速に構築したり、安定した ZStack 上に柔軟なクラウド アプリケーション シナリオを構築したりできます。 ZStackの機能アーキテクチャ ZStack製品の利点: ZStack は、独自のクラウド プラットフォーム 4S (シンプル、強力、スケーラブル、スマート) 標準に基づいて設計された次世代クラウド プラットフォーム IaaS ソフトウェアです。 1. シンプル • 簡単なインストールと展開: インストール ファイルのオンライン ダウンロードを提供し、ベア メタルからクラウド プラットフォームへのインストールと展開を 30 分で完了します。 • シンプルなクラウド プラットフォーム構築: クラウド ホストのバッチ操作 (生成、削除など) をサポートし、リスト表示やスライディング ウィンドウの詳細を提供します。 • シンプルで実用的な操作: 詳細なユーザー マニュアル、十分なヘルプ情報、優れたコミュニティ、標準 API が提供されます。 • 使いやすい UI インタラクション: 適切に設計されたプロフェッショナルな操作インターフェイス、合理化された操作、強力な機能。 2. 強い • 安定した効率的なシステム アーキテクチャ設計: 完全に非同期のバックグラウンド アーキテクチャ、インプロセス マイクロサービス アーキテクチャ、ロックフリー アーキテクチャ、ステートレス サービス アーキテクチャ、一貫したハッシュ リングを備えており、システム アーキテクチャの効率性と安定性を確保します。現在、単一の管理ノードで数万台の物理ホストと数十万台のクラウドホストを管理することが実現されています。複数の管理ノードで構築されたクラスターは、1 つのデータベースと一連のメッセージ バスを使用して、数十万の物理ホスト、数百万のクラウド ホストを管理し、数万の API を同時に処理します。 • 高同時実行 API リクエストをサポート: 単一の ZStack 管理ノードで、1 秒あたり数万件の同時 API 呼び出しリクエストを簡単に処理できます。 • 厳格な HA 要件をサポート: ネットワークまたはノードに障害が発生した場合、ビジネス クラウド ホストは自動的に他の正常なノードに切り替えて操作を実行できます。管理ノード仮想化を使用することで、単一の管理ノードの高可用性が実現され、障害発生時には管理ノードの動的な移行がサポートされます。 3. スケーラブル • 無制限のサポート規模: 単一の管理ノードで、1 台から数万台の物理ホストと数十万台のクラウド ホストを管理できます。 • 完全なAPI配信: ZStackはIaaS APIの完全なセットを提供しており、ユーザーはこれらのAPIを使用して新しいクロスリージョン可用性ゾーンの構築を完了できます。 ネットワーク構成の変更と物理サーバーのアップグレード。 • リソースはオンデマンドで割り当て可能: クラウド ホストやクラウド ストレージなどの重要なリソースは、ユーザーのニーズに応じて拡張または縮小できます。 ZStackはクラウドホストをサポートするだけでなく ホストの CPU、メモリなどのリソースをオンラインで変更したり、クラウド ホストのネットワーク帯域幅、ディスク帯域幅などのリソースを動的に調整したりできます。 4. 賢い • 自動化された運用および保守管理: ZStack 環境では、すべてが API によって管理されます。 ZStackはAnsibleライブラリを使用して完全に自動化されたデプロイメントを実現し、 アップグレード、自動検出と再接続、およびネットワーク ジッタまたは物理ホストの再起動後の各ノードへの自動再接続。スケジュールされたタスクはタイミングをサポートします クラウド ホストのオン/オフを切り替え、クラウド ホストのスケジュールされたスナップショットなどのポーリング操作を実行します。 • オンラインシームレスアップグレード: ワンクリックで 5 分以内にシームレスアップグレード。ユーザーは管理ノードと制御ノードのアップグレードのみを行う必要があります。コンピューティングノード、ストレージノード、ネットワークノード 起動後、管理・制御ソフトウェアは自動的にアップグレードされます。 • インテリジェントな UI インタラクション インターフェース: ユーザー エラーを回避するためのリアルタイムのリソース計算。 • リアルタイムのグローバル監視:リアルタイム監視とインテリジェントな割り当てにより、クラウドプラットフォーム全体のシステムリソースの現在の消費状況をリアルタイムで把握します。 IT ソフトウェアとハードウェアのリソースを節約します。 0x2 ディープラーニングプラットフォームの構築2.1 コンポーネントのデプロイメントの概要 これは、高性能数値計算用のオープンソース ソフトウェア ライブラリです。柔軟なアーキテクチャにより、ユーザーはさまざまなプラットフォーム (CPU、GPU、TPU) やデバイス (デスクトップ デバイス、サーバー クラスター、モバイル デバイス、エッジ デバイスなど) にコンピューティング作業を簡単に展開できます。 TensorFlow はもともと、機械学習とディープラーニングを強力にサポートするために Google Brain チームの研究者とエンジニアによって開発されたもので、その柔軟な数値計算コアは他の多くの科学分野でも広く使用されています。 NVIDIA CUDA ディープ ニューラル ネットワーク ライブラリ (cuDNN) は、ディープ ニューラル ネットワーク プリミティブ用の GPU アクセラレーション ライブラリです。 cuDNN は、前方および後方畳み込み、プーリング、正規化、および活性化レイヤーなどの標準ルーチンに対して高度に調整された実装を提供します。 cuDNN は NVIDIA Deep Learning SDK の一部です。 動作中のTensorflowの計算グラフや、各種指標の時間経過に伴う変化傾向、トレーニングに使用したデータ情報を効果的に表示できる可視化ツールです。 Jupyter は、ライブ コード、数式、視覚化、マークダウンをサポートし、文芸的なプログラム ドキュメントを簡単に作成して共有できるインタラクティブなノートブックです。一般的には、データのクリーニングと変換、数値シミュレーション、統計モデリング、機械学習などに使用されます。 2.2 クラウドプラットフォーム環境の準備 環境の紹介 ディープラーニング プラットフォームを構築するには、次の構成を使用します。 物理サーバーの構成 | GPU モデル | クラウドホストの構成 | クラウドホストシステム | IPアドレス | ホスト名 | インテル(R) i5-3470 DDR3 24G | | 8vCPU16G | CentOS7.4 | 192.168.66.6 | GPU-TF
|
今回は、通常の PC を使用して ZStack クラウド プラットフォームを展開します。クラウド プラットフォームの GPU 透過転送機能を使用して、NVIDIA Quadro P2000 グラフィックス カードを CentOS 7.4 仮想マシンに透過的に転送し、プラットフォームを構築します。 ZStack クラウド プラットフォームの展開手順の詳細については、公式ドキュメントを参照してください: https://www.zstack.io/help/product_manuals/user_guide/3.html#c3 2.2.1 クラウドホストを作成する 「クラウド リソース プール」を選択し、「クラウド ホスト」をクリックします。 「クラウド ホストの作成ボタン」をクリックして、クラウド ホストの作成ページを開きます。 クラウド ホストを作成する手順: 1. 追加方法を選択します。プラットフォームは、単一のクラウド ホストの作成と複数のクラウド ホストの作成をサポートしています。ニーズに応じて選択してください。 2. クラウドホスト名を設定します。管理や保守を容易にするために、業務システム名にちなんだ名前を付けることをお勧めします。 3. コンピューティング仕様を選択します。定義されたコンピューティング仕様とビジネス ニーズに基づいて適切なコンピューティング仕様を選択します。 4. 画像テンプレートを選択します。ビジネスニーズに応じて対応する画像テンプレートを選択します。 5. 3層ネットワークを選択します。新しいバージョンでは、プラットフォームの 3 層ネットワークは IPv4 と IPv6 の両方をサポートします。ビジネスニーズに合わせてお選びください。クラウド ホストを作成するときに、ネットワーク カードのプロパティを設定することもできます。 6. 設定が正しいことを確認したら、「OK」をクリックして作成を開始します。 2.2.2 GPU透過操作 クラウド ホスト名をクリックし、[構成情報] をクリックします。 GPU デバイス タブを見つけて、[操作] をクリックし、[ロード] を選択して、クラウド ホストが直接使用する対応する GPU デバイスを選択します。 0x3 展開を開始 3.1 動作環境の準備 - pipをインストールする
-
- # カール https://bootstrap.pypa.io/get-pip.py -o get-pip.py
-
- # python get-pip.py
-
- # pip
-
- /usr/lib/python2.7/site-packages/pipからのpip 18.1 (python 2.7)
-
- # python
-
- Python 2.7.5
-
- GCC G++をインストールする
-
- # yum で gcc gcc-c++ をインストールします
-
- # gcc
-
- gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
-
- 必要なパッケージをインストールする
-
- #yum -y zlib をインストールします*
-
- #yum インストール openssl-devel -y
-
- #yum sqliteをインストール* -y
-
- CentOS のデフォルトの Python 2.7.5 バージョンを 3.6.5 にアップグレードします。
-
- Pythonソースパッケージをダウンロード
-
- # wget -c https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
-
- ソースパッケージを解凍する
-
- # tar -zvxf Python-3.6.5.tgz
-
- ソースディレクトリを入力してください
-
- # cd Python-3.6.5/
-
- # ./configure
-
- コンパイルしてインストールする
-
- # 作成 && インストール
-
- 新しくインストールされたpython3のファイルの場所を確認する
-
- # ll /usr/ローカル/bin/python*
- デフォルトのPythonバージョンを3.xに設定する
-
- # mv /usr/bin/python /usr/bin/python.bak
- # ln -s /usr/ローカル/bin/python3 /usr/bin/python
-
- バージョン2.xのファイルの場所を確認する
-
- # ll /usr/bin/python*
- yumコマンドが正しく動作するためには、Pythonをバージョン2.xを指すように設定する必要があります。
-
- # vim /usr/bin/yum
-
- #vim /usr/libexec/urlgrabber-ext-down
-
- 上記の2つのファイルのヘッダーファイルを古いバージョンに変更するだけです
- !/usr/bin/python
-
- python-devとpython-pipをインストールする
-
- # yum インストール python-dev python-pip -y
-
- 組み込みのNouveauドライバーを無効にする
-
- ヌーボーの使用
-
- lsmod コマンドgrep 初心者
-
- ヌーボー 1662531 0
-
- mxm_wmi 13021 1 新しい
-
- wmi 19086 2 mxm_wmi、新しい
-
- ビデオ 24538 1 新規
-
- i2c_algo_bit 13413 1 新規
-
- drm_kms_helper 176920 2 qxl、ヌーボー
-
- ttm 99555 2 qxl、新しい
-
- drm 397988 5 qxl、ttm、drm_kms_helper、nouveau
-
- i2c_core 63151 5 drm、i2c_piix4、drm_kms_helper、i2c_algo_bit、nouveau
-
- #vim /usr/lib/modprobe.d/dist-blacklist.conf
-
- #ヌーボー
-
- ブラックリストヌーボー
-
- オプション nouveau modeset=0
-
- :wq 保存して終了
-
- # mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak バックアップ ブート イメージ
-
- # dracut /boot/initramfs-$(uname -r).img $(uname -r) ブートイメージを再構築します
-
- # 再起動
-
- lsmod を実行します。 grep nouveau 無効化が有効かどうかを再度確認します
|
3.2 CUDAをインストールする - カーネルをアップグレードします。
-
- # rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
-
- # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
-
- # yum -y --enablerepo = elrepo -kernel をインストール kernel-ml.x86_64 kernel-ml-devel.x86_64
-
- カーネル バージョンのデフォルトの起動順序を表示します。
-
- awk -F\' '$ 1 == "メニューエントリ " {印刷 $2}' /etc/grub2.cfg
-
- CentOS Linux (4.20.0-1.el7.elrepo.x86_64) 7 (コア)
-
- CentOS Linux (3.10.0-862.el7.x86_64) 7 (コア)
-
- CentOS Linux (0-rescue-c4581dac5b734c11a1881c8eb10d6b09) 7 (コア)
-
- #vim /etc/default/grub
-
- GRUB_DEFAULT =保存済みGRUB_0 =保存済みに変更
-
- grub2-mkconfigコマンドを実行してカーネル構成を再作成します。
-
- # grub2-mkconfig -o /boot/grub2/grub.cfg
-
- #リブート
-
- # uname -r 再起動後にカーネルバージョンを確認する
-
- 4.20.0-1.el7.elrepo.x86_64
-
- CUDA Toolkit をインストールするには 2 つの方法があります。
-
- パッケージのインストール (RPM および Deb パッケージ)
- 実行ファイルのインストール
- ここではRunfileモードを使用してインストールすることを選択します
-
- インストール パッケージのダウンロード: https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
-
- オペレーティング システムに応じてインストール パッケージをフィルターし、ダウンロードします。ダウンロードリンクをコピーし、wget -cコマンドを使用して直接ダウンロードします。
-
- # wget -c https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
-
- #chmod +x cuda_10.0.130_410.48_linux
-
- #./cuda_10.0.130_410.48_linux
-
- 先ほど読んだ EULA に同意しますか?
-
- 承諾/辞退/辞退: 承諾
-
- Linux-x86_64 410.48 用の NVIDIA アクセラレーテッド グラフィックス ドライバーをインストールしますか?
-
- (はい)/(いいえ)/(き): y
-
- CUDA 10.0 ツールキットをインストールしますか?
-
- (はい)/(いいえ)/(き): y
-
- ツールキットの場所を入力
-
- [ デフォルトは /usr/local/cuda-10.0 ]:
-
- /usr/local/cuda にシンボリックリンクをインストールしますか?
-
- (はい)/(いいえ)/(き): y
-
- CUDA 10.0 サンプルをインストールしますか?
-
- (はい)/(いいえ)/(き): y
-
- CUDAサンプルの場所を入力
-
- [ デフォルトは /root ]:
-
- CUDA ランタイム環境変数を設定します。
-
- # vim /etc/プロファイル
-
- # CUDA
-
- PATHをエクスポート=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
-
- LD_LIBRARY_PATHを /usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} にエクスポートします。
-
- # ソース /etc/profile
-
- バージョンを確認する
-
- # nvcc --バージョン
-
- nvcc: NVIDIA (R) Cuda コンパイラ ドライバー
-
- 著作権 (c) 2005-2018 NVIDIA Corporation
-
- Sat_Aug_25_21:08:01_CDT_2018 に作成
-
- Cuda コンパイル ツール、リリース 10.0、V10.0.130
-
- 次の例を使用して、CUDA が正常かどうかを確認します。
-
- #cd /root/NVIDIA_CUDA-10.0_Samples/1_Utilities/deviceQuery
-
- # 作る
-
- "/usr/local/cuda-10.0"/bin/nvcc -ccbin g++ -I../../common/inc -m64 -gencode arch = compute_30 、 code = sm_30 -gencode arch = compute_35 、 code = sm_35 -gencode arch = compute_37 、 code = sm_37 -gencode arch = compute_50 、 code = sm_50 -gencode arch = compute_52 、 code = sm_52 -gencode arch = compute_60 、 code = sm_60 -gencode arch = compute_61 、 code = sm_61 -gencode arch = compute_70 、 code = sm_70 -gencode arch = compute_75 、 code = sm_75 -gencode arch = compute_75 、 code = compute_75 -oデバイスクエリ.o -c デバイスクエリ.cpp
-
- "/usr/local/cuda-10.0"/bin/nvcc -ccbin g++ -m64 -gencode arch = compute_30 、 code = sm_30 -gencode arch = compute_35 、 code = sm_35 -gencode arch = compute_37 、 code = sm_37 -gencode arch = compute_50 、 code = sm_50 -gencode arch = compute_52 、 code = sm_52 -gencode arch = compute_60 、 code = sm_60 -gencode arch = compute_61 、 code = sm_61 -gencode arch = compute_70 、 code = sm_70 -gencode arch = compute_75 、 code = sm_75 -gencode arch = compute_75 、 code = compute_75 -o deviceQuery deviceQuery.o
-
- mkdir -p ../../bin/x86_64/linux/リリース
-
- cp デバイスクエリ ../../bin/x86_64/linux/release
-
- # cd ../../bin/x86_64/linux/release/
-
- # ./デバイスクエリ
-
- #./deviceQuery 開始しています...
-
- CUDA デバイス クエリ (ランタイム API) バージョン (CUDART 静的リンク)
-
- CUDA 対応デバイスが 1 台検出されました
-
- デバイス 0:「Quadro P2000」
-
- CUDA ドライバー バージョン / ランタイム バージョン 10.0 / 10.0
-
- CUDA 機能メジャー/マイナー バージョン番号: 6.1
-
- グローバルメモリの合計量: 5059 MBytes (5304745984 バイト)
-
- (8) マルチプロセッサ、(128) CUDA コア/MP: 1024 CUDA コア
-
- GPU 最大クロック レート: 1481 MHz (1.48 GHz)
-
- メモリクロックレート: 3504 MHz
-
- メモリバス幅: 160 ビット
-
- L2 キャッシュ サイズ: 1310720 バイト
-
- 最大テクスチャ次元サイズ (x,y,z) 1D =(131072)、 2D =(131072, 65536)、 3D =(16384, 16384, 16384)
-
- 最大レイヤー 1D テクスチャ サイズ、(num) レイヤー1D =(32768)、2048 レイヤー
-
- 最大レイヤー 2D テクスチャ サイズ、(num) レイヤー2D =(32768, 32768)、2048 レイヤー
-
- 定数メモリの合計量: 65536 バイト
-
- ブロックあたりの共有メモリの合計量: 49152 バイト
-
- ブロックあたりの使用可能なレジスタの総数: 65536
-
- ワープサイズ: 32
-
- マルチプロセッサあたりの最大スレッド数: 2048
-
- ブロックあたりの最大スレッド数: 1024
-
- スレッド ブロックの最大次元サイズ (x,y,z): (1024, 1024, 64)
-
- グリッド サイズの最大次元サイズ (x,y,z): (2147483647, 65535, 65535)
-
- 最大メモリピッチ: 2147483647 バイト
-
- テクスチャアラインメント: 512 バイト
-
- 同時コピーとカーネル実行: 2 つのコピー エンジンで可能
-
- カーネルの実行時間制限: なし
-
- 統合GPU共有ホストメモリ: いいえ
-
- ホストページロックメモリマッピングをサポート: はい
-
- サーフェスの配置要件: はい
-
- デバイスはECCをサポートしています: 無効
-
- デバイスは統合アドレス指定 (UVA) をサポートしています: はい
-
- デバイスはコンピューティングプリエンプションをサポートしています: はい
-
- 協調カーネル起動をサポート: はい
-
- マルチデバイスCo-opカーネル起動をサポート: はい
-
- デバイス PCI ドメイン ID / バス ID / ロケーション ID: 0 / 0 / 11
-
- 計算モード:
-
- < デフォルト(複数のホストスレッドが同時にデバイスで ::cudaSetDevice() を使用できます) >
-
- deviceQuery、CUDAドライバー= CUDART 、CUDA ドライバーバージョン= 10.0 、CUDA ランタイムバージョン= 10.0 、 NumDevs = 1
-
- 結果=合格
-
- 結果= PASSであり、テスト中にエラーが報告されないため、テストが合格したことを示します。
3.3 cuDNNをインストールする cuDNN は NVIDIA CUDA® Deep Neural Network ライブラリの略で、ディープ ニューラル ネットワークの基本操作専用に NVIDIA が設計した GPU ベースのアクセラレーション ライブラリです。 cuDNN は、ディープ ニューラル ネットワークにおける標準プロセスの高度に最適化された実装を提供します。 - インストール パッケージをダウンロードします: https://developer.nvidia.com/rdp/cudnn-download
-
- 注意: ダウンロードする前に、NVIDIA 開発者プログラムに登録する必要があります。
- ご自身の環境に合わせて、ダウンロードするバージョンを選択してください。このバージョンでは認証が必要であり、ブラウザ経由でのみダウンロードしてクラウド ホストにアップロードできます。
-
- インストール:
-
- #rpm -ivh libcudnn7-7.4.2.24-1.cuda10.0.x86_64.rpm libcudnn7-devel-7.4.2.24-1.cuda10.0.x86_64.rpm libcudnn7-doc-7.4.2.24-1.cuda10.0.x86_64.rpm
-
- 準備中... ################################### [100%]
-
- アップグレード/インストール中...
-
- 1:libcudnn7-7.4.2.24-1.cuda10.0 ################################ [ 33%]
-
- 2:libcudnn7-devel-7.4.2.24-1.cuda10################################### [67%]
-
- 3:libcudnn7-doc-7.4.2.24-1.cuda10.0################################### [100%]
-
- cuDNN を検証します。
-
- # cp -r /usr/src/cudnn_samples_v7/ $HOME
-
- # cd $HOME/cudnn_samples_v7/mnistCUDNN
-
- # クリーンにする && 作る
-
- rm -rf *o
-
- rm -rf mnistCUDNN
-
- /usr/ローカル/cuda/bin/nvcc -ccbin g++ -I/usr/ローカル/cuda/include -IFreeImage/include -m64 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_53,code=compute_53 -o fp16_dev.o -c fp16_dev.cu
-
- g++ -I/usr/ローカル/cuda/include -IFreeImage/include -o fp16_emu.o -c fp16_emu.cpp
-
- g++ -I/usr/ローカル/cuda/include -IFreeImage/include -o mnistCUDNN.o -c mnistCUDNN.cpp
-
- /usr/ローカル/cuda/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_53,code=compute_53 -o mnistCUDNN fp16_dev.o fp16_emu.o mnistCUDNN.o -I/usr/ローカル/cuda/include -IFreeImage/include -LFreeImage/lib/linux/x86_64 -LFreeImage/lib/linux -lcudart -lcublas -lcudnn -lfreeimage -lstdc++ -lm
-
- # ./mnistCUDNN
-
- cudnnGetVersion() : 7402、cudnn.hからのCUDNN_VERSION : 7402 (7.4.2)
-
- ホストコンパイラバージョン: GCC 4.8.5
-
- お使いのマシンにはCUDA 対応デバイスが 1 つあります:
-
- デバイス 0: SMS 8 機能 6.1、SmClock 1480.5 Mhz、MemSize (Mb) 5059、MemClock 3504.0 Mhz、Ecc=0、boardGroupID=0
-
- デバイス0を使用
-
- 単精度のテスト
-
- 画像データを読み込んでいます/one_28x28.pgm
-
- 順方向伝播を実行しています...
-
- cudnnGetConvolutionForwardAlgorithm をテストしています...
-
- 最速のアルゴリズムはAlgo 1です
-
- cudnnFindConvolutionForwardAlgorithm をテストしています...
-
- ^^^^アルゴリズム 0のCUDNN_STATUS_SUCCESS: 0 メモリを必要とする0.036864時間
-
- ^^^^アルゴリズム 1のCUDNN_STATUS_SUCCESS: 0.044032時間、 3464 メモリが必要
-
- ^^^^アルゴリズム 2のCUDNN_STATUS_SUCCESS: 0.053248時間、 57600 メモリが必要
-
- ^^^^アルゴリズム 4のCUDNN_STATUS_SUCCESS: 0.116544時間、207360 メモリが必要
-
- ^^^^ Algo 7のCUDNN_STATUS_SUCCESS: 0.181248時間、2057744 メモリが必要
-
- Softmaxから得られる重み:
-
- 0.0000000 0.9999399 0.0000000 0.0000000 0.0000561 0.0000000 0.0000012 0.0000017 0.0000010 0.0000000
-
- 画像データを読み込んでいます/three_28x28.pgm
-
- 順方向伝播を実行しています...
-
- Softmaxから得られる重み:
-
- 0.0000000 0.0000000 0.0000000 0.9999288 0.0000000 0.0000711 0.0000000 0.0000000 0.0000000 0.0000000
-
- 画像データを読み込んでいます/five_28x28.pgm
-
- 順方向伝播を実行しています...
-
- Softmaxから得られる重み:
-
- 0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 0.9999820 0.0000154 0.0000000 0.0000012 0.0000006
-
- 分類結果: 1 3 5
-
- テスト合格!
-
- 半精度のテスト(単精度での計算)
-
- 画像データを読み込んでいます/one_28x28.pgm
-
- 順方向伝播を実行しています...
-
- cudnnGetConvolutionForwardAlgorithm をテストしています...
-
- 最速のアルゴリズムはAlgo 1です
-
- cudnnFindConvolutionForwardAlgorithm をテストしています...
-
- ^^^^アルゴリズム 0のCUDNN_STATUS_SUCCESS: 0 メモリを必要とする0.032896時間
-
- ^^^^アルゴリズム 1のCUDNN_STATUS_SUCCESS: 0.036448時間、 3464 メモリが必要
-
- ^^^^アルゴリズム 2のCUDNN_STATUS_SUCCESS: 0.044000時間、 28800 メモリが必要
-
- ^^^^アルゴリズム 4のCUDNN_STATUS_SUCCESS: 0.115488時間、207360 メモリが必要
-
- ^^^^ Algo 7のCUDNN_STATUS_SUCCESS: 0.180224時間、 2057744 メモリが必要
-
- Softmaxから得られる重み:
-
- 0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001
-
- 画像データを読み込んでいます/three_28x28.pgm
-
- 順方向伝播を実行しています...
-
- Softmaxから得られる重み:
-
- 0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000
-
- 画像データを読み込んでいます/five_28x28.pgm
-
- 順方向伝播を実行しています...
-
- Softmaxから得られる重み:
-
- 0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006
-
- 分類結果: 1 3 5
-
- テスト合格!
-
- テスト合格!テスト中にエラーは報告されず、テストが合格したことが示されました。
3.4 TensorFlowをインストールする- # pip3 インストール
-
- # pip3 tf-nightly-gpu をインストールします
-
- 検証テスト:
-
- 次の短いプログラム コードを Python 対話型シェルに入力します。
-
- # パイソン
- テンソルフローをtfとしてインポートする
- hello = tf.constant( 'こんにちは、TensorFlow!' )
- セッション = tf.Session()
- 印刷(sess.run(hello))
-
- システムが次のように出力した場合、TensorFlow プログラムの作成を開始する準備が整っています。
-
- こんにちは、TensorFlow!
-
- 同時に、nvidia-smi コマンドを使用して、現在のグラフィック カードの処理タスクを確認します。
3.5 TensorBoard可視化ツールをインストールするTensorBoard を使用すると、TensorFlow グラフを表示したり、グラフによって生成された定量的なメトリックをプロットしたり、追加データ (渡された画像など) を表示したりできます。 pip 経由で TensorFlow をインストールすると、TensorBoard も自動的にインストールされます。 - バージョンを確認します:
-
- # pip3 テンソルボードを表示
-
- 名前: テンソルボード
-
- バージョン: 1.12.2
-
- 要約: TensorBoardを使用すると、TensorFlowを観察できます
-
- ホームページ: https://github.com/tensorflow/tensorboard
-
- 著者: Google Inc.
-
- 著者メールアドレス: [email protected]
-
- ライセンス: Apache 2.0
-
- 場所: /usr/lib/python2.7/site-packages
-
- 必要なもの: protobuf、numpy、futures、grpcio、wheel、markdown、werkzeug、six
-
- 必須- :
-
- サービスを開始します:
-
- # テンソルボード
-
- TensorBoard 1.13.0a20190107 ( http://GPU-TF:6006) (終了するにはCTRL+C を押してください)
-
- プロンプトに従ってブラウザにhttp://server IP:6006と入力します。
3.6 JupyterをインストールするJupyter は、ライブ コード、数式、視覚化、マークダウンをサポートし、文芸的なプログラム ドキュメントを簡単に作成して共有できるインタラクティブなノートブックです。一般的には、データのクリーニングと変換、数値シミュレーション、統計モデリング、機械学習などに使用されます。 - インストール:
-
- # sudo pip3 jupyter をインストール
-
- 設定ファイルを生成します:
-
- # jupyterノートブック
-
- デフォルト設定を次の場所に書き込みます: /root/.jupyter/jupyter_notebook_config.py
-
- Jupyter パスワードを生成します:
-
- # パイソン
-
- Python 3.6.5 (デフォルト、 2019 年 1 月 15 日、 02:51:51)
-
- [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] Linux上
-
- 「ヘルプ」 、 「著作権」 、 「クレジット」と入力してください または "ライセンス" 詳細についてはこちらをご覧ください。
-
- >>> notebook.authからpasswd をインポートします。
-
- >>> パスワード()
-
- パスワードを入力してください:
-
- パスワードを確認してください:
-
- 'sha1:6067bcf7350b:8407670bb3f94487c9404ed3c20c1ebf7ddee32e'
-
- >>>
-
- 生成されたハッシュ文字列を Jupyter 構成ファイルに書き込みます。
-
- # vim /root/.jupyter/jupyter_notebook_config.py
- サービスを開始する
-
- # jupyterノートブック
-
- ブラウザログイン
- パスワードを入力してログインすると、通常通りアクセスできます。
-
- テストタスクを実行します。
-
- TensorFlowデモサンプルを実行する
-
- Jupyter で新しい HelloWorld の例を作成します。コードは次のようになります。
-
- テンソルフローをtfとしてインポートする
-
- # TensorFlow を使用したシンプルな Hello World
-
- #定数オペレーションを作成する
-
- # オペレーションはデフォルトのグラフにノードとして追加されます。
-
- #
-
- #コンストラクタによって返される値は出力を表す
-
- 定数オペレーションの数。
-
- hello = tf.constant( 'こんにちは、TensorFlow!' )
-
- # tfセッションを開始
-
- sess = tf.Session()
-
- # オペレーションを実行する
-
- 印刷(sess.run(hello))
0x4 概要ZStack クラウド プラットフォームを使用することで、ディープラーニング プラットフォームを迅速に構築できます。クラウド プラットフォーム自体はそれほど複雑な構成を必要とせず、各種ドライバーやディープラーニング コンポーネントをインストールする場合も物理マシンと変わりません。ドライバーをインストールした後、パフォーマンステストを実行したところ、同じ構成の物理的および論理的パフォーマンスに匹敵するパフォーマンスが得られ、GPU 部分でのパフォーマンスの低下はありませんでした。 上記のソフトウェア環境が準備できたら、複数の GPU を構成し、テンプレートから複数のクラウドホストを作成して 1 対 1 の転送を行うことができます。 ZStack 自体のマルチテナント特性と組み合わせることで、複数の人が互いに影響を与えることなく同じ環境でアプリケーションを開発または実行できるため、真のディープラーニング「クラウド」プラットフォームになります。 |