开源模型应用落地-qwen-7b-chat与vllm实现推理加速的正确姿势(一)

这篇具有很好参考价值的文章主要介绍了开源模型应用落地-qwen-7b-chat与vllm实现推理加速的正确姿势(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

    基于真实生产级项目分享,帮助有需要的同学快速构建完整可交付项目

    项目流程包括(去掉业务部分):

  1.   开源模型测试,包括baichuan、qwen、chatglm、bloom
  2.   数据爬取及清洗
  3.   模型微调及评估
  4.   搭建AI交互能力
  5.   搭建IM交互能力
  6.   搭建违禁词识别能力
  7.   优化模型推理速度
  8.   增强模型长期记忆能力

二、术语介绍

    2.1. vLLM

    vLLM是一个开源的大模型推理加速框架,通过PagedAttention高效地管理attention中缓存的张量,实现了比HuggingFace Transformers高14-24倍的吞吐量。

    2.2. qwen-7b

    通义千问-7B(Qwen-7B) 是阿里云研发的通义千问大模型系列的70亿参数规模的模型。 

    2.3.Anaconda

    Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。


三、构建环境

    3.1. 基础环境及前置条件

  1.  操作系统:centos7
  2.  Tesla V100-SXM2-32GB  CUDA Version: 12.2
  3.  提前下载好qwen-7b-chat模型

          通过以下两个地址进行下载,优先推荐魔搭

          https://modelscope.cn/models/qwen/Qwen-7B-Chat/files

          ​​​​​​https://huggingface.co/Qwen/Qwen-7B-Chat/tree/main

          

    3.2. Anaconda安装

        1.  更新软件包

              sudo yum upgrade -y

         2. 下载Anaconda

             wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh

         3. 安装

             默认安装

             bash Anaconda3-2022.10-Linux-x86_64.sh

             -p 指定安装目录为/opt/anaconda3

             bash Anaconda3-2022.10-Linux-x86_64.sh -p /opt/anaconda3

          4. 初始化

             source ~/.bashrc

          5. 验证安装结果

              conda --version

          6. 配置镜像源

              conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
              conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
              conda config --set show_channel_urls yes

    3.3. 创建虚拟环境

        2.3.1.创建新环境

            conda create --name vllm python=3.10

        2.3.2.切换环境

            conda activate vllm

  3.4. vLLM安装

        2.4.1.安装软件包

             pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

             pip install tiktoken -i https://pypi.tuna.tsinghua.edu.cn/simple

             ps: vllm版本为0.2.7,tiktoken版本为0.5.2

        2.4.2.查看已软件包   

            conda list 或者 pip list 

            注意:上述命令必须先切换至vllm虚拟环境

四、部署服务

    4.1. 启动vllm服务

        python -m vllm.entrypoints.api_server  --model  /data/model/qwen-7b-chat  --swap-space 24 --disable-log-requests --trust-remote-code --max-num-seqs 256 --host 0.0.0.0 --port 9000  --dtype float16 --max-parallel-loading-workers 1  --enforce-eager

        常用参数:

         --model <model_name_or_path>
           Name or path of the huggingface model to use.

         --trust-remote-code
           Trust remote code from huggingface

        --dtype {auto,half,float16,bfloat16,float,float32}
          Data type for model weights and activations.
             • “auto” will use FP16 precision for FP32 and FP16 models, and BF16 precision for BF16 models.
             • “half” for FP16. Recommended for AWQ quantization.
             • “float16” is the same as “half”.
             • “bfloat16” for a balance between precision and range.
            • “float” is shorthand for FP32 precision.
            • “float32” for FP32 precision

         --swap-space <size>
            CPU swap space size (GiB) per GPU.

         --max-num-seqs <sequences>
            Maximum number of sequences per iteratio

          --quantization (-q) {awq,squeezellm,None}
            Method used to quantize the weights.


五、测试

    5.1. 流式案例

import threading
import requests
import json

class MyThread(threading.Thread):
    def run(self):
        headers = {"User-Agent": "Stream Test"}
        pload = {
                "prompt": "<|im_start|>system\n你是一位知名作家,名字叫张三,你擅长写作.<|im_end|>\n<|im_start|>user\n以中秋为主写一篇1000字的文章<|im_end|>\n<|im_start|>assistant\n",
                "n": 1,
                "temperature": 0.35,
                "max_tokens": 8192,
                "stream": True,
                "stop": ["<|im_end|>", "<|im_start|>",]
            }
        #此处端口9000要与vLLM Server发布的端口一致
        response = requests.post("http://127.0.0.1:9000/generate", headers=headers, json=pload, stream=True)


        for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False, delimiter=b"\0"):
                if chunk:
                    now_thread = threading.current_thread()
                    data = json.loads(chunk.decode("utf-8"))
                    output = data["text"]
                    print(f'now thread name: {now_thread.name},output: {output}')

if __name__ == '__main__':
    threads = []
    for i in range(1, 10, 1):
        t = MyThread()
        threads.append(t)

    # 启动线程
    for t in threads:
        t.start()

    # 等待所有线程完成
    for t in threads:
        t.join()

