本文详细介绍了大模型的基本概念、发展历程和技术原理,重点讲解了在macOS系统下本地运行大模型的实践方法。文章探讨了模型部署中的内存挑战和量化技术(GPTQ、GGML),并通过llama.cpp和whisper.cpp等项目提供了具体的操作指南,帮助开发者在本地环境成功运行大模型,实现AI技术的实际应用。
随着 ChatGPT 的到来,大模型[1](Large Language Model,简称 LLM)成了新时代的 buzzword,各种 GPT 产品百花齐放。
大多数人直接用现有产品就可以了,但对于喜欢刨根问底的程序员来说,能够在本地运行会更有意思。但由于没有相关背景,笔者一开始在接触时, 很多 GitHub 上的搭建教程看得是云里雾里,而且这方面的介绍文章要不就是太晦涩难懂,要不就是太大众小白,于是就有了这篇文章, 主要介绍笔者在搭建大模型过程中学到的知识,以及如何在 macOS 上运行大模型。 笔者水平有限,不足之处请读者指出。
什么是大模型
通俗来讲,大模型就是输入大量语料,来让计算机获得类似人类的“思考”能力,使之能够理解自然语言,能够进行『文本生成』、『推理问答』、『对话』、『文档摘要』等工作。
既然是学习,那我们就可以用『上学参加工作』这件事来类比大模型的训练、使用过程:
- 找学校 :: 训练 LLM 需要大量的计算,因此 GPU 更合适,因此只有购买得起大量 GPU 的贵族学校才有资本训练自己的大模型
- 确定教材 :: 大模型顾名思义就是大,需要的数据量特别多,几千亿序列(Token)的输入基本是标配
- 找老师 :: 即用什么样的算法讲述“书本”中的内容,让大模型能够更好理解 Token 之间的关系
- 就业指导 :: 学完书本中的知识后,为了让大模型能够更好胜任某一行业,需要进行微调(fine tuning)指导
- 搬砖 :: 就业指导完成后,下面就要正式干活了,比如进行一次翻译、问答等,在大模型里称之为推导(infer)
数字化的好处是便于计算机处理。但为了让计算机理解 Token 之间的联系,还需要把 Token 表示成稠密矩阵向量,这个过程称之为embedding[3],常见的算法有:
- 基于统计
- Word2Vec,通过上下文统计信息学习词向量
- GloVe,基于词共现统计信息学习词向量
- 基于深度网络
- CNN,使用卷积网络获得图像或文本向量
- RNN/LSTM,利用序列模型获得文本向量
- 基于神经网络
- BERT,基于 Transformer 和掩码语言建模(Masked LM)进行词向量预训练
- Doc2Vec,使用神经网络获得文本序列的向量
以 Transform 为代表的大模型采用自注意力(Self-attention)机制来学习不同 token 之间的依赖关系,生成高质量 embedding。
大模型的“大”,指的是用于表达 token 之间关系的参数多,主要是指模型中的权重(weight)与偏置(bias),例如 GPT-3 拥有 1750 亿参数,其中权重数量达到了这一量级,而词汇表 token 数只有 5 万左右。参考:
- [How does an LLM “parameter” relate to a “weight” in a neural network?](https://datascience.stackexchange.com/questions/120764/how-does-an-llm-parameter-relate-to-a-weight-in-a-neural-network “How does an LLM “parameter” relate to a “weight” in a neural network?”)
发展历程
这一切的起源是 2017 年发布的Attention Is All You Need[4]论文,之后基于大量语料的预训练模型百花齐放,比如:
- BERT(Bidirectional Encoder Representations from Transformers):Google 在 2018 年提出,创新性的双向预训练并行获取上下文语义信息,以及掩码语言建模(MLM)让模型更好地推断语义信息。它开创了预训练语言表示范式,对自然语言处理产生了深远影响。参数规模:110M 到 340M
- GPT(Generative Pre-trained Transformer):OpenAI 在 2018 年提出,开创了仅使用自回归语言建模作为预训练目标而无需额外监督信号。它展示了通过无监督大规模预训练获得的语言生成能力,对研究与应用都带来重大影响。参数规模:1750 亿
- Large LAnguage Model Approach(LLAMA):Meta 在 2021 年提出,首个开源模型。为构建更大规模、更通用的语言模型提供了系统化的方法与工具。参数规模:十亿到千亿
模型部署
在 LLM 中,Token 是输入的基本单元 由于在大模型的参数非常多,比如在 GPT-2 中,有 1.5B 参数,每个参数用 float32 表示,那么需要的内存大小为4 bytes * 1,500,000,000 = 6GB,更先进的模型如 LLAMA 有 65B 参数,那么需要的内存就需要 260G,这还是在不考虑词汇表的情况下。因此在进行模型实际部署时,会进行模型的压缩。
而且,在训练 LLM 中,CPU 与内存之间的传输速度往往是系统的瓶颈,核心数反而不是大问题,因此减小内存使用是首要优化点。使用内存占用更小的数据类型是一种直接的方式,比如 16 位的浮点数就可以直接将内存使用减倍。目前有几种相互竞争的 16 位标准,但英伟达在其最新一代硬件中引入了对 bfloat16 的支持,
量化 Quantization
将 16 位降至 8 位或 4 位是可能的,但不能使用硬件加速浮点运算。如果我们想对更小的类型进行硬件加速,就需要使用小整数和矢量化指令集。
这就是量化的过程。量化技术可以应用到现有的 32 位浮点运算模型中,通过将权值转换为较小的整数,这些整数的运算可以使用硬件加速指令集,如英特尔的 AVX。
量化模型的简单方法是,首先找出权重的最大值和最小值,然后将数值范围划分为整数类型中可用的桶数,8 位为 256 桶,4 位为 16 桶。这就是所谓的训练后量化(post-training quantization),也是量化模型的最简单方法。现在市面上主要有两类量化方法:
- GPTQ[5] (Accurate Post-Training Quantization for Generative Pre-trained Transformers):主要针对英伟达的 GPU
- GGML (Large Language Models for Everyone):侧重于 CPU 优化的量化方法,主要针对苹果 M1 和 M2 芯片做优化
社区用户TheBloke[6]把 Huggingface Transformers 库中的大多数 LLM 应用这些量化方法,这无疑极大方便了用户的使用。
动手实验
由于笔者实用的 macOS 系统,因此采用 GGML 量化后的模型,官方开源出来的模型大都以 Python 为主,效率可想而知,因此笔者一般会采用社区内的其他实现,比较有名的项目有:
- ggerganov/llama.cpp: Port of Facebook’s LLaMA model in C/C++[7]
- ggerganov/whisper.cpp: Port of OpenAI’s Whisper model in C/C++[8]
LLama
首先是编译,为了利用 Metal 的 GPU,可以用如下命令编译:
代码语言:javascript
复制
LLAMA_METAL=1 make之后需要去Llama-2-7B-Chat-GGML[9]中下载模型,3G 到 7G 不等,读者可以按需尝试即可。
代码语言:javascript
复制
./main -m ~/Downloads/llama-2-7b-chat.ggmlv3.q4_1.bin \ -p "Building a website can be done in 10 simple steps:" -n 512 -ngl 10得到输出
代码语言:javascript
复制
Building a website can be done in 10 simple steps: planning, domain name registration, hosting choice, selecting a CMS or building from scratch, developing the site content, designing the user interface, coding and debugging, testing for usability, and launching it. Planning involves setting goals and objectives for your website, identifying your target audience, and determining its purpose. Domain name registration is choosing a unique web address that reflects your brand or business identity. Choosing the right hosting service ensures that your website loads quickly and efficiently. Popular choices include Bluehost, SiteGround, and HostGator. Selecting a Content Management System (CMS) or building one from scratch allows you to easily manage and update content without needing technical knowledge. Options include WordPress, Joomla, and Drupal. Developing website content involves creating text, images, videos, and other media that convey your message and provide value to users. Designing the user interface (UI) focuses on visual aspects of your site such as layout, color scheme, typography, and navigation. Coding ensures your site functions correctly by writing clean HTML, CSS, and JavaScript code. Debugging involves identifying and fixing any errors or bugs that arise during testing. Testing for usability means checking how easy it is for users to navigate through your site and find the information they need. Launching involves making your website live for all visitors to access, and promoting it through marketing channels such as social media and search engines. [end of text] llama_print_timings: load time = 1267.46 ms llama_print_timings: sample time = 204.14 ms / 313 runs ( 0.65 ms per token, 1533.23 tokens per second) llama_print_timings: prompt eval time = 397.22 ms / 14 tokens ( 28.37 ms per token, 35.25 tokens per second) llama_print_timings: eval time = 9504.40 ms / 312 runs ( 30.46 ms per token, 32.83 tokens per second) llama_print_timings: total time = 10132.02 ms ggml_metal_free: deallocating此外,llama.cpp 还提供了 WebUI 供用户使用,首先启动 server:
代码语言:javascript
复制
./server -m ~/Downloads/llama-2-7b-chat.ggmlv3.q4_1.bin -ngl 512它默认监听 8080 端口,打开浏览器就可以对话了
Whisper
和 llama 类似,采用 make 命令编译,之后去ggerganov/whisper.cpp[10]下载量化好的模型,然后转换音频即可,目前只接受 wav 格式,可以用 ffmpeg 转化
代码语言:javascript
复制
ffmpeg -loglevel -0 -y -i "$INPUT" -ar 16000 -ac 1 -c:a pcm_s16le "${INPUT}.wav" ./main -m models/ggml-small.bin -f "$INPUT" \ -osrt -t 8 -p 4输出的 srt 文件如下所示:
代码语言:javascript
复制
1 00:00:00,000 --> 00:00:05,520 Hello everyone and welcome to another episode of the Form 3 TET podcast. 2 00:00:05,520 --> 00:00:08,800 My name is Kevin Holtich, head of Pat from Engineering at Form 3. 3 00:00:08,800 --> 00:00:12,560 Today I'm really excited that I've been joined by Torsten Ball. 4 00:00:12,560 --> 00:00:13,920 How's it going, State Torsten?最后
我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。
我整理出这套 AI 大模型突围资料包:
- ✅AI大模型学习路线图
- ✅Agent行业报告
- ✅100集大模型视频教程
- ✅大模型书籍PDF
- ✅DeepSeek教程
- ✅AI产品经理入门资料
完整的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
为什么说现在普通人就业/升职加薪的首选是AI大模型?
人工智能技术的爆发式增长,正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议,到全国两会关于AI产业发展的政策聚焦,再到招聘会上排起的长队,AI的热度已从技术领域渗透到就业市场的每一个角落。
智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200%,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。
AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。
资料包有什么?
①从入门到精通的全套视频教程⑤⑥
包含提示词工程、RAG、Agent等技术点
② AI大模型学习路线图(还有视频解说)
全过程AI大模型学习路线
③学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的
④各大厂大模型面试题目详解
⑤ 这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
所有的视频教程由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势,构建起"前沿课程+智能实训+精准就业"的高效培养体系。
课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓**