本地部署大模型的几种工具(上-相关使用)

news2024/11/15 10:46:54

目录

前言

为什么本地部署

目前的工具

vllm

介绍

下载模型

安装vllm

运行

存在问题

chatglm.cpp

介绍

下载

安装

运行

命令行运行

webdemo运行

GPU推理

ollama

介绍

下载

运行

运行不同参数量的模型

存在问题

lmstudio

介绍

下载

使用

下载模型文件

加载模型


前言

为什么本地部署

正常我们要调用大模型,就需要将企业或个人信息传递到外部的大模型服务器,这种情况在目前极为重视数据安全的情况下,可能就有问题了。但是,本地部署大模型就没有这个问题,本地部署大模型后,不需要联网即可调用大模型,就没有了通过调用外部大模型导致数据泄露的问题。

再一个一说起大模型,不管训练还是推理,一般都是需要GPU。能不能有一些方法实现本地也可以部署大模型进行推理?

以上也就是写这一篇的初衷了。

目前的工具

目前有vllm、chatglm.cpp(llama.cpp也类似是通过C++实现)--提供编程能力,可以命令行运行,可以提供webapi

Ollama--命令行运行,可以提供webapi

lmstudio--纯界面操作

vllm

介绍

vllm主要作用其实是可以提高推理性能,但是必须在linux下运行,而且必须有GPU

官网地址

vllm官网 Welcome to vLLM! — vLLMhttps://docs.vllm.ai/en/latest/

下载模型

这里以下载千问7B为例,由于模型文件会比较大,因此安装git的lfs插件

git lfs install
git clone https://huggingface.co/Qwen/Qwen-7B-Chat

安装vllm

安装的话,为了避免python环境冲突问题,先通过conda创建一个新的虚拟环境

然后pip install vllm

也可以先从github下载,再去安装

vllm github地址https://github.com/vllm-project/vllm

运行

python -m vllm.entrypoints.openai.api_server  --model="Qwen/Qwen-7B-Chat" --trust-remote-code --port 1234

注意:--model参数这里,如果之前已经下载了模型文件,这里是参数值改为模型文件路径,否则设置为模型名,然后会自动下载

注意2:通过aipost工具调用大模型,model参数需要和如上cmd运行命令的--model参数一致,否则会提示找不到model,这个我觉得是比较不好的一点

存在问题

1)通过apipost工具调用webapi,回答完,还会继续输出其他内容

一样,没搞懂为啥

补充:运行增加VLLM_USE_MODELSCOPE=True 推理速度会快很多,即

VLLM_USE_MODELSCOPE=True python -m vllm.entrypoints.openai.api_server  --model="Qwen/Qwen-7B-Chat" --trust-remote-code --port 1234

说是通过魔塔进行了加速,但是其所以然还没搞明白。

chatglm.cpp

介绍

chatglm.cpp主要通过C++编译,实现性能的提升

下载

git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp
git submodule update --init --recursive

第二句主要是用于当前代码还引用了其他第三方代码库的情况,用于嵌套更新代码状态

安装

安装相关包

python3 -m pip install torch tabulate tqdm transformers accelerate sentencepiece

用于 convert.py 将 ChatGLM-6B 转换为量化的 GGML 格式。要将 fp16 原始模型转换为 q4_0(量化 int4)GGML 模型,请运行:

python3 chatglm_cpp/convert.py -i THUDM/chatglm3-6b -t q4_0 -o chatglm3-ggml.bin

运行

命令行运行

第一步:使用 CMake 配置项目并在当前目录下创建一个名为 "build" 的构建目录

cmake -B build

第二步:使用先前生成的构建系统文件在构建目录 "build" 中构建项目,采用并行构建和 Release 配置

cmake --build build -j --config Release

第三步:运行

./build/bin/main -m chatglm3-ggml.bin -p 你好

注意:这里cmake在linux下没问题,在windows下需要通过VS(Visual Studio)安装C++ Cmake工具

webdemo运行

python3 ./examples/web_demo.py -m chatglm3-ggml.bin

注意:这里可能会出错,提示找不到chatglm_cpp,这个时候可以先pip install .(.就是代表安装当前代码包,或.替换为chatglm_cpp也可以,或者去chatglm.cpp项目的Github网站--release下载对应系统对应python版本的whl文件进行安装也可以)

GPU推理

chatglm.cpp主要是用于让普通CPU也可以进行推理,因此默认它是CPU推理。但是不妨碍它可以GPU推理,毕竟效率更高。

