Re Reference AI

モデル

SLMとは

Small Language Model / 小規模言語モデル

数億〜数十億パラメータ程度の、軽量で特定用途に最適化された言語モデル

NLPエッジAI軽量化

ひとことで言うと

大規模モデルより軽くて、特定の用途向けに作られた小さめの言語AI。

概要

SLM(Small Language Model)とは、数億〜数十億パラメータ程度の比較的小規模な言語モデルの総称。 数百億〜数兆パラメータを持つLLMと比べてモデルサイズが小さく、スマートフォンやエッジデバイス、単一GPUなど限られた計算資源上でも動作させやすい点が特徴。 知識蒸留(大規模な教師モデルの出力を模倣して学習する手法)や、質の高い学習データへの絞り込みなどにより、パラメータ数を抑えつつも特定タスクやドメインでは大規模モデルに近い性能を達成する例が増えている。 Microsoft Phiシリーズ、Google Gemma、Meta Llamaの小型版などが代表例。 クラウドAPIへの都度アクセスが不要なため推論コストとレイテンシを抑えられ、オフライン環境やプライバシー制約の厳しい用途にも適する。

背景

LLMは高性能だが、推論に必要なGPUメモリ・レイテンシ・コストが大きく、オンデバイス実行やリアルタイム応答が求められる用途には不向きな場合が多い。 SLMは、モデルサイズと性能のトレードオフの中で、特定用途に絞ることで実用的な性能を保ちながら計算コストを抑えるアプローチとして発展した。

歴史

2023年: Microsoftが13億パラメータのPhi-1を発表し、高品質な学習データによって小規模モデルでも高い性能を達成できることを示す。 2023-2024年: Google Gemma、Meta Llama 3 8B等、オープンウェイトの小型モデルが相次いで公開される。 2024年以降: オンデバイスAI・エージェントのサブタスク処理向けにSLMの活用が広がる。

アーキテクチャ

基本的にはLLMと同様、デコーダのみのTransformerアーキテクチャを採用することが多い。 層数・隠れ層の次元・パラメータ数を抑える一方、学習データの質を高めたり知識蒸留を用いたりすることで、小さいモデルサイズでも性能低下を抑える工夫がなされる。

ワークフロー

大規模な教師モデルの出力や高品質データセットを用意 → 知識蒸留事前学習を実施 → 用途が定まっている場合は特定タスクへファインチューニング → エッジデバイスやオンプレミス環境へデプロイ。

コード例

Hugging Face transformersでSLMを読み込む

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "microsoft/Phi-3-mini-4k-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

利点

  • 推論コスト・メモリ使用量が小さく、エッジデバイスやオンデバイス実行に向く
  • レイテンシが低く、リアルタイム応答が必要な用途に適する
  • 運用コストを抑えられるため、特定タスクへの大量呼び出しに向く

欠点

  • 汎用的な知識量・推論能力ではLLMに劣る場合が多い
  • 対応できるタスクの幅が狭く、複雑な推論や広範な知識を要する質問には不向きな場合がある
  • 性能を保つには学習データの質や知識蒸留の工夫が必要になる

比較

  • LLMSLMはLLMよりパラメータ数を抑え、エッジ実行やコスト効率を優先したモデル
  • ファインチューニングSLMは知識蒸留やファインチューニングにより特定タスクの性能を高めることが多い
  • 知識蒸留SLMの学習では、大規模モデルからの知識蒸留がよく用いられる
  • 量子化量子化はSLMと同様、限られた計算資源でモデルを動作させるためのアプローチの1つ
  • NPUNPUの普及は、SLMのようなオンデバイスで動く軽量モデルの実用性を高める一因になっている
  • PhiPhiは、高品質な学習データを重視したSLMの代表的なモデルファミリー
  • GemmaGemmaは、SLMとして扱われる軽量なモデルサイズのバリエーションも展開している
  • エッジAISLMは、端末の限られた計算資源で動作させやすいよう設計された、エッジAI向けの言語モデル

関連用語

LLMファインチューニングTransformer知識蒸留量子化NPUPhiGemmaエッジAI

よくある質問

SLMとLLMの境界は?

明確な定義はない。 一般的に数億〜数十億パラメータ程度をSLM、数百億以上をLLMと呼ぶことが多いが、厳密な閾値ではなく相対的な区分。

SLMはどんな場面に向く?

スマートフォン等エッジデバイスでのオフライン実行、低遅延が必要な用途、特定タスクに絞った軽量なエージェントのサブコンポーネントなど。

参考文献

関連Zenn記事