記事ディレクトリ
導入
TensorFlow は、研究者が高度な機械学習テクノロジーを進歩させるのに役立つ、ツール、ライブラリ、コミュニティ リソースの包括的かつ柔軟なエコシステムを提供する、エンドツーエンドのオープンソース機械学習プラットフォームです。TensorFlow 機械学習フレームワークの下では、開発者は機械学習を利用したアプリケーションを簡単に構築してデプロイできます。[2]
Keras は、ラピッド プロトタイピング、高度な研究、生産に適した高レベルのニューラル ネットワーク API です。TensorFlow へのインターフェイスとして、さまざまな深層学習フレームワークと互換性があります。Keras の中核となるデータ構造は、ネットワーク層を編成する方法であるモデルです。最も単純なモデルは Sequential シーケンシャル モデルで、線形に積み重ねられた複数のネットワーク層で構成されます。より複雑な構造の場合は、任意のニューラル ネットワーク グラフの構築を可能にする Keras 関数 API を使用する必要があります。Keras はもともと研究者向けに迅速な実験を行うために開発されたもので、同じコードを CPU または GPU で実行する間でシームレスに切り替えることができるという特徴があり、ディープ ラーニング モデルのプロトタイプを簡単かつ迅速に開発するためのユーザーフレンドリーな API も備えています。
Keras は、sklearn のような API インターフェイスを使用して tensorflow を呼び出し、sklearn 機械学習から切り替えて、簡単に開始できるようにします。
Tenforflow2.0以降はkerasが直接組み込まれています。
実行中のハードウェア
TensorFlow は CPU と GPU での実行をサポートします。GPU (グラフィックス プロセッシング ユニット) は、コンピューティングを高速化するために特別に設計されたハードウェアであり、ディープ ラーニング モデルのトレーニングを大幅に高速化できます。比較的言えば、CPU (中央処理装置) の各コアはより強力な処理能力を持っていますが、その数は通常非常に限られているため、大きなデータを処理する場合には十分なパフォーマンスが得られません。
TensorFlow GPU と CPU の主な違いは、コンピューティング タスクを処理するためにハードウェアがどのように使用されるか、および処理速度の違いです。CPU 上では、TensorFlow は利用可能なすべての CPU コアを利用してタスクを分散しますが、完了までに数分から数時間かかる場合があります。GPU では、TensorFlow は CUDA (Compute Unified Device Architecture) テクノロジーを使用して並列コンピューティングに GPU を活用し、トレーニング プロセスを高速化します。これは、GPU には CPU の数十コアよりもはるかに多い数百から数千の小さなコアがあるためです。 。これにより、TensorFlow は、特に大規模な深層学習タスクを処理する場合に、GPU 上でより高速なトレーニング速度とより高いスループットを実現できます。
もう 1 つ注意すべき点は、コンピューターに専用の GPU がインストールされていない場合は、TensorFlow GPU を使用できないことです。この場合、TensorFlow はデフォルト オプションとして CPU を使用しますが、トレーニング プロセスは GPU よりもはるかに遅くなります。したがって、多数の深層学習トレーニング タスクを実行する必要がある場合は、トレーニングを高速化するために少なくとも 1 つの GPU を搭載したコンピューターを使用することをお勧めします。
つまり、TensorFlow GPU と CPU の違いは、ハードウェア アーキテクチャ、並列計算能力、および処理速度にあります。大規模な深層学習トレーニングを行う場合、GPU を使用するとトレーニング速度とスループットが大幅に向上しますが、小規模なタスクや専用 GPU を持たないコンピューターの場合は CPU を使用する必要があります。
クダとカドン
CUDA (Compute Unified Device Architecture) は、NVIDIA によって開発された並列コンピューティング プラットフォームおよびプログラミング モデルで、開発者が標準の C/C++ 言語を使用して高性能 GPU ベースのアプリケーションを作成できるようにします。CUDA には、プログラマブル カーネル言語 (CUDA C/C++)、並列コンピューティング ライブラリ (CUDA Toolkit) に加え、NVIDIA GPU での高性能並列コンピューティングをサポートするドライバーとハードウェア アーキテクチャが含まれています。GPU は CPU に比べてタスクを並列処理する際のパフォーマンスがはるかに高いため、CUDA はディープラーニング、科学技術コンピューティング、ハイパフォーマンス コンピューティングなどの分野で広く使用されています。[2]
cuDNN (CUDA ディープ ニューラル ネットワーク ライブラリ) は、NVIDIA CUDA の高速化ライブラリであり、ディープ ニューラル ネットワーク モデルのトレーニングと推論を高速化するための高度に最適化されたローカル関数のセットを提供します。cuDNN は主に、畳み込みニューラル ネットワーク (CNN) やリカレント ニューラル ネットワーク (RNN) などの深層学習モデルの最適化に使用され、トレーニングと推論の速度を高速化します。cuDNN は、TensorFlow、PyTorch、Caffe などを含むさまざまな深層学習フレームワークをサポートしています。[1]
したがって、CUDA は GPU コンピューティング プラットフォームおよびプログラミング モデルであり、cuDNN はディープ ラーニング モデルのトレーニングと推論を高速化するために特別に設計された高速化ライブラリの 1 つです。これら 2 つのテクノロジーを組み合わせることで、GPU の高性能並列コンピューティングとディープ ラーニング モデルの最適化を実現し、ディープ ラーニング タスクの全体的なパフォーマンスを向上させることができます。
tensorflow のバージョンが異なれば、必要な cuda および cuddn のバージョンも異なります。Google 公式 Web サイト ( https://tensorflow.google.cn/install/source_windows?hl=en ) で確認できます。
コンピューターに GPU が搭載されている場合は、tensorflow-gpu をインストールすることをお勧めしますが、コンピューターに GPU が搭載されていない場合は、パフォーマンスの悪い tensorflow をインストールします。
タスク マネージャー - パフォーマンスを開き、GPU をサポートしているかどうかを確認します。
ここから、私の CPU が Nvidia の gtx1050 であることがわかります。
コンピューターにグラフィック カード ドライバーがインストールされている場合は、cuda が付属している必要があります。nvidia-smi コマンドを使用して確認できます。
テンソルフローのインストール。
テンソルフローのバージョン
tensorflow-gpu の実行には少なくとも 4 GB の GPU メモリが必要で、モデルのトレーニング時に大量のコンピューティング リソースが必要になります。Tensorflow-cpu は CPU 用に特別に設計されたバージョンであり、GPU メモリを必要とせずに CPU 上で効率的に実行できます。一般的な PC コンピュータ環境では、より適した tensorflow-cpu を使用することをお勧めします。もちろん、将来 GPU をアップグレードする予定がある場合は、tensorflow-gpu の使用を検討できます。
アナコンダをインストールする
まず、Anaconda をインストールします。チュートリアル:
コマンド ラインを開きます。
同時に、パッケージが多すぎると conda のインストールが非常に遅くなり、クラッシュするため、anaconda の代わりとなる mamba を使用することをお勧めします。 . Mamba は基本的に pip の速度と一致します, 公式ウェブサイト。
ウィンドウでpowershellを開き、Webコマンドを実行して圧縮パッケージをダウンロードします
mkdir d:\green\mamba && cd d:\green\mamba
Invoke-Webrequest -URI https://micro.mamba.pm/api/micromamba/win-64/latest -OutFile micromamba.tar.bz2
tar xf micromamba.tar.bz2
たとえば、ここでダウンロードしたものでは、解凍パスを path 環境変数に直接追加します。
他のコマンドは conda と同じです。
micromamba env list
micomamba activate base
Python環境を作成する
python3.7バージョンを使用することを前提として、別ディスクに環境を作成します。
conda create --prefix=d:\condaenv\env_name python=3.7
micromamba create --prefix=d:\condaenv\env_name python=3.7 -c conda-forge
スイッチ
activate d:\condaenv\env_name
(d:\condaenv\env_name) C:\Users\liaomin>python --version
Python 3.7.4
tensorflow GPU をインストールする
バージョン図から
、python3.7 バージョンを使用して tensorflow-gpu 2.0.0 以降のすべてのバージョンをインストールできることが確認できます。
#设置镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
#安装tensorflow-gpu
conda install tensorflow-gpu==2.6.0
#或者(建议用mamba)
micomamba install tensorflow-gpu==2.6.0
#如果是cpu版本直接
micomamba install tensorflow==2.6.0
インストールが完了したら、急いで cuddn と cuda をインストールする必要はなく、まず helloworld を書いてテストします。
pycharmの設定
conda環境を構成する
プロジェクト純粋な Python プロジェクトを作成し、プロジェクト インタープリターをクリックし、既存のインタープリターを選択し、右側をクリックして...
conda 環境を選択
して [ok] をクリックし、インタープリターのドロップダウン ボックスで新しく作成したインタープリターを選択します。
helloworld コードを書く
import tensorflow as tf
# 创建一个常量张量
x = tf.constant([1, 2, 3])
# 创建一个变量张量
y = tf.Variable([3, 2, 1])
# 计算两个张量的和
z = tf.add(x, y)
# 输出结果
print(z.numpy())
実行すると、結果[4 4 4]は出力できますが、赤色の警告が表示されます。
2023-05-06 16:43:35.610912: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
#下面这段是安装好cuda后报的错。
2023-05-06 17:37:38.727999: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudnn64_8.dll'; dlerror: cudnn64_8.dll not found
2023-05-06 17:37:38.728345: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1835] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
2023-05-06 17:37:38.729310: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
明らかに、cuda と cudnn がありません。cudart64_110.dll がないからといって、cuda が 110 バージョンであることを意味するわけではありません。実際、11.2 をインストールした後は同じ DLL になります。
juypternotebook を構成する
anaconda プロンプトを開き、新しい環境をアクティブ化し、jupyter をインストールします。
conda install jupyter notebook
#或者(建议用mamba)
micomamba install jupyter notebook
pycharm を右クリックしてノートブックを作成し
、前の helloword コードを入力し、実行またはデバッグを選択して、
右側に結果を出力します。
cudaをインストールする
バージョン図から、tensorflow-gpu 2.6.0 には cuda 11.2 をインストールする必要があることがわかります。
cpu版であればインストールする必要はありません。
cuda 履歴バージョンのダウンロード場所, 対応するバージョンをダウンロードしてインストールします。3
つのバージョンがあります。最も高い 11.2.2 を選択します。
クリックして入力し、ウィンドウのバージョンを選択します。
デフォルトのインストール パスは C:\Program Files\NVIDIA GPU Computing Toolkit です。 \CUDA.
[コンピューターの設定] -> [システム] - -> [システムの詳細設定] -> [環境変数] -> [システム変数] -> [PATH] を開きます。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin を環境変数 PATH に追加します。
cmd を実行して nvidia-smi を再実行すると、バージョンが更新されており、
以前に存在しなかった cudart64_110.dll が実際に C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin に存在することがわかりました。
cudnn をインストールする
バージョン図から、tensorflow-gpu 2.6.0 は cudnn 8.1 をインストールする必要があることがわかります。 cudnn
履歴バージョンのダウンロード場所、対応するバージョン 8.1 をダウンロード、cudnn をダウンロードし、nvidia を登録する必要があります。
Windows (x86) 用の cudnn ライブラリを選択し、クリックしてダウンロードします。cudnn
フォルダーを開き
、上記の cudnn 内のファイルを cuda の対応するフォルダー ディレクトリに移動またはコピーします。
現時点では、helloworld プログラムは GPU を使用して正常に実行されています。
2023-05-06 19:01:23.403530: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-05-06 19:01:24.075663: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 1320 MB memory: -> device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1
[4 4 4]
blas をインストールする
TensorFlow は、C++ で書かれたオープンソースの機械学習フレームワークで、CPU と GPU での計算の実行をサポートします。TensorFlow では、BLAS (Basic Linear Algebra Subprograms) ライブラリは、行列の乗算やベクトルの加算などの線形代数計算を実行するための重要なライブラリです。これらの操作は機械学習では非常に一般的なため、BLAS ライブラリは TensorFlow のパフォーマンスと安定性に不可欠です。
Python 環境に切り替え、次のコマンドを使用して BLAS ライブラリをインストールします。
conda install blas
#或者(建议用mamba)
micomamba install openblas
インストール完了後、ダイナミック リンク ライブラリがインストールされているため、anaconda ベース環境にインストールされたままになりますので、ダイナミック リンク ライブラリの場所を見つけます。
C:\Users\你的用户名\anaconda3\pkgs\blas-2.116-blis\Library\bin
上記のパスを環境変数 PATH に追加します。tensorflow が追加されていない場合は、エラーが報告され、blas が見つかりません。
次のコード テストを実行します。
python -c "import tensorflow as tf; print(tf.linalg.matmul(tf.ones([1, 2]), tf.ones([2, 2])))"
演算結果
(d:\condaenv\env_name) C:\Users\liaomin>python -c "import tensorflow as tf; print(tf.linalg.matmul(tf.ones([1, 2]), tf.ones([2, 2])))"
2023-05-10 09:39:23.654612: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-05-10 09:39:24.372107: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 1320 MB memory: -> device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1
tf.Tensor([[2. 2.]], shape=(1, 2), dtype=float32)
クラウドサーバー稼働中
クラウド サーバーは、高性能の CPU および GPU コンピューティング サーバーを提供しており、個人の開発者にとっては非常に安価で、数十ドル、半月でのフラッシュ セールも多くあり、強力なコンピューティング機能を提供できます。大量のコンピューティング リソースを必要とする TensorFlow プログラムの場合、Tencent Cloud Server を使用するとコンピューティング効率が向上します。
クラウドサーバーの選択
ここでの私の最初の選択肢は autodl (シャットダウン時の控除なし、GPU は時間単位で課金され、1 時間あたり 0.5 ~ 2 元、データセットとミラー (chatglm ミラーなど)、CUDA はすべてインストールされています)、次に Tencent です。クラウド(新規ユーザーにはフラッシュセールがあり、15日間で60元はまだお得です)、個人に優しく、WeChatでログインし、WeChatで支払うことができます。
右側の GPU サーバーは、ニューラル ネットワークを実行するための個人学習に適した GPU 8GB です。
購入時に、システムの tensorflow バージョンを選択します: unbuntu. 私が選択した: TensorFlow 2.8.0 Ubuntu 18.04 GPU 基本イメージ (プリインストールされた 460 ドライバー). 環境をインストールするウィンドウを自分で選択しないでください. 弊社の pycharm があるため面倒ですリモート ssh プログラミングをサポートしており、サーバーで実行され、結果が pycharm に表示されます。
ubuntu パスワードをリセットすると (デフォルトのシステム アカウントは root ではなく ubuntu です)、ホストによってパブリック ネットワーク アドレスが割り当てられます。
pycharmの設定
コードの自動同期
/homt/ubuntu ユーザー ディレクトリに新しい deeplearn ディレクトリを作成して、ローカル コードをマップします。tools
-deployment-configuation
をクリックして sftp を選択し、アカウントのパスワードを入力して接続をテストします。
マッピング ディレクトリをクリックして、ローカル ディレクトリとリモート ディレクトリをマップします。
確認後、「デプロイメント」を右クリックして「アップロード」を
選択し、コードをアップロードします。「ツール」-「デプロイメント」-「リモートホストの参照」をクリックして、リモートディレクトリがアップロードされているかどうかを確認します(コードを保存して自動的にアップロードするには、「自動アップロード(常に)」にチェックを入れます)。
リモート通訳者
[ファイル]-[設定]-[プロジェクト (プロジェクト名)]-[プロジェクト インタープリターを追加] をクリックします。
パスワードを入力した後、次のステップは構成 Python ディレクトリに移動します。シェルを使用してリモート サーバーにログインして実行できます。
ubuntu@VM-0-5-ubuntu:~$ which python3
/usr/local/miniconda3/bin//python3
インタプリタで python3 へのパスを入力し、
そのインタプリタがプロジェクトに対して選択されていることを確認するだけです。
次に、ニューラル ネットワーク コードを開き、コードを右クリックして実行します。操作が ssh によって実行されていることがわかります。実行されたモデルは、実際にはリモート サーバー上にあります。brwoer リモート ホストを使用して右クリックして
、それをダウンロードしてローカルのものを上書きします。