自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大語言模型llama-2-7b推理服務實戰(zhàn)

發(fā)布于 2024-6-13 11:04
瀏覽
0收藏

1.概念

    一般來說,參數(shù)量越大的模型效果會更好,但相對應的模型運行時產(chǎn)生的費用和微調(diào)訓練所需要的數(shù)據(jù)量都會更多。

大語言模型llama-2-7b推理過程如下:

    數(shù)據(jù)準備:下載llama-2-7b-hf模型,可以使用Hugging Face Transformers或PyTorch等庫加載模型;準備要輸入到模型中的數(shù)據(jù),以及tokenizer對文本進行編碼,以及將編碼后的文本轉換為模型所需的張量格式。

    模型轉換:在訓練完成后,將訓練時保存好的微調(diào)模型文件(Checkpoint Model)轉換為可以直接推理的二進制格式文件.

    模型推理:模型推理中模型會根據(jù)輸入的文本生成相應的輸出文本。

以上是大語言模型llama-2-7b的推理過程,這個過程需要大量的計算資源和時間。

2.模型下載

模型下載:

在HuggingFace中心(???https://huggingface.co/meta-llama??)模型列表頁中可以看到多個來自不同開源社區(qū)的主流模型。在展示中名稱中帶有hf的模型已轉換為Hugging Face檢查點,因此無需進一步轉換,我們將使用llama-2-7b-hf模型。 

大語言模型llama-2-7b推理服務實戰(zhàn)-AI.x社區(qū)

圖1.1 huggingface模型列表

# 下載 llama-2-7b-hf模型


git clone https://huggingface.co/meta-llama/Llama-2-7b-hf
  • tokenizer下載

tokenizer需要下載上述對應模型版本的tokenizer.model,也可以從Hugging Face模型存儲庫中下載并使用tokenizer。

# 下載 tokenizer


https://github.com/huggingface/tokenizers.git

tokenizer主要完成的工作:

1.分詞:將文本數(shù)據(jù)分詞為字或者字符;

2.構建詞典:根據(jù)數(shù)據(jù)集分詞的結果,構建詞典。(這一步并不絕對,如果采用預訓練詞向量,詞典映射要根據(jù)詞向量文件進行處理)。

3.數(shù)據(jù)轉換:根據(jù)構建好的詞典,將分詞處理后的數(shù)據(jù)做映射,將文本序列轉換為數(shù)字序列。數(shù)字序列還要變成符合模型需求的tensor格式。

4.數(shù)據(jù)填充與截斷:在以batch輸入到模型的方式中,需要對過短的數(shù)據(jù)進行填充,過長的數(shù)據(jù)進行截斷,保證數(shù)據(jù)長度符合模型能接受的范圍,同時batch內(nèi)的數(shù)據(jù)維度大小一致,否則無法成批次變成tensor張量。

  • 模型轉換

模型轉換指的是將訓練時保存好的微調(diào)模型文件(Checkpoint Model)轉換為可以直接推理的二進制格式文件,以便能夠直接用于推理。這種二進制格式通常是為了加速推理而設計的,它可能包括模型的優(yōu)化版本、減少冗余數(shù)據(jù)、固定模型結構等操作。

    使用llama-2-7b-hf模型無需進行模型轉換,當選擇llama-2-7b模型需要將llama-2-7b模型轉換為HuggingFace 格式。

    使用huggingface transformers提供的腳本convert_llama_weights_to_hf.py,將原版llama模型轉換為HuggingFace格式。

    同時需要將原版llama-2-7b的tokenizer.model放在--input_dir指定的目錄,其余文件放在${input_dir)/${model_size)下。執(zhí)行以下命令后,--output_dir中將存放轉換好的hf版權重。

    注意:transformers版本必須是4.31.0或以上版本,否則會報錯。

# 下載 transformers


git clone gitegithub.com:huggingface/transformers.git


 


# 進入到腳本所在目錄下


cd transformers/src/transformers/models/llama


 


#運行轉換腳本


python convert_llama_weights_to_hf.py


--input_dir /llama-2-7b \


--model_size 7B \


--output_dir /users/tgl/Downloads/llama_models/7B_hf/

3.模型推理

vLLM是是伯克利大學LMSYS組織開源的大語言模型高速推理框架,一個基于剪枝技術的大模型推理加速工具,通過去除模型中的冗余參數(shù),極大地提升實時場景下的語言模型服務的吞吐與內(nèi)存使用效率,可以在保證模型性能的同時顯著減少推理時間。vLLM是一個快速且易于使用的庫,用于LLM推理和服務,可以和HuggingFace無縫集成。

大語言模型llama-2-7b推理服務實戰(zhàn)-AI.x社區(qū)

圖2.1 模型推理流程

    vLLM的架構中它的核心組件是LLMEngine類,外層接口類LLM和AsyncLLMEngine都是對LLMEngine的封裝。LLMEngine有兩個核心組件,分別是負責請求調(diào)度的Scheduler和負責模型推理的Worker,前者從等待隊列中選擇接下來要處理的請求,后者負責使用模型對被調(diào)度的請求進行推理。

大語言模型llama-2-7b推理服務實戰(zhàn)-AI.x社區(qū)

圖2.2 vllm架構

 LLMEngine是整個系統(tǒng)的入口,它接收輸入請求并執(zhí)行推理過程。在初始化階段,LLMEngine會調(diào)用Worker中的CacheEngine來初始化GPU和CPU內(nèi)存,并計算可用的block數(shù)量。每個輸入請求會構造一個SequenceGroup,并將其保存到Scheduler中進行進一步的調(diào)度和處理。通過多次執(zhí)行step操作,LLMEngine會完成所有輸入請求對應的SequenceGroup的生成。

Scheduler負責調(diào)度和管理待處理的SequenceGroup。它維護著三個隊列:waiting、running和swapped。當一個SequenceGroup被添加到系統(tǒng)中時,它會被放入waiting隊列中。Scheduler會根據(jù)調(diào)度策略從不同隊列中選擇SequenceGroup進行處理,并維護隊列之間的狀態(tài)。當一個SequenceGroup的推理過程新增了token時,Scheduler會更新該SequenceGroup的狀態(tài)。

 BlockSpaceManager負責維護Cache block和GPU/CPU內(nèi)存之間的映射關系。它記錄了每個Cache block在GPU顯存或CPU內(nèi)存中的物理地址。當一個SequenceGroup被加入Scheduler時,并沒有分配具體的Cache block空間。在首次進入running階段時,SequenceGroup會向BlockSpaceManager申請可用的block空間,并進行相應的分配和管理。

Worker負責緩存更新和LLM推理的執(zhí)行。它首先執(zhí)行緩存更新操作,然后準備輸入token序列。通過調(diào)用LLM模型進行推理,Worker會生成新的token,并將其輸出結果更新到對應的SequenceGroup中。最后,多次執(zhí)行step操作,直到所有輸入請求對應的SequenceGroup都完成生成。

CacheEngine作為Worker的一部分,負責具體的緩存操作。它執(zhí)行緩存的換入、換出、拷貝等操作,并與BlockSpaceManager協(xié)同工作,管理GPU和CPU內(nèi)存之間的數(shù)據(jù)傳輸。

制作鏡像

通過dockerfile文件制作環(huán)境鏡像,可以在不同的云主機上輕松地復制和部署模型訓練環(huán)境,從而確保所有依賴項和配置都是正確的、提高模型推理的效率。        vLLM框架環(huán)境鏡像制作dockerfile文件如下:

# dockerfile
FROM nvidia/cuda:12.1.0-devel-ubuntu22.04 AS dev


RUN apt-get update -y \


&& apt-get install -y python3-pip git


RUN ldconfig /usr/local/cuda-12.1/compat/




WORKDIR /workspace




COPY requirements-common.txt requirements-common.txt


COPY requirements-cuda.txt requirements-cuda.txt


RUN --mount=type=cache,target=/root/.cache/pip \


pip install -r requirements-cuda.txt


 


COPY requirements-dev.txt requirements-dev.txt


RUN --mount=type=cache,target=/root/.cache/pip \


pip install -r requirements-dev.txt


 


ARG torch_cuda_arch_list='7.0 7.5 8.0 8.6 8.9 9.0+PTX'


ENV TORCH_CUDA_ARCH_LIST=${torch_cuda_arch_list}


快速部署

模型推理指的是運行轉換后的二進制格式文件,接收新的、未見過的數(shù)據(jù)樣本,根據(jù)其已學習到的特征和模式,生成預測結果。

下面我們就用yaml文件創(chuàng)建模型推理的服務,首先創(chuàng)建一個目錄用來存放模型推理的yaml文件。

mkdir -p /root/yaml/inference


cd /root/yaml/inference

模型推理的vllm.yaml文件如下:

apiVersion: v1
kind: InferenceService
metadata:
name: vllm #實例名稱
namespace: aiops-system #命名空間
spec:
  predictor:
    containers:
      - args:
      - --host
      - "0.0.0.0" 
      - --port
      - "8080" #推理服務的端口號
      - --model
      - /mnt/models/data/out_put/ #模型轉換后的路徑
    command:
      - python3
      - -m
      - vllm.entrypoints.api_server
    env:
      - name: STORAGE_URI
    value: pvc://is-pvc-1
    image: vllmserver:latest
    name: kserve-container
    resources:
      limits:
        cpu: "4"
        memory: 20Gi
        nvidia.com/gpu: "4"
      requests:
        cpu: "2"
        memory: 20Gi
        nvidia.com/gpu: "4"

通過vllm.yaml文件創(chuàng)建模型推理任務,相關聯(lián)的pod會對應一起生成,在master節(jié)點上執(zhí)行創(chuàng)建pod命令。

# k8s創(chuàng)建InferenceService


kubectl create -f vllm.yaml

之后就看到pod成功啟動了,查看已創(chuàng)建的pod,以及pod的狀態(tài)信息。

# 查看pod


kubectl get pod -n aiops-system

大語言模型llama-2-7b推理服務實戰(zhàn)-AI.x社區(qū)

圖2.3 推理服務pod的狀態(tài)信息

推理服務啟動后查看 pod的ip。

# 查看pod的ip地址


kubectl get pod vllm-predictor-674d78bdc9-m24d4 -n aiops-system -o wide


大語言模型llama-2-7b推理服務實戰(zhàn)-AI.x社區(qū)

圖2.4 推理服務pod的ip信息

    模型推理問答的命令。

# prompt輸入到模型中的數(shù)據(jù)


curl -X POST -H "Content-Type: application/json" -d '{"prompt":"My name is"}' http://172.19.***.**:8080/generate

大語言模型llama-2-7b推理服務實戰(zhàn)-AI.x社區(qū)

圖2.5 推理服務問答


3.總結

綜上所述,llama-2-7b大語言模型推理服務的實戰(zhàn)應用展示了其在自然語言處理領域的強大實力和應用潛力。通過不斷的技術優(yōu)化和服務改進,我們可以進一步推動自然語言處理技術的發(fā)展,為用戶提供更好的體驗和價值。未來,我們可以期待更先進的模型、更智能的推理服務以及更廣泛的應用場景。

本文轉載自 ??AI遇見云??,作者:賀晴

收藏
回復
舉報
回復
相關推薦