框架是一个高效的大语言模型推理和部署服务系统,具备以下特性:
- 高效的内存管理:通过 算法, 实现了对 缓存的高效管理,减少了内存浪费,优化了模型的运行效率。
- 高吞吐量: 支持异步处理和连续批处理请求,显著提高了模型推理的吞吐量,加速了文本生成和处理速度。
- 易用性: 与 模型无缝集成,支持多种流行的大型语言模型,简化了模型部署和推理的过程。兼容 的 服务器。
- 分布式推理:框架支持在多 环境中进行分布式推理,通过模型并行策略和高效的数据通信,提升了处理大型模型的能力。
- 开源共享: 由于其开源的属性,拥有活跃的社区支持,这也便于开发者贡献和改进,共同推动技术发展。
在 平台中租赁一个 3090 等 24G 显存大小的容器实例,镜像选择如下 →→→
接下来打开本地设备终端使用 的方式访问,在终端中依次复制登录指令和密码完成登录
登录成功后的界面如图所示👇
或者也可以直接打开 网页端的快捷工具中选择 并在其中点击终端打开(这种方式不需要验证🫠)
接下来开始环境配置、模型下载和运行演示 ~
换源加速下载并安装依赖包
直接安装 会安装 版本。
考虑到部分同学配置环境可能会遇到一些问题,我们在AutoDL平台准备了Qwen2的环境镜像,该镜像适用于该仓库除Qwen-GPTQ和vllm外的所有部署环境。点击下方链接并直接创建Autodl示例即可。
https://www.codewithgpu.com/i/datawhalechina/self-llm/Qwen2
使用 中的 函数下载模型,第一个参数为模型名称,参数 为模型的下载路径。
先切换到 目录,
然后新建名为 的 脚本,并在其中输入以下内容并保存
然后在终端中输入 执行下载,这里需要耐心等待一段时间直到模型下载完成。
Python脚本
在 路径下新建 文件并在其中输入以下内容,粘贴代码后请及时保存文件。下面的代码有很详细的注释,如有不理解的地方,欢迎大家提 。
首先从 库中导入 和 类。 类是使用 引擎运行离线推理的主要类。 类指定采样过程的参数,用于控制和调整生成文本的随机性和多样性。
提供了非常方便的封装,我们直接传入模型名称或模型路径即可,不必手动初始化模型和分词器。
我们可以通过这个代码示例熟悉下 引擎的使用方式。被注释的部分内容可以丰富模型的能力,但不是必要的,大家可以按需选择,自己多多动手尝试 ~
运行代码
结果如下:
创建兼容 OpenAI API 接口的服务器
兼容 协议,所以我们可以直接使用 创建 服务器。 部署实现 协议的服务器非常方便。默认会在 http://localhost:8000 启动服务器。服务器当前一次托管一个模型,并实现列表模型、 和 端口。
- :是基本的文本生成任务,模型会在给定的提示后生成一段文本。这种类型的任务通常用于生成文章、故事、邮件等。
- :是面向对话的任务,模型需要理解和生成对话。这种类型的任务通常用于构建聊天机器人或者对话系统。
在创建服务器时,我们可以指定模型名称、模型路径、聊天模板等参数。
- 和 参数指定地址。
- 参数指定模型名称。
- 参数指定聊天模板。
- 指定服务模型的名称。
- 指定模型的最大长度。
这里指定 是因为 模型的最大长度为 ,防止 初始化 缓存时消耗资源过大。
加载完毕后出现如下信息说明服务成功启动
- 通过 命令查看当前的模型列表
得到的返回值如下所示
- 使用 命令测试
得到的返回值如下所示
- 用 脚本请求
得到的返回值如下所示
- 用 命令测试
得到的返回值如下所示
- 用 脚本请求
得到的返回值如下所示
既然 是一个高效的大型语言模型推理和部署服务系统,那么我们不妨就测试一下模型的回复生成速度。看看和原始的速度相比有多大的提升。这里直接使用 自带的 脚本进行测试。可以将当前文件夹 脚本放在 目录下。或者也可以自行下载脚本。
下面是一些 脚本的参数说明:
- 参数指定模型路径或名称。
- 推理后端,可以是 、 和 。分布对应 、 和 推理后端。
- 输入长度
- 输出长度
- 生成的 prompt 数量
- 随机种子
- 数据类型
- 模型最大长度
- 库的最大批处理大小(仅仅对于 推理后端有效且为必填字段)
- 数据集路径。(未设置会自动生成数据)
测试 推理速度的命令和参数设置
得到的结果如下所示
测试原始方式(即使用 的 库)推理速度的命令和参数设置
得到的结果如下所示
对比两者的推理速度,在本次测试中 的速度要比原始的速度快 34% 左右 🤗