text-generation-webui大模型部署

1 简介

text-generation-webui是一个挺好用的大模型部署UI,提供了很多便于交互的接口,安装部署好之后将model放置到对应的位置即可在网页访问,若是在服务器部署也可以通过ssh端口转发至公网服务器进行访问。
其中,模型的下载可参考这个教程,比较有效的是利用镜像网站和下载脚本进行下载,还有直接在浏览器中点击下载后再上传服务器。

2 安装

2.1 官方安装

先把库下载到本地

git clone https://github.com/oobabooga/text-generation-webui.git

然后进入文件夹,即可按照官方的教程进行安装,主要是根据系统类型,支不支持AVX指令集,以及是否使用GPU来选择。

2.2 自定义安装

2.2.1 环境

可以不使用官方的一键安装脚本,因为其会新下载一个conda并新建一个环境,并且下载过程会从国外官方的源下载所需要的环境包,比较慢。
首先,激活conda环境,根据平台安装pytorch,如果使用GPU则安装cuda版本的,并且安装cuda相关的库等等,这里不再赘述。
其次,根据GPUCPU选择对应的依赖文件,例如,支持NVIDIA GPU但不支持AVX2指令集的则选择requirements_noavx2.txt,使用清华源进行加速

pip install -r requirements_noavx2.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

题外话: 使用AVX2指令集有可能在模型部署的推理阶段出现Illegal instruction (core dumped) error的bug,可以根据链接重新下载对应的包。

2.2.2 模型

然后,根据示例放置好模型文件。比如,量化后的gguf模型可以直接放置。但是使用Q4量化的模型时,会出现AttributeError: ‘LlamaCppModel’ object has no attribute 'model’的bug,推荐使用Q5以上的。

text-generation-webui
└── models└── llama-2-13b-chat.Q4_K_M.gguf

原始的模型需要放在models文件夹下的子文件夹中,示意如下。

text-generation-webui
├── models
│   ├── lmsys_vicuna-33b-v1.3
│   │   ├── config.json
│   │   ├── generation_config.json
│   │   ├── pytorch_model-00001-of-00007.bin
│   │   ├── pytorch_model-00002-of-00007.bin
│   │   ├── pytorch_model-00003-of-00007.bin
│   │   ├── pytorch_model-00004-of-00007.bin
│   │   ├── pytorch_model-00005-of-00007.bin
│   │   ├── pytorch_model-00006-of-00007.bin
│   │   ├── pytorch_model-00007-of-00007.bin
│   │   ├── pytorch_model.bin.index.json
│   │   ├── special_tokens_map.json
│   │   ├── tokenizer_config.json
│   │   └── tokenizer.model

text-generation-webui的模型读取中,有多种模式,可根据不同的情况进行选择。
此外,在模型加载时,还容易出现AttributeError: ‘NoneType’ object has no attribute ‘Llama’,可根据平台选择对应的库下载安装llama-cpp-python即可。
特别地,在linux/arm64平台下下载安装时,会出现ERROR: Failed building wheel for llama-cpp-python,可尝试升级gcc(已经在aarch平台上成功验证),或者安装arm64-wheels的版本(还没测试过)。

3 部署

3.1 启动

在目录下启动即可。

python server.py

此时会返回显示在localhost:7860生成Web UI

3.2 autossh转发

在内网的服务器上部署,访问不太方便,参考ssh隧道,可利用autossh转发到公网服务器上进行访问。安装autossh后,在服务器上运行以下命令

# 80 公网端口
# 7860 本地端口
# username@xxx.xx.xx.xx 公网服务器用户和ip地址
# (-p xxx) 公网的ssh端口 一般默认22 可不写
autossh -M 4010 -NR 80:localhost:7860 username@xxx.xxx.xxx.xxx (-p xxxx)

参数解释:

  • -M 4010:表示用4010端口监听ssh连接的状态
  • -N:表示不执行远程命令
  • -R:将公网服务器的某个端口转发到本机的某个端口

注意:一般非root用户不能使用1024以下的端口,所以公网服务器的端口选择依情况而定,并且对于阿里云等租赁的服务器,还要在网站的控制台打开对应的端口才行,仅在服务器上操控防火墙开放端口还不行。

执行命令后,即可在个人电脑输入公网ip:端口进行访问Web UI。

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

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

相关文章

Android的三种动画详解(帧动画,View动画,属性动画)

Android的三种动画详解(帧动画、View动画、属性动画)_android动画效果大全-CSDN博客 1、帧动画 缺点是:占用内存较高,播放的是一帧一帧的图片,很少使用。 顺序播放预先定义的图片,类似于播放视频。 步骤…

代码随想录阅读笔记-字符串【替换数字】

题目 给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anu…

PlayBook 详解

4)Playbook 4.1)Playbook 介绍 PlayBook 与 ad-hoc 相比,是一种完全不同的运用 Ansible 的方式,类似与 Saltstack 的 state 状态文件。ad-hoc 无法持久使用,PlayBook 可以持久使用。 PlayBook 剧本是 由一个或多个 “…

使用Docker搭建Nascab

使用Docker来部署Nascab能够让这个过程变得更加灵活和便捷,因为Docker可以在隔离的环境中运行应用程序,简化了部署和配置的复杂性。 使用Docker CLI部署Nascab docker run -d \ --name nascab \ -p 18080:80 \ -p 18443:443 \ -p 18090:90 \ -p 18021:…

Linux之shell变量

