本地运行大语言模型(LLMs)

关于AI 大数据模型的基础知识 杂记 下载后的模型存储于 /User/Admin/.lmstudio/models中。LM Studio是使用electron架构,引用的llama.cpp库。 阅读详情
AI摘要

探讨了在个人设备上运行大型语言模型(LLMs)的趋势,强调隐私保护和成本效益。介绍了开源LLMs及其评估维度,以及支持本地推理的框架,如llama.cpp、Ollama、GPT4All和llamafile。讨论了模型量化、推理实现和环境配置,并提供了快速开始指南。

用例

像PrivateGPT、llama.cpp、Ollama、GPT4All、llamafile 等项目的流行度凸显了本地(在您自己的设备上)运行大型语言模型(LLMs)的需求。

这至少有两个重要的好处:

1.隐私:您的数据不会发送给第三方,也不会受到商业服务的服务条款的约束2.成本:没有推理费用,这对于需要大量令牌的应用(例如,长期运行的模拟、摘要)很重要

概述

在本地运行一个LLM需要几样东西:

1.开源LLM:可以自由修改和共享的开源LLM2.推理:在您的设备上以可接受的延迟运行此LLM的能力

开源LLMs

用户现在可以接触到快速增长的开源LLM集合。

这些LLM至少可以通过两个维度进行评估(见图):

1.基础模型:基础模型是什么,它是如何训练的?2.微调方法:基础模型是否经过了微调,如果是,使用了哪些指令集?

图片

推理

已经出现了一些框架,用于在各种设备上支持开源LLM的推理:

1.llama.cpp:带有权重优化/量化的llama推理代码的C++实现2.gpt4all:优化的C后端用于推理3.Ollama:将模型权重和环境捆绑到设备上运行的应用程序中,并提供LLM4.llamafile:将模型权重和运行模型所需的一切捆绑到一个单一文件中,允许您从这个文件本地运行LLM,无需任何额外的安装步骤

通常,这些框架会做几件事:

1.量化:减少原始模型权重的内存占用2.高效的推理实现:支持在消费级硬件上进行推理(例如,CPU或笔记本电脑GPU)

特别是,请参阅这篇(https://finbarr.ca/how-is-llama-cpp-possible/)关于量化重要性的优秀文章。

LLaMa权重所需的内存

参数数量 (B)浮点32位所需的RAM (GB)半精度浮点数所需的RAM (GB)8位整数所需的RAM (GB)4位整数所需的RAM (GB)
72814735
1352261365
32.51306532.516.25
65.2260.8130.465.232.6

通过减少精度,我们大幅减少了存储LLM所需的内存。

此外,我们可以看到GPU内存带宽表的重要性!

一个Mac M2 Max由于拥有更大的GPU内存带宽,在推理上比M1快5-6倍。

图片

快速开始

Ollama是在macOS上轻松运行推理的一种方式。

这里的说明提供了详细信息,我们总结如下:

•下载并运行应用程序•从命令行,从这个选项列表中获取模型:例如,ollama pull llama2•当应用程序运行时,所有模型都会自动在 localhost:11434 上提供服务

在这里插入图片描述

' The first man on the moon was Neil Armstrong, who landed on the moon on July 20, 1969 as part of the Apollo 11 mission. obviously.'

生成它们被创建时的流令牌。

from langchain_core.callbacks import CallbackManager, StreamingStdOutCallbackHandler

llm = Ollama(
    model="llama2", callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])
)
llm.invoke("The first man on the moon was ...")

环境

推理速度是本地运行模型时的挑战(见上文)。

为了最小化延迟,最好在GPU上本地运行模型,许多消费级笔记本电脑都配备了GPU,例如苹果设备。

即使有GPU,可用的GPU内存带宽(如上所述)也很重要。

运行苹果 silicon GPU

Ollama 和 llamafile 将自动利用苹果设备上的GPU。

其他框架要求用户设置环境以利用苹果GPU。

例如,llama.cpp Python绑定可以通过Metal配置为使用GPU。

Metal是苹果创建的一种图形和计算API,提供接近直接访问GPU的权限。

请参见此处的llama.cpp设置以启用此功能。

特别是,确保conda使用的是您创建的正确虚拟环境(miniforge3)。

例如,对我来说:

conda activate /Users/rlm/miniforge3/envs/llama

确认上述情况后,然后:

CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install -U llama-cpp-python --no-cache-dir

LLMs

有多种方法可以获得量化模型权重的访问权限。

1.HuggingFace - 许多量化模型可供下载,并可使用llama.cpp等框架运行。您也可以从HuggingFace下载llamafile格式的模型。2.gpt4all - 模型浏览器提供了一个排行榜,列出了可用的量化模型的指标和相关下载。3.Ollama - 可以通过pull直接访问几种模型。

