附註:

在 Oracle Cloud Infrastructure GPU 上部署 Llama2

簡介

LLAMA2 是最先進的深度學習架構,旨在有效地在資源受限的裝置上調整機器學習模型。此平台具有不可思議的擴展性和適應性,可讓組織輕鬆處理大量資料、擷取有意義的洞察分析,以及快速因應不斷變化的市場狀況。Llama2 的其中一個主要功能是能夠近乎即時地處理資料,讓企業能夠即時回應環境中的變更。此外,它支援各種資料來源和處理架構,包括 Apache Kafka、Apache Flink、Apache Spark 等。這表示開發人員可以根據特定需求選擇最佳工具。

Llama2 也提供許多其他有用的功能,例如支援串流 SQL、與熱門大數據工具 (例如 Hadoop 和 YARN) 整合,以及強大的安全措施以確保資料隱私權和完整性。整體而言,Llama2 是一項功能強大的工具,可協助組織有效率地處理及分析大型資料集,在現今步調快速的數位環境中取得競爭優勢。

此架構由數個元件組成,共同運作以產生類似人類的回應。模型的核心是變壓器編碼器,它需要一系列的單字或文字,並輸出一系列代表輸入的向量。接著,這些向量會通過前進神經網路 (FFNN) 和一層剩餘連接來產生最終輸出。

FFNN 是由處理輸入順序並產生情境化內嵌的完全連接層所組成。剩餘連線可讓模型在資料中學習更複雜的模式並提升其整體效能。

除了這些核心元件之外,Llama LLM 還包括數個其他模組,以協助微調模型並提高其準確性。其中包括將文字輸入轉換成數值記號的記號器、用來儲存學到子字的字彙,以及防止在訓練期間出現曝光偏差的遮罩 。

文字產生 WebUI 是大型語言模型的漸進式 Web UI。它也支援 API 和命令行工具 (如果有的話)。此 WebUI 支援多個模型後端,包括轉換器、llama.cpp、ExLlama、ExLlamaV2、AutoGPTQ、GPTQ-for-Llama、CTransformers 以及 AutoAWQ。也支援 LoRA 模型、微調、使用 QLoRA 訓練新的 LoRA。它具有擴充功能架構,可載入您模型最愛的擴充功能。它具有與 OpenAI 相容的 API 伺服器。

目標

必要條件

作業 1:在 OCI 上佈建 GPU 運算執行處理

  1. 使用具有公用子網路的現有 VCN 在 OCI 上啟動運算執行處理。如需詳細資訊,請參閱啟動計算例項

  2. 從這些可用的 GPU.A10 資源配置中選擇一個。

    VM.GPU.A10.1
    VM.GPU.A10.2
    BM.GPU.A10.4
    
  3. 啟動運算執行處理時,請將資源配置變更為上述其中一種資源配置。

  4. 如果您的租用戶未設定 GPU.A10 的服務限額,這些資源配置將不會包含在資源配置清單中。

    • 若要在 OCI 主控台中檢查您的租用戶限制,請設定要佈建 GPU.A10 運算執行處理的區域,開啟導覽功能表並按一下治理與管理

    • 租用戶管理下,選取限額、配額和用量

    • 選取服務Compute,在範圍欄位中選取其中一個可用性網域,然後在資源欄位中輸入 GPU.A10

    • 選取 A10 型 VM 和 BM 執行處理的 GPU

      Image1

  5. 每一可用性網域都有運算限制。檢查是否已在區域的任何可用性網域中設定限制。如果所有可用性網域的服務限額設為 0,請按一下要求增加服務限額連結,然後送出此資源的增加限額要求。

    注意:若要存取限額、配額和用量,您必須是租用戶管理員群組的成員,或者您的群組必須指定讀取 LimitsAndUsageViewers 的原則。

    • 如需有關服務限制的詳細資訊,請參閱服務限制
  6. 目前 OCI GPU.A10 運算資源配置支援 Oracle Linux、Ubuntu 以及 Rocky Linux。僅 VM 資源配置支援 Windows。

    備註: NVIDIA 不正式支援 Rocky Linux。

  7. 在 OCI 上佈建運算執行處理時,請使用標準作業系統映像檔或啟用 GPU 的映像檔。如果您使用標準作業系統映像檔,則需要安裝 NVIDIA vGPU 驅動程式。

    Image2

  8. 展開開機磁碟區區段,即可將開機磁碟區至少增加到 250GB,並將 VPU 增加到更高效能,讓讀取 / 寫入變得更有利於推論。

    BootVolume

    使用以上的參數啟動執行處理。

