💻

初心者がubuntu24.04の上でSLMを構築するまで

に公開
2025/12/08

それほど高機能ではない自分のPCに最近流行っている SLM(Small Language Model; 小規模言語モデル)をインストールしたいと思いたち、初心者にもかかわらずCopilotの協力を得ながらubuntu24.04 上になんとか構築できた顛末を整理した記事です。

用語

  • Small Language Model(小規模言語モデル)とは
    LLM(大規模言語モデル)に比べてパラメータ数が少なく軽量で、特定のタスクに特化して高速処理が可能で、低計算機リソースで動作させることができます。このため、自分のPCや、エンジンやモデルのサイズにもよりますが、組み込み機器にも入れられるのではと思います。
  • GGUF(GPT-Generated Unified Format)とは
    AIモデルの重みやメタデータをまとめて保存するバイナリファイルフォーマットで、主にllama.cppのようなライブラリで使われています。この形式は、量子化された軽量モデルをコンパクトに保存でき、低リソース環境でも高速に動作するよう設計されています。
    GGUFモデルは、量子化レベル、作成者、チャットテンプレートの違いによって分けられています。
  • 量子化モデル
    精度とメモリ使用量のバランスを決める要素です。
    量子化レベル 精度 VRAM目安 説明
    Q4_K_M 中〜高 約4GB〜6GB 精度・速度のバランスが良い
    Q5_K_M 高 約6GB〜7GB より高い精度重視
    Q8_0 最高 約8GB以上 精度重視・速度はやや低下

最初に何をすべき?

最初何をすべきか全く分からなかったので、とにかくCopilotに聞きまくりました。

SLMをローカルPCで動作させようと考えています。色々な記事を見たところ現時点で、RakutenAI-7B-Instructがよいのでは思っています。それほど高性能ではないPCなのですが、アドバイスをお願いします。また、他に日本語が扱える代替SLM候補があれば教えてください。

Copilotからは以下のモデルの推奨もありました。

  • RakutenAI-7B-Instruct
  • ELYZA-japanese-Llama-2-7b-fast-instruct
  • Phi-3-mini-4k-instruct
  • gemma-2-2b-jpn-it 2.6B
  • Llama-3.2-3B-Instruct

そしてエンジンの話が始まります。

推奨構成での運用のポイント

  • 推論エンジン:Ollama または llama.cpp(GUIなら LM Studio も快適)
  • 量子化モデル(GGUF形式)を使用することで、VRAM 8GBでも7Bモデルが動作可能。
  • Q4_K や Q6_K_L などの量子化レベルを選ぶと、精度と速度のバランスが良好。
  • 英語と日本語の両対応を重視するなら、ELYZA や Phi-3-mini、gemma-2-jpn-it も非常に良い選択肢です。

たしかにモデルだけだと動かないから推論エンジンも必要か・・・どうしよう?

学習用に少し難しくても色々カスタマイズできる土台がほしい、ライセンス、将来性、ディスク容量などを考えて、結局、エンジンに llama.cpp を、モデルに Phi3-3-mini と gemma-2-2b-jpn-it を選択しました。今回は、llama.cpp + gemma-2-2b-jpn-it の組み合わせの構築になります。

準備

以下のツールが必要になります。

  • git
  • make
  • g++ (gcc11を使うこと) [sudo apt install gcc-11 g++-11]
  • cmake
  • CUDA (GPUを使う場合)

CPUでも動きそうですが、今回はCUDAを利用することにしました。

llama.cpp のインストールとビルド

$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp
$ cmake -B build -DGGML_CUDA=ON
$ cmake --build build --config Release

モデルのダウンロード

モデルのダウンロードは、Web記事にも多数紹介されていますが、Hugging Faceサイトからダウンロードします。

アカウントを作ってモデルをダウンロードします。

  • Hugging Face公式サイト にアクセス
  • 右上の「Sign Up」からアカウント作成(メールアドレスとパスワードだけ)
  • メールが送られてくるので返信します。
  • ログイン後、モデルページにアクセス
  • 画面上にある検索で "gemma-2-2b-jpn-it" を入力
  • ページ右側中程にある gguf と書かれている欄にあるモデルリストから適切なモデルを選択
    量子化レベル
    • Q4_K_M 精度:中〜高 VRAM:約4GB〜6GB 備考:速度と精度のバランスが良い
    • Q5_K_M 精度:高め VRAM:約6GB〜7GB 備考:精度重視ならこちらも選択肢
    • Q8_0 精度:最高 VRAM:約8GB以上 備考:精度重視・速度はやや低下
  • ダウンロード

ダウンロードしたファイル、例えば、gemma-2-2b-jpn-it-Q4_K_M.gguf を、llama.cpp/models の下に移動・コピーします。

これで環境構築が完了します。

動作確認

llama.cpp の下のフォルダで以下を実行します。

$ ./build/bin/llama-cli -m models/gemma-2-2b-jpn-it-Q4_K_M.gguf -p "以下の文章を要約してください:太郎は昨日、図書館で本を借りた。漫画1冊と専門書1冊だった。"
:
user
以下の文章を要約してください:太郎は昨日、図書館で本を借りた。漫画1冊と専門書1冊だった。
model
太郎は昨日、図書館で漫画1冊と専門書1冊を借りた。

その他

モデルのダウンロード

Copilotからはモデルのダウンロードについて、以下のアドバイスもありました。
残念ながら試してはいません。

$ sudo apt install git-lfs
$ git lfs install
$ git clone https://huggingface.co/alfredplpl/gemma-2-2b-jpn-it-gguf

今後

これで勉強の土台を作ることができました。
機会があれば、RAG(Retrieval-Augmented Generation)を試してみたいと思います。

RAGとは?
検索(Retrieval) + 生成(Generation) を組み合わせた手法で、 モデルが知らない情報を外部の文書から検索して参照しながら回答を生成します。

Discussion