ざっくり言うと
推論(Inference)とは、学習を終えたAIに新しい入力を渡して、答えを受け取る工程のことです。
ChatGPTに質問を打ち込むと、少し待って返事が出てきますよね。あの待ち時間のあいだに、モデルの推論が行われています。
AIの世界では、作業を大きく2つに分けて考えます。モデルの中身を作り込むのが学習、できあがったモデルを使うのが推論です。
ここでいう推論は、人が筋道を立てて考える場面だけを指す言葉ではありません。翻訳、画像の仕分け、音声の文字起こし、文章の生成。学習済みのモデルに新しい入力を当てはめて結果を出す処理は、どれも広く推論に含まれます。
ただし、決まった規則どおりに動いているだけの機能まで、すべてAI推論と呼ぶわけではありません。件名に特定の言葉が入っていたら指定のフォルダへ移す、といった仕分けなら、モデルを使わないふつうのプログラムでもできます。
イメージ
かかる時間や設備は、モデルと使い道によって大きく変わります。「学習は必ず何か月、推論は必ず数秒」と決まっているわけではありません。
正確には
Google Cloud、NVIDIA、IBMはいずれも、推論を次のように説明しています。訓練済みのモデルを新しいデータに適用して、予測・分類・生成などの結果を得る処理である、というものです。
会社は違っても、説明はほぼ重なります。
学習と推論は、どこが違う?
| 観点 | 学習(Training) | 推論(Inference) |
|---|---|---|
| 何のために | データからパターンを学び、パラメータを調整する | 学習済みのパラメータを使って出力を計算する |
| 何を入れる | 訓練データ、評価データなど | 使うときの新しいデータや、打ち込んだ指示文 |
| パラメータ | 更新する | ふつう、そのやりとりの中では更新しない |
| いつ行う | 開発のときのほか、あとから学習し直すときにも行う | 評価のときや、サービスを使うたびに行う |
| どこで行う | データセンターや開発用の環境など | クラウド、サーバー、パソコン、スマートフォンなど |
まぎらわしいのが、スマートフォンの顔認証で顔を登録する操作です。あれは多くの場合、利用者の顔の特徴をテンプレートとして保存する登録処理にあたります。
土台になっている認識モデルそのものを、その場で学習し直しているとは限りません。登録とモデルの学習は、分けて考えてください。
推論とサービング
Google Cloudは、推論とサービングも分けています。
- 推論
モデルが入力から出力を計算すること - サービング
モデルを使える状態に置き、リクエストの受付、振り分け、処理量に合わせた増減、監視などを行う仕組み
チャットの画面では1回の返事に見えても、裏側では通信、順番待ち、推論、結果の送り返しが組み合わさっています。返事が遅いときの原因が、いつもモデルの計算だとは限らないわけですね。
「推論モデル」とは別の言葉です
名前が似ていて混ざりやすいのが、推論モデル(Reasoning Model)です。この2つは、指しているものの種類が違います。
- 推論(Inference)は、学習済みのモデルから答えを得る工程の名前です
- 推論モデルは、答える前に内部で考えるステップを挟むモデルの種類の名前です
推論モデルが返事を書くときも、そこで行われているのは推論です。工程の名前か、モデルの種類の名前か。ここで分けておくと、製品紹介やニュースを読むときに迷いません。
オンライン学習との違い
使いながらモデルを更新し続ける仕組みは、オンライン学習などと呼ばれます。
そうしたシステムでも、その時点のパラメータから出力を計算する推論と、データを使ってパラメータを更新する学習は、別の処理です。
料金や待ち時間の話で、推論がよく出てくる理由
1回の推論に必要な計算は、大規模な学習の全体に比べれば少ないのがふつうです。ただし推論は、使うたびに発生します。
利用する人が増え、入力と出力が長くなり、同時に動く数が多くなるほど、計算量の合計も運用費も上がっていきます。1皿ずつの手間は小さくても、注文が朝から続けば1日分では大きな作業量になる、というのと同じです。
速さと計算量を左右するもの
同じ推論でも、次のようなもので速さと計算量が変わります。
- モデルの構造と規模
- 入力と出力の長さ
- まとめ処理(バッチ)や、同時に使っている数
- 使っているGPUや、専用の計算装置(アクセラレーター)
- 量子化やキャッシュなどの最適化
- 通信、順番待ち、外部ツールの利用
ですから、「推論はいつも軽い」「手元の機械で動かせば必ず速い」とは言えません。速さを比べるときは、使い道と動かす場所をそろえて測る必要があります。
使う場面
身近な例
どれも、意識せずに使っている機能ばかりです。言葉を知らないうちから、私たちはもう推論のお世話になっているわけですね。
注意点
関連用語
- 学習(Training) — モデルのパラメータを、データを使って調整する工程
- パラメータ — 学習で調整し、推論で使う数値
- 推論モデル(Reasoning Model) — 答える前に内部で考える時間を取るタイプのモデル
- レイテンシー — 入力から応答までの待ち時間
- ストリーミング — できあがりを待たず、書けたところから順に受け取る方法
やってみよう