3Dcnn誤検知モデルのデバッグ(2)

ps:すでに狂っていて、遅すぎる(3dcnn)。それは私の許容範囲を超えています。前のブログの2番目の方法のデータは、60時間以上エポックの1/5しか実行されませんでした。(約6時間かかります。データの1/50を変換してエポックを実行します)。

1. 2番目の方法の入力データをより単純な最初の方法に単純化し、前のデータの1/50のみを取得します。それでも非常に遅いです。12時間で実行されたエポックはわずか1.5エポックです(エンポックの変換には8時間かかり、遅いです)落ち着いて速度が制限されているところを確認し、速度を上げるように調整するしかありません。データの読み取りと書き込みが原因で実行が遅くなると常に感じています。

 

2.まずhttps://www.cnblogs.com/bugutian/p/6138880.htmlブログの指示に従ってCPUの状況を確認します。

查看CPU信息(型号)
pacs@pacs-Z170X-UD3:~$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
      8  Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
查看物理CPU个数
pacs@pacs-Z170X-UD3:~$ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1
查看每个物理CPU中core的个数(即核数)
pacs@pacs-Z170X-UD3:~$ cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores    : 4
查看逻辑CPU的个数
pacs@pacs-Z170X-UD3:~$ cat /proc/cpuinfo| grep "processor"| wc -l
8
CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数 
总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数

上記の実行結果から、使用するコンピューターの物理CPUは1 * 4 = 4の物理コアであり、各物理コアには2つのハイパースレッドがあるため、論理CPUは8つであることがわかります。

私のCPUとGPUを見てみましょう

CPU:

トップ-11
:29:53アップ17:25、1ユーザー、負荷平均:15.53、15.42、15.22タスク:合計292、実行中1、スリープ中289、停止0、ゾンビ2
%CPU:8.3 us、4.0 sy 、0.0 ni、33.6 id、54.1 wa、0.0 hi、0.0 si、0.0 st
KiB Mem:合計49409720、2158676無料、14970332使用、32280712バフ/キャッシュ
KiBスワップ:合計15625212、15476768無料、148444使用。33094040アベイルズメモリ 

上記から、カップの平均荷重は非常に高く、約15に達していることがわかります。

33.6 id:アイドルCPU時間のパーセンテージ、54.1 wa:I / Oを待機しているCPU時間のパーセンテージもあります。アイドルおよびI / Ocpu時間を待機しているパーセンテージが高すぎます。

32280712バフ/キャッシュキャッシュとして使用されるスワップスペースは巨大です。

 

3.「grep-c 'モデル名' / proc / cpuinfo」コマンドは、CPUのコアの総数を直接返します。

pacs @ pacs-Z170X-UD3:〜$ grep 'モデル名' / proc / cpuinfo | wc -l
8

これは、8つのコアが使用されていることを示しています(2番目のポイントによると、1つの物理CPU、各CPUには4つの物理コアがあり、各コアには2つのハイパースレッドがあります。合計1つのCPUと8つのコア)

システム負荷に関しては、マルチコアCPUはマルチCPUと同様の効果があるため、システム負荷を検討するときは、コンピューターに搭載されているCPUの数と各CPUに搭載されているコアの数を考慮する必要があります。次に、システムの負荷をコアの総数で割ります。各コアの負荷が1.0を超えない限り、コンピューターは正常に動作しています。

1.0はシステム負荷の理想的な値ですか?
必ずしもそうとは限りませんが、システム管理者は少し余裕を持っていることがよくあります。この値が0.7に達したら、注意が必要です。経験則は次のとおりです。
システム負荷が0.7を超え続ける場合は、問題がどこにあるかを調査し始め、状況が悪化するのを防ぐ必要があります。
システム負荷が引き続き1.0を超える場合は、この値を下げるための解決策を見つけ始める必要があります。
システム負荷が5.0に達すると、システムに重大な問題があるか、長時間応答していないか、クラッシュに近づいていることを示します。システムをこの値に到達させないでください。

参照:https//blog.csdn.net/jackliu16/article/details/79382993

私のコンピューターには8コアがあるので、負荷は5.6の方が適切で、速度は最大8になります。これで15に達し、ブロックされました。

したがって、num_workersのサイズをリセットして、その値が5.6〜8になるようにします。

もう一度投稿する

DataLoaderの機能は次のように定義されています。

DataLoader(dataset、batch_size = 1、shuffle = False、sampler = None、num_workers = 0、collat​​e_fn = default_collat​​e、pin_memory = False、drop_last = False)

1.データセット:ロードされたデータセット(データセットオブジェクト)
2。batch_size:バッチサイズ
3.シャッフル::データをシャッフルするかどうか
4.サンプラー:サンプルサンプリング。これについては後で詳しく説明し
ます。5。num_workers:プロセスの数複数のプロセスによってロードされます。0は複数のプロセスを使用しないことを意味します
。6。collat​​e_fn:複数のサンプルデータをバッチにスプライスする方法
通常はデフォルトのスプライス方法を使用します。7。pin_memory:データをピンメモリ領域に保存するかどうか、データをピンメモリが転送されますGPUはより高速になり
ます8.drop_last:データセット内のデータ数はbatch_sizeの整数倍ではない可能性があり、drop_lastがTrueの場合、1バッチ未満の余分なデータは破棄されます
 

 

 

おすすめ

転載: blog.csdn.net/qq_36401512/article/details/89468458