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

使用第八代Intel實例部署Llama-2-7B模型

本文以搭建大語言模型服務,介紹使用阿里云第八代Intel實例,基于xFasterTransformer單機部署Llama-2-7B語言模型。

背景信息

Llama-2-7B

Llama-2-7B是由Meta研發的70億參數規模的開源大模型。最新版本的Llama 2現在對個人、創作者、研究人員和企業開放,以便他們可以負責任地進行實驗、創新并擴展他們的想法。

阿里云第八代Intel CPU實例

阿里云八代實例(g8i/c8i/r8i/hfc8i/hfg8i/hfr8i)采用Intel? Xeon? Emerald Rapids或者Intel? Xeon? Sapphire Rapids,該實例支持使用新的AMX(Advanced Matrix Extensions)指令來加速AI任務。相比于上一代實例,八代實例在Intel? AMX的加持下,推理和訓練性能大幅提升。

xFasterTransformer

xFasterTransformer是由Intel官方開源的推理框架,為大語言模型(LLM)在CPU X86平臺上的部署提供了一種深度優化的解決方案,支持多CPU節點之間的分布式部署方案,使得超大模型在CPU上的部署成為可能。此外,xFasterTransformer提供了C++和Python兩種API接口,涵蓋了從上層到底層的接口調用,易于用戶使用并將xFasterTransformer集成到自有業務框架中。xFasterTransformer目前支持的模型如下:

Models

Framework

Distribution

Pytorch

C++

ChatGLM

ChatGLM2

ChatGLM3

Llama

Llama2

Baichuan

QWen

SecLLM(YaRN-Llama)

Opt

xFasterTransformer支持多種低精度數據類型來加速模型部署。除單一精度以外,還支持混合精度,以更充分地利用CPU的計算資源和帶寬資源,從而提高大語言模型的推理速度。以下是xFasterTransformer支持的單一精度和混合精度類型:

  • FP16

  • BF16

  • INT8

  • W8A8

  • INT4

  • NF4

  • BF16_FP16

  • BF16_INT8

  • BF16_W8A8

  • BF16_INT4

  • BF16_NF4

  • W8A8_INT8

  • W8A8_int4

  • W8A8_NF4

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

  • Llama-2-7B的代碼受Meta許可證的約束,為了下載模型權重和分詞器,請訪問Meta官網申請許可證。您應自覺遵守第三方模型的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。

步驟一:創建ECS實例

  1. 前往實例創建頁

  2. 按照界面提示完成參數配置,創建一臺ECS實例。

    需要注意的參數如下,其他參數的配置,請參見自定義購買實例

    • 實例:Qwen-7B-Chat運行大概需要16 GiB內存以上,為了保證模型運行的穩定,實例規格至少需要選擇ecs.c8i.4xlarge(32 GiB內存)。

    • 鏡像:Alibaba Cloud Linux 3.2104 LTS 64位。

    • 公網IP:選中分配公網IPv4地址,帶寬計費模式選擇按使用流量,帶寬峰值設置為100 Mbps。以加快模型下載速度。

      image..png

    • 系統盤:Llama-2-7B模型數據下載、轉換和運行過程中需要占用60 GiB的存儲空間,為了保證模型順利運行,建議系統盤設置為100 GiB。

  3. 添加安全組規則。

    在ECS實例安全組的入方向添加安全組規則并放行22端口和8080端口(22端口用于訪問SSH服務,8080端口用于請求Llama2服務)。具體操作,請參見添加安全組規則

步驟二:安裝模型所需容器環境

  1. 遠程連接該ECS實例。

    具體操作,請參見通過密碼或密鑰認證登錄Linux實例

  2. 安裝并啟動Docker。

    具體操作,請參見安裝Docker并使用(Linux)

  3. 獲取并運行Intel xFasterTransformer容器。

    sudo docker pull registry.openanolis.cn/openanolis/xfastertransformer:1.7.3-23
    sudo docker run -it --name xFT -h xFT --privileged --shm-size=16g --network host -v /mnt:/mnt -w /mnt/xFasterTransformer registry.openanolis.cn/openanolis/xfastertransformer:1.7.3-23

    當出現類似如下信息時,表示已獲取并成功運行xFasterTransformer容器。

    image

    重要

    后續操作都需要在容器中運行,如果退出了容器,可以通過以下命令啟動并再次進入容器的Shell環境。

    sudo docker start xFT
    sudo docker exec -it xFT bash
  4. (可選)更新xFasterTransformer腳本代碼。

    xFasterTransformer鏡像中已包含對應版本的腳本代碼,可以更新升級到最新的測試腳本。

    yum update -y
    yum install -y git
    cd /root/xFasterTransformer
    git pull

