前端高薪岗位之大模型端上部署及训练

news2024/12/31 3:54:53

自2022年ChatGPT发布以来,以大模型为依托的AIGC相关的应用产品,比如ChatGPT、Midjourney、Stable Diffusion等,在社交网站的讨论热度持续攀升,引发了较大范围的好奇与关注。

目前,国内外各个科技大厂在大模型的端侧部署领域均开始布局,比如在2023年8月14日的雷军年度演讲中,雷军宣布小米已经在手机端跑通13亿参数的大模型,部分场景效果媲美云端。

什么是大模型

2017年,Google 发表一篇划时代的论文《Attention is all you need》,这是一个标志性的事件。

基于 Transformer, 2018年OpenAI推出1.1亿参数的GPT,此后谷歌、微软、Facebook等前后相继推出自己的预训练模型。

特别是2020年OpenAI推出了1750亿参数的GPT-3,轰动全球,引发了各大顶尖科研机构在大模型研究的竞赛,大模型的参数规模逐渐增加。

LLM 的基础是 Transformer 块,Transformer是一种基于自注意力机制(self-attention)的神经网络结构,被广泛应用于自然语言处理任务中,它包括编码器和解码器两个主要结构。

目前,绝大多数的大语言模型均基于这种结构搭建而成,按照结构划分可以分为仅编码器模型、仅解码器模型和编码器解码器模型。

  • 仅编码器模型(Encoder-only models): 常见于需要理解输入的任务,如句子分类和命名实体识别。
  • 仅解码器模型(Decoder-only models): 常见于生成任务,如文本生成。
  • 编码器解码器模型(Encoder-decoder models): 常见于根据输入进行生成的任务,如翻译或摘要。

近一两年,微软、谷歌、Meta、百度、阿里、腾讯等国内外研究机构就大模型领域不断进行着技术创新和新型商业模式的竞争,大量的模型持续被设计、生产并发布。

截屏2024-01-19 14.12.07.png

其中基于Transformer的模型显示为非灰色颜色:蓝色分支表示仅解码器模型,粉色分支表示仅编码器模型,绿色分支表示编码器解码器模型。

可以发现大模型逐步向编码器解码器和仅解码器架构发展,模型的参数尺寸持续增加,训练数据持续增加,使得模型能力大幅提高的同时也使得模型对于算力的需求呈指数级增长。

目前业界大模型的研究主要有两个方向:

  • 一是起步较早的自主研发闭源的商用模型,典型代表是OpenAI的GPT系列,Google的Bard、PaLM2等。
  • 另外一个就是开源界热火朝天的景象,其中10B以下的模型,经过量化压缩及优化之后基本上都能在端侧设备上部署运行。

大模型技术的基础

模型部署是帮助训练好的模型从“工厂”走入实际应用的关键步骤,部署大模型和普通模型的关键区别主要在于计算能力、存储空间、能耗等方面,由于模型本身的尺寸大、推理时需要的内存大、对算力的需求大。

因此对相关的硬件选择、模型压缩技术、算法优化技术和 SDK 开发都有着更高的要求,需要根据具体的应用场景和需求进行选择和优化。

LLM 参数量巨大,一般都在10亿(1B)以上,按照浮点数权重来计算的话,模型文件大小在 4GB以上,光是加载到内存就要占用 4GB 以上的空间,如果是在32位操作系统(严格来讲是地址位宽为32),系统的寻址空间就只有 4GB,整个内存空间全用上都装不下!

幸好现在已经是64位机的时代,大家手上用的智能手机不出意外的话基本上都是64位操作系统,理论上内存空间可以大到 64GB 任何大模型都可以装下,当然受限于硬件成本及硬盘容量的限制,64位寻址能够支持的最大内存只有几百TB。

目前主流智能手机的内存大小一般是 6GB ~ 12GB 左右,Windows系统的设备有 128GB、2TB、6TB 内存的机器,也就是说目前在我们最常用的手机和个人电脑(PC)上,已经具备加载和运行大模型的硬件条件。

对于移动端部署,硬件的选择需要考虑计算能力、功耗、存储空间、可靠性、兼容性、成本价格等多方面的因素。

