写点什么

在边缘计算中使用小型语言模型(SLM)实现高效资源管理

作者: Suruchi Shah

  • 2024-12-04
    北京
  • 本文字数:5470 字

    阅读完需:约 18 分钟

在边缘计算中使用小型语言模型(SLM)实现高效资源管理

在我们这个高度互联的世界里,从冰箱到健身追踪器,一切设备都在争夺带宽份额,而边缘计算是让这些设备顺利运行的无名英雄。可以把它想象成街区里最酷的孩子,在数据生成的地方处理数据,而不是把所有东西都拖回云端。这意味着更快的决策、更少的带宽占用和一点不错的隐私提升——非常适合从智能工厂到智能恒温器的一切场景。


但问题在于:边缘设备通常在处理能力、内存和能耗方面受到严 格约束。这就引出了 小型语言模型(SLM)这个概念,可以用很高的效率解决问题。这些灵活的小模型可以将人工智能推理能力带到边缘场景,而不会让这些资源受限的设备不堪重负。


在本文中,我们将深入探讨 SLM 如何发挥自身魔力,实时学习和适应各种模式、减少计算负担以及让边缘设备更加智能,同时不需要投入太多资源。

资源受限边缘环境中的挑战


边缘计算设备(如物联网传感器和智能小工具)的硬件功能通常是受限的:


  1. 有限的处理能力:许多设备由低端 CPU 或微控制器驱动,难以执行偏重计算的任务。

  2. 内存受限:使用最少的 RAM 来存储“大型”AI 模型?不可能。

  3. 能源效率:电池供电的物联网设备需要高效的能源管理,以确保设备能长时间运行而无需频繁充电或更换电池。

  4. 网络带宽限制:许多设备依赖间歇性或低带宽网络连接,这使得设备与云服务器的持续通信效率低下或不切实际。


大多数 AI 模型对于这些设备来说太大且过于耗电。这就是 SLM 的意义所在。

小型语言模型(SLM)如何优化资源效率

轻量级架构


SLM 可以看作是 GPT-3 或 GPT-4 等大型模型的精简版。由于参数更少(例如,DistilBERT 的负担比 BERT 少 40%),所以它们足够小,可以轻松塞进内存受限的设备中,同时保留了大部分性能。

压缩魔法


量化(想想将权重降低到低精度整数来减少计算负荷)和修剪(削减无用权重)等技术使它们更快、更轻。结果,即使在只有翻盖手机计算能力的设备上,推理时间也更快,功耗更低。

量化


在应用量化技术的情况下,模型内存占用量会大大减少。例如,Mistral 7B 的量化版本在 NVIDIA RTX 6000 等强大硬件上以每秒 240 个 token 的速度生成 token 时,可能仅消耗 1.5GB 内存(企业技术新闻与分析)。这使得它适用于需要低延迟处理的边缘设备和实时应用程序。


注意:对 LLaMA3 和 Mistral 的研究表明,量化后的模型在 NLP 和视觉任务中仍有着良好的表现,但必须仔细选择用于量化的精度以避免性能下降。例如,当 LLaMA3 量化为 2-4 位时,在需要长上下文理解或详细语言建模的任务中显示出了明显的性能差距[Papers with Code],但它在更直接的任务(如问答和基本对话系统[Hugging Face])中表现出色。整体来说,业内并没有关于如何进行完美量化的定义明确的决策树,它需要使用特定的用例数据进行实验。

修剪


修剪的原理是识别和删除模型中不必要或多余的参数,本质上是修剪对最终输出没有显著贡献的神经元或连接。这种方法可以减小模型大小而不会造成重大性能损失。事实上,研究表明,修剪可以将模型大小减少高达 90%(Neural Magic - Software - Delivered AI),同时在 BERT 等模型中保留 95% 以上的原始准确度(Deepgram)。


修剪方法包括非结构化修剪(删除单个权重)和结构化修剪(消除整个神经元或层)。结构化修剪尤其有助于提高模型效率和计算速度,正如谷歌的 BERT-Large 所见,其中 90% 的网络可以被修剪,同时损失最小的精度(Neural Magic - Software - Delivered AI)。


修剪后的模型与量化模型一样,可以提供更快的速度和更高的能效。例如,PruneBERT 在保持原有精率的 93% 左右的同时,将权重减少了 97%,显著加快了推理时间(Neural Magic - Software - Delivered AI)。与量化类似,修剪方法也需要仔细调整,以避免删除模型的基本组件,尤其是在自然语言处理等复杂任务中。

模式适配器