cmake的时候,增加-DGGML_CUBLAS=ON,即可实现命令行运行通过GPU推理

webdemo运行的话,也需要对pip install .增加同样的参数,完整命令:CMAKE_ARGS="-DGGML_CUBLAS=ON" pip install .,这个时候再次运行webdemo即可实现GPU推理

ollama

介绍

ollama主要简化了部署大模型的复杂度

github地址:ollama/ollama:启动并运行 Llama 2、Mistral、Gemma 和其他大型语言模型。 (github.com)https://github.com/ollama/ollama

github上可以看ollama相关介绍,包括如何使用

下载

ollama一开始主要支持linux,docker也可以,目前有windows下的预览版可以下载

ollama官网 windows预览版下载https://ollama.com/download/OllamaSetup.exe

运行

安装完成即可通过cmd窗口使用ollama命令来运行大模型(注意第一次会先下载模型文件,我这里用的llama2的大小是4G多,还可以)

接下来就可以输入进行大模型对话了

不过命令行在实际应用中不方便,那么也可以通过ollama实现webapi调用方式

ollama serve--启用server模式

ollama run llama2(这里就是具体模型名称)

接下来即可通过postman、apipost等工具调用大模型了

注意这里地址是:localhost:11434/api/chat

运行不同参数量的模型

同一个模型,一般会有多个参数量,一般有7B、13B

如上运行ollama run llama2,其实是按默认参数量下载并运行模型了,也可以设置参数量

如:ollama run gemma:2b

:2b即具体参数量

存在问题

1)命令行下速度很快,但是webapi方式就很慢。可能还是在windows下还是预览版,没那么稳定

还没搞懂咋回事,现在只是初步知道了怎么用。后面再试试其他模型,看看是不是模型的问题

lmstudio

介绍

lmStudio是一个很简单的大模型使用工具,直接安装客户端,完全界面操作,无需编辑代码、无需运行命令,即可纯界面操作来使用大模型。

非常适合不懂技术的人员使用

下载

访问lmstudio官网LM Studio 官网 - Discover, download, and run local LLMshttps://lmstudio.ai/

选择对应操作系统的版本下载即可 

使用

下载模型文件

打开软件默认界面,就是一个搜索框,输入你需要使用的模型名,点击Go进行搜索。

常用的模型,如LLama2、Gemma、QWen等

注:这里只能是开源大模型

在搜索结果页面,左侧是搜索结果,点击左侧其中一个结果,右侧显示出所有可以下载的文件,主要是量化参数不一样,一般选择q4_0的即可,选择对应文件下载即可。

页面最下方会显示下载进度

加载模型

模型文件下载完成,点击最左侧“AI Chat”图标,在最上方有个模型列表,选择下载的模型文件,会自动加载模型文件

接下来,就可以进行模型对话了

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

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

相关文章

OSCP靶场--plum

