FastChat部署大模型

news2025/5/10 9:37:28

一、前提条件

1、系统环境(使用的 autodl 算力平台)

在这里插入图片描述

2、安装相关库
安装 modescope
pip3 install -U modelscope
# 或使用下方命令
# pip3 install -U modelscope -i https://mirror.sjtu.edu.cn/pypi/web/simple
安装 fastchat
git clone https://github.com/lm-sys/FastChat.git
cd FastChat
pip install .
使用 魔搭 安装模型

from modelscope.hub.snapshot_download import snapshot_download

local_dir_root = "/root/autodl-tmp"
snapshot_download('baichuan-inc/Baichuan2-13B-Chat', cache_dir=local_dir_root)

二、使用fastchat

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

  • vllm 加快推理速度:就是快点给出问题的答案(当前vllm可用,可不用)
#安装vllm
pip install vllm
1、第一步启动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协议。

2、启动model_worker(llm)
  • 安装accelerate
pip install accelerate
  • 启动model_worker
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。

2、第二步代替方案(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
3、第三步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 HumanMessage

llm = 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}")

  • 运行结果
    在这里插入图片描述

fastchat 可使用浏览器启动页面(运行前 先完成上述所有流程)

  • 安装环境
pip install gradio
  • 启动页面
python3 -m fastchat.serve.gradio_web_server

  • 运行结果
    在这里插入图片描述
  • 运行界面

在这里插入图片描述

注意
  • 本地主机 对 远程服务器 进行 端口转发
ssh -CNg -L 7860:127.0.0.1:7860  -p 32946 root@connect.nmb2.seetacloud.com

最后输入 远程服务器 密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2372200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智汇云舟亮相第二十七届北京科博会

5月8日,备受瞩目的第二十七届中国北京国际科技产业博览会(以下简称:北京科博会)在国家会议中心盛大开幕。作为我国科技领域的重要盛会,北京科博会汇聚了众多前沿科技成果与创新力量,为全球科技产业交流搭建…

Redis最新入门教程

文章目录 Redis最新入门教程1.安装Redis2.连接Redis3.Redis环境变量配置4.入门Redis4.1 Redis的数据结构4.2 Redis的Key4.3 Redis-String4.4 Redis-Hash4.5 Redis-List4.6 Redis-Set4.7 Redis-Zset 5.在Java中使用Redis6.缓存雪崩、击穿、穿透6.1 缓存雪崩6.2 缓冲击穿6.3 缓冲…

北斗三号手持终端设备功能与应用

北斗三号卫星系统是我国自主建设、独立运行的全球卫星导航系统。通过多颗不同轨道卫星组成的,这些卫星持续向地球发射携带精确时间和位置信息的信号。地面上的北斗手持终端接收到至少四颗卫星信号后,利用信号传播时间差,通过三角函数等算法&a…

opencv中的图像特征提取

图像的特征,一般是指图像所表达出的该图像的特有属性,其实就是事物的图像特征,由于图像获得的多样性(拍摄器材、角度等),事物的图像特征有时并不特别突出或与无关物体混杂在一起,因此图像的特征…

【JVM-GC调优】