模型部署区别于其他端上模型的最大之处在于大模型极高的参数量和随之而来的对计算、访存、存储的高需求。不同于训练阶段,推理时的内存占用通常由模型的权重kv缓存和一些其他中间结果共同构成,其中中间结果用完会尽快释放掉,占用的显存很小,可以忽略。

在大模型部署场景中,访存带宽通常为计算速度的主要限制,访存耗时甚至高达计算耗时的四百多倍。在端上运行时,batchsize通常为1,此时可以压缩模型参数存储精度的字节数,进而压缩访存时间。

模型量化技术是一种通过减少神经网络中参数的位数,从而减小模型的存储空间和计算量,提高模型的运行效率的技术,在移动端和嵌入式设备上的应用非常广泛。

常见的模型精度有FP32、FP16、INT8和INT4等,随着模型存储空间和计算量的减少,模型的精度也在下降。

Float32 (FP32) 是标准的 IEEE 32 位浮点表示。使用该数据类型,可以表示大范围的浮点数。在 FP32 中,为指数保留了 8 位,为尾数保留了 23 位,为符号保留了 1 位。

而在 Float16 (FP16) 数据类型中,指数保留 5 位,尾数保留 10 位。这使得 FP16 数字的数值范围远低于 FP32。在推理时,半精度权重通常能提供与 FP32 相似的精度,此时只需要一半的内存就能获得近似的推理结果。

同理,如果进行INT8量化,则模型大小会再次减半,如果进行INT4量化,则模型大小可以在理论上降至1/8。

在端上运行大语言模型通常采用Groupwise的INT4量化策略,Groupwise指的是将需要量化的数据分成n组,为每一组建立量化参数,当n越大,精度越高。

由于大模型运行的主要限制在访存上,反量化所额外需要的计算并不会超过访存的开销,因此整体而言此举可以大幅降低耗时。

相关进展

在终端设备上部署大模型,比如常见的Android、iOS手机、嵌入式设备、个人电脑等,我们需要解决两方面的问题:内存占用和计算速度。

内存占用决定了该设备是否能装载下模型,计算速度决定了用户体验。此外针对推理引擎的图优化、计算调度优化、资源管理优化等关键技术从多角度优化模型执行过程的计算速度。

在让大模型变小这条路上,人们做了很多尝试,先是 Meta 开源了 LLaMA,让学界和小公司可以训练自己的模型。

随后,斯坦福研究者启动了 Lamini,为每个开发者提供了从 GPT-3 到 ChatGPT 的快速调优方案。而 MLC LLM 的项目可谓一步登天,因为它能让你「在任何设备上编译运行大语言模型。

MLC LLM 为我们在各类硬件上原生部署任意大型语言模型提供了解决方案,可将大模型应用于移动端(例如 iPhone)、消费级电脑端(例如 Mac)和 Web 浏览器。

23年第二季度,陈天奇团队发布Web Stable Diffusion和WebLLM,只需一个浏览器,就能跑通大模型了。不过需要下载Chrome Canary,也就是谷歌浏览器的金丝雀版本,才可以正常运行。

  • Web LLM体验地址:mlc.ai/web-llm/
  • Web Stable Diffusion体验地址:mlc.ai/web-stable-…

启动浏览器之后,便打开官网的demo试玩处开始体验了,不过在第一次展开对话的时候,系统还会出现一个初始化的过程。

根据团队介绍,其核心关键技术是机器学习编译(Machine Learning Compilation,MLC)。整体方案是站在开源生态系统这个“巨人肩膀”上完成的,包括Hugging Face、来自LLaMA和Vicuna的模型变体,以及wasm和WebGPU等,并且主要流程是建立在Apache TVM Unity之上。

团队首先在TVM中bake了一个语言模型的IRModule,以此来减少了计算量和内存使用。TVM的IRModule中的每个函数都可以被进一步转换并生成可运行的代码,这些代码可以被普遍部署在任何最小TVM运行时支持的环境中(JavaScript就是其中之一)。

其次,TensorIR是生成优化程序的关键技术,通过结合专家知识和自动调度程序快速转换TensorIR程序,来提供高效的解决方案。

除此之外,团队还用到了如下一些技术:

  • 启发式算法:用于优化轻量级运算符以减轻工程压力。
  • int4量化技术:用来来压缩模型权重。
  • 构建静态内存规划优化:来跨多层重用内存。
  • 使用Emscripten和TypeScript :构建一个在TVM web运行时可以部署生成的模块。

