Windows +llama-cpp-python + SLM の量子化モデルで推論実行


windows環境は以下の通り。

windows 11 Pro ( 22H2 )
Core(TM) i5-4590T CPU @ 2.00GHz
RAM 8.00 GB

基本的にはWSL2 + Ubuntu の環境でllama-cpp-python を使います。

ではやってみましょう。


まず、PowerShellスクリプトの実行権限の確認を行います。

スタートメニューを右クリックして「ターミナル(管理者)」を選択、PowerShellスクリプトが実行できるかどうか確認します。

 

 

 

 

 

 

 

 

 

 

 

 

 

以下のコマンドを実行します。

上記の結果が「Restricted」の場合、現在のユーザにスクリプト実行権限を与えます。

再度Get-ExecutionPolicyを実行 して「RemoteSigned」になっていることを確認します。

 

 

 

 

 

 

 

 

 

 


wsl2およびUbuntuをインストールします。

以下のようなエラーになった場合
Error code: Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_FILE_NOT_FOUND
Ubuntuの登録を解除します。
>wsl –unregister Ubuntu
再度実行
>wsl –install

インストールが開始されます。

 

 

 

 

 

 

Ubuntu のインストールが終了すると、ユーザーアカウントを作成します。

まず、ユーザーネームを入力します(大文字は使えません、先頭に数字やハイフンもダメです)。

 

 

 

 

 

 

適当なユーザーネーム(例:foo3)を入力したら、次に適当なパスワードを入力してユーザーアカウント作成終了です。

exitでアカウントを抜けれます。

 

 

 

 

 

 

 

 

 

再度ターミナルを起動して確認してみます。

WSL2がインストールされています(後ろのVERSION番号で確認)。

 

 

 

 

 

再度ターミナルを終了して、startメニュからUbuntuを起動します。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

こんな感じ。

 

 

 

aptリポジトリをアップデートします。

以下のようなエラーが出た場合

例:Temporary failure resolving ‘archive.ubuntu.com’

名前解決ができていないので自分の環境にあったDNSサーバを /etc/resolv.conf に指定します。

まず、ネットワークの自動生成機能は切っておきます。/etc/wsl.confに追加します。
>sudo nano /etc/wsl.conf
[network]
generateResolvConf = false

次に、nslookupなどで自分の環境のDNSサーバを調べます(例:122.197.254.137)。それで/etc/resolv.conf を書き換えます。

>sudo nano /etc/resolv.conf
nameserver 122.197.254.137

updateを再実行、同時にupgradeもやっておきましょう。
>sudo apt update
>sudo apt upgrade -y

 


pipとvenvをインストール。

仮想環境(venv1)を作成して入ります。

llama-cpp-python をインストール します。

 


HuggingFace から4bit量子化された言語モデルをダウンロードして、これを推論用に使います。

オリジナルはMicrosoftの小規模言語モデル(SLM)のPhi-3-miniです。

作業用フォルダーを作成してダウンロード

wgetで失敗することがあります。
Temporary failure in name resolution.

DNSサーバーのIPアドレスをGoogleのPublicDNSサーバーに設定します。

>sudo nano /etc/resolv.conf
nameserver 8.8.8.8
再度wgetを実行
親ディレクトリに戻ります。

 


プロンプトを実行するパイソンコードを作ります。

プロンプトは「Tell me how to feel better? Please answer in Japanese.」(気分を良くするにはどうしたらいいですか?日本語で応えてください。)です。

Phi-3-mini は一応日本語も理解できるようですのでプロンプトを日本語で記述しても答えてくれます。

>sudo nano sample.py

>python3 sample.py

 

 

 

 

 

 

 

 

 

 

先頭に書いたスペックのWindows PCでCPUのみの場合、応答が返るのに1分半近くかかりました。
GPUにNVIDIAのRTX 40系(12GB)でCUDA/cuDNNを使い、n_gpu_layersを40以上に設定すれば、回答遅延をほぼ0にできるようです。

 


仮想環境を抜けます。
>deactivate

Ubuntuを抜けます。
>exit


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*