使用 LLAMA-CPP 伺服器部署開放式 LLM:逐步指南

使用 LLAMA-CPP 伺服器部署開放式 LLMs:逐步指南。了解如何安裝和設置 LLAMA-CPP 伺服器以提供開源大型語言模型,並透過 cURL、OpenAI 客戶端和 Python 的 requests 套件進行請求。優化本地和遠端部署。

2024年10月18日

party-gif

解鎖開源大型語言模型 (LLM) 的力量,透過這份全面的 LLAMA-CPP Server 部署指南。探索如何使用單一 LLM 有效地為多位使用者提供服務,並優化您的 AI 驅動應用程式的效能和可用性。

安裝 LLAMA-CPP

使用 Homebrew 套件管理器安裝 LLAMA-CPP 是最簡單的方式。這在 macOS 和 Linux 機器上都可以原生運作。如果要在 Windows 機器上安裝 LLAMA-CPP,您需要使用 Windows 子系統 (WSL)。

使用 Homebrew 安裝 LLAMA-CPP,請在終端機中執行以下命令:

brew install llama-cpp

此命令將下載並在您的系統上安裝 LLAMA-CPP 套件。安裝完成後,您可以開始使用 llama-server 命令來服務您的 LLM 模型。

啟動 LLAMA-CPP 伺服器

要啟動 LLAMA-CPP 伺服器,請遵循以下步驟:

  1. 使用 Homebrew 套件管理器安裝 LLAMA-CPP:

    brew install llama.cpp
    

    此命令將在您的 Mac 或 Linux 機器上安裝 LLAMA-CPP。Windows 使用者需要使用 WSL (Windows 子系統) 來安裝 LLAMA-CPP。

  2. 透過執行以下命令啟動 LLAMA-CPP 伺服器:

    llama-server --model <hugging-face-repo-id> --model-file <quantization-file>
    

    <hugging-face-repo-id> 替換為您要服務的模型的 Hugging Face 儲存庫 ID,並將 <quantization-file> 替換為您要使用的特定量化檔案(例如 GGML 格式的 4 位量化版本)。

  3. LLAMA-CPP 伺服器將預設在 localhost:8080 上監聽傳入的請求。您可以使用可用的選項(如 --host--port)自訂主機位址和連接埠。

  4. 伺服器支援各種配置選項,包括設定最大上下文窗口、批次大小等。您可以執行 llama-server --help 探索這些選項。

  5. 伺服器啟動後,您可以使用不同的方法與之互動,如 cURL、OpenAI 客戶端或 Python requests 套件,如前面的章節所示。

請記住,LLAMA-CPP 伺服器旨在在您的本地機器或生產環境中提供一種快速高效的方式來服務開源大型語言模型。通過利用伺服器,您可以輕鬆地將這些模型集成到您的應用程序中,並為多個用戶提供單個 GPU 的服務。

向 LLAMA-CPP 伺服器發出請求

有幾種方法可以與 LLAMA-CPP 伺服器互動並向服務的模型發出請求:

  1. 使用 cURL 命令:

    curl -X POST -H "Content-Type: application/json" -d '{"prompt": "Hello, how are you?", "max_tokens": 50}' http://localhost:8080/v1/chat/completions
    

    這將向在本地主機的 8080 端口上運行的聊天完成端點發出 POST 請求。

  2. 使用 OpenAI 客戶端:

    1import openai 2 3openai.api_base = "http://localhost:8080/v1" 4openai.Model.list() 5 6response = openai.ChatCompletion.create( 7 model="chat-gpt-3.5", 8 messages=[ 9 {"role": "system", "content": "You are a helpful assistant."}, 10 {"role": "user", "content": "Hello, how are you?"} 11 ] 12) 13 14print(response.choices[0].message.content)

    這使用 OpenAI 客戶端與 LLAMA-CPP 伺服器互動,該伺服器與 OpenAI API 兼容。

  3. 使用 Python Requests 套件:

    1import requests 2 3url = "http://localhost:8080/v1/chat/completions" 4headers = {"Content-Type": "application/json"} 5data = { 6 "prompt": "Hello, how are you?", 7 "max_tokens": 50 8} 9 10response = requests.post(url, headers=headers, json=data) 11print(response.json())

    這使用 Python Requests 套件向聊天完成端點發出 POST 請求。

