20211013のTensorFlowに関する記事は2件です。

CentOS7でGPU環境構築

深層学習モデルをGPUで動かしたい!!! ただ自分が無知でめちゃくちゃに時間がかかったので、そんな人がもう現れないために。 前提 OS:CentOS Linux release 7.9.2009 GPU:TU106 [GeForce RTX 2060 SUPER] Tensorflow:2.2.0 バージョン確認 結局これが一番大事、、 TensorflowとCUDA,cuDNNのバージョン確認 → https://www.tensorflow.org/install/source#tested_build_configurations 以下のURLにもいろいろと。 → https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html 環境構築手順 ①NVIDIAドライバーをインストールする まず、デフォルトのnouveau ドライバーを無効化するらしいです。 ただ、私は最初から何もなかったので飛ばしました。 $ lsmod | grep nouveau $ vi /etc/modprobe.d/blacklist-nouveau.conf # 最終行に追記 (ファイルがない場合は新規作成) $ blacklist nouveau $ options nouveau modeset=0 $ dracut --force $ reboot 必要なパッケージをインストール。 $ yum -y install kernel-devel-$(uname -r) kernel-header-$(uname -r) gcc make NVIDIAサイトより、コンピューターに搭載されているグラフィックカード用のドライバーをダウンロード。 → https://www.nvidia.com/Download/index.aspx?lang=en 調べる際、OSとGPUがなんなのかは以下のコマンドでわかります。 #OS $ grep -H "" /etc/*version ; grep -H "" /etc/*release #GPU $ lspci | grep -i nvidia そしてインストール。 $ bash (ダウンロードしたドライバー) いろいろ聞かれますが、上手いこといけたらcompleateって言われます。 グラフィックカードの状態は、以下で確認できます。 $ nvidia-smi ②CUDAのインストール CUDA (Compute Unified Device Architecture) NVIDIA 社製グラフィックカードによる GPU コンピューティング GPGPU(General-Purpose computing on Graphics Processing Units) プラットフォーム 以下のURLから適切なリポジトリをダウンロードします。 → https://developer.nvidia.com/cuda-downloads Installer Typeはrpm(network)を選択しました。 コマンドを出してくれます。(ありがたい) $ sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo sudo yum clean all sudo yum -y install nvidia-driver-latest-dkms cuda sudo yum -y install cuda-drivers そしてインストール。 $ yum --enablerepo=epel -y install cuda-10-2 パスを通します。 $ vi /etc/profile.d/cuda102.sh # 新規作成 export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} $ source /etc/profile.d/cuda102.sh 念の為、~/.bashrcにも通してたら良いかも。 確認!! $ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Wed_Oct_23_19:24:38_PDT_2019 Cuda compilation tools, release 10.2, V10.2.89 操作確認できるらしいですけど、めんどくさいので省略しました。 ③cuDNNのインストール cuDNN は深層ニューラル ネットワークに対するプリミティブの GPU で高速化されたライブラリです。 インストールするのに会員登録的なのが必要です。 無料だしすぐ終わるので、パッと。 → https://developer.nvidia.com/cudnn 必ずCUDAと対応したバージョンをダウンロード!!!!! ダウンロードしたcuDNNを解凍したい場所にうつして、解凍したあとにいろいろとコピー。 $ tar zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz $ cp ./cuda/include/cudnn.h /usr/local/cuda-10.2/include/ $ cp -a ./cuda/lib64/libcudnn* /usr/local/cuda-10.2/lib64/ ②で作ったファイルにパスを通します。 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.2/extras/CUPTI/lib64 $source /etc/profile.d/cuda102.sh これで確認。 $ ldconfig -p | grep cudnn libcudnn.so.7 (libc6,x86-64) => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.7 libcudnn.so (libc6,x86-64) => /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so さて、、tensorflowが動くか確認しよう。 $ python >>> import tensorflow as tf >>> tf.test.is_gpu_available() ...#いろいろと出てます。 False False!!!!失敗やんけ、、、 エラー文を見てみると、こんな文が。 Could not load dynamic library 'libcudart.so.10.1'; dlerror: libcudart.so.10.1: cannot open shared object file: No such file or directory あ、CUDA-10.1もいるのか。ということで、10.2 と同様にインストール。 ただしバージョンは10.2のままにしておきました。 そしてまたtensorflowが動くか確認すると、 $ python >>> import tensorflow as tf >>> tf.test.is_gpu_available() ...#いろいろと出てます。 True うまくいきました。 他に出たエラー CNNを動かしたくて、GPU入れたのに以下のエラーが出ました。 tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. なんなの、、意味がわからないけど、調べたら解法ありました。 → https://qiita.com/ysuzuki19/items/b727bbcb45f1cad37630 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

