【Intel Arc A770】使っていないPCを大規模言語モデル(LLM)サーバーとして働かせることに成功しました

はじめに

タイトルにあるとおり自宅内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




このエントリーをはてなブックマークに追加