但Web LLM团队也表示,这个项目还有一定的优化空间,例如AI框架如何摆脱对优化计算库的依赖,以及如何规划内存使用并更好地压缩权重等。

Web LLM背后的团队是MLC.AI社区,它成立于 2022 年 6 月,并由 Apache TVM 主要发明者、机器学习领域著名的青年学者陈天奇,带领团队上线了 MLC 线上课程,系统介绍了机器学习编译的关键元素以及核心概念。

总结

综合来看,目前端上进行大模型推理的基本技术已经具备,但内存需求普遍不小于4GB,仍对设备的性能和优化能力有着较高的要求,内存容量、访存速度和计算能力共同制约了大模型在端上的整体表现。

通过对现有技术的分析和实践,我们能够直观地感受到当前端上大模型的技术壁垒和现实进展,针对这些制约因素,我们正在不断探索和优化技术方案,以提高设备的性能和优化能力,进一步减小模型尺寸,降低内存容量和访存速度的要求。

端上大模型的可行性和前景已经得到了业内的普遍认可,目前大量工程已在PC端、手机端实现大模型的离线部署,更有部分App登陆应用商店,只需下载即可畅通无阻地对话。

我们相信,在不久的将来,端上大模型推理将会成为智能应用的重要组成部分,为用户带来更加便捷、智能的体验。

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

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

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

相关文章

手机k歌麦克风哪种好,口碑最好的k歌麦克风是哪款,麦克风推荐

​当我们谈论到演讲、表演或者录制视频时,一个高质量的无线麦克风能够使得整个体验提升至一个全新的水平。它不仅能够保证声音的清晰度和真实度,还能够让使用者在演讲或者表演时更加自信和舒适。基于对市场的深入研究和用户体验的考量,我挑选…

Langchain-Chatchat+Xinference集成部署

Langchain-ChatchatXinference集成部署 安装环境: 系统:Anolis OS 8.9 python版本:Python 3.9.19 Langchain-Chatchat版本:0.3.1.3 Xinference版本:v0.13.3 模型选择(下载时需要科学上网)&#…

一些常见的中间件漏洞

Tomcat 之CVE-2017-12615 靶场搭建使用vulhub-master/tomcat/CVE-2017-12615 第一步、访问网站 第二步、首页抓包改为put方式提交 网上找一个jsp的一句话木马 使用webshell工具链接即可 Tomcat 之tomcat8 vulhub-master/tomcat/tomcat8 继续访问页面 这次我们点击登录&…

ES6中的Promise、async、await,超详细讲解!

Promise是es6引入的异步编程新解决方案,Promise实例和原型上有reject、resolve、all、then、catch、finally等多个方法,语法上promise就是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果,本篇文章主要介绍了ES6中的P…

spring原理(第十天)

jdk 和 cglib 在 Spring 中的统一 Spring 中对切点、通知、切面的抽象如下 切点:接口 Pointcut,典型实现 AspectJExpressionPointcut 通知:典型接口为 MethodInterceptor 代表环绕通知 切面:Advisor,包含一个 Advic…

政务服务技能竞赛规则流程方案

此次政务服务技能竞赛以“强服务、优素质、促提升、共发展”为目标,通过以赛代练、以赛促建、比学赶超、全面提升,激发各级政务服务工作人员学政策、钻业务、练技能的热情和积极性,全面推动行政效能提升与营商环境建设,铸造新时代…

pytorch和deep learning技巧和bug解决方法短篇收集