小型语言模型之所以高效,是因为它们可以识别各种模式并避免不必要的重新计算,比如说智能恒温器可以学习你的日常习惯来调节温度,而无需不断与云端通信。这种方法称为自适应推理,它可减少计算量,为更关键的任务节省能源并延长电池寿命。

模式适配器的实践证据


  1. 谷歌 Edge TPU:谷歌的 Edge TPU 使 AI 模型能够在本地执行基本推理任务,无需频繁进行云通信。通过应用修剪和稀疏性技术,谷歌已证明在 Edge TPU 上运行的模型可以显著降低能耗和处理时间,同时保持高水平的准确性(Deepgram)。例如,在图像识别任务中,TPU 专注于关键特征并跳过冗余处理,从而实现更快、更节能的性能。

  2. 苹果的神经引擎:苹果在 iPhone 等设备上使用 自适应学习模型 来尽可能减少计算需求并优化面部识别等任务。这种方法既降低了功耗,又降低了云通信负担。

  3. 动态神经网络:对 动态网络 的研究表明,只要基于输入复杂性来选择性激活模型层,就可以将能耗降低高达 50%。(来源:《动态神经网络:一项调查》(2021 年))

  4. TinyML 基准测试:MLPerf Tiny 基准测试 重点介绍了功耗感知模型如何使用模式重用和自适应处理等技术来显著减少微控制器上 AI 模型的能耗(ar5iv)。模型可以利用之前计算的结果,避免重新计算冗余数据,并延长智能安全摄像头或可穿戴健康监测器等设备的电池寿命。

  5. 物联网应用:Nest 恒温器是模式适应的一个典型例子,它可以学习用户行为并在本地调整温度设置。它通过尽可能减少云交互来优化能源消费,而不会牺牲响应能力。SLM 还可以根据用户交互的频率自适应地调整其学习率,从而进一步优化其功耗。这种本地学习能力使其成为智能家居和工业物联网设备的理想选择(这些设备需要持续适应不断变化的环境),而节省了持续访问云资源所需的能源成本。

模式适配器的实践证据:谷歌 Edge TPU 的实际应用


谷歌 Edge TPU 旨在直接在边缘设备上执行高效 AI 推理任务,它是探索修剪和稀疏技术如何优化资源管理的绝佳研究案例。我们以配备 Edge TPU 的物联网设备上的图像识别任务为例。

技术实现:优化谷歌 Edge TPU 上的图像识别任务


在此示例中,我将部署一个修剪和量化过的模型来识别智能工厂环境中的对象。任务是使用摄像头视频来识别装配线上的缺陷部件,确保实时检测能力而不占用过多的设备计算资源。


准备条件:确保安装了 Python 3.7 或更高版本、TensorFlow 2.x、TensorFlow 模型优化 工具包 和 Edge TPU API。说明可在各自的文档页面上找到。

步骤 1:模型修剪和量化


我们首先使用 TensorFlow Lite 修剪和量化预训练的 MobileNetV2 模型。MobileNetV2 因其轻量级架构而非常适合边缘设备。


import tensorflow as tffrom tensorflow_model_optimization.sparsity.keras import prune_low_magnitudefrom tensorflow_model_optimization.sparsity.keras import strip_pruning

# Load the pre-trained MobileNetV2 modelmodel = tf.keras.applications.MobileNetV2(weights="imagenet", include_top=True)

# Define the pruning schedulepruning_params = { 'pruning_schedule': tf.keras.experimental.PruningSchedule.ConstantSparsity(0.50, begin_step=0)}

# Apply pruning to the modelpruned_model = prune_low_magnitude(model, **pruning_params)

# Compile the pruned modelpruned_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# Fine-tune the pruned model with data to retain accuracypruned_model.fit(train_data, epochs=10)

# Strip the pruning wrappers for deploymentfinal_model = strip_pruning(pruned_model)
复制代码


修剪完成后,模型会显著减小,使其更容易适应边缘设备的内存限制。现在,我们继续进行量化以进一步优化。


# Convert the model to TensorFlow Lite format and apply quantizationconverter = tf.lite.TFLiteConverter.from_keras_model(final_model)converter.optimizations = [tf.lite.Optimize.DEFAULT]quantized_model = converter.convert()

# Save the quantized modelwith open("mobilenet_v2_pruned_quantized.tflite", "wb") as f: f.write(quantized_model)
复制代码

第 2 步:将量化模型部署到 Edge TPU


量化后,我们可以使用 Edge TPU 运行时将此模型部署到谷歌 Edge TPU。这个推理引擎可以高效运行模型,并且延迟和功耗更低。


首先,使用 Edge TPU 编译器编译模型:


