はじめに
WSL2上のLlama.cppで大規模言語モデルの「zephyr-7b-beta」を実行して、Windows上のChatUIでそれを利用してみました。無料で実行可能です。github.com
github.com
必要なもの
WSL2にDocker Engineのインストールが必要です。Windowsにnpmのインストールが必要です。
使用した環境
WSL2
Ubuntu 22.04 on WSL2 CUDA 11.8
Windows
Windows 11
WSL2側でやること
Dockerのインストール
こちらに従いました。WSL2の場合は最初に以下のコマンドを実行しないとDockerが起動しません。
sudo service docker start
MongoDBの起動
初回
sudo docker run -d -p 27017:27017 --name mongo-chatui mongo:latest
2回目以降
sudo docker start mongo-chatui
Llama.cppのインストール
最初に「~/.bashrc」に以下を書き込んでおく必要があります。export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
WSL2再起動後(~/.bashrcの再読み込みでも可)にインストールします。
git clone https://github.com/ggerganov/llama.cpp cd llama.cpp make LLAMA_CUDA=1
Llama.cppの実行
モデルは別途ダウンロードする必要があります。./server -m models/zephyr-7b-beta.Q4_K_M.gguf -c 2048 -ngl 16
Windows側でやること
Node.jpのインストール
Node.jsをインストールすると同時にnpmもインストールされます。こちらから「Node.js(LTS)」をインストールしました。
> node --version v20.12.2
> npm -version 10.5.0
npmは以下のコマンドで10.5.2にアップデートしました。
npm install -g npm@10.5.2
このまま実行すると後で警告が出るので以下を実行しておきます。
npx update-browserslist-db@latest
ChatUIのセットアップ
リポジトリのクローン
git clone https://github.com/huggingface/chat-ui cd chat-ui
「.env.local」ファイルの作成
中身はこのようにします。完全にローカルで実行する場合にはHF_TOKENはでたらめで良さそうです。
MONGODB_URL=mongodb://localhost:27017 HF_TOKEN=="hf_abcdefg" MODELS=`[ { "name": "Local Zephyr", "chatPromptTemplate": "<|system|>\n{{preprompt}}</s>\n{{#each messages}}{{#ifUser}}<|user|>\n{{content}}</s>\n<|assistant|>\n{{/ifUser}}{{#ifAssistant}}{{content}}</s>\n{{/ifAssistant}}{{/each}}", "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://127.0.0.1:8080", "type": "llamacpp" } ] } ]`
実行
npm install npm run dev -- --open
2回目以降は下の部分だけでOKです。
間違い、修正点などあればコメント頂ければ幸いです。