日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

搭建Alpaca-LoRa

本文以搭建Alpaca-LoRa為例,演示如何使用數據緩存。通過數據緩存提前拉取llama-7b-hf模型數據和alpaca-lora-7b權重數據,然后在創建Alpaca-LoRa應用實例時直接掛載模型和權重數據,可以免去在實例中拉取數據的等待時間,加速Apache-LoRa啟動過程。

背景信息

Alpaca-LoRa是一種使用Lora技術在LLaMA模型進行微調的輕量級語言模型。它可以模擬自然語言進行對話交互,根據用戶輸入的指令來生成不同的文本,協助用戶完成寫作、翻譯、編寫代碼等任務。

重要
  • 阿里云不對第三方模型的合法性、安全性、準確性進行任何保證,阿里云不對由此引發的任何損害承擔責任。

  • 您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。

前提條件

您使用的VPC已綁定公網NAT網關,并配置SNAT條目允許該VPC或下屬交換機的資源可以訪問公網。

說明

如果VPC沒有綁定公網NAT網關,您需要在創建數據緩存和部署應用時綁定EIP,以便可以拉取公網數據。

操作步驟

制作Alpaca-LoRa鏡像

請根據自身業務需求,參考以下步驟制作鏡像。

  1. 訪問alpaca-lora,將倉庫克隆到本地。

  2. 修改倉庫中的requirements.txt和Dockerfile。

    展開查看requirements.txt

    accelerate
    appdirs
    loralib
    bitsandbytes
    black
    black[jupyter]
    datasets
    fire
    git+https://github.com/huggingface/peft.git
    transformers>=4.28.0
    sentencepiece
    gradio
    scipy

    展開查看Dockerfile

    FROM nvidia/cuda:11.8.0-devel-ubuntu22.04
    
    ARG DEBIAN_FRONTEND=noninteractive
    
    RUN apt-get update && apt-get install -y \
        git \
        curl \
        software-properties-common \
        && add-apt-repository ppa:deadsnakes/ppa \
        && apt install -y python3.10 \
        && rm -rf /var/lib/apt/lists/*
    WORKDIR /workspace
    COPY requirements.txt requirements.txt
    RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 \
        && python3.10 -m pip install -r requirements.txt \
        && python3.10 -m pip install numpy --pre torch --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cu118 \
        && python3.10 -m pip install --upgrade typing-extensions
    COPY . .
    
    EXPOSE 7860
  3. 使用Dockerfile構建鏡像。

  4. 將鏡像推送到鏡像倉庫中。

創建數據緩存

  1. 訪問HuggingFace,獲取模型ID。

    本文使用以下兩個模型,在HuggingFace找到目標模型后,在模型詳情頁面頂部可以復制模型ID。

    • decapoda-research/llama-7b-hf

    • tloen/alpaca-lora-7b

  2. 創建數據緩存。

    說明

    如果您的業務部署在中國內地地域,建議您在中國香港地域創建數據緩存,然后拷貝數據緩存到您需要的地域。

    1. 創建llama-7b-hf的數據緩存。

      調用CreateDataCache接口創建數據緩存所采用的參數示例如下,表示從HuggingFace拉取llama-7b-hf模型數據,保存到名為test的Bucket的/model/llama-7b-hf目錄。數據緩存名為llama-7b-hf,保留時長為1天。

      重要

      如果您通過SDK創建數據緩存,DataSource.Options中的各個參數前無需添加參數名的長度,例如#10#repoSource直接寫成repoSource#6#repoId直接寫成repoId即可。

      {
        "RegionId": "cn-beijing",
        "SecurityGroupId": "sg-2ze63v3jtm8e6syi****",
        "VSwitchId": "vsw-2ze94pjtfuj9vaymf****",
        "Bucket": "test",
        "Path": "/model/llama-7b-hf",
        "Name": "llama-7b-hf",
        "DataSource": {
          "Type": "URL",
          "Options": {
            "#10#repoSource": "HuggingFace/Model",
            "#6#repoId": "decapoda-research/llama-7b-hf"
          }
        },
        "RetentionDays": 1
      }
    2. 創建alpaca-lora-7b的數據緩存。

      調用CreateDataCache接口創建數據緩存所采用的參數示例如下,表示從HuggingFace拉取alpaca-lora-7b模型數據,保存到名為test的Bucket的/model/alpaca-lora-7b目錄。數據緩存名為alpaca-lora-7b,保留時長為1天。

      重要

      如果您通過SDK創建數據緩存,DataSource.Options中的各個參數前無需添加參數名的長度,例如#10#repoSource直接寫成repoSource#6#repoId直接寫成repoId即可。

      {
        "RegionId": "cn-beijing",
        "SecurityGroupId": "sg-2ze63v3jtm8e6syi****",
        "VSwitchId": "vsw-2ze94pjtfuj9vaymf****",
        "Bucket": "test",
        "Path": "/model/alpaca-lora-7b",
        "Name": "alpaca-lora-7b",
        "DataSource": {
          "Type": "URL",
          "Options": {
            "#10#repoSource": "HuggingFace/Model",
            "#6#repoId": "tloen/alpaca-lora-7b"
          }
        },
        "RetentionDays": 1
      }
  3. 查詢數據緩存狀態。

    根據返回的數據緩存ID調用DescribeDataCaches接口查詢數據緩存信息,當數據緩存的狀態(DataCaches.Status)為Available時,表示可以使用該數據緩存。

部署Alpaca-lora應用

  1. 使用數據緩存創建ECI實例,部署Alpaca-lora應用。

    調用CreateContainerGroup接口創建ECI實例所采用的參數示例如下,該ECI實例增加了20 GiB的臨時存儲空間,并掛載了llama-7b-hf和alpaca-lora-7b模型數據。實例內的容器使用準備好的Alpaca-lora鏡像,模型數據在容器內的掛載路徑分別為/data/llama-7b-hf/data/alpaca-lora-7b,容器啟動后會運行python3.10 generate.py --load_8bit --base_model /data/llama-7b-hf --lora_weights /data/alpaca-lora-7b

    {
      "RegionId": "cn-beijing",
      "SecurityGroupId": "sg-2ze63v3jtm8e6syi****",
      "VSwitchId": "vsw-2ze94pjtfuj9vaymf****",
      "ContainerGroupName": "alpacalora",
      "DataCacheBucket": "test",
      "EphemeralStorage": 20,
      "Container": [
        {
          "Name": "alpacalora",
          "Image": "registry-vpc.cn-beijing.aliyuncs.com/******/***-registry:v1.0",
          "Command": [
            "/bin/sh",
            "-c"
          ],
          "Arg": [
            "python3.10 generate.py --load_8bit --base_model /data/llama-7b-hf --lora_weights /data/alpaca-lora-7b"
          ],
          "Cpu": 16,
          "Memory": 64,
          "Port": [
            {
              "Port": 7860,
              "Protocol": "TCP"
            }
          ],
          "VolumeMount": [
            {
              "Name": "llama-model",
              "MountPath": "/data/llama-7b-hf"
            },
            {
              "MountPath": "/data/alpaca-lora-7b",
              "Name": "alpacalora-weight"
            }
          ]
        }
      ],
      "Volume": [
        {
          "Type": "HostPathVolume",
          "HostPathVolume.Path": "/model/llama-7b-hf",
          "Name": "llama-model"
        },
        {
          "Type": "HostPathVolume",
          "HostPathVolume.Path": "/model/alpaca-lora-7b",
          "Name": "alpacalora-weight"
        }
      ]
    }

  2. 確認應用部署狀態。

    根據返回的實例ID調用DescribeContainerGroupStatus查詢實例和容器狀態。當實例狀態(Status)和容器狀態(ContainerStatuses.State)為Running,表示實例已經創建成功,容器正在運行。

  3. 對外開放應用。

    在ECI實例所屬VPC已綁定NAT網關的前提下,您需要創建DNAT條目,使得ECI實例可以對外提供公網訪問服務。具體操作,請參見創建和管理DNAT條目

    說明

    如果VPC沒有綁定NAT網關,則需要您在創建ECI實例時為其綁定一個EIP,此時可以跳過本步驟。

    創建DNAT條目采用的配置項示例如下:

    • 公網IP地址:選擇NAT網關綁定的EIP地址。

    • 私網IP地址:選擇部署了Alpaca-lora應用的ECI實例。

    • 端口設置:使用具體端口,公網端口配置為80,私網端口配置為7860,協議為TCP。

測試模型效果

  1. 在ECI實例所屬安全組中添加入方向規則,開放應用對外端口。

  2. 打開瀏覽器,訪問Alpaca-lora應用。

    在配置了DNAT的情況下,請輸入DNAT條目中配置的公網IP地址和公網端口,例如47.94.XX.XX:80

    說明

    如果ECI實例單獨綁定了EIP,請輸入EIP地址和容器開放的端口,例如47.94.XX.XX:7860

  3. 輸入文本,測試模型。

    示例如下:

    lora-api.png