在本地运行 LLMs 的 6 种方法

商业人工智能和大型语言模型 (LLM) 有一个很大的缺点:隐私。在处理敏感数据或专有数据时,我们无法从这些工具中获益。因此,我们需要了解如何在本地运行私人 LLM。开源模型提供了一种解决方案,但它们也有自己的挑战和优势。

 

设定期望值

开源软件种类繁多,有数以千计的模型可供选择,从 Meta 等大型组织提供的模型到个人爱好者开发的模型,各有不同。然而,运行这些模型也面临着一系列挑战:

 

  • 它们可能需要强大的硬件,须拥有足够的内存和一个 GPU
  • 尽管开源模型在不断改进,但它们的功能通常仍无法与 ChatGPT 等更完善的产品相提并论,因为 ChatGPT 得益于庞大的工程师团队的支持
  • 并非所有模型都能用于商业用途。

 

不过,正如同谷歌的一份文件所指出的,开源和闭源模型之间的差距正在缩小。

 

image.png

 

Hugging Face 和 Transformers

Hugging Face 相当于机器学习和人工智能的 Docker Hub,提供了大量开源模型。并且,Hugging Face 会定期对模型进行基准测试,并提供排行榜,帮助用户选择最佳模型。

 

Hugging Face 还提供了一个 Python 库 transformers,可以简化本地运行一个 LLM 的过程。下面的示例使用该库运行了一个较旧的 GPT-2 microsoft/DialoGPT-medium 模型。第一次运行时,Transformers 会下载模型,你可以与它进行五次交互。该脚本还需要安装 PyTorch。

 

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium", padding_side='left')
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
# source: https://huggingface.co/microsoft/DialoGPT-medium
# Let's chat for 5 lines
for step in range(5):# encode the new user input, add the eos_token and return a tensor in Pytorchnew_user_input_ids = tokenizer.encode(input(">> User:") + tokenizer.eos_token, return_tensors='pt')# append the new user input tokens to the chat historybot_input_ids = torch.cat([chat_history_ids, new_user_input_ids], dim=-1) if step > 0 else new_user_input_ids# generated a response while limiting the total chat history to 1000 tokens, chat_history_ids = model.generate(bot_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id)# pretty print last output tokens from botprint("DialoGPT: {}".format(tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)))

 

Transformers 优势

 

  • 自动下载模型
  • 提供代码片段
  • 理想的实验和学习工具

 

Transformers 劣势

 

  • 需要对 ML 和 NLP 有扎实的了解
  • 需要具备编码和配置技能

 

LangChain

我们在本地运行 LLM 的另一种方法是使用 LangChain。LangChain 是一个用于构建人工智能应用程序的 Python 框架。它提供抽象和中间件,以便在其支持的模型之上开发人工智能应用程序。例如,下面的代码向 microsoft/DialoGPT-medium 模型提出了一个问题:

 

