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

用例

像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, StreamingStdOutCallbackHandlerllm = Ollama(model="llama2", callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])
)
llm.invoke("The first man on the moon was ...")

环境

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

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

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

运行苹果 silicon GPU

Ollamallamafile 将自动利用苹果设备上的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, StreamingStdOutCallbackHandlerllm = 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 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

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

img

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

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

img

三、AI大模型经典PDF籍

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

img

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

img

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

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

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

相关文章

【odoo | XML-RPC】odoo外部API解读,实现跨系统间的通讯!

概要 文章注意对官方的XML-RPC进行解读实操,以python为例,给大家介绍其使用方式和调用方法。 内容 什么是odoo的外部API? Odoo 的外部 API 是一种允许外部应用程序与 Odoo 实例进行交互的接口。通过 API,可以执行各种操作,例如…

Determinant 一个翻译很不友好的名字 行列式 det(A)

Determinant 一个翻译很不友好的名字 行列式 det(A) flyfish determinant 美[dɪtɜːrmɪnənt] 英[dɪtɜːmɪnənt] adj. 决定性的n. 决定性因素 / <数>行列式 / 决定因素 / 方阵举一个最简单的例子说明行列式 假设有一个 2x2 矩阵 A&#xff1a; A ( 2 1 1 2…

React+TS前台项目实战(九)-- 全局常用组件弹窗Dialog封装

文章目录 前言Dialog公共弹窗组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局公共弹窗Dialog组件封装&#xff0c;将用到上篇封装的模态框Modal组件。有时在前台项目中&#xff0c;偶尔要用到一两个常用的组件&#xff0c;如 弹窗&#x…

问题(05)elementui 输入框里面禁止浏览器自动填充用户名密码、弹出浏览器历史密码提示框

问题描述 el-input&#xff0c;非密码框&#xff0c;在输入时&#xff0c; 问题1&#xff1a; 浏览器自动填充用户名密码。问题2&#xff1a;右边显示浏览器历史密码提示框。 问题解决 问题1&#xff1a;使用auto-complete"new-password" <input type"te…

11.3 Go 标准库的使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

大数据数据挖掘系统可视化设计艺术

1.系统背景 在我们实际进行数据挖掘研发过程中&#xff0c;为了验证某些算法在业务中的性能每次都需要去从头写代码&#xff0c;如果我们将我们研发的算法以模块化的思想封装起来&#xff0c;下次再使用的时候直接在系统中进行拖拉一下生成一个工作流&#xff0c;就能完成数据挖…

Advanced XUV Spectroscopy 成像采集设备的比较分析

设备简介 CCD-Andor&#xff1a; 类型&#xff1a;CCD相机 特点&#xff1a;高灵敏度、低噪声 应用&#xff1a;适用于弱光成像、高动态范围成像 sCMOS-PI&#xff1a; 类型&#xff1a;sCMOS相机&#xff08;Princeton Instruments&#xff09; 特点&#xff1a;高分辨率、…

cs与msf权限传递,以及mimikatz抓取win2012明文

cs传递shell给msf cs有一台上线主机&#xff1a; 1.msf开启监听&#xff1a; use exploit/multi/handler set payload windows/meterpreter/reverse_http&#xff08;注&#xff1a;这里是http,与cs上线的监听器一致&#xff09; set lhost 本机ip set lport 自己的端口号…

算法金 | 再见!!!K-means

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— k-means 算法。最早由斯坦福大学的 J. B. MacQueen 于 1967 年提出&#xff0c;后来经过许多…

GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图高级应用

原文链接&#xff1a;GPT办公与科研应用、论文撰写、数据分析、机器学习、深度学习及AI绘图高级应用https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247606667&idx3&sn2c5be84dfcd62d748f77b10a731d809d&chksmfa82606ccdf5e97ad1a2a86662c75794033d8e2e…

qmt量化交易策略小白学习笔记第31期【qmt编程之获取行业概念数据--如何获取概念成分股数据】

qmt编程之获取获取概念成分股数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; 获取概念…

如何恢复红米手机中已删除的照片?(6种方法可用)

凭借出色的相机和实惠的价格&#xff0c;小米红米系列已成为全球知名品牌。然而&#xff0c;最近有些人抱怨他们在红米设备上丢失了许多珍贵的照片或视频&#xff0c;并希望弄清楚如何从小米手机中恢复已删除的照片。好吧&#xff0c;恢复小米设备上已删除的视频/照片并不难。只…

[Java基本语法] String类

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;线程与…

5.数据仓库与数据挖掘期末复习

ETL的含义Extract 、 Transformation、Load。ODS的全称Operational Data Store。 DW全称 Data WarehourseDM全称是Data Mart数据仓库数据抽取时所用到技术是增量、全量、定时、调度STAGE层作用是提供业务系统数据文件的临时存储ODS层作用ods提供业务系统细节数据长期沉淀MID层…

快速开发的UI框架:效率蹭蹭提高!!【送源码】

不知道各位用uniapp 开发移动端小程序或者网页&#xff0c;是否用UI框架。 我一般就用官方自带的&#xff0c;近期一个项目 用了uView, 感觉整体还不错&#xff0c;类似蚂蚁的风格。 特此推荐下&#xff0c;可以收藏一下&#xff0c;需要的时候记得来取哦&#xff01; 介绍 …

Java基础:Stream流和方法引用

一、Stream流 1.引言 Test&#xff1a;给定一个集合&#xff0c;如果想要筛选出其中以 "a" 开头且长度为3的元素&#xff0c;并添加到新集合中去&#xff0c;最后遍历打印&#xff0c;如何实现&#xff1f; public class Test {public static void main(String[] …

车载以太网测试

一、车载以太网的发展 IEEE&#xff1a; 电气与电子工程师协会&#xff0c;其中IEEE802.3工作小组致力于推进以太网相关标准的制定与完善&#xff0c;其发展主要经过一下三个阶段: 1.诊断/程序更新 2.智驾座舱 3.主干网 二、车载以太网协议&#xff08;OSI七层模型&#x…

老爷机带不动影视后期?云桌面了解一下

从黑白到彩色&#xff0c;从默片到有声&#xff0c;从2D到3D&#xff0c;影视工业经过百余年的演变&#xff0c;每一步技术的提升都试图让影视艺术更接近“真实”。电影特效技术的诞生&#xff0c;更是为影视作品的真实感实现了一次巨大的飞跃。 但有一部分影视人&#xff0c;…

1996-2023年各省社会消费品零售总额数据

1996-2023年各省社会消费品零售总额数据 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、各省年鉴 3、指标&#xff1a;社会消费品零售总额 4、范围&#xff1a;31省 5、缺失情况&#xff1a;无缺失 6、指标解释&#xff1a; 社会消费品零售总额指企业…

贝壳APP渗透测试WP

前期配置 环境说明 使用PIXEL 4手机&#xff0c;为Android 12系统 APP名为贝壳找房&#xff0c;包名com.lianjia.beike&#xff0c;版本号3.01.10&#xff0c;截至2024/05/07为最新版&#xff0c;小米应用市场下载 绕过反Frida机制 可以参考往期推送&#xff0c;《绕过最新…