首页 > 其他分享 >使用vLLM和ChatGLM3-6b批量推理

使用vLLM和ChatGLM3-6b批量推理

时间:2023-12-23 21:45:47浏览次数:31  
标签:6b vLLM auto ChatGLM3 VERSION https vllm

当数据量大的时候,比如百万级别,使用 ChatGLM3-6b 推理的速度是很慢的。发现使用 vLLM 和 ChatGLM3-6b 批量推理极大的提高了推理效率。本文主要通过一个简单的例子进行实践。

1.安装 vLLM 和PyTorch [2]

除了 Python(本文使用 3.11)、CUDA(本文使用 11.8)外,还要安装 vllm、pytorch、xformers 等库,特别注意版本要一致。官方提供类库版本主要是针对 CUDA 12.1 版。如下所示:

# 用CUDA 11.8安装vLLM
# 指定vLLM版本
export VLLM_VERSION=0.2.6
# 指定Python版本
export PYTHON_VERSION=311
# 在线安装whl文件
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

# 用CUDA 11.8重新安装PyTorch
pip uninstall torch -y
pip install torch --upgrade --index-url https://download.pytorch.org/whl/cu118

# 安装xformers库
pip3 install -U xformers --index-url https://download.pytorch.org/whl/cu118

2.离线批量推理例子 [3]

例子实现是比较简单的,主要是参数配置细节,如下所示:

from vllm import LLM, SamplingParams

# 定义批量数据
prompts = [
    "宪法规定的公民法律义务有",
    "属于专门人民法院的是",
    "无效婚姻的种类包括",
    "刑事案件定义",
    "税收法律制度",
]
sampling_params = SamplingParams(temperature=0.1, top_p=0.5, max_tokens=4096)
path = '/data/ssw/llm_model/chatglm3-6b'
llm = LLM(model=path, trust_remote_code=True, tokenizer_mode="auto", tensor_parallel_size=2, dtype="auto")
outputs = llm.generate(prompts, sampling_params)

# 输出结果
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

(1)temperature=0.1 [5]

控制采样随机性的浮点数。较低的值使模型更具确定性,而较高的值使模型更随机。0 意味着贪婪采样。

(2)top_p=0.5 [5]

控制要考虑的 top tokens 的累积概率的浮点数。必须在(0,1]之间。设置为 1 以考虑所有 token。

(3)max_tokens=4096 [5]

每个输出序列生成的最大 token 数。

(4)trust_remote_code=True [4]

当下载 model 和 tokenizer 时,信任远程代码(比如,来自 HuggingFace)。

(5)tokenizer_mode="auto" [4]

"auto"模式会在可用时使用快速分词器,而"slow"模式则始终使用慢分词器。

(6)tensor_parallel_size=2 [4]

用于张量并行的分布式执行的 GPU 数量。

(7)dtype="auto" [4]

模型权重和激活的数据类型。当前支持 float32,float16 和 bfloat16。如果设置为 auto,将使用模型配置文件中指定的 torch_dtype 属性。然而,如果配置中的 torch_dtype 是 float32,将使用 float16。

参考文献

[1] https://github.com/vllm-project/vllm/releases

[2] https://docs.vllm.ai/en/latest/

[3] https://github.com/vllm-project/vllm/blob/main/examples/offline_inference.py

[4] https://github.com/vllm-project/vllm/blob/main/vllm/entrypoints/llm.py

[5] https://github.com/vllm-project/vllm/blob/main/vllm/sampling_params.py
[6] 使用vLLM和ChatGLM3-6b批量推理(代码):https://github.com/ai408/nlp-engineering/blob/main/知识工程-大语言模型/公众号文章/使用vLLM和ChatGLM3-6b批量推理/chatglm3_6b_vllm.py




NLP工程化

1.本公众号以对话系统为中心,专注于Python/C++/CUDA、ML/DL/RL和NLP/KG/DS/LLM领域的技术分享。
2.本公众号Roadmap可查看飞书文档:https://z0yrmerhgi8.feishu.cn/wiki/Zpewwe2T2iCQfwkSyMOcgwdInhf

