LLM大模型应用开发的本地环境搭建

news2024/12/23 1:57:37

尽管 ChatGPT 仍然很受欢迎,但泄露的 Google 内部文件表明开源社区正在迎头赶上并取得重大突破。 我们现在能够在消费级 GPU 上运行大型 LLM 模型。

因此,如果你是一名开发人员,想要在本地环境中尝试这些 LLM 并用它构建一些应用程序,那么在本文中我将介绍一些可以帮助你的选项。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

1、text-generation-webui

text-generation-webui是一个基于Gradio开发 Web UI, 可用于运行几乎所有可用的LLM。 它支持不同格式的LLM,例如GGML或GPTQ。

首先需要安装Ubuntu Server和CUDA。

  • 安装 Ubuntu Server:搜索有关为你的特定硬件配置安装 Ubuntu Server 的详细指南。 请务必仔细按照说明进行操作,以确保安装过程顺利进行。
  • 安装 CUDA:要在支持 GPU 的硬件上高效运行深度学习模型(例如 LLM),请从 NVIDIA 官方网站下载并安装 CUDA。 选择符合你的系统要求的教程并严格按照说明进行操作。

成功安装 Ubuntu Server 和 CUDA 后,下一步是设置 Oobabooga text-generate-webui 工具来管理你的自托管 LLM 模型。 为此,请按照以下说明操作:

  • 访问 text- Generation-webui的 GitHub 仓库。
  • 确保遵循 README.md 文件中的使用 Conda 指南进行手动安装来设置和配置 text-generate-webui 工具。

通过使用 Conda 的手动安装,你将可以灵活地修改源代码并对其进行定制以满足您的特定需求,确保与你的个人工作流程更好地集成。

现在,可以通过以下命令进行 Web UI,具体取决于你的硬件:

  • 如果你没有 GPU 并且想在 CPU 上运行 GGML 版本 LLM,请使用以下命令。 根据CPU的能力调整线程数:
python server.py --chat --cpu --listen --thread 16

如果有 GPU,请运行以下命令来启动 UI

python server.py --chat --listen

使用这些命令之一启动服务器后,你可以使用 UI 下载模型并根据需要调整设置。

以下是我为令人印象深刻的 13 B Stable Vicuna 模型发现的设置的简要快照,该模型目前是最好的LLM之一:
在这里插入图片描述

要下载 Vicuna 13B 模型,请在 Oobabooga text-generate-webui 工具中执行以下步骤:

  • 导航到“模型”选项卡。
  • 找到“下载自定义模型或 LoRA”输入框。
  • 将 TheBloke/stable-vicuna-13B-GPTQ 复制并粘贴到输入框中。
  • 单击“下载”按钮启动模型下载过程。
  • 下载完成后,刷新模型选项卡。
  • 从模型选择器中选择新下载的 Vicuna 13B 模型。

现在你已经设置了自托管LLM,是时候将其与你的工作流程集成了。 尽管 Oobabooga 的text-generation-webui 工具提供了一个漂亮的 Web UI,但拥有一个用于与其他应用程序无缝集成的 API 会更方便。 幸运的是,Oobabooga text-generation webui 工具包含一个内置的 API 扩展。 要启用 API,只需将 --api 标志添加到用于运行该工具的命令中即可。

要验证 API 是否正确运行,请打开浏览器并访问以下 URL,将 yourserveraddress 替换为服务器的实际地址:

http://yourserveraddress:5000/api/v1/model

如果 API 正常运行,你应该会看到确认当前使用的模型的响应。

2、llama.cpp

llama.cpp是一个基于 C/C++ 的库,专注于仅在 CPU 上运行 LLM 推理,但最近还添加了对 GPU 加速的支持。 它被设计为一个独立的库,因此如果你想构建一个与其集成的应用程序,可能必须构建自己的绑定或使用社区绑定库:

  • Python: abetlen/llama-cpp-python
  • Go: go-skynet/go-llama.cpp
  • Node.js: hlhr202/llama-node
  • Ruby: yoshoku/llama_cpp.rb
  • C#/.NET: SciSharp/LLamaSharp