华子目录 什么是变量?变量的名称示例 变量的类型变量的定义示例 自定义变量查看变量(自定义变量和全局变量) 环境变量定义环境变量(全局变量)法一法二法三env,printenv,export注意 C语言与shell…

upload-labs 0.1 靶机详解

下载地址https://github.com/c0ny1/upload-labs/releases Pass-01 他让我们上传一张图片,我们先尝试上传一个php文件 发现他只允许上传图片格式的文件,我们来看看源码 我们可以看到它使用js来限制我们可以上传的内容 但是我们的浏览器是可以关闭js功能的…

蓝桥杯-粘木棍-DFS

题目 思路 --有n根木棍,需要将其粘成m根木棍,并求出最小差值,可以用DFS枚举出所有情况。粘之前有n根短木棍,粘之后有m根长木棍,那么让长木棍的初始长度设为0。外循环让所有的短木棍都参与粘,内循环让要粘的…

windows 11访问Debian10上的共享目录

步骤 要在Windows 11上访问Debian 10.0.0的共享目录,可以通过以下步骤来实现: 1. 设置Samba服务:在Debian系统上,需要安装并配置Samba服务,以便能够实现文件夹共享。Samba是一个允许Linux/Unix服务器与Windows操作系…

threejs 实现鼠标大面积选取场景内3d模型,SelectionBox API 案例使用

SelectionBox API 案例使用 这个函数创建了一个 3D 场景,包括一个相机、光源、多个立方体以及一个 WebGL 渲染器,并在页面上渲染这个场景 function init() {// 创建一个容器 div 元素并将其添加到页面的 body 中container document.createElement(div)…

php反序列化及其常见魔术方法及其触发条件

反序列化介绍: PHP对象反序列化操作是指将一个之前通过serialize()函数转换为字符串表示的PHP对象数据,还原成原始PHP对象结构的过程。当需要从存储(如数据库、文件或网络传输)中恢复对象状态时,会使用unserialize()函…

【爬虫】User-Agent反爬虫

指服务器端通过校验usr-agent 来区分正常用户和爬虫程序的手段,是较为初级的爬虫。 一般是在做请求的 header 中。 user-agent 记录了请求的设备信息,如果在请求的时候没带 user-agent 可以视为爬虫故意请求,对这样的请求服务器可以拦截。 使…

C# Array(进阶)_Lambda表达式_冒泡排序_集合

文章目录 数组操作与高阶方法Lambda表达式Lambda表达式在C#中的应用及练习 数组排序:深入理解冒泡排序与选择排序冒泡排序原理 选择排序原理 选择排序和冒泡排序的区别 C#排序:掌握Sort()方法的使用集合类型全览:C#集合的使用详解C# 中的集合…

2024年阿里云数据库价格_云数据库收费标准最新

2024年阿里云数据库价格查询,云数据库优惠活动MySQL版2核2GB 50GB配置99元一年,续费不涨价,续费也是99元1年,云数据库MySQL基础系列经济版 2核4GB 100GB配置227元1年,RDS SQL Server云数据库2核4G配置299元1年&#xf…

【CSS】Vue2使用TailwindCSS方法及相关问题

一.安装 1.npm安装TailwindCSS npm install tailwindcssnpm:tailwindcss/postcss7-compat tailwindcss/postcss7-compat postcss^7 autoprefixer^9 2.创建配置文件 npx tailwindcss init 3.创建postcss.config.js文件 // postcss.config.js module.exports {plugins: {t…

pymysql中怎么在插入的数据改成变量值

我这个是用pymysql数据库来写 mport pymysql # 连接到数据库 conn pymysql.connect(hostlocalhost, userusername, passwordpassword, dbdatabase_name) # 创建一个游标对象 cursor conn.cursor() # 准备插入语句 s1"""INSERT INTO 库名.表名 ( 这是表…

git的下载与安装

下载 首先,打开您的浏览器,并输入Git的官方网站地址 点击图标进行下载 下载页面会列出不同操作系统和平台的Git安装包。根据您的操作系统(Windows、macOS、Linux等)和位数(32位或64位),选择适…

阿里云关系型数据库RDS概述

阿里云关系型数据库服务(ApsaraDB RDS,Relational Database Service)是阿里巴巴集团提供的云端托管式关系型数据库产品,旨在帮助企业与开发者在无需自建和维护底层基础设施的情况下,轻松部署、管理和扩展关系型数据库。…

Android学习深入

性能优化 学习识别和解决常见的性能问题,如内存泄漏、布局优化等 Android性能优化是确保应用流畅运行、提升用户体验的关键。以下是关于如何识别和解决一些常见性能问题的指导,包括内存泄漏、布局优化等。 1. 内存泄漏 内存泄漏发生时,已…

Boost Graph Library中VF2(子图同构)算法的使用

Boost Graph Library,简称BGL,库中有各种各样经典的Graph算法,这里介绍其中的VF2算法——vf2_subgraph_iso。 数据怎么存 在BGL中,图是用adjacency_list类型数据存储,也就是邻接列表,里面可以存顶点信息&…

【C语言】数据结构和流程控制语句

C语言是一种广泛应用于系统编程和应用软件开发的高级编程语言。它提供了丰富的数据结构和流程控制语句,使程序员能够更有效地组织数据和控制程序的执行流程。本文将介绍C语言中常用的数据结构和流程控制语句,以帮助读者更好地理解和使用C语言。 1. 数据…