情報詳細Q.学習時にGPUのメモリエラーが生じるのを防いだり、1つのGPUに複数のディープラーニングモデルを保持させておくためにモデルそれぞれのメモリ使用量を削減したいです。何か方法はありますか。A.下記にGPUのメモリ (VRAM) 使用量を削減する方法を列挙します。 optimize_for_inference を true にする (推論のみ)TensorRTを利用する (推論のみ、デバイスによっては効果なし)検出精度が満足できる範囲で image_width, image_height を小さくするbatch_size を小さくする実効バッチサイズを保ったまま batch_size を小さくするために batch_size_multiplier を併用する (学習時)enhanced ではなく compact を使用するなど、ベースネットワークが複数選択できる場合は軽量なものを使用する (CL/MCL/OD/AOD/SE/AD/OCR-D/OCR-R)min_level と max_level の差を小さくする (OD)capacity を変更する (OD)anchor_angles、anchor_aspect_ratios、anchor_num_subscales に指定する配列数を少なくする (OD)patch_size を大きくする (GC-ADのlocal_network)complexity を小さくする (AD)set_system ('cudnn_deterministic', 'true') を使用する(デバイスによっては効果なし・推論速度は低下) ※略称で示したモデル種別は下記の通りです モデル種別type日本語名GC-ADgc_anomaly_detectionグローバルアノマリー検出ADanomaly_detectionアノマリー検出 (GC-AD登場後はほぼ使用しません)CLclassification画像分類MLCmulti_label_classificationマルチラベル画像分類ODdetectionオブジェクト検出AODdetectionアドバンスドオブジェクト検出SEsegmentationセマンティックセグメンテーション・ディープラーニングベースエッジ検出OCR-Docr_detectionDeepOCR検出コンポーネントOCR-Rocr_recognitionDeepOCR認識コンポーネントDCcountingDeep Counting3D-GPD3d_gripping_point_detection3Dグリッピングポイント検出3D-PE3d_pose_estimation3D姿勢検出 (Deep 3D Matchingのサブコンポーネント) DeepLearningにおいて、モデルのメモリ使用量は様々なパラメータによって影響され、適用可能なパラメータはモデルの種別によっても異なります。最も手軽なものは、optimize_for_inference を適用すること、TensorRTを使用することでしょう。これらは学習後のモデルを変更するのみです。この2つで不十分な場合に各種パラメータを変更して学習を行い、よりメモリ使用量の少ないモデルを作成します。また、画像分類のように処理時間が比較的高速な機能を使用する場合はGPUではなく CPU+OpenVINO で実行することも一つの手段です。その他、コストパフォーマンスの観点から、大容量のVRAMを持つGPUではなく、廉価なGPUを複数使用することが良い場合もあります。 添付ファイルタイトルディープラーニングでGPUのメモリ使用量を削減したいURL 名000008997公開状況公開済み検証状況未検証