Share
-
Xにポスト
-
Facebookにシェア
-
はてなにブックマーク
-
リンクをコピー
目次
LLM/Mistralへのプログラム・アクセスの調査記録
更新日
Mistral モデルの導入手順
導入する Mistral のモデルとして 「TheBloke/Mistral-7B-Instruct-v0.2-GGUF」を採用。
また、プログラムでアクセスする方法として「llama.cpp (llama-cpp-python)」ライブラリを採用。
補足1:実行フレームワークについて
- Mistral 社がホストしているモデルであれば、公式 SDK の「mistralai」が提供されている
- ローカル環境向けには公式 SDK「mistral_inference」が提供されている。
※ Mistral-7B-Instruct-v0.3 モデルのページには mistral_inference の利用推奨を明記
ただし、CPU 環境では NVIDIA ドライバ未検出等のエラーが発生し動作しない - Transformes による実行がモデルのページに記述されておりデファクトであった模様
- 前述の Gemma のサンプルコードでモデル名を Mistral のモデルに変更すれば論理的には動作するはず
※ 非力なCPU環境では起動中にプロセスの強制 kill により停止 - 軽量ライブラリの llama.cpp と量子化済みのモデルであれば CPU 環境でも動作
補足2:Mistral モデルについて
- 小規模な汎用モデルとして Mistral 7B (Base / Instruct) が Hugging Face に公開されている
- Mistral-7B-Instruct の最新版は v0.3 だが、サイズが 15GB~程ある
- 量子化済みのモデルは v0.2 ベースで、Q4_K_M であればサイズは 4GB 程度
インストール手順
1. システム準備
sudo apt update && sudo apt upgrade -y
sudu apt install -y python3-venv python3-pip
2. 仮想環境準備
# 作業ディレクトリ作成
mkdir ~/hiprojects/mistral
cd ~/hiprojects/mistral
# 仮想環境作成
python3 -m venv venv
source venv/bin/activate
# パッケージのインストール
pip3 install llama-cpp-python fastapi uvicorn
3. 推論モデルのダウンロード
# カレントディレクトリの models 配下にダウンロード
wget https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf -P ./models/
ディレクトリサイズを確認して 4GB 程度であれば成功。
$ du -sh ./models
4.1G ./models
4. 推論プログラムの作成
FastAPI に post エンドポイントを設定し、受け取った文字列を llama.cpp のライブラリで処理するサンプルコード。
# main.py
from fastapi import FastAPI, Request
from pydantic import BaseModel
from llama_cpp import Llama
# FastAPI の起動
app = FastAPI()
# ダウンロードしたファイルの格納先
MODEL_PATH = "./models/mistral-7b-instruct-v0.2.Q4_K_M.gguf"
# llama のインスタンス生成
llm = Llama(
model_path=MODEL_PATH,
n_ctx=2048,
n_threads=1,
verbose=False
)
class ChatInput(BaseModel):
message: str
# エンドポイントの登録
@app.post("/api/v1/chat")
def chat(input: ChatInput):
# プロンプトを生成
prompt = f"[INST]{input.message}[/INST]"
# 推論実行
output = llm(
prompt,
max_tokens=128,
temperature=0.7,
stop=["</s>"],
echo=False
)
# 推論結果の返却
return { "response": output["choices"][0]["text"] }
5. 推論プログラムの起動/動作確認
uvicorn main:app --host 0.0.0.0 --port 8082
–host 0.0.0.0 の指定により WSL2 上のすべてのインターフェースを公開。ローカルでの確認であれば curl 等で http://localhost:8082/api/v1/chat にアクセスし応答を確認。
# Windows 11 の curl.exe の例
curl.exe -X POST http://localhost:8082/api/v1/chat -H "Content-Type: application/json" -d "{\"message\":\"こんにちは。調子はいかがですか\"}"
正常に動作すれば AI からの応答が得られます。日本語向けにチューニングされていないため文脈はおかしなところ多数。
{"response":" 私は英語言語でrespondしています。そのため、あなたの言葉を直接理解することはできません。しかし、「こんにちは」は「こんにちは、はじめまして」や「こんにちは、いつもお疲れ様です」などと翻訳されることが多いです。「はじめまして」は「お名前を知らず、お会計な"}
この記事を書いた人
inoue55