言語処理100本ノック(2020)-75: 損失と正解率のプロット(TensorFlow)

言語処理100本ノック 2020 (Rev2)の「第8章: ニューラルネット」の75本目「損失と正解率のプロット」記録です。今は、コードを3行程度追加するだけでGoogle ColaboratoryでTensorBoard使えるので超楽勝です。 記事「まとめ: 言語処理100本ノックで学べることと成果」に言語処理100本ノック 2015についてはまとめていますが、追加で差分の言語処理100本ノック 2020 (Rev2)についても更新します。 参考リンク リンク 備考 75_損失と正解率のプロット.ipynb 回答プログラムのGitHubリンク 言語処理100本ノック 2020 第8章: ニューラルネット (PyTorchだけど)解き方の参考 【言語処理100本ノック 2020】第8章: ニューラルネット (PyTorchだけど)解き方の参考 まとめ: 言語処理100本ノックで学べることと成果 言語処理100本ノックまとめ記事 【Keras入門(3)】TensorBoardで見える化 kerasとTensorBoard ノートブックで TensorBoard を使用する JupyterでのTensorBoard使い方 環境 後々GPUを使わないと厳しいので、Goolge Colaboratry使いました。Pythonやそのパッケージでより新しいバージョンありますが、新機能使っていないので、プリインストールされているものをそのまま使っています。 種類 バージョン 内容 Python 3.7.12 Google Colaboratoryのバージョン google 2.0.3 Google Driveのマウントに使用 tensorflow 2.6.0 ディープラーニングの主要処理 第8章: ニューラルネット 学習内容 深層学習フレームワークの使い方を学び,ニューラルネットワークに基づくカテゴリ分類を実装します. ノック内容 第6章で取り組んだニュース記事のカテゴリ分類を題材として,ニューラルネットワークでカテゴリ分類モデルを実装する.なお,この章ではPyTorch, TensorFlow, Chainerなどの機械学習プラットフォームを活用せよ. 75. 損失と正解率のプロット 問題73のコードを改変し,各エポックのパラメータ更新が完了するたびに,訓練データでの損失,正解率,検証データでの損失,正解率をグラフにプロットし,学習の進捗状況を確認できるようにせよ. 回答 回答結果 こんな感じで正解率がグラフで表示され、右上のリフレッシュアイコン押せば状況が更新されます。 回答プログラム 75_損失と正解率のプロット.ipynb GitHubには確認用コードも含めていますが、ここには必要なものだけ載せています。Jupyterのコードなので、途中にmagicsを埋め込んでいます。 import tensorflow as tf from google.colab import drive drive.mount('/content/drive') %load_ext tensorboard def _parse_function(example_proto): # 特徴の記述 feature_description = { 'title': tf.io.FixedLenFeature([], tf.string), 'category': tf.io.FixedLenFeature([], tf.string)} # 上記の記述を使って入力の tf.Example を処理 features = tf.io.parse_single_example(example_proto, feature_description) X = tf.io.decode_raw(features['title'], tf.float32) y = tf.io.decode_raw(features['category'], tf.int32) return X, y BASE_PATH = '/content/drive/MyDrive/ColabNotebooks/ML/NLP100_2020/08.NeuralNetworks/' def get_dataset(file_name): ds_raw = tf.data.TFRecordDataset(BASE_PATH+file_name+'.tfrecord') return ds_raw.map(_parse_function).shuffle(1000).batch(32) train_ds = get_dataset('train') valid_ds = get_dataset('valid') model = tf.keras.Sequential( [tf.keras.layers.Dense( 4, activation='softmax', input_dim=300, use_bias=False, kernel_initializer='random_uniform') ]) model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['acc']) %tensorboard --logdir './logs' model.fit(train_ds, epochs=100, validation_data=valid_ds, callbacks=[tf.keras.callbacks.TensorBoard(log_dir='./logs')]) 回答解説 TensorBoard Extention読込 magicsを使ってTensorBoard の Extentionを読み込みます。 %load_ext tensorboard TensorBoard起動 同じくmagicsを使ってTensorBoard 起動。簡単です。ディレクトリ.logsにあるTensorBoardのデータを読み込みます(保存は訓練時に指定します)。 今回は、訓練中にも見られるようにするために訓練開始前に実行しています。 %tensorboard --logdir './logs' TensorBoardのコールバック指定 fit関数にコールバックでTensorBoardデータを格納するように指定します。当然、TensorBoard起動時とディレクトリを同一にします。 また、今回はvalidation_dataも指定しています。 model.fit(train_ds, epochs=100, validation_data=valid_ds, callbacks=[tf.keras.callbacks.TensorBoard(log_dir='./logs')])
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む