edgetpu_compiler mobilenet_v2_pruned_quantized.tflite
复制代码


现在,我们可以使用 Python 和 Edge TPU API 运行推理:


import numpy as npfrom tflite_runtime.interpreter import Interpreterfrom pycoral.utils.edgetpu import make_interpreter

# Load the compiled modelinterpreter = make_interpreter('mobilenet_v2_pruned_quantized_edgetpu.tflite')interpreter.allocate_tensors()

# Load an image for testingdef preprocess_image(image_path): img = Image.open(image_path).resize((224, 224)) return np.array(img, dtype=np.float32)

image = preprocess_image('defective_part.jpg')

# Perform inferenceinput_details = interpreter.get_input_details()output_details = interpreter.get_output_details()

interpreter.set_tensor(input_details[0]['index'], [image])interpreter.invoke()

# Get the outputoutput = interpreter.get_tensor(output_details[0]['index'])print("Inference result:", output)
复制代码


在这个案例中,经过量化和修剪的 MobileNetV2 运行在 Edge TPU 上,高效地分类图像,同时使用最少的功率和内存资源。这使我们可以在智能工厂的多个设备上部署类似的 AI 模型,而无需持续的云连接或过多的能源消耗。

节能和带宽优化


通过直接在边缘部署此类优化模型,智能工厂的系统就能减少对云服务的依赖,从而减少延迟和带宽使用量。设备仅向云端发送关键警报(例如检测到缺陷时的通知),从而节省带宽并降低运营成本。

分类结果(缺陷部件检测的示例输出):


Inference result:[    {"class": "Defective Part", "confidence": 0.92},    {"class": "Non-Defective Part", "confidence": 0.05},    {"class": "Unknown", "confidence": 0.03}]
复制代码

关键指标:


  • 修剪率:50% 稀疏度(移除 50% 的权重)

  • 模型尺寸减小:修剪和量化后减小约 60%

  • 延迟:Edge TPU 上的推理时间从 150 毫秒缩短至 40 毫秒

  • 能耗:与未优化模型相比降低 30%

用于资源管理的 SLM 的未来方向

物联网传感器网络


部署在物联网传感器网络中的 SLM 可以通过预测激活模式和更智能地管理数据传输来彻底改变资源使用策略。


能源效率:以智能农场中的土壤湿度传感器为例。这些传感器无需不断监测和发送数据,而是可以学习天气模式和土壤条件。SLM 使它们仅在必要时采取行动(例如在预测的干旱期之前),从而节省能源并减少数据传输频率。这可以提高用水效率并延长传感器的电池寿命。

智能家居设备


SLM 可以通过学习用户习惯和优化操作,让智能家居设备真正不负“智能”的美名,而不会消耗不必要的电量。


示例:带有嵌入式 SLM 的智能扬声器可以分析用户的语音模式,并相应地调整其唤醒词检测系统。扬声器不必总是全功率聆听,而是可以根据听到命令的可能性来调整其资源使用量,从而在活动较少时节省能源。同样,由 SLM 供电的恒温器可以预测你何时在家,预先调节温度,同时减少对持续云端检测的依赖。

工业自动化中的边缘网关


在工业环境中,边缘网关是处理和聚合来自各种传感器和机器的数据的关键一环。SLM 可以判断哪些数据需要立即关注,哪些数据可以稍后处理或卸载到云端,从而提高其效率。


带宽优化:想象一家制造工厂有一个由 SLM 供电的边缘网关。网关可以通过分析振动或温度数据来预测关键事件,例如设备故障。只有重要的见解(例如故障的早期迹象)才会发送到云端进行进一步分析,从而减少带宽使用并避免不必要的数据过载。这使工厂能够更高效地运营,在边缘做出更快的决策并降低运营成本。

智能医疗设备


SLM 可以改进可穿戴健康监测设备,使其在提供准确的数据分析的同时更加节省资源。例如,嵌入 SLM 的智能心率监测器可以了解用户的正常心律,并且仅在检测到心律失常等异常时传输数据,从而减少不必要的功耗和数据传输。


能源效率:SLM 驱动的设备无需不断将数据传输到云端,而是可以预测潜在的健康事件并仅在必要时提醒用户或医疗专业人员。这将延长电池寿命并尽可能减少带宽使用,使该设备更适合长期实时健康监测。


将 SLM 运用在这些资源受限的环境中后,从农业到制造业等各个行业都可以获得更智能、更高效的设备,从而显著节省成本和能源。

总结


小型语言模型(SLM)是边缘计算资源管理的变革者。通过使用轻量级架构和自适应推理,SLM 可为各种行业带来更智能、更高效的设备,从物联网传感器网络到智能家居和工业自动化都能受益。它们优化了功率、带宽和处理能力,而不会让资源受限的设备不堪重负,为边缘实时、人工智能驱动的智能提供了可扩展的解决方案。随着边缘计算的发展,SLM 将使设备更智能、更节能,推动各个领域的创新。

作者介绍


Suruchi Shah 是一名专攻机器学习基础设施和分布式系统的高级软件工程师。她目前在 LinkedIn 领导 LLM Serving 团队,负责监督大规模推理负载的基础设施。Suruchi 在构建和扩展复杂系统方面拥有丰富经验,之前曾推动 LinkedIn 身份即服务平台的开发并领导多个重大迁移任务,例如将 LinkedIn 的流量转移到新的分布式图形数据库 Liquid,从而节省数百万美元的硬件成本。她的技术专长涵盖多个领域,包括搜索基础设施和图形数据库。她之前曾在 BloomReach 任职,并为 SolrCloud 的创新解决方案做出了贡献。


查看原文链接:

https://www.infoq.com/articles/efficient-resource-management-small-language-models/

2024-12-04 08:046115

评论

发布
暂无评论
发现更多内容

一文了解 Go 标准库 strings 常用函数和方法

陈明勇

Go golang 字符串 11月月更 strings

投入上百人、经历多次双 11,Flink 已经足够强大了吗?

Apache Flink

大数据 flink 实时计算

AI简报-重参数化RepVGG

AIWeker

深度学习 AI简报 11月月更

凝心聚力 开源共建 | 统信软件参与成立OpenKunlun开源固件社区

统信软件

开源 开源社区 开源技术

深度学习-浅谈keras的扩展性

AIWeker

深度学习 keras 11月月更

制造业要用龙头带动整条产业链发展,阿里云智能制造加速器首次集结

B Impact

Flink Forward Asia 2022 主论坛概览

Apache Flink

大数据 flink 实时计算

“后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?

Apache Flink

大数据 flink 实时计算

2022-11-29:查找重复的电子邮箱。以下数据中a@b.com是重复的,请写出sql语句。 DROP TABLE IF EXISTS person; CREATE TABLE person (

福大大架构师每日一题

数据库 福大大

Python 操作mongodb库

度假的小鱼

mongodb 11月月更 Python 操作mongodb库

支持向量机-SVC的模型评估指标

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

「Go易错集锦」正确使用defer避免代码重复

Go学堂

golang 程序员 个人成长 defer 11月月更

基于 Apache Flink Table Store 的全增量一体实时入湖

Apache Flink

大数据 flink 实时计算

【React技术】JSX在企业级项目的运用and一个元素渲染demo

恒山其若陋兮

前端 11月月更

华为云桌面Workspace,让云上工作更高效!

路过的憨憨

【web 开发基础】PHP 中数组的定义 (42)

迷彩

数据结构 数组 11月月更 数组的定义

【web 开发基础】PHP中的数组 (41)

迷彩

php 数据结构 11月月更 关联数组 索引数组

Python 操作Excel(xlrd和XlsxWrite)

度假的小鱼

11月月更 Python xlrd读取Excel Python xlrd

Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持

Apache Flink

大数据 flink 实时计算

python小知识-内置方法和属性应用:反射和单例

AIWeker

Python python小知识 11月月更

【web 开发基础】PHP中多维数组的声明 (44)

迷彩

数据结构 一维数组 二维数组 11月月更 多维数组

细说值传递、引用传递和地址传递

闫同学

编程语言 计算机基础 11月月更

python版本管理工具DVC

AIWeker

人工智能 版本管理 11月月更 dvc

《2022开源大数据热力报告》发布,Flink 摘得「流处理」领域热力值 TOP1

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中数组的遍历(45)

迷彩

数据结构 数组 foreach 11月月更 数组遍历

支持向量机-ROC曲线中的概率和阈值

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

读《程序是怎样跑起来的》体会

听风go

读书笔记 后端 计算机 计算机原理 读书总结

【React技术】开发过程中遇到State和生命周期方法在类里面的运用

恒山其若陋兮

前端 11月月更

【web 开发基础】PHP中使用array()语言结构新建数组(43)

迷彩

数据结构 array 11月月更 array() 新建数组

华为云大数据平台,助力企业数字化转型成效明显

路过的憨憨

Python 操作Mysql

度假的小鱼

pymysql 11月月更 Python操作Mysql

在边缘计算中使用小型语言模型(SLM)实现高效资源管理_AI&大模型_InfoQ精选文章