当前位置: 首页 > article >正文

在本机上跑LLM的体会

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

在过去一个月里,作者开始探索快速发展的大型语言模型(Large Language Models,LLM)领域。如今,技术进步已让LLM变得相当易用——现在一个比原版ChatGPT(2022年11月)的模型甚至能运行在树莓派上,而更高性能的AI则可以在普通台式机或笔记本电脑上轻松运行。这不仅更私密,还可以离线使用,无需注册,且使用无限制。技术正在以飞快的速度进步,几个月的时间信息就可能过时。本文总结了作者的实践经验,分享了他在入门时希望自己能掌握的知识。需要注意的是,作者是LLM领域的“外行”,并不具备独到的见解,且很可能误解了某些内容。不过,文章本身仍为探索这项技术的快照,有望在一年后成为历史上的一个小注脚。

LLM即大型语言模型,如果说对其功能不太了解,那只需知道这类神经网络在2022年因训练成对话型“聊天”模式而取得重大突破。用户可以与一个极具创造力的人工智能对话,该技术不仅轻松通过了图灵测试,还能展现惊人的创造性。与之初次互动的感觉往往让人不安,这种不安会持续几天。试想购买一台普通家用电脑时,大多数人绝不会期待它具备对话能力。

这种体验令人回想起上世纪90年代的桌面计算机革命,当时,刚买的新电脑还没带回家就已经有了更新换代的款式。现在的技术也是如此,每周都有新进展,导致对一年以上的旧信息大多可以忽略。作者习惯在r/LocalLLaMa社区跟进最新动态,但每条信息都被极度夸大,因此作者保持着谨慎的怀疑态度。

作者对“厂商锁定”格外警惕,因为之前因服务关闭、变化或不再支持而导致他必须放弃原有的使用模式。因此,他曾一度忽略LLM,仅仅是因为那些“闭源”模型只能以服务形式访问,且容易受到厂商锁定的影响,甚至服务质量会悄然下降。但当得知可以在自己的硬件上运行接近前沿的模型时,这种情况发生了根本改变,这种方式完全避免了厂商锁定的问题。

本文关注如何运行LLM,不涉及微调训练,甚至没有涉及其他“多模态”功能如视觉或语音等。这些功能并不适合作者的个人需求。

运行LLM时需准备软件和模型:

软件

作者主要使用了令人惊叹的llama.cpp。该软件适合基本的CPU推理,即使用CPU生成token,而非GPU。特别之处在于,它仅需一个C++工具链,避开了常见的Python依赖问题。在Windows上,仅需一个5MB大小的可执行文件llama-server.exe,无需额外运行时依赖文件。只需两个文件,EXE和GGUF(模型),就能利用内存映射来加载模型,未来25年后甚至还能在新版Windows系统上“开箱即用”。

作者特别推荐CPU推理,但前提是GPU推理无法实现。CPU推理适用于10B以下参数的模型,但相对较慢。而在GPU推理方面,瓶颈在于显存(VRAM)。对于8GB以下VRAM配置,使用CPU推理反而更简单入门。

llama.cpp工具集中,作者主要使用llama-server程序,这是一个HTTP服务器,默认端口为8080,带有聊天UI和API接口,适合在其他用户界面中使用。

模型

Hugging Face是LLM的“GitHub”,存储了大量模型。“小”模型在几个GB左右,而“大”模型则达上百GB,且大多数模型免费下载。就llama.cpp而言,作者建议下载GGUF格式的模型。Meta的旗舰模型Llama 3.2目前仅支持1B和3B的参数,在实际使用中并不十分有用,而3.1的8B模型会是更佳选择。

不同的模型具备不同的权衡取舍,强项和弱项也有所不同。作者的台式机配备了RTX 3050 Ti显卡和8GB显存,这一限制形塑了他的选择。作者的“每秒token生成数”(t/s)均在此硬件配置上运行。

最喜欢的模型

  • Mistral-Nemo-2407 (12B):[Apache 2.0] 这是作者默认的模型,能达到约30t/s的推理速度。它擅长写作和校对,甚至能较好地审查代码。
  • Qwen2.5-14B和Qwen2.5-72B:来自阿里云,这些模型在所有规模上表现出色。14B的推理速度可达11 t/s,几乎能与Mistral Nemo媲美。
  • Gemma-2-2B:这是一个极佳的翻译模型,几乎已经使Google Translate过时。

其他模型还包括用于程序生成的FIM(Fill-in-the-Middle,填充中间)模型。作者发现代码生成目前仍存在较大局限性,但他推荐了DeepSeek-Coder-V2-Lite(16B)、Qwen2.5-Coder-7B和Granite-8B-Code作为程序生成模型。

用户界面

尽管llama.cpp提供了内置UI,作者自行构建了一个名为Illume的CLI工具,将标准输入转换为API查询,并流式输出至标准输出,特别适用于Vim。Illume允许用户在标准文本编辑器缓冲区中交替编写用户和助手输入,适合创作对话式故事。

FIM(填充中间)是LLM中一种新兴的训练方式,主要应用于代码生成。FIM训练允许LLM预测中间token,但它仍处于早期阶段,尚未广泛应用。

LLM的应用边界

LLM的实际用途仍然有限,适合特定任务,比如校对、创作短篇小说、生成有趣的互动对话或语言翻译。相比之下,LLM在正确性要求较高的任务中并不理想。代码生成也面临不小的局限,LLM编写代码的能力仍处于本科水平,在软件工程中的实际适用性很低。

总结

尽管LLM的实用性有限,但作者仍对这一技术的未来发展充满期待。这是近年来令他最激动的科技进步之一。


http://www.kler.cn/a/390050.html

相关文章:

  • 什么时候需要复写hashcode()和compartTo方法
  • OpenGL ES 共享上下文实现多线程渲染
  • 3D绘制动态爱心Matlab
  • 分享一个傻瓜式一键启动的加速器
  • 计算机网络易混淆知识点串记
  • 外星人入侵
  • 【教程】Ubuntu设置alacritty为默认终端
  • LabVIEW导入并显示CAD DXF文件图形 程序见附件
  • 深入解析TOML、XML、YAML和JSON:优劣对比与场景应用
  • Docker了解
  • HTMLCSS 打造的酷炫菜单选项卡
  • SD-WAN专线接入与互联网接入对比:企业网络选择指南
  • Kettle——CSV文件转换成excel文件输出
  • 23.网工入门篇--------介绍一下园区网典型组网架构及案例实践
  • 行业类别-智能制造-子类别工业4.0-细分类别物联网应用-应用场景智能工厂建设
  • AI 刷题实践选题:云端编辑器的独特价值与学习实践| 豆包MarsCode AI刷题
  • uni-app项目启动-结构搭建④
  • Linux系统部署docker和docker-compose应用
  • Redis 入门
  • TypeError: str expected.not int 解决方案
  • 通过 HTTP 获取远程摄像头视频流并使用 YOLOv5 进行目标检测
  • ARL506-ASEMI汽车专用整流二极管ARL506
  • abap 可配置通用报表字段级日志监控
  • 了解springboot国际化用途以及使用
  • [数据结构]顺序表详解+完整源码(顺序表初始化、销毁、扩容、元素的插入和删除)
  • 【网页设计】CSS 高级技巧