步驟三:準備模型數據

  1. 在容器中安裝依賴軟件。

    yum update
    yum install -y wget git git-lfs vim tmux
  2. 啟用Git LFS。

    下載預訓練模型需要Git LFS的支持。

    git lfs install
  3. 創建并進入模型數據目錄。

    mkdir /mnt/data
    cd /mnt/data
  4. 創建一個tmux session。

    tmux
    重要

    下載預訓練模型耗時較長,且成功率受網絡情況影響較大,建議在tmux session中下載,以避免ECS斷開連接導致下載模型中斷。

  5. 下載Llama-2-7B預訓練模型。

    pip install einops transformers_stream_generator tiktoken
    git clone https://www.modelscope.cn/modelscope/Llama2-Chinese-7b-Chat-ms.git llama-2-7b
  6. 轉換模型數據。

    由于下載的模型數據是HuggingFace格式,需要轉換成xFasterTransformer格式。生成的模型文件夾為/mnt/data/llama-2-7b-xft

    python -c 'import xfastertransformer as xft; xft.LlamaConvert().convert("/mnt/data/llama-2-7b")'
    說明

    不同的模型數據使用的Convert類不同,xFasterTransformer支持以下模型轉換類:

    • LlamaConvert

    • ChatGLMConvert

    • ChatGLM2Convert

    • ChatGLM3Convert

    • OPTConvert

    • BaichuanConvert

    • QwenConvert

步驟四:運行Llama 2服務

  1. 安裝相關依賴。

    pip3 install -i https://mirrors.aliyun.com/pypi/simple/ mlserver
  2. /root/xFasterTransformer/serving/mlserver/single-rank/modelsettings.json中模型文件路徑修改為正確路徑。

    sed -i 's/"model_path": "[^"]*"/"model_path": "\/mnt\/data\/llama-2-7b-xft"/' /root/xFasterTransformer/serving/mlserver/single-rank/model-settings.json
    sed -i 's/"token_path": "[^"]*"/"token_path": "\/mnt\/data\/llama-2-7b"/' /root/xFasterTransformer/serving/mlserver/single-rank/model-settings.json
    說明
    • 模型其他配置可以在model-settings.json中的parameters:extra中進行配置,包括數據格式,生成長度output_length等。

    • MLServer框架支持批處理,將多個請求合并為一個請求進行推理,開啟批處理請調整max_batch_sizemax_batch_time參數。

      • max_batch_size:最多多少個請求可以被合并為一個,當設置N大于1時,最多創建batch size為N的請求。當設置為0或1時禁用該功能。

      • max_batch_time:在達到最大批處理大小前,等待新請求的最長時間,單位為秒。當設置為0時,禁用該功能。

  3. 配置服務IP地址,以啟用公網訪問。

    默認IP地址為127.0.0.1,需要修改為0.0.0.0才能通過公網IP訪問服務。配置文件為/root/xFasterTransformer/serving/mlserver/singlerank/settings.json

    sed -i 's/"host": "127\.0\.0\.1"/"host": "0.0.0.0"/g' /root/xFasterTransformer/serving/mlserver/single-rank/settings.json
    說明

    默認服務端口為8080,您也可以修改settings.json中的http_port屬性為自定義端口號。

  4. 運行Llama 2服務。

    cd /root/xFasterTransformer/serving/mlserver/single-rank/
    OMP_NUM_THREADS=$(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') / 2)) LD_PRELOAD=libiomp5.so numactl -C $(seq -s, 0 2 $(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') - 2))) -m 0 mlserver start .

    image

  5. 使用curl命令發送服務請求。

    Llama-2-7B模型非AI聊天機器人版本,輸出結果為續寫模式。AI聊天模式請下載Llama-2-chat-7B版本模型,并將輸入調整為chat格式:"[INST] {輸入Prompt} [/INST]"

    在一臺新實例或新的終端上,通過以下命令發送POST請求。請修改其中的ECS公網IP地址。prompt可以修改post_data中的data屬性。

    post_data='{"inputs": [{"name": "questions", "shape": [1, 1], "datatype": "BYTES", "parameters": {"content_type": "str"}, "data": ["你好,今天過得怎么樣?"]}]}'
    url="http://<ECS公網IP地址>:8080/v2/models/xft-model/infer"
    curl -X POST -H "Content-Type: application/json" -d "$post_data" "$url"

    返回結果如下所示:

    image