Ollama

使用Ollama,通过 ollama pull : 获取模型:

•例如,对于Llama-7b:ollama pull llama2 将下载模型的最基本版本(例如,参数数量最少和4位量化)。•我们还可以指定模型列表中的特定版本,例如:ollama pull llama2:13b。•查看API参考页面上的完整参数集。

在这里插入图片描述

' Sure! Here's the answer, broken down step by step:\n\nThe first man on the moon was... Neil Armstrong.\n\nHere's how I arrived at that answer:\n\n1. The first manned mission to land on the moon was Apollo 11.\n2. The mission included three astronauts: Neil Armstrong, Edwin "Buzz" Aldrin, and Michael Collins.\n3. Neil Armstrong was the mission commander and the first person to set foot on the moon.\n4. On July 20, 1969, Armstrong stepped out of the lunar module Eagle and onto the moon's surface, famously declaring "That's one small step for man, one giant leap for mankind."\n\nSo, the first man on the moon was Neil Armstrong!'

Llama.cpp

Llama.cpp与广泛的模型兼容。

例如,我们在HuggingFace下载的4位量化的llama2-13b上运行推理。

如上所述,请参见API参考以获取完整的参数集。

从lamma.cpp API参考文档中,有一些值得评论的:

n_gpu_layers:要加载到GPU内存中的层数

•值:1•意义:通常只将模型的一层加载到GPU内存中(1通常足够)。

n_batch:模型应该并行处理的令牌数量

•值:n_batch•意义:建议选择1到n_ctx(在这个案例中设置为2048)之间的值。

n_ctx:令牌上下文窗口

•值:2048•意义:模型每次将考虑2048个令牌的窗口。

f16_kv:模型是否应该对键/值缓存使用半精度

•值:True•意义:模型将使用半精度,这可能更节省内存;Metal只支持True。

在这里插入图片描述

from langchain_community.llms import LlamaCpp
from langchain_core.callbacks import CallbackManager, StreamingStdOutCallbackHandler

llm = LlamaCpp(
    model_path="/Users/rlm/Desktop/Code/llama.cpp/models/openorca-platypus2-13b.gguf.q4_0.bin",    
    n_gpu_layers=1,    
    n_batch=512,    
    n_ctx=2048,    
    f16_kv=True,    
    callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]),    
    verbose=True,
)

控制台日志将显示以下内容,以指示Metal已正确启用:

ggml_metal_init: allocatin
gggml_metal_init: using MPS
llm.invoke("The first man on the moon was ... Let's think step by step")

GPT4All

我们可以使用从GPT4All模型浏览器下载的模型权重。

与上面显示的类似,我们可以运行推理并使用API参考来设置感兴趣的参数。

llamafile

使用llamafile在本地运行LLM的最简单方法是:

  1. 从HuggingFace下载一个llamafile 2) 使文件可执行 3) 运行文件

llamafiles将模型权重和一个特别编译版本的llama.cpp捆绑到一个单一文件中,可以在大多数计算机上运行,无需任何额外依赖。它们还带有一个内置的推理服务器,提供与您的模型交互的API。

以下是一个简单的bash脚本,显示所有3个设置步骤:

# 从HuggingFace下载一个llamafile
wget https://huggingface.co/jartine/TinyLlama-1.1B-Chat-v1.0-GGUF/resolve/main/TinyLlama-1.1B-Chat-v1.0.Q5_K_M.llamafile

# 使文件可执行。在Windows上,改为将文件重命名为以".exe"结尾。
chmod +x TinyLlama-1.1B-Chat-v1.0.Q5_K_M.llamafile

# 启动模型服务器。默认监听 http://localhost:8080。
./TinyLlama-1.1B-Chat-v1.0.Q5_K_M.llamafile --server --nobrowser

运行上述设置步骤后,您可以使用LangChain与模型交互:

在这里插入图片描述

提示

一些LLM将从特定提示中受益。

例如,LLaMA将使用特殊标记。

我们可以使用ConditionalPromptSelector根据模型类型设置提示。

使用案例

鉴于从一个以上模型创建的llm,您可以将其用于许多用例。

例如,这里有一份使用本地LLM进行RAG的指南。

一般来说,本地LLM的用例可以由至少两个因素驱动:

•隐私:用户不想共享的私有数据(例如,日记等)•成本:文本预处理(提取/标记)、摘要和代理模拟是使用大量令牌的任务

此外,这里还有一个关于微调的概述,可以利用开源LLM。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

