はじめに
タイトルにあるとおり自宅内LLMサーバーを立ち上げることに成功しました。サーバー側のPC
使っていないPCに「Intel Arc A770」をのせました。Ubuntu 22.04 Core i7 11700 RAM 64GB Intel Arc A770
メインPC
普段使っているPCです。おそらくこちらは低スペックでも良いと思います。
Windows 11
実行方法
Ubuntu PCでsyclを使ってLlama.cppを実行しました。Windows PCではHugging Faceの「ChatUI」を使いました。
Ubuntu PC
mongoDBの立ち上げdocker start mongo-chatui
oneAPIの開始
source /opt/intel/oneapi/setvars.sh
Llama.cppの実行
「--host 0.0.0.0」を付ける必要があります。
cd llama.cpp ZES_ENABLE_SYSMAN=1 ./build/bin/server -m models/zephyr-7b-beta.Q4_K_M.gguf -c 2048 -ngl 33 -sm none -mg 0 --host 0.0.0.0
Windows PC
cd chat-ui npm run dev -- --open
トラブルシューティング
以前のタスクが正常に終了していない場合以下のようなエラーが出ます。Error: listen EADDRINUSE: address already in use :::5565
以下の手順で強制終了できます。
PS chat-ui > netstat -aon | findstr :5565 TCP 0.0.0.0:5565 0.0.0.0:0 LISTENING 22444 TCP [::]:5565 [::]:0 LISTENING 22444 PS chat-ui > taskkill /F /PID 22444 成功: PID 22444 のプロセスは強制終了されました。
過去記事
Ubuntu PC側の設定はこちらを見て下さい。touch-sp.hatenablog.com
二つのPCをつなぐ方法(特にWindows PC側の設定)はこちらを見て下さい。
touch-sp.hatenablog.com
Windows PCでChatUIを使う方法はこちらを見て下さい。
touch-sp.hatenablog.com
補足1
ChatUIの「.env.local」はこのようにしています。HF_TOKENはでたらめで問題ありません。
アドレスはUbuntu PCのIPアドレスにする必要があります。(2箇所)
MONGODB_URL=mongodb://192.168.10.12:27017 HF_TOKEN=="hf_abc" MODELS=`[ { "name": "Local Zephyr", "tokenizer": "HuggingFaceH4/zephyr-7b-beta", "parameters": { "temperature": 0.1, "top_p": 0.95, "repetition_penalty": 1.2, "top_k": 50, "truncate": 1000, "max_new_tokens": 2048, "stop": ["</s>"] }, "endpoints": [ { "url": "http://192.168.10.12:8080", "type": "llamacpp" } ] } ]`
補足2
Windows側にショートカットを作る場合はこのようにすればOKです。作業フォルダーは各自変更して下さい。
リンク先
C:\Windows\System32\cmd.exe /K "npm run dev -- --open"
作業フォルダー
d:\chatui\chat-ui
補足3
Ubuntu側には以下のような「〇〇.sh」ファイルを作っておけば毎回の手間が省けます。3行目のアドレスは各自変更して下さい。
docker start mongo-chatui source /opt/intel/oneapi/setvars.sh cd ~/llama.cpp ZES_ENABLE_SYSMAN=1 ./build/bin/server -m models/zephyr-7b-beta.Q4_K_M.gguf -c 2048 -ngl 33 -sm none -mg 0 --host 0.0.0.0
実行方法は
. 〇〇.sh
補足4
Ollamaを実行する場合はこちら。touch-sp.hatenablog.com