第1章:边缘AI基础知识 边缘AI代表了人工智能部署的一种范式转变,将AI能力直接带到边缘设备,而不是仅仅依赖于基于云的处理。了解边缘AI如何在资源受限的设备上实现本地AI处理,同时保持合理的性能并解决隐私、延迟和离线能力等挑战是非常重要的。 简介 在本课程中,我们将探讨边缘AI及其基本概念。我们将涵盖传统AI计算范式、边缘计算的挑战、支持边缘AI的关键技术,以及在各行业中的实际应用。 学习目标 完成本课程后,您将能够: 理解传统基于云的AI与边缘AI方法之间的区别。 识别支持边缘设备上AI处理的关键技术。 认识边缘AI实施的优势和局限性。 将边缘AI知识应用于现实场景和使用案例。 理解传统AI计算范式 传统上,生成式AI应用依赖于高性能计算基础设施来有效运行大型语言模型(LLMs)。
边缘AI代表了人工智能部署的一种范式转变,将AI能力直接带到边缘设备,而不是仅仅依赖于基于云的处理。了解边缘AI如何在资源受限的设备上实现本地AI处理,同时保持合理的性能并解决隐私、延迟和离线能力等挑战是非常重要的。
在本课程中,我们将探讨边缘AI及其基本概念。我们将涵盖传统AI计算范式、边缘计算的挑战、支持边缘AI的关键技术,以及在各行业中的实际应用。
完成本课程后,您将能够:
传统上,生成式AI应用依赖于高性能计算基础设施来有效运行大型语言模型(LLMs)。组织通常将这些模型部署在云环境中的GPU集群上,通过API接口访问其功能。
这种集中式模型适用于许多应用,但在边缘计算场景中存在固有的局限性。传统方法需要将用户查询发送到远程服务器,使用强大的硬件进行处理,并通过互联网返回结果。虽然这种方法可以访问最先进的模型,但它对互联网连接产生依赖,带来了延迟问题,并在传输敏感数据到外部服务器时引发隐私问题。
在使用传统AI计算范式时,我们需要理解一些核心概念:
边缘设备如笔记本电脑、手机以及树莓派和NVIDIA Orin Nano等物联网(IoT)设备存在独特的计算限制。这些设备通常与数据中心基础设施相比,处理能力、内存和能源资源有限。
由于这些硬件限制,在此类设备上运行传统的LLMs一直是一个挑战。然而,在各种场景中,边缘AI处理的需求变得越来越重要。考虑以下情况:互联网连接不可靠或不可用,例如偏远的工业场所、运输中的车辆或网络覆盖较差的地区。此外,需要高安全标准的应用,如医疗设备、金融系统或政府应用,可能需要在本地处理敏感数据以维护隐私和合规性。
与传统基于云的AI解决方案相比,边缘计算环境面临一些基本限制:
边缘AI指的是直接在边缘设备上部署和执行人工智能算法——这些设备是网络“边缘”上的物理硬件,靠近数据生成和收集的地方。这些设备包括智能手机、物联网传感器、智能摄像头、自动驾驶汽车、可穿戴设备和工业设备。与依赖云服务器进行处理的传统AI系统不同,边缘AI将智能直接带到数据源。
从本质上讲,边缘AI是关于去中心化AI处理,将其从集中式数据中心转移到构成我们数字生态系统的庞大设备网络中。这代表了AI系统设计和部署方式的根本性架构转变。
边缘AI的关键概念支柱包括:
┌─────────────────────────────────────────────────────────────────────┐ │ TRADITIONAL AI ARCHITECTURE │ └─────────────────────────────────────────────────────────────────────┘ │ ┌──────────────┐ Data Transfer ┌───────────────┐ API Response ┌───────────┐ │ Edge Devices ├─────────────────>│ Cloud Servers │────────────────> │ End Users │ └──────────────┘ └───────────────┘ └───────────┘ Data Model Inference Results Collection High Latency High Bandwidth Privacy Concerns ┌─────────────────────────────────────────────────────────────────────┐ │ EDGE AI ARCHITECTURE │ └─────────────────────────────────────────────────────────────────────┘ │ ┌────────────────────────────────────────────────────┐ Direct Response ┌───────────┐ │ Edge Devices with Embedded AI │───────────────────>│ End Users │ │ ┌─────────┐ ┌───────────────┐ ┌──────────────┐ │ └───────────┘ │ │ Sensors │─>│ SLM Inference │─>│ Local Action │ │ │ └─────────┘ └───────────────┘ └──────────────┘ │ └────────────────────────────────────────────────────┘ Data Low Latency Immediate Collection Processing Response No Data Transfer Enhanced Privacy
边缘AI代表了人工智能部署的一种范式转变,将AI能力直接带到边缘设备,而不是仅仅依赖于基于云的处理。这种方法使AI模型能够在计算资源有限的设备上本地运行,提供实时推理能力,而无需持续的互联网连接。
边缘AI涵盖了各种技术和方法,旨在使AI模型更高效并适合在资源受限设备上部署。目标是在显著减少AI模型的计算和内存需求的同时保持合理的性能。
让我们来看看支持边缘AI在不同设备类型和使用案例中实现的基本方法。
边缘AI基于几个与传统基于云的AI不同的基础原则:
模型量化是边缘AI中最重要的技术之一。此过程涉及将模型参数的精度从通常的32位浮点数减少到8位整数甚至更低的精度格式。虽然精度的降低可能看起来令人担忧,但研究表明,许多AI模型即使在精度显著降低的情况下也能保持其性能。
量化通过将浮点值范围映射到较小的离散值集来实现。例如,与使用32位表示每个参数相比,量化可能仅使用8位,从而减少4倍的内存需求,并通常导致更快的推理时间。
# Example: PyTorch model quantization import torch # Load a pre-trained model model = torch.load('large_model.pth') # Quantize the model to INT8 quantized_model = torch.quantization.quantize_dynamic( model, # model to quantize {torch.nn.Linear, torch.nn.Conv2d}, # layers to quantize dtype=torch.qint8 # quantization data type ) # Save the quantized model torch.save(quantized_model, 'quantized_model.pth') # Memory usage comparison original_size = model.size() quantized_size = quantized_model.size() print(f"Memory reduction: {original_size / quantized_size:.2f}x")
不同的量化技术包括:
对于边缘AI部署,选择适当的量化策略取决于目标设备的具体模型架构、性能要求和硬件能力。
除了量化之外,各种压缩技术有助于减少模型大小和计算需求。这些技术包括:
剪枝:此技术从神经网络中移除不必要的连接或神经元。通过识别和消除对模型性能贡献较小的参数,剪枝可以显著减少模型大小,同时保持准确性。
# Example: Neural network pruning in TensorFlow import tensorflow as tf import tensorflow_model_optimization as tfmot # Define the model model = tf.keras.Sequential([ tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) # Apply pruning during training pruning_schedule = tfmot.sparsity.keras.PolynomialDecay( initial_sparsity=0.0, final_sparsity=0.5, # 50% of connections will be pruned begin_step=0, end_step=10000 ) pruned_model = tfmot.sparsity.keras.prune_low_magnitude( model, pruning_schedule=pruning_schedule ) # Compile the pruned model pruned_model.compile( optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'] ) # Train the model while pruning pruned_model.fit(x_train, y_train, epochs=10) # Convert to a smaller model for deployment final_model = tfmot.sparsity.keras.strip_pruning(pruned_model)
知识蒸馏:此方法涉及训练一个较小的“学生”模型以模仿较大“教师”模型的行为。学生模型学习近似教师的输出,通常以显著较少的参数实现类似的性能。
模型架构优化:研究人员开发了专门为边缘部署设计的架构,例如MobileNets、EfficientNets和其他轻量级架构,这些架构在性能与计算效率之间取得了平衡。
边缘AI的一个新兴趋势是开发小型语言模型(SLMs)。这些模型从头开始设计,既紧凑又高效,同时仍然提供有意义的自然语言能力。SLMs通过精心设计的架构、有效的训练技术以及针对特定领域或任务的专注训练实现这一目标。
与传统方法需要压缩大型模型不同,SLMs通常使用较小的数据集和专门为边缘部署设计的优化架构进行训练。这种方法不仅可以生成更小的模型,还可以为特定的使用场景提供更高效的解决方案。
现代边缘设备越来越多地包括专门设计用于加速AI工作负载的硬件:
NPUs是专门为神经网络计算设计的处理器。这些芯片可以比传统CPU更高效地执行AI推理任务,通常具有更低的功耗。许多现代智能手机、笔记本电脑和物联网设备现在都配备了NPUs,以支持设备上的AI处理。
// Example: Using Windows ML to target NPU acceleration in C# using Microsoft.ML.OnnxRuntime; // Create session options with NPU provider var sessionOptions = new SessionOptions(); sessionOptions.AppendExecutionProvider_DmlExecutionProvider(); // DirectML for NPU // Load the ONNX model using var session = new InferenceSession("model.onnx", sessionOptions); // Create input tensor var inputTensor = new DenseTensor<float>(new[] { 1, 3, 224, 224 }); // Example input shape var inputs = new List<NamedOnnxValue> { NamedOnnxValue.CreateFromTensor("input", inputTensor) }; // Run inference with NPU acceleration using var results = session.Run(inputs); var output = results.First().AsTensor<float>(); // Process output Console.WriteLine($"Inference result: {output[0]}");
配备NPUs的设备包括:
虽然边缘设备可能没有数据中心中的强大GPU,但许多设备仍然包括集成或独立的GPU,可以加速AI工作负载。现代移动GPU和集成图形处理器可以为AI推理任务提供显著的性能提升。
# Example: Using TensorRT for GPU acceleration on edge devices import tensorrt as trt import numpy as np # Create TensorRT logger and builder TRT_LOGGER = trt.Logger(trt.Logger.WARNING) builder = trt.Builder(TRT_LOGGER) network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) parser = trt.OnnxParser(network, TRT_LOGGER) # Parse ONNX model with open('model.onnx', 'rb') as model: parser.parse(model.read()) # Configure builder config = builder.create_builder_config() config.max_workspace_size = 1 << 28 # 256 MiB config.set_flag(trt.BuilderFlag.FP16) # Use FP16 precision for edge GPU # Build and serialize engine engine = builder.build_engine(network, config) with open('model.trt', 'wb') as f: f.write(engine.serialize())
即使是仅配备CPU的设备也可以通过优化实现边缘AI。现代CPU包括专门为AI工作负载设计的指令,并且已经开发了软件框架以最大化CPU在AI推理中的性能。
# Example: Using XNNPACK with TFLite for optimized CPU inference # Compilation command with XNNPACK acceleration enabled bazel build -c opt --copt=-O3 --copt=-march=native \ tensorflow/lite/delegates/xnnpack:libxnnpack_delegate.so # Convert TensorFlow model to TFLite with optimization tflite_convert \ --keras_model_file=model.h5 \ --output_file=model.tflite \ --inference_type=FLOAT \ --experimental_new_converter \ --experimental_new_quantizer
对于从事边缘AI的软件工程师来说,了解如何利用这些硬件加速选项对于优化目标设备上的推理性能和能源效率至关重要。
边缘AI的一个显著优势是增强的隐私和安全性。通过在设备本地处理数据,敏感信息不会离开用户的控制。这对于处理个人数据、医疗信息或机密商业数据的应用尤为重要。
边缘AI消除了将数据发送到远程服务器进行处理的需求,显著降低了延迟。这对于需要实时响应的应用至关重要,例如自动驾驶汽车、工业自动化或交互式应用。
边缘AI即使在没有互联网连接的情况下也能实现AI功能。这对于偏远地区、旅行期间或网络可靠性受到影响的情况下的应用非常有价值。
通过减少对基于云的AI服务的依赖,边缘AI可以帮助降低运营成本,特别是对于使用量大的应用。组织可以避免持续的API成本并减少带宽需求。
边缘AI将计算负载分布到边缘设备上,而不是集中在数据中心。这有助于降低基础设施成本并提高整体系统的可扩展性。
边缘AI为许多智能设备功能提供支持,从可以本地处理命令的语音助手到无需将视频发送到云端即可识别物体和人的智能摄像头。物联网设备利用边缘AI进行预测性维护、环境监测和自动化决策。
智能手机和平板电脑使用边缘AI实现各种功能,包括照片增强、实时翻译、增强现实和个性化推荐。这些应用受益于本地处理的低延迟和隐私优势。
制造和工业环境使用边缘AI进行质量控制、预测性维护和流程优化。这些应用通常需要实时处理,并可能在连接有限的环境中运行。
医疗设备和医疗应用使用边缘AI进行患者监测、诊断辅助和治疗建议。本地处理的隐私和安全优势在医疗应用中尤为重要。
边缘AI通常涉及模型大小、计算效率和性能之间的权衡。虽然量化和剪枝等技术可以显著减少资源需求,但它们也可能影响模型的准确性或能力。
开发边缘AI应用需要专业知识和工具。开发人员必须了解优化技术、硬件能力和部署限制,这可能会增加开发的复杂性。
尽管边缘硬件取得了进步,但与数据中心基础设施相比,这些设备仍然存在显著的限制。并非所有AI应用都能有效地部署在边缘设备上,有些可能需要采用混合方法。
更新部署在边缘设备上的AI模型可能具有挑战性,特别是对于连接或存储容量有限的设备。组织必须制定模型版本管理、更新和维护的策略。
边缘AI领域正在快速发展,硬件、软件和技术方面的持续进步推动了这一进程。未来趋势包括更多专门的边缘AI芯片、改进的优化技术以及更好的边缘AI开发和部署工具。
随着5G网络的广泛普及,我们可能会看到结合边缘处理与云能力的混合方法,从而在保持本地处理优势的同时实现更复杂的AI应用。
边缘AI代表了一种更分布式、更高效、更注重隐私保护的AI系统的根本转变。随着技术的不断成熟,我们可以期待边缘AI在支持广泛应用和设备的AI能力方面变得越来越重要。
通过边缘AI实现AI的民主化开辟了创新的新可能性,使开发人员能够创建在各种环境中可靠运行的AI驱动应用,同时尊重用户隐私并提供响应迅速的实时体验。理解边缘AI对于任何从事AI技术的人来说都变得越来越重要,因为它代表了AI在我们日常生活中部署和体验的未来。
免责声明:
本文档使用AI翻译服务Co-op Translator进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于重要信息,建议使用专业人工翻译。我们不对因使用此翻译而产生的任何误解或误读承担责任。