本地化部署大模型方案二:fastchat+llm(vllm)

2024-01-24 05:44

本文主要是介绍本地化部署大模型方案二:fastchat+llm(vllm),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 引言
  • 一、上一节内容
  • 二、FastChat 介绍
  • 三、FastChat 实战
    • 3.1支持模型
    • 3.2 准备环境(这里我准备了一个autodl的新服务器)
    • 3.3 安装魔搭环境,下载大模型
    • 3.4 安装并使用FastChat
      • 3.4.1 安装FastChat
      • 3.4.2 使用FastChat
        • 第一步启动controller
        • 第二步启动model_worker(llm)
        • 第二步代替方案(vllm)
        • 第三步openai服务启动
        • 第四步验证

引言

本次是对上一节内容的补充,因为有的大模型是没有提供openai的类似api接口项目,只孤零零的提供了一个模型,所以通过上一节的部署方式是行不通的。为了解决这个问题使用了FastChat项目。多说一句话网上比较成熟的Langchain-Chatchat项目也是基于FastChat对接的大模型,大家有兴趣可以看看。后面有机会我专门来聊一下这个项目。

一、上一节内容

LangChain学习一:入门-本地化部署-接入大模型
http://t.csdnimg.cn/zS1sR

二、FastChat 介绍

FastChat 是一个开放平台,用于训练、服务和评估基于大型语言模型的聊天机器人。

  • FastChat 为 Chatbot Arena ( https://chat.lmsys.org/ ) 提供支持,为 50 多名法学硕士提供超过 600 万个聊天请求。
  • Arena 从并列的 LLM 比赛中收集了超过 10 万个人投票,编制了在线LLM Elo 排行榜。

FastChat 的核心功能包括:

  • 最先进模型的训练和评估代码(例如,Vicuna、MT-Bench)。
  • 具有 Web UI 和 OpenAI 兼容 RESTful API 的分布式多模型服务系统。

三、FastChat 实战

这个巨坑要看好哈------->选择cuda 至少要11.8 以上的版本

3.1支持模型

FastChat所支持的大模型

3.2 准备环境(这里我准备了一个autodl的新服务器)

在这里插入图片描述

3.3 安装魔搭环境,下载大模型

apt update
pip3 install -U modelscope
# 对于中国的用户,您可以使用以下命令进行安装:
# pip3 install -U modelscope -i https://mirror.sjtu.edu.cn/pypi/web/simple

这里用百川13B模型为例


from modelscope.hub.snapshot_download import snapshot_downloadlocal_dir_root = "/root/autodl-tmp/models_from_modelscope"
snapshot_download('baichuan-inc/Baichuan2-13B-Chat', cache_dir=local_dir_root)

命名为load.py,执行
在这里插入图片描述

python load.py

在这里插入图片描述

3.4 安装并使用FastChat

AutoDL平台有代理加速

source /etc/network_turbo

3.4.1 安装FastChat


git clone https://github.com/lm-sys/FastChat.git
cd FastChat
pip install .

在这里插入图片描述

3.4.2 使用FastChat

一共要启动三个服务分别是controller、model_worker(vllm 使用vllm_worker)、openai_api_server

  • vllm 加快推理速度:就是快点给出问题的答案
pip install vllm
第一步启动controller
python -m fastchat.serve.controller --host 0.0.0.0

其他参数

--host参数指定应用程序绑定的主机名或IP地址。默认情况下,应用程序将绑定在本地回环地址(即localhost或127.0.0.1)上。
--port参数指定应用程序监听的端口号。默认情况下,应用程序将监听21001端口。
--dispatch-method参数指定请求调度算法。lottery表示抽奖式随机分配请求,shortest_queue表示将请求分配给队列最短的服务器。默认情况下,使用抽奖式随机分配请求。
--ssl参数指示应用程序是否使用SSL加密协议。如果指定了此参数,则应用程序将使用HTTPS协议。否则,应用程序将使用HTTP协议。
第二步启动model_worker(llm)

打开另个终端,启动,这里会报一个错,需要安装一下相关的包
在这里插入图片描述

pip install accelerate

然后启动

python -m fastchat.serve.model_worker --model-path /root/autodl-tmp/models_from_modelscope/baichuan-inc/Baichuan2-13B-Chat --host 0.0.0.0  --load-8bit

在这里插入图片描述

其他参数

--host:指定模型工作进程绑定的主机名或IP地址。--port:指定模型工作进程绑定的端口号。--worker-address:指定模型工作进程的地址。--controller-address:指定模型控制器的地址。--model-path:指定要加载的模型文件的路径。--revision:指定模型文件的版本。--device:指定模型运行的设备类型,可以是CPU、GPU等。--gpus:指定用于模型运行的GPU设备的数量。--num-gpus:指定用于模型运行的GPU设备的数量。--max-gpu-memory:指定用于模型运行的GPU设备的最大内存限制。--dtype:指定模型的数据类型,可以是float32、float16等。--load-8bit:启用8位量化模型。--cpu-offloading:启用CPU卸载。--gptq-ckpt:指定GPTQ检查点的路径。--gptq-wbits:指定GPTQ权重的位数。--gptq-groupsize:指定GPTQ分组大小。--awq-ckpt:指定AWQ检查点的路径。--awq-wbits:指定AWQ权重的位数。--awq-groupsize:指定AWQ分组大小。--enable-exllama:启用Exllama。--exllama-max-seq-len:指定Exllama的最大序列长度。--exllama-gpu-split:指定Exllama的GPU划分。--exllama-cache-8bit:启用Exllama的8位缓存。--enable-xft:启用XFT。--xft-max-seq-len:指定XFT的最大序列长度。--xft-dtype:指定XFT的数据类型。--model-names:指定要加载的模型文件的名称。--conv-template:指定卷积模板的路径。--embed-in-truncate:启用嵌入截断。--limit-worker-concurrency:限制工作进程并发性的数量。--stream-interval:指定流间隔。--no-register:不注册模型。--seed:指定随机种子。--debug:启用调试模式。--ssl:启用SSL。
第二步代替方案(vllm)
python -m fastchat.serve.vllm_worker --model-path /root/autodl-tmp/models_from_modelscope/baichuan-inc/Baichuan2-13B-Chat  --host 0.0.0.0  

在这里插入图片描述

--host HOST:指定该工作节点的主机名或 IP 地址,默认为 localhost。
--port PORT:指定该工作节点监听的端口号,默认为 8000。
--worker-address WORKER_ADDRESS:指定该工作节点的地址。如果未指定,则自动从网络配置中获取。
--controller-address CONTROLLER_ADDRESS:指定控制节点的地址。如果未指定,则自动从环境变量中获取。如果环境变量也未设置,则默认使用 http://localhost:8001。
--model-path MODEL_PATH:指定模型文件的路径。如果未指定,则默认使用 models/model.ckpt。
--model-names MODEL_NAMES:指定要加载的模型名称。该参数只在多模型情况下才需要使用。
--limit-worker-concurrency LIMIT_WORKER_CONCURRENCY:指定最大并发工作进程数。默认为 None,表示不限制。
--no-register:禁止在控制节点上注册该工作节点。
--num-gpus NUM_GPUS:指定使用的 GPU 数量。默认为 1。
--conv-template CONV_TEMPLATE:指定对话生成的模板文件路径。如果未指定,则默认使用 conversation_template.json。
--trust_remote_code:启用远程代码信任模式。
--gpu_memory_utilization GPU_MEMORY_UTILIZATION:指定 GPU 内存使用率,范围为 [0,1]。默认为 1.0,表示占用全部 GPU 内存。
--model MODEL:指定要加载的模型类型。默认为 fastchat.serve.vllm_worker.VLLMModel。
--tokenizer TOKENIZER:指定要使用的分词器类型。默认为 huggingface。
--revision REVISION:指定加载的模型版本号。默认为 None,表示加载最新版本。
--tokenizer-revision TOKENIZER_REVISION:指定加载的分词器版本号。默认为 None,表示加载最新版本。
--tokenizer-mode {auto,slow}:指定分词器模式。默认为 auto,表示自动选择最佳模式。
--download-dir DOWNLOAD_DIR:指定模型下载目录。默认为 downloads/。
--load-format {auto,pt,safetensors,npcache,dummy}:指定模型加载格式。默认为 auto,表示自动选择最佳格式。
--dtype {auto,half,float16,bfloat16,float,float32}:指定模型数据类型。默认为 auto,表示自动选择最佳类型。
--max-model-len MAX_MODEL_LEN:指定模型的最大长度。默认为 None,表示不限制。
--worker-use-ray:启用 Ray 分布式训练模式。
--pipeline-parallel-size PIPELINE_PARALLEL_SIZE:指定管道并行的大小。默认为 None,表示不使用管道并行。
--tensor-parallel-size TENSOR_PARALLEL_SIZE:指定张量并行的大小。默认为 None,表示不使用张量并行。
--max-parallel-loading-workers MAX_PARALLEL_LOADING_WORKERS:指定最大并发加载工作数。默认为 4。
--block-size {8,16,32}:指定块大小。默认为 16。
--seed SEED:指定随机种子。默认为 None。
--swap-space SWAP_SPACE:指定交换空间的大小。默认为 4GB。
--max-num-batched-tokens MAX_NUM_BATCHED_TOKENS:指定每个批次的最大令牌数。默认为 2048。
--max-num-seqs MAX_NUM_SEQS:指定每个批次的最大序列数。默认为 64。
--max-paddings MAX_PADDINGS:指定每个批次的最大填充数。默认为 1024。
--disable-log-stats:禁止记录统计信息。
--quantization {awq,gptq,squeezellm,None}:指定模型量化类型。默认为 None,表示不进行量化。
--enforce-eager:强制启用 Eager Execution 模式。
--max-context-len-to-capture MAX_CONTEXT_LEN_TO_CAPTURE:指定要捕获的上下文长度。默认为 1024。
--engine-use-ray:在引擎中启用 Ray 分布式训练模式。
--disable-log-requests:禁止记录请求信息。
--max-log-len MAX_LOG_LEN:指定最大日志长度。默认为 10240。
第三步openai服务启动

另起一个终端

python3 -m fastchat.serve.openai_api_server --host 0.0.0.0 --port 8000

在这里插入图片描述

第四步验证

安装环境

pip install langchain
pip install openai

在这里插入图片描述

from langchain import PromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessagellm = ChatOpenAI(streaming=True,verbose=True,# callbacks=[callback],openai_api_key="none",openai_api_base="http://localhost:8000/v1",model_name="Baichuan2-13B-Chat"
)# 提示词
template = """
我很想去{location}旅行,我应该在哪里做什么?
"""
prompt = PromptTemplate(input_variables=["location"],template=template,)
# 说白了就是在提示词的基础上,把输入的话进行格式化方法输入,前后添加了一些固定词
final_prompt = prompt.format(location='安徽合肥')print(f"最终提升次:{final_prompt}")
output = llm([HumanMessage(content=final_prompt)])
print(f"LLM输出结果:{output}")

启动

python test.py

在这里插入图片描述
完结撒花

这篇关于本地化部署大模型方案二:fastchat+llm(vllm)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/638687

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}