当前位置:   article > 正文

[大模型]GLM-4-9B-Chat vLLM 部署调用_vllm glm4

vllm glm4

vLLM 简介

vLLM 框架是一个高效的大型语言模型(LLM)推理和部署服务系统,具备以下特性:

  • 高效的内存管理:通过 PagedAttention 算法,vLLM 实现了对 KV 缓存的高效管理,减少了内存浪费,优化了模型的运行效率。
  • 高吞吐量:vLLM 支持异步处理和连续批处理请求,显著提高了模型推理的吞吐量,加速了文本生成和处理速度。
  • 易用性:vLLM 与 HuggingFace 模型无缝集成,支持多种流行的大型语言模型,简化了模型部署和推理的过程。兼容 OpenAI 的 API 服务器。
  • 分布式推理:框架支持在多 GPU 环境中进行分布式推理,通过模型并行策略和高效的数据通信,提升了处理大型模型的能力。
  • 开源:vLLM 是开源的,拥有活跃的社区支持,便于开发者贡献和改进,共同推动技术发展。

环境准备

在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch–>2.1.0–>3.10(ubuntu22.04)–>12.1

接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行演示。

在这里插入图片描述

pip 换源加速下载并安装依赖包

# 升级pip
python -m pip install --upgrade pip
# 更换 pypi 源加速库的安装
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

pip install modelscope==1.11.0
pip install openai==1.17.1
pip install torch==2.1.2+cu121
pip install tqdm==4.64.1
pip install transformers==4.39.3
# 下载flash-attn 请等待大约10分钟左右~
MAX_JOBS=8 pip install flash-attn --no-build-isolation
pip install vllm==0.4.0.post1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

直接安装 vLLM 会安装 CUDA 12.1 版本。

pip install vllm
  • 1

如果我们需要在 CUDA 11.8 的环境下安装 vLLM,可以使用以下命令,指定 vLLM 版本和 python 版本下载。

export VLLM_VERSION=0.4.0
export PYTHON_VERSION=38
pip install https://github.com/vllm-project/vllm/releases/download/v${VLLM_VERSION}/vllm-${VLLM_VERSION}+cu118-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu118
  • 1
  • 2
  • 3

考虑到部分同学配置环境可能会遇到一些问题,我们在 AutoDL 平台准备了 vLLM 的环境镜像,该镜像适用于任何需要 vLLM 的部署环境。点击下方链接并直接创建 AutoDL 示例即可。(vLLM 对 torch 版本要求较高,且越高的版本对模型的支持更全,效果更好,所以新建一个全新的镜像。) https://www.codewithgpu.com/i/datawhalechina/self-llm/GLM-4

使用 modelscope 中的 snapshot_download 函数下载模型,第一个参数为模型名称,参数 cache_dir 为模型的下载路径。

在 /root/autodl-tmp 路径下新建 model_download.py 文件并在其中输入以下内容,粘贴代码后请及时保存文件,如下图所示。并运行 python /root/autodl-tmp/model_download.py 执行下载,模型大小为 14GB,下载模型大概需要 2 分钟。

import torch 
from modelscope import snapshot_download, AutoModel, AutoTokenizerimport 
osmodel_dir = snapshot_download('ZhipuAI/glm-4-9b-chat', cache_dir='/root/autodl-tmp', revision='master')
  • 1
  • 2
  • 3

代码准备

python 文件

在 /root/autodl-tmp 路径下新建 vllm_model.py 文件并在其中输入以下内容,粘贴代码后请及时保存文件。下面的代码有很详细的注释,大家如有不理解的地方,欢迎提出 issue。

首先从 vLLM 库中导入 LLM 和 SamplingParams 类。LLM 类是使用 vLLM 引擎运行离线推理的主要类。SamplingParams 类指定采样过程的参数,用于控制和调整生成文本的随机性和多样性。

vLLM 提供了非常方便的封装,我们直接传入模型名称或模型路径即可,不必手动初始化模型和分词器。

我们可以通过这个 demo 熟悉下 vLLM 引擎的使用方式。被注释的部分内容可以丰富模型的能力,但不是必要的,大家可以按需选择。

from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
import os
import json

# 自动下载模型时,指定使用modelscope。不设置的话,会从 huggingface 下载
# os.environ['VLLM_USE_MODELSCOPE']='True'

def get_completion(prompts, model, tokenizer=None, max_tokens=512, temperature=0.8, top_p=0.95, max_model_len=2048):
    stop_token_ids = [151329, 151336, 151338]
    # 创建采样参数。temperature 控制生成文本的多样性,top_p 控制核心采样的概率
    sampling_params = SamplingParams(temperature=temperature, top_p=top_p, max_tokens=max_tokens, stop_token_ids=stop_token_ids)
    # 初始化 vLLM 推理引擎
    llm = LLM(model=model, tokenizer=tokenizer, max_model_len=max_model_len,trust_remote_code=True)
    outputs = llm.generate(prompts, sampling_params)
    return outputs


