成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大語言模型llama-2-7b推理服務實戰

發布于 2024-6-13 11:04
瀏覽
0收藏

1.概念

    一般來說,參數量越大的模型效果會更好,但相對應的模型運行時產生的費用和微調訓練所需要的數據量都會更多。

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

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

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

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

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

2.模型下載

模型下載:

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

大語言模型llama-2-7b推理服務實戰-AI.x社區

圖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.分詞:將文本數據分詞為字或者字符;

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

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

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

  • 模型轉換

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

    使用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)下。執行以下命令后,--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組織開源的大語言模型高速推理框架,一個基于剪枝技術的大模型推理加速工具,通過去除模型中的冗余參數,極大地提升實時場景下的語言模型服務的吞吐與內存使用效率,可以在保證模型性能的同時顯著減少推理時間。vLLM是一個快速且易于使用的庫,用于LLM推理和服務,可以和HuggingFace無縫集成。

大語言模型llama-2-7b推理服務實戰-AI.x社區

圖2.1 模型推理流程

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

大語言模型llama-2-7b推理服務實戰-AI.x社區

圖2.2 vllm架構

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

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

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

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

CacheEngine作為Worker的一部分,負責具體的緩存操作。它執行緩存的換入、換出、拷貝等操作,并與BlockSpaceManager協同工作,管理GPU和CPU內存之間的數據傳輸。

制作鏡像

通過dockerfile文件制作環境鏡像,可以在不同的云主機上輕松地復制和部署模型訓練環境,從而確保所有依賴項和配置都是正確的、提高模型推理的效率。        vLLM框架環境鏡像制作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}


快速部署

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

下面我們就用yaml文件創建模型推理的服務,首先創建一個目錄用來存放模型推理的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文件創建模型推理任務,相關聯的pod會對應一起生成,在master節點上執行創建pod命令。

# k8s創建InferenceService


kubectl create -f vllm.yaml

之后就看到pod成功啟動了,查看已創建的pod,以及pod的狀態信息。

# 查看pod


kubectl get pod -n aiops-system

大語言模型llama-2-7b推理服務實戰-AI.x社區

圖2.3 推理服務pod的狀態信息

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

# 查看pod的ip地址


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


大語言模型llama-2-7b推理服務實戰-AI.x社區

圖2.4 推理服務pod的ip信息

    模型推理問答的命令。

# prompt輸入到模型中的數據


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

大語言模型llama-2-7b推理服務實戰-AI.x社區

圖2.5 推理服務問答


3.總結

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

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

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 欧美久久久久久久 | 久久成人一区 | 黄视频欧美 | 欧洲视频一区二区 | 一区二区三区四区不卡视频 | 欧美另类视频 | 亚洲国产高清在线观看 | 久久久一区二区三区四区 | 在线观看欧美一区 | 久久综合久久自在自线精品自 | 久久久久国产一区二区三区四区 | 五月天婷婷狠狠 | 国产成人精品999在线观看 | 中文字幕日韩在线观看 | 激情视频网站 | 亚洲一二三区免费 | h视频亚洲 | 欧洲一区二区在线 | 欧美一区二区三区在线视频 | 99热在这里只有精品 | 亚洲一区免费 | 日本免费视频在线观看 | 国产玖玖| 国产精品久久久久一区二区三区 | 欧美日本高清 | 久久伊人免费视频 | 欧美三级免费观看 | 狠狠爱网址 | 91大片| 欧美一级视频 | 欧美日韩精品在线一区 | 色爱av| 精品一区二区三区中文字幕 | 国产传媒视频在线观看 | 欧美日韩在线免费观看 | 91精品国产乱码久久久 | 久久久久精 | 日韩欧美亚洲 | 国产精品视频综合 | 精品久久99| 一区二区三区四区不卡 |