有一些几句话就可以说明白的观点或者解决的的问题,小虎单独收集到这里。 torch.hub.load how does it work 下载预训练模型再载入,用程序下载链接可能失效。 model torch.hub.load(ultralytics/yolov5, yolov5s)model torch.hub.load(ultralytics/y…

IROS2024 | DarkGS:学习神经照明和3D高斯重新照明,用于黑暗中机器人探索

DarkGS:学习神经照明和3D高斯重新照明,用于黑暗中机器人探索 论文标题:DarkGS: Learning Neural Illumination and 3D Gaussians Relighting for Robotic Exploration in the Dark 论文地址:https://arxiv.org/abs/2403.10814 研…

数据开发/数仓工程师上手指南(七)CDM-DWS层搭建规范及流程

前言 进入到了CMD公共数据层的结尾最后一层-DWS层了,该层基本就是直接与业务强关联,也就是说产品提出的需求,或是报表、用户画像统计好还是数据大屏都是在这一层给处理好数据,再放入ADS层,然后我们只需要在BI里面配备…

【数据结构】——堆的实现(赋源码)

堆的概念与结构 堆(Heap)是计算机科学中一类特殊的数据结构,是最高效的优先级队列。堆通常是一个可以被看作一棵完全二叉树的数组对象。 堆的性质: 堆中某个结点的值总是不大于或不小于其父结点的值; 堆总是一棵完全二叉树。 堆的物理结构本质上是顺序…

PDF怎么转Word?分享二个简单的方法

很多小伙伴在工作学习的时候,经常会遇到别人发来的PDF文件。PDF 文件用于查看资料非常方便,因为它们的布局稳定,在大多数设备上都可以显示相同的布局。 如果我们需要将其转换为Word,如何转换呢?许多人不知道如何转换。…

怎么录制视频?简单步骤教你如何录制高质量视频

视频是我们生活、工作和学校中不可或缺的一部分,但对于初学者来说,面对琳琅满目的录屏工具,往往感到无从下手,今天我们就给大家分享几种简单又高效的电脑录屏方法,让你轻松掌握高质量视频录制的技巧。 录制技巧1&#…

工厂人员定位系统原理

工厂人员定位系统是一种通过现代无线通讯技术和定位技术实现对工厂内人员位置进行实时监测的系统。其具体原理是通过安装在员工身上的定位标签产生无线电信号,并通过无线通讯网络传输给基站,再由基站将数据传输到服务器进行处理,最终在监控中…

《藏文驾考》App:支持藏汉双语切换的驾考题库,方便不熟汉语的藏族学员考驾照,中文藏文语音读题!

藏文驾考,是一款支持藏汉双语切换的驾照考试在线刷题学习软件。服务于涉藏地区的藏文驾驶理论考试,同步西藏、四川、青海、甘南等涉藏地区的驾考新规题库。提供科目一、科目四藏文交规理论学习,科目二、科目三视频技巧讲解。支持汉语、卫藏、…

Power功效分析之广义模型原理及案例实操

Power功效分析常用于实验研究时样本量的计算(或功效值计算),如果是涉及广义模型时的回归系数差异计算时,SPSSAU共提供二元logit回归和Poisson回归情况时的Power功效分析,具体如下表格所述: 比如二元Logit回…

监听器Listener + 过滤器Filter

监听器Listener 介绍 Listener是JavaEE的规范,就是接口 监听器的作用是,监听某种变化(一般就是对象创建/销毁, 属性变化), 触发对应方法完成相应的任务 ServletContextListener监听器(最常用) 作用: 监听S…

javase综合案例4 -- 考试系统

文章目录 一&#xff0c;项目要求二&#xff0c;创建实体类ExamItem三&#xff0c;创建考试服务类ExamService3.1 全局变量 考题列表itemList(List< ExamItem >类型)&#xff0c;答案数组answerArr (String[]类型)&#xff0c;得分score3.2 初始化方法init()3.3 打印菜单…

从0开始的算法(数据结构和算法)基础(六)

二叉树 什么是二叉树 二叉树是一种非线性数据结构(层次关系结构)&#xff0c;代表“祖先”与“后代”之间的派生关系&#xff0c;体现了“一分为二”的分治逻辑。与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;每个节点包含值、左子节点引用和右子节点引用。 首先…

人生苦短,我用 Python,AI 模型助力高效数据提取

一、前言 在网络爬虫和数据挖掘领域&#xff0c;提取网页内容是一项常见且重要的任务。无论是从新闻网站、电商平台还是社交媒体&#xff0c;获取有用的信息都是开展后续分析和应用的前提。然而&#xff0c;传统的网页内容提取需要编写大量的代码来处理和解析 HTML 文档&#…

comfyui flux

下载文本编码器&#xff0c;模型放到ComfyUI/models/clip/ 下&#xff0c;t5模型可以任选其一&#xff1b;https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main 下载vae模型&#xff0c;https://huggingface.co/black-forest-labs/FLUX.1-schnell/tree/main&a…