OSCP靶场–plum 考点(CVE-2022-25018 linux邮箱信息收集提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.178.28 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-28 05:41 EDT Nmap scan report for 192.168.178.2…

第十二章 微服务核心(一)

一、Spring Boot 1.1 SpringBoot 构建方式 1.1.1 通过官网自动生成 进入官网:https://spring.io/,点击 Projects --> Spring Framework; 拖动滚动条到中间位置,点击 Spring Initializr 或者直接通过 https://start.spring…

【项目技术介绍篇】若依管理系统功能介绍

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

RTOS线程切换的过程和原理

0 前言 RTOS中最重要的一个概念就是线程,线程的按需切换能够满足RTOS的实时性要求,同时能将复杂的需求分解成一个个线程执行减轻我们开发负担。 本文从栈的角度出发,详细介绍RTOS线程切换的过程和原理。 注:本文参考的RTOS是RT-T…

硬件项目中的turn-key 是啥意思?案例应用

在硬件项目中,turn-key是指一种工程项目模式,即交钥匙工程。这种模式通常由独立的第三方软件厂商直接与芯片厂商合作,基于芯片厂商的硬件方案和协议,集成成熟的上层软件和应用,并整套提供给电子产品生产厂商。这种模式…

实现DevOps需要什么?

实现DevOps需要什么? 硬性要求:工具上的准备 上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下: 代码管理(SCM):GitHub、GitLab、BitBucket、SubV…

UE小:基于UE5的两种Billboard material(始终朝向相机材质)

本文档展示了两种不同的效果,分别是物体完全朝向相机和物体仅Z轴朝向相机。通过下面的演示和相关代码,您可以更加直观地理解这两种效果的差异和应用场景。 1. 完全朝向相机效果 此效果下,物体将完全面向相机,不论相机在哪个角度…

语音陪玩交友软件系统程序-app小程序H5三端源码交付,支持二开!

电竞行业的发展带动其周边产业的发展,绘制着游戏人物图画的抱枕、鼠标垫、海报销量极大,电竞游戏直播、游戏教程短视频也备受人们喜爱,自然,像游戏陪练、代练行业也随之生长起来,本文就来讲讲,从软件开发角…

阿里云服务器多少钱一年?阿里云价格表新鲜出炉4月最新报价

2024年阿里云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

PHP开发全新29网课交单平台源码修复全开源版本,支持聚合登陆易支付

这是一套最新版本的PHP开发的网课交单平台源代码,已进行全开源修复,支持聚合登录和易支付功能。 项目 地 址 : runruncode.com/php/19721.html 以下是对该套代码的主要更新和修复: 1. 移除了论文编辑功能。 2. 移除了强国接码…

Linux(CentOS)/Windows-C++ 云备份项目(客户端文件操作类,数据管理模块设计,文件客户端类设计)

文章目录 1. 客户端文件操作类2. 客户端数据管理模块设计3. 文件客户端类设计项目代码 客户端负责的功能 指定目录的文件检测,获取文件夹里面的文件 判断这个文件是否需要备份,服务器备份过的文件则不需要进行备份,已经备份的文件如果修改也…

纯分享万岳外卖跑腿系统客户端源码uniapp目录结构示意图

系统买的是商业版,使用非常不错有三端uniapp开源代码,自从上次分享uniapp后有些网友让我分享下各个端的uniapp下的各个目录结构说明 我就截图说以下吧,

【python】网络编程socket TCP UDP

文章目录 socket常用方法TCP客户端服务器UDP客户端服务器网络编程就是实现两台计算机的通信 互联网协议族 即通用标准协议,任何私有网络只要支持这个协议,就可以接入互联网。 socket socke模块的socket()函数 import socketsock = socket.socket(Address Family, type)参…

网络套接字补充——UDP网络编程

五、UDP网络编程 ​ 1.对于服务器使用智能指针维护生命周期;2.创建UDP套接字;3.绑定端口号,包括设置服务器端口号和IP地址,端口号一般是2字节使用uint16_t,而IP地址用户习惯使用点分十进制格式所以传入的是string类型…

<深度学习入门学习笔记P1>——《深度学习》

一、深度学习概述 1.深度学习入门概念及介绍 注: (1)感知机是深度学习网络算法的起源,神经网络是深度学习算法的中心。 (2)损失函数和梯度下降是用来对模型优化和训练的一种方式。 (3&#xff…

AugmentedReality之路-显示隐藏AR坐标原点(3)

本文介绍如何显示/隐藏坐标原点,分析AR坐标原点跟手机的位置关系 1、AR坐标原点在哪里 当我们通过AugmentedReality的StartARSession函数打开AR相机的那一刻,相机所在的位置就是坐标原点。 2、创建指示箭头资产 1.在Content/Arrow目录创建1个Actor类…

NanoMQ的安装与部署

本文使用docker进行安装,因此安装之前需要已经安装了docker 拉取镜像 docker pull emqx/nanomq:latest 相关配置及密码认证 创建目录/usr/local/nanomq/conf以及配置文件nanomq.conf、pwd.conf # # # # MQTT Broker # # mqtt {property_size 32max_packet_siz…

|行业洞察·趋势报告|《2024旅游度假市场简析报告-17页》

报告的主要内容解读: 居民收入提高推动旅游业发展:报告指出,随着人均GDP的提升,居民的消费能力增强,旅游需求从传统的观光游向休闲、度假游转变,国内人均旅游消费持续增加。 政府政策促进旅游市场复苏&…

对象内存布局

对象头 对象标记Mark Word 所以New一个对象 没有其他信息 就是16字节 Object obj = new Object();

设计模式之原型模式讲解

原型模式本身就是一种很简单的模式,在Java当中,由于内置了Cloneable 接口,就使得原型模式在Java中的实现变得非常简单。UML图如下: 我们来举一个生成新员工的例子来帮助大家理解。 import java.util.Date; public class Employee…