NLP工程化

飞书文档

标签:6b,vLLM,auto,ChatGLM3,VERSION,https,vllm
From: https://www.cnblogs.com/shengshengwang/p/17923666.html

相关文章

  • CF1866B Battling with Numbers 题解
    前置知识:如果\(p=x^a,q=x^b\),那么\(\gcd(p,q)=x^{\min(a,b)},\operatorname{lcm}(p,q)=x^{\max(a,b)}\)。对于每个\(x\ina_i\),令\(x\)在\(Y\)中的指数为\(d_i\)(实际上不一定),计算贡献时,考虑将\(b_i\)与\(d_i\)分别放入\(p\)和\(q\)中:如果\(b_i<d_i\),贡献为......
  • 【LLMOps】vllm加速机制及推理不一致根因剖析
    介绍当前大模型主流推理方式包括:vllm、tgi、原生transformer回顾目前主流大模型都是由transformer演变过来,transformer核心是attention,参考《AttentionisAllYouNeed》 ,attention核心则是3个矩阵:Query、Key、Value。一句话解释attention:Query是当前单词查询矩阵,Key是被查......
  • ChatGLM2-6B模型的微调
    概述GLM、ChatGLM的相关基础知识说明:GLM模型底层还是基于Transformer,因此其设计、优化都是围绕Transformer的各个组件的。从注意力层的掩码、位置编码等方面优化与设计。ChatGLM3/ChatGLM2的源码中,比如finetune、trainer等代码,其实是copy自HuggingFace,而且其使用流程与调用机......
  • CF1886B
    迄今为止我认为写的最详细的一篇。考虑二分。思路我们把两盏灯分别命名为\(A\)和\(B\)。如何走回家?走回家有四种走法。最开始在\(A\)所照的区域内,家也在\(A\)所照的区域内,这样就可以直接走到家。最开始在\(A\)所照的区域内,家在\(B\)所照的区域内,先走到\(B\)......
  • CF1886B Fear of the Dark
    这道题只有两种情况:\(O\)点和\(P\)点都在同一个圆圈里;或者\(O\)点在一个圆圈里,\(P\)点在另外一个圆圈里。让我们用\(d(P,Q)\)来表示\(P\)点到\(Q\)点之间的距离,\(R\)记为半径。我们先来看第一种情况:\(O\)点和\(P\)点都在同一个圆圈\(A\)里。这种情况下,应满足......
  • ChatGLM3革新:推理速度提升2-3倍,成本降低一半的AI大模型
    引言随着人工智能技术的飞速发展,自然语言处理(NLP)已成为最具挑战性和活跃的研究领域之一。在这个领域,大型预训练模型已被证明是实现卓越性能的关键。智谱AI最近发布的ChatGLM3,作为其第三代对话大模型,不仅在性能上有了显著提升,还在多个方面展现了其技术优势。推理速度和成本ChatGL......
  • 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicK
    报错内容 解决办法:在Web.config的<configuration></configuration>中添加如下代码即可。<configuration><runtime><assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assembly......
  • 为美好的世界献上佐罗兔(2)基于docker安装ChatGLM3
    佐罗兔——rabbitzorro首先我找了一个B站的教学视频,但是他不是基于Docker的https://www.bilibili.com/video/BV1gN4y1r7RX作者一看就是专业讲课的,说三句水两句,不过教程的结构还是可以借鉴的。我的PC配置:N卡RTX306012GB板、i5、32G内存傻瓜安装了dockerDesktop对docke......
  • chatglm3-6b尝试
    十月底智谱开元路chatglm3,果断来尝试一下。1.ChatGLM3亮点ChatGLM3是智谱AI和清华大学KEG实验室联合发布的新一代对话预训练模型。ChatGLM3-6B是ChatGLM3系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B引入了代码执行(Code......
  • ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级
    ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级1.ChatGLM3简介ChatGLM3是智谱AI和清华大学KEG实验室联合发布的新一代对话预训练模型。ChatGLM3-6B是ChatGLM3系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6......