附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請以雲端環境特有的值取代這些值。
在 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 伺服器。
目標
- 我們將安裝執行 WebUI 所需的一切,並載入 Llama2 模型以執行文字產生。
必要條件
-
具備 A10 GPU 限制的 Oracle Cloud Infrastructure (OCI) 租用戶。
-
現有的 OCI 虛擬雲端網路 (VCN) 至少要有一個公用子網路和公用 IP 限制。
-
來自您喜愛的 Huggingface Creator 的 Llama2 模型檢查點。請確定您的模型支援上述後端。
作業 1:在 OCI 上佈建 GPU 運算執行處理
-
使用具有公用子網路的現有 VCN 在 OCI 上啟動運算執行處理。如需詳細資訊,請參閱啟動計算例項。
-
從這些可用的 GPU.A10 資源配置中選擇一個。
VM.GPU.A10.1 VM.GPU.A10.2 BM.GPU.A10.4
-
啟動運算執行處理時,請將資源配置變更為上述其中一種資源配置。
-
如果您的租用戶未設定 GPU.A10 的服務限額,這些資源配置將不會包含在資源配置清單中。
-
若要在 OCI 主控台中檢查您的租用戶限制,請設定要佈建 GPU.A10 運算執行處理的區域,開啟導覽功能表並按一下治理與管理。
-
在租用戶管理下,選取限額、配額和用量。
-
選取服務至
Compute
,在範圍欄位中選取其中一個可用性網域,然後在資源欄位中輸入GPU.A10
。 -
選取 A10 型 VM 和 BM 執行處理的 GPU
-
-
每一可用性網域都有運算限制。檢查是否已在區域的任何可用性網域中設定限制。如果所有可用性網域的服務限額設為
0
,請按一下要求增加服務限額連結,然後送出此資源的增加限額要求。注意:若要存取限額、配額和用量,您必須是租用戶管理員群組的成員,或者您的群組必須指定讀取 LimitsAndUsageViewers 的原則。
- 如需有關服務限制的詳細資訊,請參閱服務限制。
-
目前 OCI GPU.A10 運算資源配置支援 Oracle Linux、Ubuntu 以及 Rocky Linux。僅 VM 資源配置支援 Windows。
備註: NVIDIA 不正式支援 Rocky Linux。
-
在 OCI 上佈建運算執行處理時,請使用標準作業系統映像檔或啟用 GPU 的映像檔。如果您使用標準作業系統映像檔,則需要安裝 NVIDIA vGPU 驅動程式。
-
展開開機磁碟區區段,即可將開機磁碟區至少增加到 250GB,並將 VPU 增加到更高效能,讓讀取 / 寫入變得更有利於推論。
使用以上的參數啟動執行處理。
作業 2:安裝 Llama2 的先決條件
-
隨著 NVIDIA 驅動程式包含在 Oracle Linux GPU 建置映像檔中,我們可以執行
nvidia-smi
命令來驗證其存在性和功能。這將確保所有項目都正確設定,且 GPU 驅動程式可如預期般運作。 -
成長 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 執行處理上的檔案系統,以利用增加的開機磁碟區所提供的額外儲存空間。
-
-
使用下列指令在 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
-
安裝 git 以複製 git 儲存區域。
sudo dnf install git
-
使用下列指令安裝
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
-
建立
conda
環境。conda create -n llama2 python=3.10.9 # llama2 being the conda environment name conda activate llama2
-
使用下列指令安裝
PyTorch 2.0
。pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
-
複製
text-generation-webui
。您複製的目錄中應該要有text-generation-webui
儲存區域。git clone https://github.com/oobabooga/text-generation-webui
-
安裝
requirements.txt
並將目錄變更為text-generation-webui
,然後執行下列指令。pip3 install -r requirements.txt
-
更新防火牆規則以允許連接埠
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
-
先決條件已順利安裝,我們已準備好繼續執行
text-generation-webui
。瀏覽至text-generation-webui
目錄,然後執行下列命令。python server.py --sdp-attention --listen
此程序的結果應該載入基本模組,並在連接埠
7860
上啟動推論伺服器。 -
確認在連接埠
7860
上執行的伺服器成功部署後 (如上所示),讓我們繼續存取text-generation-webui
應用程式。開啟 Web 瀏覽器並輸入下列位址:http://<PublicIP>:7860
,將<PublicIP>
取代為執行處理的公用 IP 位址。現在,應用程式應該載入並顯示如下圖所示。導覽至頂端的區段模型,如反白顯示。
-
在模型區段中,輸入所需 Llama2 模型的 Huggingface 儲存庫。基於我們的目的,我們從掛接表面儲存區域
TheBloke/Llama-2-13B-chat-GPTQ
選取了 GPTQ 模型。下載模型並將其載入模型區段。 -
載入之後,請導覽至交談區段,以 Llama2 開始產生文字。
工作 4:透過 Service Manager systemctl
部署文字產生 WebUI
-
在路徑
/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
-
請務必變更您的工作目錄。我們在此提及
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
-
這確保永遠使用您的 conda 環境 Llama2。不需要從 systemd 服務啟動 conda 環境。因此,我們會使用 Shell 命令檔啟動,然後使用 Shell 命令檔來執行應用程式。執行下列命令以重新載入並啟用 / 啟動服務。
sudo systemctl daemon-reload sudo systemctl enable llama2.service sudo systemctl start llama2.service
-
執行以下命令以檢查服務的狀態。
sudo systemctl start llama2.service
相關連結
認可
- 作者 - Abhiram Ampabathina (資深雲端架構師)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Deploy Llama2 on Oracle Cloud Infrastructure GPUs
F91998-01
January 2024
Copyright © 2024, Oracle and/or its affiliates.