目錄
前言
一、llama.cpp 目錄結(jié)構(gòu)
二、llama.cpp 之 server 學(xué)習(xí)
1. 介紹
2. 編譯部署
3. 啟動服務(wù)
4、擴(kuò)展或構(gòu)建其他的?Web 前端
5、其他
前言
在《基于llama.cpp學(xué)習(xí)開源LLM本地部署》這篇中介紹了基于llama.cpp學(xué)習(xí)開源LLM本地部署。在最后簡單介紹了API 的調(diào)用方式。不習(xí)慣命令行的同鞋,也可以試試?llama.cpp 界面的交互方式,本章就詳細(xì)介紹一下server。
一、llama.cpp 目錄結(jié)構(gòu)
整個目錄比較簡潔,沒多少東西,以最少的代碼實現(xiàn)最全的功能,值得學(xué)習(xí)。文檔都很全,基本上在學(xué)習(xí)該推理框架時遇到或者沒有想到,你都能在根目錄或子目錄的README.md 找到。
本章主要講 server的界面??梢栽趀xamples/server下看看README?;蛘咧苯臃礁夸浵麓蜷_README.md. 找到如下點擊:
?
二、llama.cpp 之 server 學(xué)習(xí)
1. 介紹
?llama.cpp 的 server 服務(wù)是基于 httplib 搭建的一個簡單的HTTP API服務(wù)和與llama.cpp交互的簡單web前端。
server命令參數(shù):
-
--threads N
,?-t N
: 設(shè)置生成時要使用的線程數(shù). -
-tb N, --threads-batch N
: 設(shè)置批處理和提示處理期間使用的線程數(shù)。如果未指定,則線程數(shù)將設(shè)置為用于生成的線程數(shù) -
-m FNAME
,?--model FNAME
: 指定 LLaMA 模型文件的路徑(例如,models/7B/ggml-model.gguf). -
-a ALIAS
,?--alias ALIAS
: 設(shè)置模型的別名。別名將在 API 響應(yīng)中返回. -
-c N
,?--ctx-size N
: 設(shè)置提示上下文的大小。默認(rèn)值為 512,但 LLaMA 模型是在 2048 的上下文中構(gòu)建的,這將為更長的輸入/推理提供更好的結(jié)果。其他模型的大小可能有所不同,例如,百川模型是在上下文為 4096 的情況下構(gòu)建的. -
-ngl N
,?--n-gpu-layers N
: 當(dāng)使用適當(dāng)?shù)闹С郑壳盀?CLBlast 或 cuBLAS)進(jìn)行編譯時,此選項允許將某些層卸載到 GPU 進(jìn)行計算。通常會導(dǎo)致性能提高. -
-mg i, --main-gpu i
: 使用多個 GPU 時,此選項控制哪個 GPU 用于小張量,對于這些張量,在所有 GPU 之間拆分計算的開銷是不值得的。有問題的 GPU 將使用稍多的 VRAM 來存儲暫存緩沖區(qū)以獲得臨時結(jié)果。默認(rèn)情況下,使用 GPU 0。需要 cuBLAS. -
-ts SPLIT, --tensor-split SPLIT
: 使用多個 GPU 時,此選項控制應(yīng)在所有 GPU 之間拆分多大的張量。SPLIT 是一個以逗號分隔的非負(fù)值列表,用于分配每個 GPU 應(yīng)按順序獲取的數(shù)據(jù)比例。例如,“3,2”會將 60% 的數(shù)據(jù)分配給 GPU 0,將 40% 分配給 GPU 1。默認(rèn)情況下,數(shù)據(jù)按 VRAM 比例拆分,但這可能不是性能的最佳選擇。需要 cuBLAS. -
-b N
,?--batch-size N
: 設(shè)置用于提示處理的批大小。默認(rèn)值:512. -
--memory-f32
: 使用 32 位浮點數(shù)而不是 16 位浮點數(shù)來表示內(nèi)存鍵 + 值。不推薦. -
--mlock
: 將模型鎖定在內(nèi)存中,防止在內(nèi)存映射時將其換出. -
--no-mmap
: 不要對模型進(jìn)行內(nèi)存映射。默認(rèn)情況下,模型映射到內(nèi)存中,這允許系統(tǒng)根據(jù)需要僅加載模型的必要部分. -
--numa
: 嘗試對某些 NUMA 系統(tǒng)有幫助的優(yōu)化. -
--lora FNAME
: 將 LoRA(低秩適配)適配器應(yīng)用于模型(隱含 --no-mmap)。這允許您使預(yù)訓(xùn)練模型適應(yīng)特定任務(wù)或領(lǐng)域. -
--lora-base FNAME
: 可選模型,用作 LoRA 適配器修改的層的基礎(chǔ)。此標(biāo)志與 --lora 標(biāo)志結(jié)合使用,并指定適配的基本模型. -
-to N
,?--timeout N
: 服務(wù)器讀/寫超時(以秒為單位)。默認(rèn)值:600. -
--host
: 設(shè)置要偵聽的主機(jī)名或 IP 地址. 默認(rèn)?127.0.0.1
. -
--port
: 將端口設(shè)置為偵聽。默認(rèn)值:8080 -
--path
: 從中提供靜態(tài)文件的路徑?(default examples/server/public) -
--embedding
: 啟用嵌入提取,默認(rèn)值:禁用. -
-np N
,?--parallel N
: 設(shè)置進(jìn)程請求的槽數(shù)(默認(rèn)值:1) -
-cb
,?--cont-batching
: 啟用連續(xù)批處理(又名動態(tài)批處理)(默認(rèn):禁用) -
-spf FNAME
,?--system-prompt-file FNAME
?:將文件設(shè)置為加載“系統(tǒng)提示符(所有插槽的初始提示符)”,這對于聊天應(yīng)用程序很有用.? -
--mmproj MMPROJ_FILE
: LLaVA 的多模態(tài)投影儀文件的路徑.
2. 編譯部署
? ? 編譯部署請參考《基于llama.cpp學(xué)習(xí)開源LLM本地部署》。會在跟目錄下生成 ./server
3. 啟動服務(wù)
./server -m ../models/NousResearch/Llama-2-7b-chat-hf/ggml-model-q4_0.gguf -c 2048
服務(wù)啟動成功后,如下:
點擊或者在瀏覽器中輸入:http://127.0.0.1:8080
?可以看到:交互模式,提示詞、用戶名、提示詞模板還有模型參數(shù)等設(shè)置。打開“更多選型”,如下:
這些參數(shù)默認(rèn)就行,也可以根據(jù)實際情況調(diào)整。
在最下面輸入一些內(nèi)容,點擊“send”,就能與模型進(jìn)行聊天了。
從學(xué)習(xí)的角度來看,是不是很方面。不用敲命令,也不用單獨搭建前端。直接就能體驗大模型,也能學(xué)習(xí)里面機(jī)制與原理。
4、擴(kuò)展或構(gòu)建其他的?Web 前端
web靜態(tài)文件的默認(rèn)位置是“examples/server/public”。您可以通過運(yùn)行./server并將“--path”設(shè)置為“./your-directory”并導(dǎo)入“/completion.js”來訪問 llamaComplete() 方法來擴(kuò)展前端。文章來源:http://www.zghlxwxcb.cn/news/detail-805910.html
A simple example is below:
<html>
<body>
<pre>
<script type="module">
import { llama } from '/completion.js'
const prompt = `### Instruction:
Write dad jokes, each one paragraph.
You can use html formatting if needed.
### Response:`
for await (const chunk of llama(prompt)) {
document.write(chunk.data.content)
}
</script>
</pre>
</body>
</html>
5、其他
更多功能和參數(shù),詳見llama.cpp/examples/server/README.md。文章來源地址http://www.zghlxwxcb.cn/news/detail-805910.html
到了這里,關(guān)于llama.cpp模型推理之界面篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!