一、预备知识 掌握GC相关的VM参数,会基本的空间调整掌握相关工具明白一点:调优跟应用、环境有关,没有放之四海而皆准的法则 二、调优领域 内存锁竞争cpu占用io 三、确定目标 【低延迟】:CMS、G1(低延迟、高吞吐&a…

shopping mall(document)

shopping mall(document) 商城的原型,学习,优化,如何比别人做的更好,更加符合大众的习惯 抄别人会陷入一个怪圈,就是已经习惯了,也懒了,也不带思考了。 许多产品会迫于…

qiankun微前端任意位置子应用

qiankun微前端任意位置子应用 主项目1、安装qiankun2、引入注册3、路由创建4、路由守卫 二、子项目1、安装sh-winter/vite-plugin-qiankun2、main.js配置3、vite.config.js配置 三、问题解决 主项目 1、安装qiankun npm i qiankun -S2、引入注册 创建存放子应用页面 //whpv…

第十五章,SSL VPN

前言 IPSec 和 SSL 对比 IPSec远程接入场景---client提前安装软件,存在一定的兼容性问题 IPSec协议只能够对感兴趣的流量进行加密保护,意味着接入用户需要不停的调整策略,来适应IPSec隧道 IPSec协议对用户访问权限颗粒度划分的不够详细&…

spring5.x讲解介绍

Spring 5.x 是 Spring Framework 的重要版本升级,全面拥抱现代 Java 技术栈,其核心改进涵盖响应式编程、Java 8支持、性能优化及开发模式创新。以下从特性、架构和应用场景三个维度详细解析: 一、核心特性与架构改进 Java 8 全面支持 Spring …

荣耀A8互动娱乐组件部署实录(第3部分:控制端结构与房间通信协议)

作者:曾在 WebSocket 超时里泡了七天七夜的苦命人 一、控制端总体架构概述 荣耀A8控制端主要承担的是“运营支点”功能,也就是开发与运营之间的桥梁。它既不直接参与玩家行为,又控制着玩家的行为逻辑和游戏规则触发机制。控制端的主要职责包…

levelDB的数据查看(非常详细)

起因:.net大作业天气预报程序(WPF)答辩时,老师问怎么维持数据持久性的,启动时加载的数据存在哪里,我明白老师想考的应该是json文件的解析(正反),半天没答上来存那个文件了(老师默认这个文件是自…

在Fiddler中添加自定义HTTP方法列并高亮显示

在Fiddler中添加自定义HTTP方法列并高亮显示 Fiddler 是一款强大的 Web 调试代理工具,允许开发者检查和操作 HTTP 流量。一个常见需求是自定义 Web Sessions 列表,添加显示 HTTP 方法(GET、POST 等)的列,并通过颜色区…

基于公共卫生大数据收集与智能整合AI平台构建测试:从概念到实践

随着医疗健康数据的爆发式增长,如何有效整合、分析和利用这些数据已成为公共卫生领域的重要挑战。传统方法往往难以应对数据的复杂性、多样性和海量性,而人工智能技术的迅猛发展为解决这些挑战提供了新的可能性。基于数据整合与公共卫生大数据的AI平台旨在构建一个全面的生态…

clahe算法基本实现

一、背景介绍 图像算法处理中,经常需要遇到图像对比度调整的情况,CLAHE(Contrast Limited Adaptive Histogram Equalization)则是一种基于直方图,使用非常普遍的图像对比度调整算法。 关于这个算法的介绍有很多,基本原理这些&…

python打卡day20

特征降维------特征组合(以SVD为例) 知识点回顾: 奇异值的应用: 特征降维:对高维数据减小计算量、可视化数据重构:比如重构信号、重构图像(可以实现有损压缩,k 越小压缩率越高&#…

数字化转型-4A架构之数据架构

系列文章 数字化转型-4A架构(业务架构、应用架构、数据架构、技术架构) 数字化转型-4A架构之业务架构 数字化转型-4A架构之应用架构 数据架构 Data Architecture(DA) 1. 定义 数据架构,是组织管理数据资产的科学之…

React 第三十七节 Router 中 useOutlet Hook的使用介绍以及注意事项

React Router 中的 useOutlet 是 v6 版本新增的 Hook&#xff0c;用于在父路由组件中访问当前嵌套的子路由元素。它提供了比 <Outlet> 组件更灵活的控制方式&#xff0c;适合需要根据子路由状态进行动态处理的场景。 一、useOutlet的基本用法 import { useOutlet } fro…

AGV通信第3期|AGV集群智能应急响应系统:从故障感知到快速恢复

随着智慧工厂物流系统复杂度的提升&#xff0c;AGV运行过程中的异常处理能力已成为保障生产连续性的关键指标。面对突发障碍、设备故障等意外状况&#xff0c;传统依赖人工干预的响应模式已无法满足现代智能制造对时效性的严苛要求。 一、AGV异常应急体系面临的挑战 响应时效瓶…

军事目标无人机视角坦克检测数据集VOC+YOLO格式4003张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4003 标注数量(xml文件个数)&#xff1a;4003 标注数量(txt文件个数)&#xff1a;4003 …

软件安全(二)优化shellcode

我们在上一节课中所写的shellcode&#xff0c;其中使用到的相关的API是通过写入其内存地址来实现调用。这种方法具有局限性&#xff0c;如切换其他的操作系统API的内存地址就会发生变化&#xff0c;从而无法正常调用。 所谓的shellcode不过是在目标程序中加一个区段使得程序可…