本地运行大语言模型(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.mzph.cn/pingmian/29337.shtml

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

相关文章

模拟 IQ 方法的知识

模拟 IQ 调制器(用于发射器)和 IQ 解调器(用于接收器)已经使用了数十年([1] 至 [3])。 近推出了新的A/D和D/A转换器,可以直接对1至4 GHz的IF进行采样;在第二、第三和第四奈奎斯特区…

1. zookeeper分布式协调者

zookeeper分布协调者 一、zookeeper介绍1、软件设计架构1.1 单体架构1.2 SOA架构/分布式1.3 微服务架构 二、zookeeper角色1、角色2、选举机制3、znode类型 三、zookeeper集群部署1、环境规划2、安装jdk3、安装配置zookeeper3.1 安装zookeeper3.2 编辑配置文件3.3 创建myid文件…

Navicat for MySQL 11软件下载及安装教程

软件简介: Navicat for SQL Server 是一套专为 SQL Server设计的全面的图形化数据库管理及开发工具,可进行创建、编辑和删除全部数据库对象,例如表、视图、函数、索引和触发器,或运行 SQL查询和脚本,查看或编辑 BLOBs…

彩色图像批处理实例

在数字图像处理过程中,经常需要对一批图像进行处理,下面以自然场景下花背景分割为例,给出其主要处理过程和处理结果。 处理的主要步骤:1. 六张彩色图像存放在flower文件夹中,图像文件名为1.jpg 2.jpg 3.jpg 4.jpg 5.j…

物联网技术-第4章物联网通信技术-4.1计算机网络

目录 1.1计算机网络拓扑与组成 (1)全连通式网络 (2)星型网 (3)环形网 (4)总线网 (5)不规则型网 1.2数据交换类型 (1)电路交换网 &…

supOS数据集成

为解决企业数据孤岛问题,supOS对外提供了天湖能力,APP应用集成到supOS后可以使用supOS的天湖,所有数据归集到天湖,利用supOS的ESB消息总线能力实现各个业务系统的服务注册,对外提供统一消息总线能力,从而解…

GD32调试篇:STLINK驱动下载安装

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

LabVIEW在SpaceX的应用

结合真实的资料介绍LabVIEW在SpaceX的应用,涵盖自动化测试系统、数据采集与监控、可视化与分析、模块化设计与扩展,以及效率与可靠性的提高。 ​ 自动化测试系统 LabVIEW在SpaceX的自动化测试系统中发挥了关键作用。自动化测试是确保SpaceX火箭及其子系…

Flutter项目,Xcode15, 编译正常,但archive报错

错误提示 PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/目录/Developer/Xcode/DerivedData/Runner-brgnkruocugbipaswyuwsjsnqkzm/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner…

目标检测数据集 - 手机屏幕表面表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:手机屏幕表面缺陷检测数据集,真实采集高质量手机屏幕表面含缺陷图片数据,数据集含多款不同型号和品牌的手机屏幕表面图片数据,包括苹果手机屏、三星手机屏、华为手机屏等数据。数据标注标签包括 Bubble 气泡/水滴、Scr…

openGauss 6.0高可用测试,系统上线前很关键

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…

5-10位工程师如何共享工作站算力和软件

在当今数字化快速发展的时代,算力共享已经成为工程师们提高工作效率、优化资源配置的重要手段。 在数字化和信息化的推动下,共享工作站的算力和软件正逐渐成为机械工程师们提升工作效率、优化资源配置的重要途径。那么5-10位工程师如何共享工作站算力和…

等保一体机:多种防护机制,让等保合规简单高效!

自1994年国务院颁布《中华人民共和国计算机信息系统安全保护条例》规定计算机信息系统实行安全等级保护以来,等级保护工作经过了近25年的发展历程,成为了我国网络安全保护的重要举措之一。 2019年12月1日等保2.0正式开始实施,我国网络安全行业…

低压电器航空插座端子

低压电器航空插座的定义和功能 低压电器航空插座通常指在交流电压1200V或直流电压1500V以下工作的电器,其主要功能是连接或断开电路,以实现对电路或非电对象的切换、控制、保护、检测、变换和调节。航空插座具有多种芯数和配置,例如2芯、3芯…

2288. 价格减免

题目 给定一个字符串列表 sentence,表示一个句子,其中每个单词可以包含数字、小写字母和美元符号 $。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个价格。我们需要在价格的基础上减免给定的 discount%,并更…

原生APP开发的技术难点

原生APP开发是一项复杂的技术工作,需要掌握多种编程语言和技术。原生APP开发的技术难点主要体现在以下几个方面,原生APP开发是一项技术难度较高的工作,需要开发者具备扎实的编程基础和丰富的开发经验。北京木奇移动技术有限公司,专…

Pycharm怎么默认终端连接远程服务器

因为经常需要从宿舍到学校内通勤,期间所有连接都会中断,所以每次开SSH特别麻烦,每次终端自动切换到本地: 每次都得点一下Start SSH Session 想要默认终端连接远程服务器,需要点File->Setting->Tools->SSH T…

铺地地毯B1级防火检测 隔断板A1阻燃测试 氧指数检测

铺地地毯B1级防火检测 铺地地毯的B1级防火检测是指按照国家标准GB 8624-2012《建筑材料及制品燃烧性能分级》进行的测试,该标准将建筑材料及制品的燃烧性能分为A、B1、B2、B3四个等级。B1级表示难燃材料,具有较好的阻燃作用,在空气中遇明火或…

泛微E9开发 查询页面添加按钮,完成特定功能

查询页面添加按钮,完成特定功能 1、关联知识(查询页面实现新增按钮)2、功能实现2.1. 点击按钮,输出选中的checkbox的值2.2. 点击按钮,打开一个自定义对话框 3、实现方法 1、关联知识(查询页面实现新增按钮&…

低代码结合自研项目打包发布

nginx配置 #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_type applica…