作業 2:安裝 Llama2 的先決條件

  1. 隨著 NVIDIA 驅動程式包含在 Oracle Linux GPU 建置映像檔中,我們可以執行 nvidia-smi 命令來驗證其存在性和功能。這將確保所有項目都正確設定,且 GPU 驅動程式可如預期般運作。

    nvidia_smi

  2. 成長 FileSystem :OCI 執行處理系統記憶體隨附 46.6GB 預設值。由於我們將開機磁碟區增加到 300GB,因此讓我們透過 OCI Util 的內建 OCI 命令來增加檔案系統。

    若要在將開機磁碟區增加到 300GB 之後擴充 OCI 執行處理上的檔案系統,您可以使用內建的 OCI 命令。請遵循以下步驟。

    • 檢查目前的磁碟使用狀況:重新調整檔案系統大小之前,請先檢查目前的磁碟使用狀況,以確保檔案能反映增加的開機磁碟區大小。您可以將 df 指令用於此目的。確認可用空間符合您的新開機磁碟區大小 (300GB)。

      bash df -h
      
    • 調整檔案系統大小:使用 OCI 公用程式命令來調整檔案系統的大小,以使用增加的儲存。實際的指令會根據您使用的特定作業系統和檔案系統而有所不同。下面是用於 Oracle Linux 8。

      sudo /usr/libexec/oci-growfs
      

      在要求確認您是擴充分割區時,輸入 y

    • 驗證檔案系統擴充:執行調整大小命令之後,請再次檢查磁碟使用狀況,以確認檔案系統已順利擴充。

      bash df -h
      

    現在應該反映增加的檔案系統大小。依照這些步驟,您應該能夠擴展 OCI 執行處理上的檔案系統,以利用增加的開機磁碟區所提供的額外儲存空間。

    growfs

  3. 使用下列指令在 Oracle Linux 8 上安裝 Python 3.10.6

    sudo dnf update -y
    sudo dnf install curl gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make -y
    wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz
    tar -xf Python-3.10.6.tar.xz
    cd Python-3.10.6/
    ./configure --enable-optimizations
    make -j 2
    nproc
    sudo make altinstall
    python3.10 -V
    
  4. 安裝 git 以複製 git 儲存區域。

    sudo dnf install git
    
  5. 使用下列指令安裝 conda

    mkdir -p ~/miniconda3
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
    rm -rf ~/miniconda3/miniconda.sh
    ~/miniconda3/bin/conda init bash
    
  6. 建立 conda 環境。

    conda create -n llama2 python=3.10.9 # llama2 being the conda environment name
    conda activate llama2
    
  7. 使用下列指令安裝 PyTorch 2.0

    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
    
  8. 複製 text-generation-webui。您複製的目錄中應該要有 text-generation-webui 儲存區域。

    git clone https://github.com/oobabooga/text-generation-webui
    
  9. 安裝 requirements.txt 並將目錄變更為 text-generation-webui,然後執行下列指令。

    pip3 install -r requirements.txt
    
  10. 更新防火牆規則以允許連接埠 7860 流量。

    sudo firewall-cmd --list-all # To check existing added ports
    sudo firewall-cmd --zone=public --permanent --add-port 7860/tcp
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all # Confirm that port has been added.
    

工作 3:執行 Llama2

  1. 先決條件已順利安裝,我們已準備好繼續執行 text-generation-webui。瀏覽至 text-generation-webui 目錄,然後執行下列命令。

    python server.py --sdp-attention --listen
    

    此程序的結果應該載入基本模組,並在連接埠 7860 上啟動推論伺服器。

    llama2run

  2. 確認在連接埠 7860 上執行的伺服器成功部署後 (如上所示),讓我們繼續存取 text-generation-webui 應用程式。開啟 Web 瀏覽器並輸入下列位址:http://<PublicIP>:7860,將 <PublicIP> 取代為執行處理的公用 IP 位址。

    現在,應用程式應該載入並顯示如下圖所示。導覽至頂端的區段模型,如反白顯示。

    Webuiapp

  3. 模型區段中,輸入所需 Llama2 模型的 Huggingface 儲存庫。基於我們的目的,我們從掛接表面儲存區域 TheBloke/Llama-2-13B-chat-GPTQ 選取了 GPTQ 模型。下載模型並將其載入模型區段。

    下載模型

  4. 載入之後,請導覽至交談區段,以 Llama2 開始產生文字。

    llama2demo

工作 4:透過 Service Manager systemctl 部署文字產生 WebUI

  1. 在路徑 /etc/systemd/system 中建立 llama2.service 檔案,然後輸入下列文字。

    [Unit]
    Description=systemd service start llama2
    
    [Service]
    WorkingDirectory=/home/opc/text-generation-webui
    ExecStart=bash /home/opc/text-generation-webui/start.sh
    User=opc
    [Install]
    WantedBy=multi-user.target
    
  2. 請務必變更您的工作目錄。我們在此提及 start.sh 作為執行檔案,讓我們在 text-generation-webui 目錄中建立該檔案,並輸入下列文字。

    #!/bin/sh
    # - the script is ran via anaconda python
    # - output is not buffered (-u)
    # - stdout & stderr are stored to a log file
    # - we're executing the working directory specified in the systemd service file
    /home/opc/miniconda3/envs/llama2/bin/python server.py --sdp-attention --listen
    
  3. 這確保永遠使用您的 conda 環境 Llama2。不需要從 systemd 服務啟動 conda 環境。因此,我們會使用 Shell 命令檔啟動,然後使用 Shell 命令檔來執行應用程式。執行下列命令以重新載入並啟用 / 啟動服務。

    sudo systemctl daemon-reload
    sudo systemctl enable llama2.service
    sudo systemctl start llama2.service
    
  4. 執行以下命令以檢查服務的狀態。

    sudo systemctl start llama2.service
    

認可

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center