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

目录

前言

为什么本地部署

目前的工具

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”图标,在最上方有个模型列表,选择下载的模型文件,会自动加载模型文件

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git版本管理使用手册 - 8 - 合并分支、解决冲突

合并整个开发分支 切换到本地test分支,选择右下角远程开发分支,选择Merge into Current。然后提交到远程test仓库。 合并某次提交的代码 当前工作区切换成test分支,选择远程仓库中的dev开发分支,选择需要合并的提交版本右击&a…

机器学习优化算法(深度学习)

目录 预备知识 梯度 Hessian 矩阵(海森矩阵,或者黑塞矩阵) 拉格朗日中值定理 柯西中值定理 泰勒公式 黑塞矩阵(Hessian矩阵) Jacobi 矩阵 优化方法 梯度下降法(Gradient Descent) 随机…

Hive-技术补充-ANTLR的真实语法世界

一、上下文 上一篇博客<Hive-技术补充-ANTLR语法编写>&#xff0c;我们了解了如何使用ANTLR语法来表达词法结构和语法结构&#xff0c;下面我们循循渐进的处理身边用过的一些文件或语言&#xff1a; CSV、JSON、DOT、Cymbol、R 二、解析CSV文件 有这样一份csv文件 …

【详细讲解PostCSS如何安装和使用】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d; 希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

HarmonyOS 应用开发之UIAbility组件基本用法

UIAbility组件的基本用法包括&#xff1a;指定UIAbility的启动页面以及获取UIAbility的上下文 UIAbilityContext。 指定UIAbility的启动页面 应用中的UIAbility在启动过程中&#xff0c;需要指定启动页面&#xff0c;否则应用启动后会因为没有默认加载页面而导致白屏。可以在…

软件概要设计说明书word原件(实际项目)

一、 引言 &#xff08;一&#xff09; 编写目的 &#xff08;二&#xff09; 范围 &#xff08;三&#xff09; 文档约定 &#xff08;四&#xff09; 术语 二、 项目概要 &#xff08;一&#xff09; 建设背景 &#xff08;二&#xff09; 建设目标 &#xff08;三&a…

Jupyter开启远程服务器(最新版)

Jupyter Notebook 在本地进行访问时比较简单&#xff0c;直接在cmd命令行下输入 jupyter notebook 即可&#xff0c;然而notebook的作用不止于此&#xff0c;还可以用于远程连接服务器&#xff0c;这样如果你有一台服务器内存很大&#xff0c;但是呢你又不喜欢在linux上进行操作…

【文本】正则 | 正则表达式收录

1、匹配数字加右括号 1&#xff09;正则 \d\) 2&#xff09;效果 ~~

探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较

title: 探索多种数据格式&#xff1a;JSON、YAML、XML、CSV等数据格式详解与比较 date: 2024/3/28 17:34:03 updated: 2024/3/28 17:34:03 tags: 数据格式JSONYAMLXMLCSV数据交换格式比较 1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构&#xff0c;不同的数据格…

CSS(二)---【常见属性、复合属性使用】

零.前言 本篇文章主要阐述CSS常见属性、复合属性&#xff0c;更多前置知识请见作者其它文章&#xff1a; CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 1.CSS属性 CSS的属性有上百个&#xff0c;但是我们并不需要全部学习&#xff0c;只要我们学习一部分…

八大技术趋势案例(人工智能物联网)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

UI的设计

一、RGB888的显示 即红色&#xff0c;绿色&#xff0c;蓝色都为8位&#xff0c;即通常说的24位色。可以很好显示各种过渡颜色。从硬件上&#xff0c;R、G、B三基色的连接线各需要有8根&#xff0c;即24根数据线&#xff1b;软件上存储的数据量也需要24位&#xff0c;即3个字节&…

Android和IOS应用开发-Flutter应用让屏幕在 app 运行期间保持常亮的方法

文章目录 Flutter应用让屏幕在 app 运行期间保持常亮的方法方法一&#xff1a;使用系统插件方法二&#xff1a;使用 Widgets注意事项 Flutter应用让屏幕在 app 运行期间保持常亮的方法 在 Flutter 开发中&#xff0c;可以使用以下两种方法让屏幕在 app 运行期间保持常亮&#…

数据结构(六)——图

六、图 6.1 图的基本概念 图的定义 图&#xff1a;图G由顶点集V和边集E组成&#xff0c;记为G (V, E)&#xff0c;其中V(G)表示图G中顶点的有限非空集&#xff1b;E(G) 表示图G中顶点之间的关系&#xff08;边&#xff09;集合。若V {v1, v2, … , vn}&#xff0c;则用|V|…

Stable Diffusion WebUI 图生图(img2img):图生图/涂鸦绘制/局部重绘/有色蒙版/上传蒙版/批量处理/反推提示词

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 本篇文章我们介绍 Stable Diffusion WebUI 的图生图功能&#xff0c;主要包括&#xff1a;图生图、图生图&#xff08…

TBSI模型论文解读及代码分析

前往我的主页以获得更好的阅读体验 简介 论文来源: Bridging Search Region Interaction With Template for RGB-T Tracking 现有的搜索算法通常会直接连接 RGB 和 T 模态搜索区域, 该方法存在大量冗余背景噪声. 而另一些方法从搜索帧中采样候选框, 对孤立的 RGB 框和 T 框进…

flink on yarn-per job源码解析、flink on k8s介绍

Flink 架构概览–JobManager JobManager的功能主要有: 将 JobGraph 转换成 Execution Graph,最终将 Execution Graph 拿来运行Scheduler 组件负责 Task 的调度Checkpoint Coordinator 组件负责协调整个任务的 Checkpoint,包括 Checkpoint 的开始和完成通过 Actor System 与 …

如何在Apache Arrow中定位与解决问题

如何在apache Arrow定位与解决问题 最近在执行sql时做了一些batch变更&#xff0c;出现了一个 crash问题&#xff0c;底层使用了apache arrow来实现。本节将会从0开始讲解如何调试STL源码crash问题&#xff0c;在这篇文章中以实际工作中resize导致crash为例&#xff0c;引出如何…

论文笔记:分层问题-图像共注意力问答

整理了2017 Hierarchical Question-Image Co-Attention for Visual Question Answering&#xff09;论文的阅读笔记 背景模型问题定义模型结构平行共注意力交替共注意力 实验可视化 背景 视觉问答(VQA)的注意力模型在此之前已经有了很多工作&#xff0c;这种模型生成了突出显示…

elementplus-vue-审核按钮-对话框(Dialog )

效果图&#xff1a; 代码&#xff1a; <template> <el-button type"success" click"dialogVisible true" :icon"Edit">审核</el-button> <el-dialog v-model"dialogVisible" title"是否通过" width&q…