なっトク!

ディープラーニングは自宅のPCで実行可能なのか

2023-06-04

たすく

きょうは「自宅のPCでディープラーニングは動くのか」に、条件つきで答えを出します

手元にあるのは、ふつうのノートPC。

グラフィックボードは載っていない。メモリは16GBほど。

これで足りるのか。

買い替えないと話にならないのか。

調べても「場合による」ばっかりで、結局わからない

あかり

そうなんです。

ただ、「場合による」の"場合"は3つしかありません。

そこを先に押さえると、自分のケースで判断できるようになります。

ここで先に、一番大事なことを書いておきます。

大人が新しいことを学ぼうとするとき、「道具を揃えてから始めよう」で止まることがとても多い。

学生時代は、教室にも実験室にも道具が置いてありました。

いまは、自分で用意するところから始まります。

そしてその見積もりが、始める前にはできません。

足りるかどうかは、始めてからしか分かりません。

だから先に買うのではなく、詰まってから足します。


まず、質問を2つに割ります

「ディープラーニングをやりたい」には、実は正反対の2つが混ざっています。

モデルを「作る」のか(学習)。

できているモデルを「使う」のか(推論)。

必要なマシンは、この2つでまるで違います。

作る側は重い。

同じ計算を何万回も繰り返すからです。

使う側は軽い。

1回通すだけだからです。

「自宅PCで足りますか」への答えが人によって割れるのは、たいていここを揃えずに話しているからだと思っています。

以下は「作る側」の話をします。

足りるかどうかを決める3つの条件

効いてくるのは、この3つだけです。

① モデルの大きさ(層とパラメータの数)

層が深く、パラメータが多いほど、計算量も時間も増えます。

ここは素直です。大きいほど重い。

② データの量(メモリに載るか)

データが大きいと、一度に全部はメモリに載りません。

ただし、ここは詰みではありません。

小分けにして少しずつ流す方法(バッチ処理)があるからです。

メモリ不足は、たいていこれで回避できます。

代わりに時間が延びます。

③ GPUがあるか(ここが一番効きます)

学習の中身は、大量の掛け算と足し算です。

それを同時にさばくのがGPUの得意分野。

CPUは順番にこなすので、同じ処理でも桁で差が出ます。

じゃあGPUがないと無理ってこと?

あかり
たすく

無理ではありません。ただ「待てる時間」が上限になります。そこが判断の分かれ目です


GPUなしのノートPCで、実際にできること

具体的に並べます。

ここが一番知りたいところだと思うので。

できる側

  • 小さめの画像分類。数千〜数万枚の定番データセット(手書き数字や小さなカラー画像)での学習
  • テキストの分類。迷惑メール判定、感情の判定、話題の分類など
  • 数値の予測。価格や需要の予測といった回帰
  • 簡単な強化学習。棒を倒さないように台車を動かす類の練習用課題

この範囲は、「勉強のためにひととおり通す」用途をほぼ覆います。

できない側

  • 百万枚規模の画像を最初から学習させる
  • 大規模な言語モデルを一から作る。ここは個人の機材の話ではありません
  • 画面の映像から学ばせる強化学習。ゲーム画面のような高次元の入力は一気に重くなります

境目は「画像か、それ以外か」ではありません。

入力の情報量が大きいかどうかです。


学習にはどれくらい時間がかかるのか

ここも「場合による」と言われがちなところです。

幅で言うと、こうなります。

練習用の小さな課題なら、数分から数時間。

複雑な環境や大きなデータになると、数時間から数日。長ければ数週間。

この差が生まれるのは、学習が「1回で終わらない」からです。

同じデータを何周もして、少しずつ重みを直していきます。

その間、ずっと見てないといけないの?

あかり
たすく

いいえ。学習そのものは自動で進みます。基本は放っておいて構いません

ただ、人が手を入れる場面は3つあります。

ひとつ、設定の調整。

学習率などの数値は、こちらが決めます。

うまく進まないときは、ここを変えて試し直します。

ふたつ、途中経過の監視。

誤差が下がっているかを見ます。

下がらない、または途中から悪化している。

そう気づいたら、止めて直したほうが速い。

みっつ、中断と再開。

途中の状態を保存しておけば、後から続きができます。

長い学習では、これをやらないと停電1回で全部消えます。

放置していいのは処理であって、判断ではありません。

「回しっぱなしで3日、実は最初の10分で壊れていた」が一番痛い。


モデルは、PCのどこに置かれているのか

ここは、意外と説明されないところです。

学習中のモデルは、メモリ(RAM)の上にあります。

プログラムが動いている間だけ存在する、ふつうのデータです。

つまり、プログラムを終了した時点で消えます。

だから、終わったら必ずファイルに保存します。

保存すると、SSDやHDDの上に残ります。

次に使うときは、そのファイルを読み込んでメモリに戻す。

この往復が、学習と推論をつなぐ部分です。

整理すると、こうなります。

メモリ=作業机。広さが「一度に扱える量」を決める。

ストレージ=引き出し。容量が「いくつ保管できるか」を決める。

学習で詰まるのは、ほぼ机の広さのほうです。

保存容量が原因で詰まることは、あまりありません。


中身を知らないまま使ってもいいのか

ライブラリを使うと、層の構造を意識せずにモデルが作れます。

数行書けば動く。

中で何が起きているかは、見えません。

これは、悪いことではないと思っています。

最初は、動かしてから中を見るほうが早い。

ただ、最低限これだけは持っておくと後が違います。

入力に重みを掛けて、足して、変換して、次へ渡す。

これを層の数だけ繰り返しているだけです。

層の数、各層の広さ、変換のしかた。

この3つが、こちらで決める設定です。

「調整がうまくいかない」の正体は、だいたいここの選び方です。

そして、内部を細かく組みたくなったときに、より低い層のライブラリへ移ります。

順番としては、それで十分間に合います。


足りないと分かったら、買い替える前に

最後に、いちばん実用的な話を。

GPUが要る場面に当たったとき、選択肢は買い替えだけではありません。

クラウドで借りられます。

ブラウザから使える無料の実行環境もあります。

ここが重要なところです。

機材は、詰まってから足せます。

先に買っても、詰まる場所が分かるわけではありません。

「GPUを買ってから始めよう」

この順番だと、たいてい始まりません。

手元のPCで小さく1本通す。

そこで初めて、自分が何で詰まるのかが分かります。

詰まってから考えればいいのか

あかり
たすく

そう思っています。実際、大半の人は詰まらないまま、やりたいことを終えます

いま手元にあるPCは、想像よりだいぶ働きます。

学び直しが止まる理由は、たいてい能力ではありません。

始める前の準備を、無限に伸ばせてしまうことのほうです。

そのあたりの話は、学び直しが必要な理由。成長の源泉はどこにあるかに書きました。

結局、手を動かした人にしか気づきは来ません。

  • この記事を書いた人
  • 最新記事

花丸たすく

▸「思考タイプ診断」で、働き方をスマートに
▸ あなたの価値を、現実を変える力へ
▸ 「IT戦略×データ分析×プロジェクトマネジメント」の知見
▸ 京都大学卒業後、教育・情報サービス系JTCなどでDX推進・データ分析・人材開発に従事