win10部署 Mistral-7B 文本生成模型 win10部署 Mistral-7B 文本生成模型,量化模型 Mistral-7B-OpenOrca-GGUF 使用了Llama.cpp 技术既可以 cpu运行 又可以 GPU运行 阅读详情

相关推荐

[使用ExLlamaV2在本地运行大语言模型(LLMs):入门指南]

这篇文章简要介绍了ExLlamaV2的安装与使用,通过结合LangChain实现本地运行大语言模型。对于希望深入了解LLM运行的开发者,可以参考下面的资源。

srysduguho的博客 602

【深度学习模型3】慢吞吞地理解RNN……

仅代表我对RNN的理解,希望可以帮到你。如果有什么地方不对,欢迎大佬来纠正!

weixin_43594181的博客 516

【AI】在本地 Docker 环境中搭建使用 Hugging Face 托管的 Llama 模型

在本地使用Docker部署LLM GGML模型是一种方便有效的使用自然语言处理的方式。将模型docker化使其易于在不同环境之间移动,并确保其能够一致运行。在浏览器中测试模型提供了用户友好的界面,让您可以快速评估其性能。 这样的设置使您对基础架构和数据有更多控制,并更容易部署先进的语言模型,适用于各种应用。这是在部署大型语言模型方面迈出的一大步。

欧阳天涵的专栏 4134

本地运行“李开复”的零一万物 34B 大模型

这篇文章,我们来聊聊如何本地运行最近争议颇多的,李开复带队的国产大模型:零一万物 34B。

折腾技术 6439

大语言模型(LLMs)全面学习指南

大语言模型(LLMs)作为人工智能(AI)领域的一项突破性发展,已经改变了自然语言处理(NLP)和机器学习(ML)应用的面貌。这些模型,包括OpenAI的GPT-4o和Google的gemini系列等,已经展现出了在理解和生成类人文本方面的令人印象深刻的能力,使它们成为各行各业的宝贵工具。如下这份指南将涵盖LLMs的基础知识、训练过程、用例和未来趋势……大语言模型(LLMs)是一种深度学习模型,专门设计用于理解、分析和生成类似人类的文本。

yXIAOyu_的博客 1769

【LongChain-03】在本地运行LLM的另一些案例

PrivateGPT、 llama.cpp和 GPT4All等项目的流行 强调了在本地(在您自己的设备上)运行 LLM 的需求。    这至少有两个重要的好处:    Privacy:您的数据不会发送给第三方,并且不受商业服务的服务条款的约束    Cost:没有推理费用,这对于代币密集型应用程序很重要(例如,长时间运行的模拟、摘要)

gongdiwudu的专栏 3651

极速教程:本地运行大语言模型LLMs:Ollama + python

下载Ollama,通过Ollama下载大模型LLMs,在终端中通过Ollama与大模型LLMs交互,在python中通过Ollama与大模型LLMs交互。

Day_dream_LY的博客 527

AI大语言模型工程师学习路线

详细介绍要从事LLM大语言模型工程师要学习的技术路线

program哲学 1959

如何轻松实现本地大语言模型(LLM)的远程访问(使用Tailscale、Open WebUI和Ollama)

想象一下,在你的本地机器上部署一个强大的语言模型,它运行流畅,响应迅速,也不依赖昂贵的云服务。但问题来了:你只能在这台设备上访问它。如果你想在另一个房间的笔记本电脑上使用,或者与朋友分享该怎么办呢?

Xianxiancq的博客 2310

ArcGIS属性表汉字转拼音

接着我安装了一个编辑器“PyCharm Community Edition 2019.3.3\bin\pycharm64.exe”,在里面添加“pypinyin”包,然后将其设置为arcgis的编辑器和调试程序,还是失败;我在10.6的机器上折腾了上面几步,直到两周后脚本突然运行成功,我也不确定是哪一步导致pypinyin包配置成功,因此将心得体会写出来,如果过一段时间,打开10.2的机器运行脚本成功了,再写后续.......,按照“配置方法1:”进行尝试,显示配置失败。

2301_77413856的博客 1295

电赛2024年H题智能小车基于MSPM0G3507主控MCU(利用8路灰度加上MPU6050的解决方式)

最后我觉得这个项目最重要的部分还是陀螺仪的精准度,如果一个陀螺仪的精准度高,这个项目就十分简单了,像mpu6050这种陀螺仪精准度就稍微差了一点,他有个最严重的问题就是温漂,偏航角会随着温度变化为变化,这一点在跑发挥项一的时候十分关键的,因为这个只差基督就会导致车子跑偏,导致无法完成 整个项目。如果条件足够的话建议可以换一个好一点的陀螺仪,然后就是灰度如果没有条件同样也可以换成红外。以上就是本次项目的一些小建议。