五、后续文章来源地址https://www.toymoban.com/news/detail-783530.html

  1. 支持多轮对话
  2. 支持高可用
  3. 兼容复杂业务场景
  4. 性能优化

到了这里,关于开源模型应用落地-qwen-7b-chat与vllm实现推理加速的正确姿势(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源模型应用落地-qwen模型小试-入门篇(三)

    一、前言     相信您已经学会了如何在Windows环境下以最低成本、无需GPU的情况下运行qwen大模型。现在,让我们进一步探索如何在Linux环境下,并且拥有GPU的情况下运行qwen大模型,以提升性能和效率。 二、术语     2.1. CentOS         CentOS是一种基于Linux的自由开源操作系统。

    2024年01月21日
    浏览(53)
  • 开源模型应用落地-qwen2模型小试-入门篇(六)

        经过前五篇“qwen模型小试”文章的学习,我们已经熟练掌握qwen大模型的使用。然而,就在前几天开源社区又发布了qwen1.5版本,它是qwen2模型的测试版本。在基于transformers的使用方式上有较大的调整,现在,我们赶紧跟上脚步,去体验一下新版本模型的推理质量。    

    2024年03月17日
    浏览(73)
  • 开源模型应用落地-qwen模型小试-Zero/One/Few Shot-进阶篇(九)

        Zero-Shot、One-Shot和Few-Shot是机器学习领域中重要的概念,特别是在自然语言处理和计算机视觉领域。通过Zero-Shot、One-Shot和Few-Shot学习,模型可以更好地处理未知的情况和新任务,减少对大量标注数据的依赖,提高模型的适应性和灵活性。这对于推动人工智能在现实世界中

    2024年04月10日
    浏览(57)
  • 开源语音大语言模型来了!阿里基于Qwen-Chat提出Qwen-Audio!

    论文链接: https://arxiv.org/pdf/2311.07919.pdf 开源代码: https://github.com/QwenLM/Qwen-Audio 大型语言模型(LLMs)由于其良好的知识保留能力、复杂的推理和解决问题能力,在通用人工智能(AGI)领域取得了重大进展。然而,语言模型缺乏像人类一样感知非文本模态(如图像和音频)的

    2024年01月18日
    浏览(48)
  • LLM大模型推理加速 vLLM;docker推理大模型;Qwen vLLM使用案例;模型生成速度吞吐量计算

    参考: https://github.com/vllm-project/vllm https://zhuanlan.zhihu.com/p/645732302 https://vllm.readthedocs.io/en/latest/getting_started/quickstart.html ##文档 这里使用的cuda版本是11.4,tesla T4卡 加速原理: PagedAttention,主要是利用kv缓存 注意:用最新的qwen 7B v1.1版本的话,vllm要升级到最新0.2.0才可以(http

    2024年01月21日
    浏览(114)
  • 开源模型应用落地-总述

            在当今社会,实际应用比纯粹理解原理和概念更为重要。即使您对某个领域的原理和概念有深入的理解,但如果无法将其应用于实际场景并受制于各种客观条件,那么与其一开始就过于深入,不如先从基础开始,实际操作后再逐步深入探索。         在这种实践至上

    2024年03月14日
    浏览(55)
  • 开源模型应用落地-业务整合篇(一)

    一、前言     经过对qwen-7b-chat的部署以及与vllm的推理加速的整合,我们成功构建了一套高性能、高可靠、高安全的AI服务能力。现在,我们将着手整合具体的业务场景,以实现完整可落地的功能交付。     作为上游部门,通常会采用最常用的方式来接入下游服务。为了调用

    2024年01月20日
    浏览(48)
  • 开源模型应用落地-业务优化篇(六)

    一、前言     经过线程池优化、请求排队和服务实例水平扩容等措施,整个AI服务链路的性能得到了显著地提升。但是,作为追求卓越的大家,绝不会止步于此。我们的目标是在降低成本和提高效率方面不断努力,追求最佳结果。如果你们在实施AI项目方面有经验,那一定会

    2024年02月22日
    浏览(49)
  • 开源模型应用落地-业务整合篇(四)

    一、前言     通过学习第三篇文章,我们已经成功地建立了IM与AI服务之间的数据链路。然而,我们目前面临一个紧迫需要解决的安全性问题,即非法用户可能会通过获取WebSocket的连接信息,顺利地连接到我们的服务。这不仅占用了大量的无效连接和资源,还对业务数据带来

    2024年01月24日
    浏览(43)
  • 开源模型应用落地-工具使用篇-SLB(二)

    一、前言     通过学习\\\"开源模型应用落地\\\"系列文章,我们成功地建立了一个完整可实施的AI交付流程。现在,我们要引入负载均衡,以提高我们的AI服务的性能和故障转移能力。本文将详细介绍如何使用腾讯云的负载均衡技术来将我们的AI服务部署为一个集群。 二、术语 2

    2024年02月20日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包