在所有這些示例中,LLAMA-CPP 伺服器在本地主機的 8080 端口上運行,提供指定的模型。您可以根據需要自訂伺服器配置,如主機位址、連接埠和模型。

自訂 LLAMA-CPP 伺服器

LLAMA-CPP 提供了一個高度可定制的伺服器,允許您微調 LLM 部署的行為。以下是您可以配置的一些關鍵選項:

  1. 最大上下文窗口: 您可以定義 LLM 的最大上下文窗口大小,這決定了模型可以處理的輸入序列的最大長度。

  2. 批次大小: LLAMA-CPP 支持批量處理提示,允許您同時處理多個輸入,以提高吞吐量。您可以配置批次大小來優化性能。

  3. 主機位址: 預設情況下,LLAMA-CPP 伺服器監聽 localhost,但您可以更改主機位址,使伺服器可從您網路上的其他機器訪問。

  4. 連接埠: 伺服器預設監聽 8080 連接埠,但您可以指定不同的連接埠。

  5. 模型路徑: LLAMA-CPP 允許您自訂加載 LLM 模型檔案的路徑,給您靈活性來組織模型資產。

  6. 嵌入模型: 除了語言模型,LLAMA-CPP 還可以提供嵌入模型,讓您將文本生成和文本編碼功能集成到您的應用程序中。

  7. 指標追蹤: LLAMA-CPP 伺服器可以追蹤各種指標,如請求延遲和吞吐量,以幫助您監控和優化部署的性能。

利用這些自訂選項,您可以根據特定的部署需求調整 LLAMA-CPP 伺服器,無論您是在生產環境中運行它,還是在本地開發和實驗中使用它。

使用不同方法與 LLAMA-CPP 伺服器互動

要與 LLAMA-CPP 伺服器互動,我們可以使用各種方法:

  1. 使用 cURL 命令:

    • 向在 localhost 上運行的 chat completion 端點發出 POST 請求。
    • 提供必要的標頭和包含提示和所需生成令牌數的資料物件。
    • 響應將包括生成的文本,以及有關生成過程的資訊,如溫度、top-P、top-K 和預測的每秒令牌數。
  2. 使用 OpenAI 客戶端:

    • 使用本地 LLAMA-CPP 伺服器的 URL 作為基本 URL 創建 OpenAI 客戶端。
    • 使用聊天完成端點客戶端並提供模型名稱(例如 chat-gpt-3.5)。
    • 設置系統提示和用戶提示,然後向伺服器發出請求。
    • 響應將以與 OpenAI API 相同的格式返回。
  3. 使用 Requests 套件(Python):

    • 定義 POST 請求的 URL 和標頭。
    • 向伺服器傳遞多個不同的消息,並觀察它如何並發處理請求。
    • 伺服器將對請求進行排隊並逐一處理,而不會被淹沒。

通過使用這些不同的方法,您可以與 LLAMA-CPP 伺服器互動,並使用單個 LLM 和單個 GPU 為多個用戶提供服務。該伺服器提供了一種靈活且可定制的方式來部署開源語言模型,允許您調整各種參數以滿足您的特定需求。

結論

在這個視頻中,我們探索了 LlamaCPP 的安裝和使用,這是一個強大的開源項目,用於服務開源大型語言模型。我們學習了如何在本地機器上安裝 LlamaCPP、啟動伺服器,以及使用各種方法與之互動,包括 cURL、OpenAI 客戶端和 Python requests 套件。

我們還討論了 LlamaCPP 可用的各種配置選項,允許我們根據具體需求定制伺服器,如設置最大上下文窗口、批次大小和主機位址。此外,我們了解到 LlamaCPP 可以跟蹤指標,使其成為生產環境的合適選擇。

最後,我們探討了 LlamaCPP 的實際應用,特別是在部署大型語言模型方面的應用。我們提到了 Rasa 框架作為一個潛在的應用,並在視頻描述中提供了相關課程的鏈接。

總的來說,這個視頻提供了對 LlamaCPP 及其功能的全面介紹,使您能夠開始在本地機器或生產環境中服務開源大型語言模型。

常問問題