AI系统概述与设计目标
AI系统概述与设计目标
AI系统作为连接硬件和上层应用的中间层软硬件基础设施,在AI时代扮演着至关重要的角色。本文将从AI系统的基本概念、详细定义到设计目标,全面解析AI系统的核心要素,帮助读者建立完整的AI系统知识体系。
AI系统概述
AI系统基本概念
从类比的角度理解AI系统:AI时代连接硬件和上层应用的中间层软硬件基础设施。
因此在部分语境中,又有人称为AI Infra人工智能的基础设施,但是因为基础设施更偏向于底层硬件、集群等内容,而AI系统是多的是强调让AI执行起来的系统体系结构,因此更愿意称包括软硬件的内容为AI系统。
传统本地部署时代,三大基础软件(数据库、操作系统、中间件)实现控制硬件交互、存储管理数据、网络通信调度等共性功能,抽象并隔绝底层硬件系统的复杂性,让上层应用开发者能够专注于业务逻辑和应用功能本身的创新实现。
云时代同理,形成了IaaS、PaaS、SaaS三层架构,其中PaaS层提供应用开发环境和基础的数据分析管理服务。类比来看,我们认为,进入AI时代也有承担类似功能、连接算力和应用的基础设施中间层即AI系统,提供基础模型服务、赋能模型微调和应用开发。
AI系统详细定义
开发者一般通过编程语言Python和AI框架(例如PyTorch、MindSpore等)API编码和描述以上AI模型,声明训练作业和部署模型流程。由最开始AlexNet是作者直接通过CUDA实现网络模型,到目前有通过Python语言灵活和轻松调用的AI框架,到大家习惯使用HuggingFace社区提供的组件进行大语言模型进行微调和推理,背后是系统工程师贴合实际需求不断研发新的工具,并推动深度学习生产力提升的结果。
但是这些AI编程语言和AI框架应对自动化机器学习、强化学习等多样执行方式,以及细分的应用场景显得越来越低效,不够灵活,需要用户自定义一些特殊优化,没有好的工具和系统的支撑,这些问题一定程度上会拖慢和阻碍算法工程师研发效率,影响算法本身的发展。
因此,目前开源社区中也不断涌现针对特定应用领域而设计的框架和工具,例如Hugging Face提供语言预训练模型ModelZoo和社区,FairSeq自然语言处理中的序列到序列模型开发套件和MMDetection物体检测套件,针对自动化机器学习设计的NNI加速库等,进而针对特定领域模型应用负载进行定制化设计和性能优化,并提供更简化的接口和应用体验。
由于不同领域的输入数据格式不同,预测输出结果不同,数据获取方式不同,造成模型结构和训练方式产生非常多样的需求,各家公司和组织不断研发新的针对特定领域的AI框架或上层应用接口封装,以支持特定领域数据科学家快速验证和实现新的AI想法,工程化部署和批量训练成熟的模型。如Meta推出的Torch演化到PyTorch,谷歌TensorFlow及新推出的JAX,基于PyTorch构建的HuggingFace等。AI开发工具与AI框架本身也是随着用户的模型构建与程序编写与部署需求不断演进。
这其中快速获取用户的原因,有一些是其提供了针对应用场景非常简化的模型操作,并提供模型中心快速微调相应的模型,有一些是因为其能支持大模型训练或者有特定领域模型结构的系统优化。
AI系统自身设计挑战较高(如更大的规模、更大的超参数搜索空间、更复杂的模型结构设计),人工智能的代表性开发框架PyTorch是Meta开发,后续贡献给Linux开源基金会;TensorFlow是谷歌(谷歌)从2016年开源;华为(HUAWEI)为了避免美国全面封锁AI领域推出自研的AI框架MindSpore。
硬件厂商围绕其设计了大量的专有AI芯片(如GPU、TPU、NPU等)来加速AI算法的训练微调和部署推理,微软(Microsoft)、亚马逊(Amazon)、特斯拉(Tesla)等公司早已部署数以万计的GPU用于AI模型的训练,OpenAI等公司不断挑战更大规模的分布式模型训练。
英伟达(NVIDIA)、华为(HUAWEI)、英特尔(Intel)、谷歌(谷歌)等公司不断根据AI模型特点设计新的AI加速器芯片和对应的AI加速模块,如张量核Tensor Core、脉动阵列等提供更大算力AI加速器。
上述从顶层的AI算法应用、AI框架(包括训练和推理)到底层AI编译器,和对AI算法应用进行加速的AI芯片。所介绍的AI全栈相关内容中则是指AI系统(AI System),是围绕深度学习而衍生和设计的系统,因此也叫做深度学习系统(Deep Learning System)。
但是AI系统很多也可以应用于机器学习算法或使用机器学习算法,例如自动化机器学习、集群管理系统等。同时这些系统设计方法具有一定的通用性,有些继承自机器学习系统或者可以借鉴用于机器学习系统。即使作为系统工程师,也需要密切关注算法和应用的演进,才能紧跟潮流设计出贴合应用实际的工具与系统。
AI系统设计目标
深度学习系统的设计目标可以总结为以下几个部分。
- 高效编程语言、开发框架和工具链
设计更具表达能力和简洁的神经网络计算原语以及高级编程语言。让用户能够提升AI应用程序的开发效率,屏蔽底层硬件计算的细节,更灵活的原语支持。当前神经网络模型除了特定领域模型的算子和流程可以复用(如大语言模型Transformer架构在自然语言处理NLP领域被广泛作为基础结构),其新结构新算子的设计与开发仍遵循试错(Trial And Error)的方式进行。那么如何灵活表达新的计算算子,算子间的组合以及融合形式,屏蔽经典熟知的算子与基础模型,是算法工程师所需要语言、库与AI框架层所提供的功能支持。
更直观的编辑、调试和实验工具。让用户可以完整的进行神经网络模型的开发、测试、调整诊断与修复和优化程序,提升所开发AI应用程序的性能与鲁棒性。训练过程不是一蹴而就,其中伴随着损失函数LOSS曲线不收敛、Loss值出现NaN无效值、内存溢出等算法问题与算法设计缺陷(Bug)。AI工具链与AI系统本身如何在设计之初就考虑到这点,提供良好的可观测性、可调试性、允许用户注册自定义扩展等支持,是需要工具链与AI系统的设计者,所需要在AI系统的设计之初就需要提上日程的,否则之后更多是缝缝补补造成不好的开发体验与不能满足的需求,对用户来说就像使用一个黑盒且单片的工具。
支持AI生命周期中的各个环节:数据处理、模型开发与训练、模型压缩与推理、安全和隐私保护等。不仅能构建AI模型,能够支持全生命周期的AI程序开发,并在AI系统内对全生命周期进行分析与优化。当前的AI工程化场景,已经不是灵感一现和单一的优化就能迅速取得领先优势,更多的是能否有完善的AI基础设施,快速复现开源社区工作,批量验证新的想法进行试错,所以一套好的完善的全流程的生命周期管理能够大幅度提升AI算法层面的生产力。
- AI任务系统级支持
除了对深度学习训练与推理的支持,还能支持强化学习、自动化机器学习等新的训练范式。例如,需要不断和环境或模拟器交互以获取新数据的强化学习方式,批量大规模提交搜索空间的自动化机器学习方式等,这些新的范式造成对之前单一支持单模型之外,在多模型层面,训练与推理任务层面产生了新的系统抽象与资源,作业管理需求。
提供更强大和可扩展的计算能力。让用户的AI程序可扩展并部署于可以并行计算的节点或者集群,应对大数据和大模型的挑战。因为当前AI模型不断通过大模型,多模态大模型以产生更好的算法效果,促使AI系统需要支持更大的模型、更多模态的输入。同时由于企业IT基础设施不断完善,能够不断沉淀新的数据,也会伴随着大数据而衍生的问题。大模型与大数据促使存储与计算层面的系统,在摩尔定律失效的大背景下,迫切需要通过并行与分布式计算的方式,扩展算力与存储的支持。
自动编译优化算法。1)对计算图自动推导:尽可能的通过符号执行或即时编译JIT技术,获取更多的计算图信息,让AI框架或者AI编译器自动执行定制化的计算优化。2)根据不同体系结构自动并行化:面对部署场景的多样化体系结构,训练阶段异构硬件的趋势,AI框架让用户透明的进行任务配置和并行化,以期以最为优化的方式在AI集群配置下,并行化、减少I/O、充分利用通信带宽,逼近硬件提供的极限性能上限。
云原生自动分布式化。自动分布式并行扩展到多个计算节点,面对云与集群场景,自动将AI任务扩展与部署,进而支撑分布式计算、弹性计算,让用户按需使用资源,也是云原生背景下,AI系统所需要考虑和支持的。
- 探索并解决新挑战下系统设计、实现和演化
在AI系统中会随着AI算法的发展,出现了对动态图、动态Shape的支持需求,利用网络模型结构的稀疏性进行压缩加速优化,为了提升训练指标TTA实现混合精度训练与部署,还有混合训练范式(如强化学习)、多任务(如自动化机器学习)等特性支持。
提供在更大规模的企业级环境的部署需求。如云环境、多租环境的训练部署需求:面对多组织,多研究员和工程师共享集群资源,以及大家迫切使用GPU资源的日益增长的需求,如何提供公平、稳定、高效的多租环境也是平台系统需要首先考虑的。
跨平台的推理部署需求。面对割裂的边缘侧硬件与软件栈,如何让模型训练一次,跨平台部署到不同软硬件平台,也是推理场景需要解决的重要问题。
最后是安全与隐私的需求。由于网络模型类似传统程序的功能,接受输入,处理后产生输出,但是相比传统程序,其解释性差,造成更容易产生安全问题,容易被攻击。同时模型本身的重要信息为权重,我们也要注意模型本身的隐私保护。同时如果是企业级环境或公有云环境,会有更高的安全和隐私保护要求。
了解完AI系统设计的宏观目标,可以进一步了解,当前在人工智能的大生态环境中AI系统的技术栈是如何构成的,整个技术栈中AI系统各处于哪个抽象层次,互相之间的关系是什么。