注意:

在 Oracle Cloud Infrastructure GPU 上部署 Llama2

简介

LLAMA2 是一种先进的深度学习架构,设计用于在资源受限的设备上高效扩展机器学习模型。该平台具有令人难以置信的可扩展性和适应性,允许组织轻松处理大量数据,提取有意义的洞察,并对不断变化的市场状况做出快速反应。Llama2 的主要功能之一是它能够近乎实时地处理数据,这使企业能够及时响应环境变化。此外,它还支持各种数据源和处理框架,包括 Apache Kafka、Apache Flink、Apache Spark 等。这意味着开发人员可以选择适合其特定需求的最佳工具。

Llama2 还提供了许多其他有用的功能,例如支持流式 SQL,与 Hadoop 和 YARN 等常用大数据工具集成,以及强大的安全措施来确保数据隐私和完整性。总体而言,Llama2 是一个强大的工具,可以帮助组织高效处理和分析大型数据集,从而在当今快节奏的数字环境中获得竞争优势。

该架构由几个组件组成,它们协同工作以生成类似人类的响应。模型的核心是变压器编码器,它接受一系列单词或文本,并输出一系列表示输入的向量。然后,这些向量通过前馈神经网络 (FFNN) 和一层剩余连接来生成最终输出。

FFNN 由完全连接的层组成,这些层处理输入序列并生成上下文嵌入。剩余连接允许模型学习数据中更复杂的模式并提高其整体性能。

除了这些核心组件之外,Llama LLM 还包括其他几个模块,以帮助微调模型并提高其准确性。其中包括将文本输入转换为数字标记的标记器、用于存储学习的子词汇的词汇以及用于防止训练期间暴露偏见的掩码。

文本生成 WebUI 是适用于大语言模型的 gradio 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。Windows 仅受 VM 配置支持。

    注: NVIDIA 未正式支持 Rocky Linux。

  7. 在 OCI 上预配计算实例时,请使用标准 OS 映像或启用了 GPU 的映像。如果使用标准 OS 映像,则需要安装 NVIDIA vGPU 驱动程序。

    Image2

  8. 展开引导卷部分以将引导卷增加到至少 250GB,并将 VPU 增加到更高的性能,从而获得体面的读/写功能以实现更好的推断。

    BootVolume

    使用以上参数启动实例。

任务 2:安装 Llama2 的先决条件

  1. 由于 Oracle Linux GPU 构建映像中包含 NVIDIA 驱动程序,因此可以通过运行 nvidia-smi 命令来验证其存在性和功能。这将确保一切都正确设置,GPU 驱动程序按预期运行。

    nvidia_smi

  2. 增长 FileSystem :OCI 实例系统内存附带 46.6GB 默认值。由于我们将引导卷增加到 300GB,因此我们可以使用 OCI Util 的内置 OCI 命令扩展文件系统。

    要在将引导卷增加到 300GB 后扩展 OCI 实例上的文件系统,您可以使用内置 OCI 命令。请执行以下步骤。

    • 检查当前磁盘使用情况:在调整文件系统大小之前,最好检查当前磁盘使用情况,以确保它反映引导卷大小的增加。可以为此使用 df 命令。验证可用空间是否与新引导卷大小 (300GB) 匹配。

      bash df -h
      
    • 调整文件系统大小:使用 OCI 实用程序命令调整文件系统大小以使用增加的存储。具体命令可能因所使用的特定 OS 和文件系统而异。以下内容用于 Oracle Linux 8。

      sudo /usr/libexec/oci-growfs
      

      当要求您确认要扩展分区时,输入 y

    • 验证文件系统扩展:运行 resize 命令后,再次检查磁盘使用情况以确认文件系统已成功展开。

      bash df -h
      

    现在应反映文件系统大小的增加。通过执行以下步骤,您应该能够扩展 OCI 实例上的文件系统,以利用增加的引导卷提供的额外存储空间。

    种植者

  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 地址。

    现在,应用程序应该加载并显示如下所示。导航到顶部突出显示的部分模型。

    网页设计

  3. 模型部分中,输入所需 Llama2 模型的 Huggingface 资料档案库。为了我们的目的,我们从 Huggingface 存储库中选择了 GPTQ 模型 TheBloke/Llama-2-13B-chat-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 帮助中心