注意:对于 llama-cpp-python,如果你使用的是 Apple Silicon (M1) Mac,请确保已安装支持 arm64 架构的 Python 版本。 否则,安装时将构建 llama.ccp x86 版本,该版本在 Apple Silicon (M1) Mac 上速度会慢 10 倍。

3、GPTQ-for-LLaMA

如果您有一个不错的 GPU,VRAM 大于 8GB,你可以选择对 GPU 使用 GPTQ 量化,例如 GPTQ-for-LLaMa。

可以在此处查看 GPT-for-LLama 硬件要求的详细信息。

然而,GPTQ-for-LLaMa 仅提供了类似 CLI 的示例和有限的文档。 因此,我创建了一个示例仓库,它使用 GPTQ-for-LLaMa 实现并通过 HTTP API 提供生成的文本。

总之,无论是 Gradio Web UI、llama.cpp 还是 GPTQ-for-LLaMa,每个选项都满足本地运行 LLM 的不同硬件功能。 根据你的硬件资源进行选择。 潜入LLM的激动人心的世界,祝你愉快!


原文链接:LLM应用本地开发环境搭建 — BimAnt

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

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

相关文章

Kubernetes进阶实战2

Kubernetes具有以下几个重要特性 简言之,Kubernetes整合并抽象了底层的硬件和系统环境等基础设施,对外提供了一个统一的资源池供终端用户通过API进行调用。 Kubernetes具有以下几个重要特性。 (1)自动装箱 构建于容器之上&#x…

定时器T0流水灯

89C52RC芯片 12Mhz&#xff1a;FC18 11.0592Mhz &#xff1a;FC67 定时器T0初值计算 12Mhz 11.0592Mhz main.c #include<regx52.h> #include<intrins.h> //_crol_循环左移函数 #include "Timer0.h" #include "Key.h" /*定时器&#xff0c;…

玩转k8s:资源管理

1 资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统&#xff0c;用户可以在集群中部署各种服务&#xff0c;所谓的部署服务&#xff0c;其实就是在kubernetes集群中运行…

【C++】哈希表的改造——unordered_map和unordered_set的模拟实现

文章目录 1. unordered系列的容器封装1.1 改造1:模版参数类型的改造1.1.1 HashNode改造1.1.2 HashTable改造 1.2 改造2:迭代器的增加与封装1.2.1 迭代器类的实现1.2.2 迭代器的封装 1.3 改造3:insert的改写封装1.4 析构函数的实现1.5 unordered_map&unordered_set的封装实现…

Range_image 可视化

范围图像与点云的区别 范围图像&#xff08;Range Image&#xff09;和点云&#xff08;Point Cloud&#xff09;是两种常见的表示和处理三维点数据的方式&#xff0c;它们之间有以下区别&#xff1a; 数据结构&#xff1a;点云是一组三维点的集合&#xff0c;每个点包含位置信…

React解决setState异步带来的多次修改合一和修改后立即使用没有变化问题

