Windows 安裝 text-generation-webui 執行 LLaMA 模型

聽說有一些在個人電腦只用 CPU 就能執行 LLaMA 模型的方法,找了一些資料,終於嘗試出來了,把過程記錄在此。其實還有許多參數搞不懂,但至少先求有,再求好了。

 

最主要的參考是來自這篇文章

 

text-generation-webui 快速使用各種語言模型的工具

 

底下是記錄過程,其實我已經在 D 碟試過了,這次要重新在 C 碟試試,看固態硬碟跑起來會不會順一點。

 

安裝程式

 

首先,到 oobabooga 的 Github 找到 text-generation-webui Windows 的安裝程式。

 

下載 oobabooga-windows.zip

 

image

 

我是解壓縮在 C:\App\oobabooga_windows 目錄中。

 

開啟命令提示字元視窗(DOS 視窗),直接執行 start_windows.bat

 

image

 

image

 

上面有提到,要載入環境要用

 

conda activate C:\App\oobabooga_windows\installer_files\env

 

卸載則要用

 

conda deactivate

 

image

 

接著問我 GPU

 

image

 

我只有內建的 Intel,所以選 D

 

此時畫面跑很快,有很多訊息都直接跑過去,所以第一次在 D 安裝時都沒注意,幸好當時有把訊息存起來,事後研究才注意到。

 

底下有提到,安裝結束後,要在 CMD_FLAGS.txt 這個檔案中加入 --cpu 這個旗幟。

 

image

 

這裡還有一個警告,說我的 conda 是舊的 23.3.1,有更新的 23.7.3

 

可用此命令去安裝

 

conda update -n base -c defaults conda

 

image

 

一直在安裝,防火牆大哥也三不五時出來擋一擋。

 

image

 

跑了一陣子,竟然完成了。

 

image

 

D 碟安裝時遇到的錯誤

 

為什麼說竟然完成了?

 

因為之前在 D 碟安裝時,遇到如下錯誤訊息:

 

         running build_rust

         error: can't find Rust compiler

   

         If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.

   

         To update pip, run:

   

             pip install --upgrade pip

   

         and then retry package installation.

   

         If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.

         [end of output]

   

     note: This error originates from a subprocess, and is likely not a problem with pip.

     ERROR: Failed building wheel for safetensors

   Successfully built sentence-transformers

   Failed to build safetensors

 

簡單來說,就是找不到 Rust 的 compiler,可以試著執行

 

pip install --upgrade pip

 

更新 pip,但我試了沒用。

 

所以選第二個方法,安裝 Rust,我沒有用上面的網址 

 

https://rustup.rs

 

而是去 https://www.rust-lang.org/zh-TW/tools/install 下載 64 位元版,並且進行安裝。

 

安裝時要有 Visual Studio C++ Build tools,我想我有安裝 VS,所以很順利就完成了。

 

image

 

cd 到 D 碟的 oobabooga_windows

 

再次執行 start_windows.bat

 

會有錯誤,不過也載入基本環境了,就繼續安裝

 

cd oobabooga_windows\text-generation-webui

 

執行

 

pip install -r requirements.txt

 

後來就成功了。

 

這次在 C 碟安裝時,我有刻意把 Rust 路徑修改,我以為會再次出現同樣的錯誤,但竟然直接完成了,大概是修改的地方沒有影響吧。

 

看這個畫面,其實還有一些警告訊息,但之前 D 碟安裝也有,好像也沒有大礙。

 

image

 

執行瀏覽器界面

 

此時就可以開瀏覽器,進入 http://127.0.0.1:7860

 

image

 

成功!

 

更新 conda

 

此時還無法對話,因為沒有載入語言模組。

 

不過我要先更新 conda,就是之前的建議命令:

 

conda update -n base -c defaults conda

 

也要把 --cpu 寫到 CMD_FLAGS.txt 檔案中。

 