if __name__ == "__main__":    
    # 初始化 vLLM 推理引擎
    model='/root/autodl-tmp/ZhipuAI/glm-4-9b-chat' # 指定模型路径
    # model="THUDM/glm-4-9b-chat" # 指定模型名称,自动下载模型
    tokenizer = None
    # tokenizer = AutoTokenizer.from_pretrained(model, use_fast=False) # 加载分词器后传入vLLM 模型,但不是必要的。
    
    text = ["给我介绍一下大型语言模型。",
           "告诉我如何变强。"]
    # messages = [
    #     {"role": "system", "content": "你是一个有用的助手。"},
    #     {"role": "user", "content": prompt}
    # ]
    # 作为聊天模板的消息,不是必要的。
    # text = tokenizer.apply_chat_template(
    #     messages,
    #     tokenize=False,
    #     add_generation_prompt=True
    # )

    outputs = get_completion(text, model, tokenizer=tokenizer, max_tokens=512, temperature=1, top_p=1, max_model_len=2048)

    # 输出是一个包含 prompt、生成文本和其他信息的 RequestOutput 对象列表。
    # 打印输出。
    for output in outputs:
        prompt = output.prompt
        generated_text = output.outputs[0].text
        print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

结果如下:

Prompt: '给我介绍一下大型语言模型。', Generated text: '大型语言模型是一种基于深度学习的自然语言处理技术,它能够理解、生成和翻译自然语言,为用户提供丰富的语言交互体验。\n\n以下是关于大型语言模型的一些关键信息:\n\n### 1. 设计目标\n\n- **理解自然语言**:能够理解用户的意图和需求,并进行相应的响应。\n- **生成自然语言**:根据输入生成符合语法和语义的自然语言回答。\n- **翻译自然语言**:在多种语言之间进行流畅的翻译。\n\n### 2. 技术架构\n\n- **深度学习**:采用神经网络技术对大量文本数据进行训练,以实现模型的理解、生成和翻译能力。\n- **预训练**:通过在大量无标注数据上进行预训练,使模型具备初步的语言理解和生成能力。\n- **微调**:在特定任务上进行微调,进一步提升模型在该任务上的表现。\n\n### 3. 应用场景\n\n- **问答系统**:如搜索引擎、智能客服、知识问答等。\n- **文本生成**:如内容创作、摘要生成、对话生成等。\n- **机器翻译**:在跨语言交流、全球电商等领域有广泛应用。\n\n### 4. 发展趋势\n\n- **模型规模不断扩大**:随着计算力的提升,模型规模将逐渐增大,性能也将相应提升。\n- **多模态融合**:将自然语言处理与图像、语音等其他模态信息融合,实现更全面的交互体验。\n- **可解释性和公平性**:关注模型的可解释性和公平性,提高用户对模型的信任。\n\n大型语言模型在改善人机交互、促进信息传播等方面具有重要作用。\n\n大型语言模型(Large Language Models,LLMs)是一种基于深度学习的自然语言处理(Natural Language Processing,NLP)技术,其核心能力在于理解和生成自然语言。以下是一些关于大型语言模型的关键点:\n\n1. **模型规模**:大型语言模型的规模巨大,通常包含数十亿至数千亿个参数。例如,GPT-3拥有1750亿个参数,是迄今为止最大的语言模型。\n\n2. **训练数据**:这些模型通常在大量文本数据上进行训练,包括书籍、新闻、网页等。这些数据帮助模型学习语言的高级特性,比如语法、语义和风格。\n\n3. **生成能力**:大型语言模型能够根据给定文本或上下文自主生成连贯、富有逻辑性的文本。这种能力在文本生成、摘要、机器翻译等领域有广泛的应用。\n\n4. **适应能力**:尽管这些模型能够生成'


Prompt: '告诉我如何变强。', Generated text: '\n变强是一个全面的提升过程,它包括身体、心理和精神的各个方面。以下是一些建议,希望能帮助你实现变强的目标:\n\n1. **身体强化**:\n   - **规律锻炼**:制定一个合理的训练计划,包括有氧运动(如跑步、游泳)和重量训练,可以提高身体的耐力和力量。\n   - **营养饮食**:健康饮食对身体的恢复和生长至关重要。保证摄入足够的蛋白质、碳水化合物、脂肪和微量元素。\n   - **充足睡眠**:保证每晚7-9小时的高质量睡眠,有助于身体恢复和内分泌平衡。\n\n2. **心理调适**:\n   - **正面思考**:保持积极的心态,面对挑战时,适时调整自己的心态,避免消极情绪的影响。\n   - **抗压能力**:培养面对挫折和压力的能力,可以通过冥想、瑜伽等方式来增强情绪管理能力。\n\n3. **精神成长**:\n   - **持续学习**:通过阅读、上课、参加讨论等方式,不断丰富自己的知识和视野。\n   - **目标设定**:明确自己的长期和短期目标,并制定实现这些目标的计划。\n\n具体措施如下:\n\n- **制定计划**:根据自身情况制定详细的计划,如每周锻炼几次,每次锻炼多长时间等。\n- **跟踪进度**:记录自己的训练和饮食,定期进行自我评估,调整计划。\n- **寻求帮助**:如果条件允许,可以聘请专业教练进行指导。\n- **保持耐心**:变强是一个长期的过程,需要耐心和毅力。\n\n请根据自己的实际情况,有选择性地采纳这些建议,不断努力,你会越来越强的。加油!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/743124
推荐阅读
相关标签