weixin_60991529的博客 6243

LlamaIndex第二篇 使用LLMs和Embeddings向量模型

🤩批处理大小默认情况下,系统会以10个为一批的批次大小向OpenAI发送嵌入请求。对于部分用户,这可能(少数情况下)会触发速率限制;而对于需要嵌入大量文档的用户,这一批次大小可能过小。

2501_90353350的博客 1380

保姆级教程:用TI IWR6843雷达板跑通3D人体追踪demo(附CCS/UniFlash避坑指南)

本文提供了一份详尽的TI IWR6843毫米波雷达开发板3D人体追踪demo实现指南,涵盖开发环境搭建、工程导入编译、固件烧录及可视化工具配置全流程。特别针对CCS和UniFlash使用中的常见问题给出解决方案,帮助开发者快速掌握3D People Tracking技术应用。

weixin_29159441的博客 504

LLMs-from-scratch:从零开始,手把手教你构建大语言模型

今天,我们要介绍一个完美的学习项目——LLMs-from-scratch,它能带你从零开始,一步步构建属于自己的大型语言模型。

Y525698136的博客 804

微信公众号开发实战:如何高效推送模板消息(附完整代码示例)

本文详细解析了微信公众号开发中模板消息推送的核心流程与实战技巧。文章从OpenID获取、模板申请、Access Token缓存管理到完整PHP代码实现,逐步拆解了高效推送模板消息的关键步骤,并提供了可直接复用的代码示例,帮助开发者快速集成这一提升用户体验的重要功能。

weixin_29009971的博客 793

RDMA学习笔记-IB五层网络协议和报文结构

Reference InfiniBand Architecture Specification Volume 1, Release 1.3 文章目录IBA 网络协议分层1.链路层1.1 LRH1.2 ICRC1.3 VCRC2.网络层(GRH)3.传输层3.1 BTH3.2 extended transport header4. 报文结构4.1 send request4.2 RDMA Write request4.3 RDMA Read request4.4 ACK4.5 Atomic operatio

u014114310的博客 9468

【Model】【llm67】OpenVINO LLMs集成示例

本案例展示了如何通过LlamaIndex集成OpenVINO,在本地运行优化后的大语言模型。OpenVINO™是一个开源工具包,用于优化和部署AI推理,可以在各种硬件设备上运行优化后的模型,包括CPU、GPU和其他专用硬件。通过OpenVINO,开发者可以在本地高效运行大语言模型,无需依赖云端API。

rengang66的博客 155

华为昇腾(Ascend)开发考试原题目解析 (2024) (题库一)——HCIP-AI-Ascend Developer——第一部分

给出一段代码如下,以下哪个选项描述错误?...A.中的语句由 MindSpore 接管,有语法限制B. 算子在中定义,并用来建立网络C.__init__()中的语句由 Python 解析执行D. 网络定义必须继承基类nn.Cell正确答案: B__init__()用于定义算子和网络层。所有需要用到的层(如卷积层、全连接层等)都应该在这里进行实例化。这部分代码由Python解释器执行。用于构建前向计算图。它调用在__init__()中定义好的算子和层来描述数据的流向。

qq_38334677的博客 1053

使用嵌入模型和 LLMs 分析非结构化 PDF 数据

首先,我们需要初始化我们的 MilvusClient,这将允许我们创建我们的。

龙哥盟 742

Open3D 使用RANSAC分割平面【2026最新版】

使用RANSAC从点云中分割平面,用segement_plane函数。博客长期更新,本文最新更新时间为:2026年2月28日。

点云侠的博客 37万+

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是MobileNetV1,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者。

Snu77的博客 3966

本地部署大语言模型(LLMs)

本地部署大语言模型(LLMs)是一个涉及多个步骤和技术细节的过程,包括硬件准备、软件安装、模型下载与配置等。以下是一个详细且全面的指南,旨在帮助读者在本地环境中成功部署大语言模型。

shiming8879的博客 1605

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何训练一个大语言模型(LLMs)

在当今数字时代,语言模型已经成为自然语言处理任务的强大工具,从文本生成到情感分析和机器翻译等各个方面都有涉猎。然而,训练这些模型需要仔细的规划、大量的计算资源以及机器学习技术方面的专业知识。那么一个大型语言模型(LLMs)到底是如何训练出来的呢?在查阅了解之后,我们将相关内容整理出来。在本文中,将和大家一起探讨训练LLMs所涉及的步骤

WHYbeHERE的博客 3422

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 大型语言模型(LLMs)是如何工作的?
下一篇: 探索AI的魔力:这5款AI应用让你全面感受人工智能的魅力
冻感糕人~
博客等级 码龄3年 8926粉丝 2384原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值