SLMとは
- SLMはChatGPTやGeminiのようなLLM(Large Language Model)と比べてパラメータ数が少ない人工知能技術を用いた言語モデルの一種
- 「小規模」でありながらも、テキスト生成や分類、翻訳、質問応答などのさまざまなタスクを実行可能。
LLMとの違い
特徴 | SLM | LLM |
パラメータ数 | 少ない | 多い |
計算リソース | 低い | 高い |
エネルギー効率 | 高い | 低い |
精度 | 中程度 | 高い |
導入コスト | 低い | 高い |
用途 | 軽量タスクやリアルタイム処理 | 複雑なタスクや高精度な処理 |
メリット
- 低コスト
- エネルギー効率が高い
- スピード
デメリット
- 精度の限界
- 対応範囲の狭さ
インストールする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'])