自分の処理と予算に合う構成を、実測で選ぶ
対象:画像・動画・異常検知・画像と文章を扱うAIなどの検証、学習、推論を行う方
1. このガイドは「決定版」ではありません
CPU・GPUは新製品が登場し、価格やソフトウェアの対応状況も変わります。「このモデルなら、このGPUが正解」と固定することはできません。
大切なのは、自分のワークロード(実際に行う処理と、その負荷)に合っているかです。同じモデルでも、データ量、応答時間、実行頻度、予算によって適した構成は変わります。
この記事では、特定の製品ではなく、次の選び方を紹介します。
要件を決める → 動作する候補を絞る → 実測する → 費用と運用条件で選ぶ
新製品や公開ベンチマークは候補探しに役立ちますが、自分の処理で同じ性能が出るとは限りません。
2. 最初に「何を、どれだけ、いつまでに」を決める
製品を調べる前に、次の要件を整理します。
| 項目 | 決めること | 例 |
|---|---|---|
| 処理 | 学習か、推論か、前後処理か | 画像から傷を検出する |
| 入力 | 件数、解像度、動画の長さなど | 画像1万枚、1枚1920×1080画素 |
| 品質 | どの程度正しく判定できればよいか | 実際の異常の95%以上を検出 |
| 時間 | 処理期限、1件の応答時間 | 1万枚を1時間以内に処理 |
| 負荷 | 実行頻度、同時に処理する件数 | 毎晩1回、または同時に10件 |
| 費用・制約 | 予算、データの保管場所、停止の可否 | 月3万円以内、外部へのデータ送信不可 |
学習は、データからモデルの内部の数値を調整する処理です。推論は、学習したモデルを使って予測や生成を行う処理です。
両者は必要な計算量やメモリが異なります。学習にGPUを使っても、推論はCPUで十分な場合があります。
また、「4K動画を扱う」だけでは必要性能は決まりません。全フレームを処理するのか、毎秒数枚だけ取り出すのか、リアルタイムで結果が必要なのかまで決めます。
3. CPUとGPU、どちらから検討するか
CPUは幅広い処理を担当します。GPUは、多数の計算を並列に行う処理に強く、深層学習で多用される行列計算などに適しています。
ただし、GPUを使うには、ソフトウェア側の対応も必要です。GPUを搭載しただけで、すべての処理が速くなるわけではありません。
| 処理 | 最初に検討する構成 | 判断のポイント |
|---|---|---|
| ファイル読み込み、集計、一般的な前処理 | CPU | 読み書きの待ち時間が大きくないか |
| 表形式データの一般的な機械学習 | CPU | 大規模データではGPU対応実装も比較 |
| 小型画像モデルの低頻度推論 | CPUとGPU | 応答時間と費用のどちらが有利か |
| 画像分類・物体検出などの深層学習 | GPU | メモリ容量と学習時間が足りるか |
| 異常検知 | 方式に応じてCPUとGPU | 特徴抽出やデータ検索のどこに時間がかかるか |
| VLM・LLMの手元での実行 | GPUを中心に検討 | 小型・量子化モデルならCPUも候補 |
| 外部のAI APIの呼び出し | CPU | モデル計算はサービス側で実行される |
| 動画解析 | CPUとGPUの組み合わせ | 動画の展開、推論、追跡のどこが遅いか |
VLMは画像と文章などを扱うモデル、LLMは大規模言語モデルです。
実際には「CPUかGPUか」ではなく、画像の読み込みはCPU、モデル計算はGPU、結果保存はCPUという分担も一般的です。
なお、大規模な深層学習など、GPU利用が現実的な処理で、長時間のCPU比較を必須にする必要はありません。
4. CPUは、コア数だけで選ばない
コアはCPU内部の計算を担う単位です。コア数が多くても、処理を分担できなければ、その分だけ速くなるわけではありません。
| 確認する項目 | 見る理由 |
|---|---|
| 1コアの性能 | 順番に実行する処理の速さに影響する |
| コア数 | 複数の処理を並行して実行できる場合に重要 |
| メモリ容量 | データや複数の処理を同時に保持できるかを左右する |
| メモリ帯域 | メモリからデータを読み書きする速さに影響する |
| ストレージ・ネットワーク | データの供給が遅いとCPUが待たされる |
| ソフトウェアとの互換性 | CPUの種類によって対応する実行環境が異なる |
メモリ容量は「どれだけ置けるか」、メモリ帯域は「どれだけ速く読み書きできるか」です。容量が大きいだけでは、処理が速くなるとは限りません。
クラウドのvCPUは仮想マシンに割り当てられるCPU資源で、物理コアと常に一対一ではありません。同じvCPU数でも、CPU世代や割り当て方式によって性能は異なります。
また、x86とArmなど、CPUのアーキテクチャ(基本設計)が違う場合は、使いたいライブラリや実行環境の対応を確認します。
5. GPUは「メモリ・対応ソフト・実際の速さ」で選ぶ
5.1 まずGPUメモリに収まるか
VRAMは、GPUが計算に使う専用メモリです。一般的な専用GPUでは、PCやサーバーのメインメモリとは別に考えます。
必要なVRAMは、モデルの大きさだけでは決まりません。入力データ、計算途中の結果、作業領域も必要です。学習では、重みを調整するための情報も追加されます。
モデルのパラメーターとは、重みなど、モデルを構成する数値です。これらを保存する容量の目安は、次のように計算できます。
重みの容量 ≒ パラメーター数 × 1要素を保存するバイト数
| 数値形式 | 1要素の容量の目安 |
|---|---|
| FP32 | 4バイト |
| FP16 / BF16 | 2バイト |
| INT8 | 1バイト |
| INT4 | 0.5バイト |
FPは浮動小数点形式、INTは整数形式です。FP16とBF16は同じ16ビットでも、表せる数の範囲や細かさが異なります。
例えば、10億パラメーターをFP16で保存すると、重みだけで約2 GBです。これは「2 GBのVRAMで動く」という意味ではありません。 量子化した場合も、追加の管理情報などが必要です。
文章を生成するモデルでは、過去の計算結果を再利用するKVキャッシュもメモリを使います。入力・出力の長さや同時実行数によって、必要量が増えます。
なお、CPUとGPUでメモリを共有する構成もあります。その場合は、専用VRAMと同じ前提で容量を比較せず、実際の利用可能量と帯域を確認します。
5.2 メモリ不足なら、設定変更も比較する
| 方法 | 意味 | 注意点 |
|---|---|---|
| バッチサイズを下げる | 一度に処理するデータ数を減らす | 処理速度や学習の進み方が変わることがある |
| 混合精度を使う | 計算に応じてFP32とFP16・BF16などを使い分ける | 対応ハードウェアと計算の安定性を確認する |
| 量子化する | 重みなどを少ないビット数で表す | 品質や速度への影響は実装による |
| 入力を小さくする | 画像解像度や文章の長さを減らす | 必要な情報を失う可能性がある |
学習では、保存する中間結果を減らし、必要なときに再計算する勾配チェックポイントという方法もあります。メモリを節約する代わりに、計算が増えます。
また、16 GBのGPUを2枚用意しても、自動的に32 GBのGPUとして使えるわけではありません。大きなモデルを分けて載せるには、対応した分割方法とソフトウェアが必要です。
5.3 メモリに収まっても、速いとは限らない
次に、以下を確認します。
| 項目 | 確認すること |
|---|---|
| ソフトウェア対応 | モデル、ライブラリ、ドライバーが対象GPUに対応しているか |
| 演算性能 | 実際に使う数値形式で十分な速度が出るか |
| メモリ帯域 | 重みや計算結果の読み書きが遅くないか |
| GPU間の通信 | 複数GPUで計算する場合、通信待ちが大きくないか |
| CPU・ストレージ | GPUへデータを十分な速さで渡せるか |
GPUの仕様表にあるTFLOPSは、1秒当たりの浮動小数点演算能力を表す指標です。ただし、数値形式や計算条件が違う値を、そのまま比較することはできません。アプリケーション全体の速さを保証する数字でもありません。
6. ベンチマークでは、速度と品質を一緒に測る
ベンチマークとは、条件を決めて性能を測ることです。最初から全候補を試すのではなく、仕様と互換性で候補を絞り、代表的なデータで比較します。
比較の進め方
-
条件をそろえる
データ、モデル、入力サイズ、バッチサイズ、数値形式をそろえます。ソフトウェアの違いがある場合は記録します。 -
処理全体を測る
モデル計算だけでなく、読み込み、前処理、結果保存、必要なら起動時間も含めます。 -
候補ごとに調整する
バッチや並列処理数を調整し、同じ品質・期限の条件を満たせるか確認します。 -
繰り返して、ばらつきを見る
一度だけの結果では判断せず、複数回測定します。オンライン処理は、実際に想定する同時実行数でも試します。
最低限、次を残します。
| 指標 | 意味 |
|---|---|
| 品質 | 正解率、再現率、見逃し率など、目的に合った評価 |
| 全体時間 | 処理開始から結果が得られるまでの時間 |
| レイテンシ | 1件の要求に結果を返すまでの時間 |
| スループット | 1秒・1時間などに処理できる件数 |
| メモリ使用量 | メインメモリとVRAMの最大使用量 |
| 費用 | 1ジョブ、1,000件、月間などの費用 |
応答時間は平均だけでなく、p95も参考になります。p95が200 msなら、測定した要求の約95%が200 ms以内に完了したという意味です。評価には十分な測定件数が必要です。
バッチを大きくするとスループットが上がる場合がありますが、データが集まるまでの待ち時間は増えることがあります。「大量に処理できる」と「1件をすぐ返せる」は別の要件です。
GPUが十分に動いていないときは、すぐ上位GPUへ変更せず、データ読み込みやCPUの前処理を確認します。こうした全体の速さを制限する箇所を、ボトルネックと呼びます。
7. 費用は「時間単価」ではなく「必要な処理を終える総額」で見る
次は、価格の仕組みを説明するための仮の例です。
| 構成 | 時間単価 | 処理時間 | 計算資源の費用 |
|---|---|---|---|
| CPU構成 | 100円 | 4時間 | 400円 |
| GPU構成 | 300円 | 1時間 | 300円 |
同じ品質の結果が得られるなら、時間単価が高いGPUでも、処理全体では安くなる場合があります。
ただし、クラウドでは起動・待機、ストレージ、通信、再実行などの費用も確認します。自前設備では、購入価格に加え、電力、冷却、保守、実際の稼働率を考えます。
外部AI APIを使う場合は、呼び出し料金や利用上限も比較対象です。
運用面では、クラウドなら利用上限と空き容量、自前設備なら電源・冷却・設置条件を確認します。仕様上は適していても、必要な時点で使えなければ採用できません。
基本は、品質・期限・運用の必須条件を満たす候補の中から、予算に合う構成を選ぶことです。
8. 選定理由を残し、必要なときに見直す
製品名だけでなく、次の情報を記録しておくと、後から再評価できます。
| 残す情報 | 内容 |
|---|---|
| 要件 | 品質、期限、処理量、予算 |
| 構成と条件 | CPU・GPU、メモリ、モデル、入力、ソフトウェア |
| 結果 | 品質、時間、メモリ使用量、費用 |
| 判断 | 採用理由、不採用候補との違い、測定日・価格確認日 |
新製品の登場だけで、買い替える必要はありません。データ量やモデルが変わったとき、処理期限を守れなくなったとき、費用が増えたときなどに、最新の候補と比較します。
選ぶべきなのは、最も高性能な製品ではなく、自分のタスクを必要な品質と時間で処理でき、予算と運用条件に合う構成です。
参考資料
以下は、性能やメモリの考え方を学ぶための公式資料です。特定製品を推奨するものではありません。
- scikit-learn:計算性能と推論時間 — 入力、モデル、まとめ処理が性能へ与える影響
- PyTorch:Performance Tuning Guide — データ読み込み、CPU・GPUの最適化、メモリ削減
- PyTorch:Automatic Mixed Precision — 混合精度の仕組みと性能への影響
- PyTorch:Distributed Data Parallel — モデルを複製して行う分散学習の仕組み
製品の仕様、価格、提供状況、ソフトウェアとの互換性は、選定時点のメーカー・サービス提供者の公式資料で確認してください。