WindowsPCにSLMをインストールしてAIに文章を要約させてみた

小規模言語モデル(SLM)

SLMとは

  • SLMはChatGPTやGeminiのようなLLM(Large Language Model)と比べてパラメータ数が少ない人工知能技術を用いた言語モデルの一種
  • 「小規模」でありながらも、テキスト生成や分類、翻訳、質問応答などのさまざまなタスクを実行可能。

LLMとの違い

特徴SLMLLM
パラメータ数少ない多い
計算リソース低い高い
エネルギー効率高い低い
精度中程度高い
導入コスト低い高い
用途軽量タスクやリアルタイム処理複雑なタスクや高精度な処理

メリット

  • 低コスト
  • エネルギー効率が高い
  • スピード

デメリット

  • 精度の限界
  • 対応範囲の狭さ

インストールするSLM

MicrosoftのPhi-3の中で1番小さいminiを試しました。

インストール方法

例えば業務用PCを使っておりインストールするソフトウェアに制約があるなど、個別の事情には一切配慮できておりませんので、参考程度でお願いいたします

試したPCのスペック

  • プロセッサ:11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
  • RAM:16.0 GB
  • SSD:1TB

Microsoft C++ Build Toolsのインストール

①こちらからインストーラーをダウンロードします

Microsoft C++ Build Tools - Visual Studio

②ダウンロードしたexeをダブルクリックしてインストーラーを起動します

③C++によるデスクトップ開発にチェックを入れ、右側に表示されるチェックボックスに不足があれば以下の図を参照してチェックを入れ、空き容量を確認してイントールボタンを押します ※けっこう容量多いです

④終わったら右上の×を押して閉じます

Pythonのインストール

①コマンドプロンプトを起動し、pythonと入力するとマイクロソフトストアが立ち上がるのでそこからインストールします

②終わったらコマンドプロンプトでpython -Vと入力します。以下のようにバージョンが表示されれば成功です

llama-cppのインストール

  • 自分のPCにはNVIDIAのような優れたGPUは入っていません
  • それでも量子化という技術を使って高速化してくれるのがllama-cppです
  • コマンドプロンプトで下記のコマンドを入力してインストールします
  • pip install llama-cpp-python
  • 私はは40分くらいかかりました

SLMのダウンロード

こちらからSLMをダウンロードします

microsoft/Phi-3-mini-4k-instruct-gguf at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

SLMを実行する

実行にはVS Codeを使います。VS Codeのインストール方法は割愛します

要約させた文章はこちらです。要約結果を見ると、ちょっと文章がおかしいですね。実行時間は1分かかりました。

Mojiiyaが図で紹介する効果的で実際に実践したダイエット法。健康的な体形を手に入れるための実践的ガイドとヒントを少ない文章量でお届けします。
過度なカロリー制限がもたらす逆効果とは?Mojiiyaが解説する、身体が飢餓状態になるメカニズムと、ダイエットの失敗を避けるための正しい食事計画。適切なカロリー摂取量の見極め方、
炭水化物・脂質の削減と食物繊維・タンパク質の重要性を学び、健康的に痩せるための実践的アドバイスを紹介します。便秘がダイエットの天敵である理由と、
筋肉を保ちながら減量する方法についても触れています。
ダイエットやメタボ対策に効果的な有酸素運動を理解し、効果的に脂肪を燃やしましょう。種目の選択は膝の負担が少ない、
呼吸器系も鍛えたいなど自分のスタイルに合わせるとよいです。Mojiiyaのシンプルな図解であなたのダイエット・メタボ対策を支援します。健康的に体重を減らしましょう。

結果考察

  • 高価なサーバーでなくても動かすことができるのは魅力的
  • とはいえ最小モデルでがんばるには英語で実行→結果を日本語に翻訳などプロンプトを工夫するか、ファインチューニングが必要そう

実行したプログラムはこちらです。※キャプチャ撮った時から少し内容を変えています

from llama_cpp import Llama
llm = Llama(
  model_path="C:/workspace/ai_model/microsoft/Phi-3-mini-4k-instruct-gguf/Phi-3-mini-4k-instruct-q4.gguf", # ダウンロードしてSLMを指定
  n_gpu_layers=0, # GPUが無い場合0を指定
  n_ctx=6036, # 読み込む文章量が多い場合調整 収まらないとエラーになったりOutputが途中で切れる
)

# 要約させたいテキストファイルを指定
with open("C:/workspace/ai_model/microsoft/Phi-3-mini-4k-instruct-gguf/vscode/contents.txt", 'r', encoding='utf-8') as file:

        prompt = [
            {"role": "system", "content": "あなたは有名な雑誌のライターです。<条件>で指示したステップに従い、userにより与えられた文章を100文字程度に要約してください。#条件: 1.英語に翻訳する, 2. 英語で要約する, 3. 日本語に翻訳する"},
            {"role": "user", "content": file.read()},
        ]


        output = llm(
            f"<|user|>\n{prompt}<|end|>\n<|assistant|>",
            max_tokens=6036, 
            stop=["<|end|>"],
            echo=False, # これがTrueだとファイルの内容が全部出力され見えづらいのでFalseにする
        )

print(output['choices'][0]['text'])

この記事を書いた人
ヒーローかず

ウェブエンジニア・SEOエンジニア・データ分析エンジニア
EC歴15年
東京理科大学卒業後、大手外資系コンサルティング会社でウェブエンジニアとして9年システム開発を行いました。現在ECサイトの販売代行をしている会社でエンジニアとしてプロジェクトマネージメント、サイト機能改善提案、SEO対策、データ分析に携わっています。趣味はゲーム、マンガ、株式投資です。

ヒーローかずをフォローする
小規模言語モデル(SLM)
シェアする
タイトルとURLをコピーしました