我们编写这样一段代码 import React from "react" export default class App extends React.Component {constructor(props){super(props);this.state {cont: 0}}componentDidMount() {this.setState({cont: this.state.cont1})}render(){return (<div>{ thi…

Ubuntu下编译VTK

1.先安装QT&#xff0c;不知道不装行不行&#xff0c;我们项目需要。 2.去VTK官网下载VTK源码。 3.解压源码。 4.编译需要用cmake-gui&#xff0c;装QT的一般都有&#xff0c;但需要把路径添加到PATH才能用。 5.打开cmake-gui&#xff0c;设置源码路径&#xff0c;编译输出路…

项目——学生信息管理系统6

目录 权限的处理 在 MainFrm中定义 一个 权限判断的方法 在 MainFrm 的构造方法中调用一下 测试用学生身份登录 测试用教师身份登录 接下来&#xff0c;我们到学生列表页面里面 ManageStudentFrm&#xff0c;继续权限的设置&#xff0c;学生只能查看自己的信息&#xff0c…

神坑:ElasticSearch8集群启动报错“Device or resource busy”(Docker方式)

昨天在Docker中配置ElasticSearcch8集群模式时&#xff0c;先初步配置了master主节点。然后主节点启动就报错&#xff0c;看日志&#xff0c;提示“Device or resource busy”。异常第一句大概这个样子&#xff1a; Exception in thread "main" java.nio.file.FileS…

WMS 窗口属性

WMS 窗口属性 1、窗口类型与层级1.1 Application Window普通应用程序窗口1.2 Sub Window子窗口1.3 System Window系统窗口 2、层级值与窗口类型2.1 WindowState2.2 WindowManagerPolicy 窗口管理的策略机制2.3 WindowToken句柄 3、窗口属性 LayoutParams Activity的预览窗口Sta…

基于51单片机的秒表系统

目录 基于51单片机的秒表系统一、原理图二、部分代码三、视频演示 基于51单片机的秒表系统 一、原理图 二、部分代码 #include <reg52.h>#define duanxuan P2 #define weixuan P1unsigned char code wxcode[]{0X01, 0x02, 0x04, 0x08, 0X10, 0X20, 0X40, 0X80};…

C# WPF 路径动画

路径动画&#xff1a;一个东西沿着你画的的线跑。 微软对这个有很详细的说明&#xff0c;有需要请参照微软Learn网站 cs的代码 PathGeometry pathGeometry new PathGeometry();PathFigure pathFigure new PathFigure();//pathFigure.IsClosed true;pathFigure.StartPoint…

试着攻击自己写的网站

背景介绍 概念简介 CSRF XSS攻击是一种常见的安全攻击&#xff0c;它通过伪造用户输入&#xff0c;利用CSRF漏洞获取用户的敏感信息或者执行恶意操作。CSRF XSS攻击不仅会给用户带来损失&#xff0c;还会对互联网安全造成威胁。因此&#xff0c;防范CSRF XSS攻击已经成为了当…

C++ - 20230629

一. 思维导图 二. 练习 #include <iostream> using namespace std;class Person { private:int age;int *p; public://无参构造Person():p(new int(89)){age 18;}//有参构造Person(int age,int num){this->age age;this->pnew int(num);}//拷贝构造函数Person(P…

jmeter:BeanShell预处理程序获取/设置/引用变量

BeanShell预处理程序 1、局部变量 获取局部变量&#xff1a;vars.get("变量名") 设置局部变量&#xff1a;vars.put("变量名",变量值) 调用 ${变量名} 2、全局变量 获取局部变量&#xff1a;props.get("变量名") 设置局部变量&#xff1a…

使用 JCommander 解析命令行参数

前言 如果你想构建一个支持命令行参数的程序&#xff0c;那么 jcommander 非常适合你&#xff0c;jcommander 是一个只有几十 kb 的 Java 命令行参数解析工具&#xff0c;可以通过注解的方式快速实现命令行参数解析。 这篇教程会通过介绍 jcommadner &#xff0c;快速的创建一…

【WinRAR技巧】如何合并RAR分卷压缩文件?

很多小伙伴在压缩RAR文件的时候&#xff0c;会选择分卷压缩&#xff0c;便于网上上传、下载或邮件发送。 那如果后续不需要分卷压缩了&#xff0c;如何将RAR分卷压缩文件重新合并成一个文件呢&#xff1f;下面小编来分享一下具体的操作方法。 一般来说&#xff0c;我们都会选…

【C++初阶】C++STL详解(三)—— vector的介绍及使用

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C初阶】…

(三)灌溉系统WIFI通信部分

ESP8266 ESP8266S烧录器&#xff1a;CH430C arduino离线配置esp8266参考&#xff1a;参考文章 灯光闪烁就是烧录成功 ESP8266调试入门&#xff1a;参考文章 ESP8266调试&#xff1a;参考文章 人麻了已经&#xff0c;尝试半天了&#xff0c;AT指令没回应&#xff0c;尝试刷固…

Feed流实现

关注推送 关注推送也称为Feed流(直译为投喂)&#xff0c;为用户持续的提供“沉浸式”的体验&#xff0c;通过无限下拉刷新获取新的信息(如&#xff0c;短视频、博客等)。 获取信息的两种模式 传统模式&#xff1a;需要用户自己去根据所需去查询内容。 Feed模式&#xff1a;…