畫面是更新的版本,很快就順利完成了。

 

image

 

載入語言模組

 

再次啟動伺服器,可以用

 

CD C:\App\oobabooga_windows\

python webui.py

 

也可以直接啟動 

 

start_windows.bat

 

進入瀏覽器後,選上方紅框的 Model。

 

此時可以把要下載的語言模型貼到右下方紅框,再按下下方的 Download 即可。

 

語言模型可以到 huggingface 去找,貼上去的格式就是 作者/模型,畫面中有說明。例如:meta-llama/Llama-2-7b

 

image

 

不過上面的方式有個缺點,好像會把全部的資料都下載下來。

 

它會在這裡 oobabooga_windows\text-generation-webui\models\ 建立子目錄,把所有資料都下載進去。

 

如果只想單獨下載某一個模型,可自行下載後,再放在這裡 oobabooga_windows\text-generation-webui\models 即可。

 

這是 LLaMA 2,GGML 是只要 CPU 就能執行的版本。

 

https://huggingface.co/TheBloke/Llama-2-13B-chat-GGML/tree/main

 

這是台灣做的

 

https://huggingface.co/audreyt/Taiwan-LLaMa-v1.0-GGML/tree/main

 

要選哪一個,要看自己的記憶體,理論上數字愈大的愈好,但記憶體要夠用才行。13B 就是 130億個參數,7B 就是 70億個參數。

 

我試這二個是可以的

 

llama-2-13b-chat.ggmlv3.q4_K_M.bin

Taiwan-LLaMa-13b-1.0.ggmlv3.q4_K_M.bin

 

那個 K_M , K_S 我就不懂了。

 

把語言模組複製到 models 目錄後,重新啟動伺服器,在 Model 頁,左上角 Model 下拉就可以看到現有的模組。

 

image

 

我選 Taiwan-LLaMa-13b-1.0.ggmlv3.q4_K_M.bin

 

Model loader 自動跳到 llama.cpp(專案在此),底下參數有人說可以不用改,我也不懂。

 

按下 Load,就會載入模型了。

 

image

 

網路上是有找到一些說明:

 

threads = 如果設置為 0,系統將自動確定要使用的線程數量。

 

n_batch = 放在一起以在查詢過程中發送的批次的 tokens。該值是 n_ctx 的除數。即 512 個 token / 2048 個 token

 

n-gpu-layers = 卸載到 GPU 以幫助提高性能的層數。

 

n_ctx = token 限制。2k 是默認值,OpenAI 將其用於許多舊模型。您可以獲得具有 4k 甚至 8k 限制的 GGML 和 GPTQ 版本,但這需要較好硬體才能完成。

 

回到 Chat 頁,問了第一個問題,真是令人淚流滿面,往好處想,至少能動了。

 

image

 

再問還是不行,至少知道 GPT,Bard,Bing 都比它強。

 

image

 

換 llama-2-13b-chat.ggmlv3.q4_K_M.bin 試試。

 

雖然看不太懂,但似乎好多了。

 

image

 

唬弄我啊?

 

image

 

試著唬它,想不到它沒被騙,知道台灣最高的山是玉山,高度也沒有錯。但後來又亂說一通了。

 

image

 

使用 Python 執行

 

底下是抄來的程式,發現也可以執行。

 

<path> 請填入模型的實際目錄,語言模型也改成正確的名稱。

 

from llama_cpp import Llama

llm = Llama(model_path="/<path>/llama-2-13b-chat.ggmlv3.q4_K_M.bin")

output = llm("Q:台灣最高的山在哪裡? A: ", max_tokens=32, stop=["Q:", "\n"], echo=True)

print(output)

 

執行結果:

image

奇怪的是,上面的回應就是用中文了,但在瀏覽器界面中,卻一直用英文回答。

驗到此暫時告一段落了。

 

 

重要度:
文章分類:

發表新回應

借我放一下廣告