from langchain.llms.huggingface_pipeline import HuggingFacePipeline
hf = HuggingFacePipeline.from_model_id(model_id="microsoft/DialoGPT-medium", task="text-generation", pipeline_kwargs={"max_new_tokens": 200, "pad_token_id": 50256},
)
from langchain.prompts import PromptTemplate
template = """Question: {question}
Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)
chain = prompt | hf
question = "What is electroencephalography?"
print(chain.invoke({"question": question}))

 

LangChain 优势

 

  • 更便捷的模型管理
  • 实用的 AI 应用程序开发工具

 

**LangChain 劣势
**

 

  • 速度有限,与 Transformers 相同
  • 仍须编写应用程序的逻辑代码或创建合适的用户界面

 

Llama.cpp

Llama.cpp 是一个基于 C 和 C++ 的 LLM 推理引擎,针对苹果芯片进行了优化,可运行 Meta 的 Llama2 模型。

 

一旦我们克隆了资源库并构建了项目,我们就可以使用 Llama.cpp 运行一个模型:

 

$ ./main -m /path/to/model-file.gguf -p "Hi there!"

 

Llama.cpp 优势

 

  • 性能高于基于 Python 的解决方案
  • 在适中的硬件上支持 Llama 7B 等大型模型
  • 提供绑定,以便在通过 Llama.cpp 运行推理的同时使用其他语言构建 AI 应用程序

 

Llama.cpp 劣势

 

  • 模型支持有限
  • 需要构建工具

 

Llamafile

Llamafile 由 Mozilla 开发,为运行 LLM 提供了一个用户友好的替代方案。Llamafile 以其可移植性和创建单文件可执行文件的能力而著称。

 

下载 llamafile 和任何 GGUF 格式的模型后,我们就可以用以下命令启动本地浏览器会话:

 

$ ./llamafile -m /path/to/model.gguf

 

Llamafile 优势

 

  • 与 Llama.cpp 相同的速度优势
  • 可以创建嵌入模型的单一可执行文件

 

Llamafile 劣势

 

  • 该项目仍处于早期阶段
  • 不支持所有模型,只支持 Llama.cpp 支持的模型

 

Ollama

Ollama 是 Llama.cpp 和 Llamafile 的替代品,对用户更加友好。你可以下载一个可执行文件,在你的机器上安装一个服务。安装完成后,打开终端并运行:

 

$ ollama run llama2

 

Ollama 优势

 

  • 易于安装和使用
  • 可以运行 Ilama 和 vicuña 模型
  • 运行速度极快

 

Ollama 劣势

 

  • 提供有限的模型库
  • 自行管理模型,不能重复使用自己的模型
  • 无法调整运行 LLM 的选项
  • 暂无 Windows 版本

 

GPT4ALL

GPT4ALL 是一款易于使用的桌面应用程序,具有直观的 GUI。它支持本地模型运行,并可通过 API 密钥连接 OpenAI。它的突出特点是能够处理本地文档的上下文,确保隐私。

 

image.png

 

GPT4ALL 优势

 

  • 具有友好UI的替代方案
  • 支持各种策划模型

 

GPT4ALL 劣势

 

  • 机型选择有限
  • 部分机型有商业用途限制

 

结论

 

选择合适的工具在本地运行 LLM 取决于您的需求和专业知识。从 GPT4ALL 等用户友好型应用程序,到 Llama.cpp 等技术性更强的选项,以及基于 Python 的解决方案,可提供多种选择。可见开源模式正在迎头赶上,提供了对数据和隐私的更多控制。随着这些模型的发展,它们或有望与 ChatGPT 等产品竞争。

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

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

相关文章

网安入门18-XSS(靶场实战)

HTML实体化编码 为了避免 XSS 攻击&#xff0c;会将<>编码为<与>&#xff0c;这些就是 HTML 实体编码。 编码前编码后不可分的空格 < (小于符号)< > (大于符号)> & (与符号)&amp;″ (双引号)&quot;’ (单引号)&apos;© (版权符…

微服务-商城订单服务项目

文章目录 一、需求二、分析三、设计四、编码4.1 商品服务4.2 订单服务4.3 分布式事务4.4 订单超时 商品、购物车 商品服务&#xff1a; 1.全品类购物平台 SPU:Standard Product Unit 标准化产品单元。是商品信息聚合的最小单位。是一组可复用、易检索的标准化信息的集合&#x…

[Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包

一、设置应用包名 在Flutter开发中&#xff0c;修改应用程序的包名&#xff08;也称作Application ID&#xff09;涉及几个步骤&#xff0c;因为包名是在项目的Android和iOS平台代码中分别配置的。请按照以下步骤操作&#xff1a; 1.Android Flutter工程中全局搜索替换包名 …

企业网络布局的新宠——SD-WAN

在数字化转型的浪潮下&#xff0c;企业对网络的需求日益复杂和多样化。面对分支机构间的协作需求和不断增长的网络流量&#xff0c;企业亟需一种更加高效、灵活且成本可控的组网方案。SD-WAN&#xff08;软件定义广域网络&#xff09;正是在这样的背景下应运而生&#xff0c;成…

【漏洞复现】大华智慧园区综合管理平台信息泄露漏洞

Nx01 产品简介 大华智慧园区综合管理平台是一款综合管理平台&#xff0c;具备园区运营、资源调配和智能服务等功能。该平台旨在协助优化园区资源分配&#xff0c;满足多元化的管理需求&#xff0c;同时通过提供智能服务&#xff0c;增强使用体验。 Nx02 漏洞描述 大华智慧园区…

主题公园保管资产难?三防加固平板对此说不!

主题公园是一个活跃&#xff0c;快节奏的环境&#xff0c;主题公园最重要的资产之一是他们的表演者和每天制作的节目。但是检查道具以及寻找服装的去向是一项艰巨的任务&#xff1b;如果没有适当的系统和流程&#xff0c;可能会导致资产损失和材料放错位置&#xff0c;最终导致…

【大厂AI课学习笔记NO.51】2.3深度学习开发任务实例(4)计算机视觉实际应用的特点

今天考试通过腾讯云人工智能从业者TCA级别的认证了&#xff01; 还是很开心的&#xff0c;也看不到什么更好的方向&#xff0c;把一切能利用的时间用来学习&#xff0c;总是对的。 我把自己考试通过的学习笔记&#xff0c;都分享到这里了&#xff0c;另外还有一个比较全的思维…

51单片机 wifi连接

一、基本概念 ESP8266是一款集成了WiFi功能的高性能芯片&#xff0c;广泛应用于物联网设备、智能家居、传感器网络等领域。以下是ESP8266的详细讲解&#xff1a; 1. 功能特点&#xff1a;ESP8266集成了TCP/IP协议栈&#xff0c;支持STA&#xff08;Station&#xff09;和AP&am…

15. QML中一些相关的图形效果汇总

1.说明 本篇博客主要记录一些在QML中&#xff0c;对图片进行操作的一些控件 2.示例代码 博客中用到的两张图片分别如下所示&#xff1a; 2.1 混合效果 效果展示&#xff1a; 相关代码&#xff1a; import QtQuick 2.2 import QtQuick.Window 2.1 import QtQuick.Cont…

论文阅读:SOLOv2: Dynamic, Faster and Stronger

目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址&#xff1a;[2003.10152] SOLOv2: Dynamic and Fast Instance Segmentation (arxiv.org) 代码地址&#xff1a;GitHub - WXinlong/SOLO: SOLO and SOLOv2 for instance segmentation, ECCV 2020 & NeurIPS…

< JavaScript技巧:如何优雅的使用 【正则】校验 >

文章目录 &#x1f449; 一、正则表达式的概念&#x1f449; 二、常见使用正则表达式的方法① RegExp 对象方法1. 创建 RegExp 对象的语法2. RegExp对象方法① compile(value)② exec(value)③ test(value)③ reg.toString() ② 支持正则表达式的 String 对象的方法1. search()…

飞天使-学以致用-devops知识点1-安装gitlabharbor

文章目录 rpm 安装gitlab页面配置配置secretsecret 查看信息-chatgpt回复 为项目配置webhook,等jenkins部署完毕后在配置卸载 harbor配置secret所有k8s集群节点安装信任 http rpm 安装gitlab # 下载安装包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitla…

统计分析笔记3

文章目录 统计检验选择正确的统计检验统计检验是做什么的&#xff1f;何时进行统计检验选择参数化测试&#xff1a;回归、比较或相关性选择非参数检验 假设检验的假设条件skewness什么是零偏度right skewleft skew计算skewnesswhat to do if your data is skewed kurtosis怎么计…

BevFusion (2): nuScenes 数据介绍及点云可视化

1. nuScenes 数据集 1.1 概述 nuScenes 数据集 (pronounced /nu:ːsiː:nz/) 是由 Motional (以前称为 nuTonomy) 团队开发的自动驾驶公共大型数据集。nuScenes 数据集的灵感来自于开创性的 KITTI 数据集。 nuScenes 是第一个提供自动驾驶车辆整个传感器套件 (6 个摄像头、1 …

计算机网络:IP

引言&#xff1a; IP协议是互联网协议族中的核心协议之一&#xff0c;负责为数据包在网络中传输提供路由寻址。它定义了数据包如何在互联网上从源地址传输到目的地址的规则和流程。IP协议使得各种不同类型的网络设备能够相互通信&#xff0c;实现了全球范围内的信息交换。 目录…

Qt项目:网络1

文章目录 项目&#xff1a;网路项目1&#xff1a;主机信息查询1.1 QHostInfo类和QNetworkInterface类1.2 主机信息查询项目实现 项目2&#xff1a;基于HTTP的网络应用程序2.1 项目中用到的函数详解2.2 主要源码 项目&#xff1a;网路 项目1&#xff1a;主机信息查询 使用QHostI…

基于vue的图书管理系统的设计与实现

高校师生在教学中承受的压力越大就对知识拥有了更多的需求&#xff0c;而满足这一需求的最佳场所无疑就是图书馆。当前虽然信息技术在各个方面都发挥出重要作用&#xff0c;但是在相当多的高校图书馆中依然由工作人员手动完成图书借阅、归还及逾期提醒等所有工作&#xff0c;在…

如何使用Logstash搜集日志传输到es集群并使用kibana检测

引言&#xff1a;上一期我们进行了对Elasticsearch和kibana的部署&#xff0c;今天我们来解决如何使用Logstash搜集日志传输到es集群并使用kibana检测 目录 Logstash部署 1.安装配置Logstash &#xff08;1&#xff09;安装 &#xff08;2&#xff09;测试文件 &#xff…

集群分发脚本xsync

集群分发脚本xsync 一、简介二、环境准备三、添加到机器的 hosts 文件四、ping 命令测试五、SSH 配置5.1.本地先生成公钥和私钥5.2.将公钥拷贝到其他机器 六、xsync 脚本编写6.1.安装 rsync6.2.新建 xsync.sh6.3.xsync.sh脚本6.4.赋予脚本执行权限6.5.测试 endl 一、简介 配置…

完全分布式运行模式

完全分布式运行模式 分析&#xff1a;之前已经配置完成 ​ 1&#xff09;准备3台客户机&#xff08;关闭防火墙、静态ip、主机名称&#xff09; ​ 2&#xff09;安装JDK ​ 3&#xff09;配置环境变量 ​ 4&#xff09;安装Hadoop ​ 5&#xff09;配置环境变量 ​ 6&am…