1 -《本地部署开源大模型》如何选择合适的硬件配置

如何选择合适的硬件配置

  为了在本地有效部署和使用开源大模型,深入理解硬件与软件的需求至关重要。在硬件需求方面,关键是配置一台或多台高性能的个人计算机系统或租用配备了先进GPU的在线服务器,确保有足够的内存和存储空间来处理大数据和复杂模型。至于软件需求,推荐使用Ubuntu操作系统,因其在机器学习领域的支持和兼容性优于Windows。编程语言建议以Python为主,结合TensorFlow或PyTorch等流行机器学习框架,并利用DeepSpeed等优化工具来提升大模型的运行效率和性能。

  所以在本系列课程中,我们将从硬件选择入手,逐步引导大家理解并掌握如何为大模型部署选择合适的硬件,以及如何高效地配置和运行这些模型,从零到一实现大模型的本地部署和应用。首先来看硬件方面,提前规划计算资源是必要的。目前,我们主要考虑以下两种途径:

  1. 配置个人计算机或服务器,组建一个适合大模型使用需求的计算机系统。
  2. 租用在线GPU服务,通过云计算平台获取大模型所需的计算能力。

一、大模型应用需求分析

  大模型的本地部署主要应用于三个方面:训练(train)、高效微调(fine-tune)和推理(inference)。这些过程在算力消耗上有显著差异:

  • 训练:算力最密集,通常消耗的算力是推理过程的至少三个数量级以上。
  • 微调:微调是在预训练模型的基础上对其进行进一步调整以适应特定任务的过程,其算力需求低于训练,但高于推理。
  • 推理:推理指的是使用训练好的模型来进行预测或分析,是算力消耗最低的阶段。

  总的来说,在算力消耗上,训练 > 微调 > 推理。
  从头训练一个大模型并非易事,这不仅对个人用户,对于许多企业而言也同样困难。因此,如果个人使用,关注点应该放在推理和微调的性能上。在这两种应用需求下,对 硬件的核心要求体现在GPU的选择上,对CPU和内存的要求并不高。无论是选择租用在线算力还是配置本地计算机,如果想在本地运行大模型,我们可以拆分成两个关注点:

  • 模型:选择什么基座模型或微调模型,这可以直接下载至本地。
  • 硬件:希望在什么硬件平台上来执行,可以分为 CPU 和 GPU 两大类。

  ⼤部分开源⼤模型⽀持在 CPU 和 Mac M系列芯片上运⾏,但较为繁琐且占⽤内存⾄少 32G 以上,因此更推荐在 GPU 上运⾏。针对本地部署大模型,在选择GPU时,可以遵循的简单策略是:在满足具体的大模型的官方配置要求下,选择性价比最高的GPU。

  GPU的性能主要由以下三个核心参数决定:

  1. 计算能力:这是最关注的指标,尤其是32位浮点计算能力。随着技术发展,16位浮点训练也日渐普及。对于仅进行预测的任务,INT 8 量化版本也足够;

  2. 显存大小:大模型的规模和训练批量大小直接影响对显存的需求。更大的模型或更大的批量处理需要更多的显存;

  3. 显存带宽:决定了GPU处理器能够多快地从显存中读取数据和向显存中写入数据。显存带宽越高,GPU处理大量数据时的性能通常也越好;

  注:显存带宽相对固定,选择空间较小。

二、硬件配置的选择标准

  无论是个人使用、科研团队进行项目研究,还是企业寻求商业应用的落地,不同的应用场景和目标任务(如微调或推理)都需要相应的硬件配置方案来支持。所以在选择硬件配置时应根据具体的模型需求和预期用途来确定。

  因此,我们的建议是:**根据部署的大模型配置需求,先选择出最合适的 GPU,然后再根据所选 GPU 的特性,进一步搭配计算机的其他组件,如CPU、内存和存储等,以确保整体系统的协调性和高效性能。最简单的匹配GPU的标准是显存大小和性价比。**因为训练不纯粹看一个显存容量大小,而是和芯片的算力高度相关的。因为实际训练的过程当中,将海量的数据切块成不同的batch size,然后送入显卡进行训练。显存大,意味着一次可以送进更大的数据块。但是芯片算力如果不足,单个数据块就需要更长的等待时间显存和算力,必须要相辅相成。
  简单来说,在深度学习的训练和推理中,GPU的显存主要用于以下几个方面:

  1. 权重存储:模型的参数,包括权重和偏置,都需要在显存中存储。这些参数是模型进行预测或分类所必需的。

  2. 中间过程数据存储:在模型计算的前向传播和反向传播过程中,会产生并且需要暂时存储大量的中间计算结果。这些数据同样存储在显存中。

  3. 计算过程:GPU专门为并行处理大量的矩阵和向量运算而设计,这正是深度学习中常见的计算类型。这些计算直接在显存中进行,以利用GPU的高速运算能力。

  显存的大小和速度直接影响到模型的处理速度和能处理的模型大小。显存越大,意味着可以处理更大的模型和更复杂的计算任务,但同时也需要更多的能源和可能导致更高的成本。

"芯片"通常指的是集成电路,它们被集成到各种电脑硬件组件中,如CPU、GPU和主板等。CPU本身就是一种芯片。它是计算机的大脑,负责执行程序和处理数据。显卡上的核心组件是图形处理器(GPU),它也是一种芯片。GPU负责处理图形和视频渲染。

  所谓的"算力"大小,通常指的是整个计算系统的处理能力,尽管在特定上下文中,它有时特指GPU的处理能力。
  我们以ChatGLM-6B模型为例,官方给出的硬件配置说明如下:

模型量化是一种用于优化模型的技术,特别是在推理时。它通过减少模型中使用的数值精度来减小模型的大小,加快推理速度,并降低内存和能源消耗。模型量化常用于将模型部署到资源受限的设备上,如手机或嵌入式系统,量化程度越高,对硬件的要求就会越低。 单精度通常指的是32位浮点数(FP32),使用32位表示,包括1位符号位、8位指数位和23位尾数位。FP32是标准的训练和推理格式,但由于半精度(FP16)提供了相似的结果且计算速度更快,更节省内存,因此在资源受限或需要高速计算的场景中越来越受欢迎。而 int 4,就是所有的参数只保留了四位数,当然,保留的参数越少,它的计算量就会越小,对应的输出结果的精度也就会越差。

2.1 选择满足显存需求的 GPU

  关于如何选择GPU,当前市场 NVIDIA 和 AMD 是两大主要显卡生产商。但在人工智能、大数据、深度学习领域,NVIDIA(通常被称为N卡)几乎独占鳌头。主要原因还是NVIDIA在很早期就开始专注于AI和深度学习市场,开发了强大的软件工具和库,例如cuDNN、TensorRT,这些都是专门为深度学习优化的,与流行的深度学习框架(如TensorFlow、PyTorch等)紧密集成,同时NVIDIA的CUDA(Compute Unified Device Architecture)作为独特的平行计算平台和编程模型,它允许开发者利用NVIDIA的GPU进行高效的通用计算。这一点对于深度学习和大数据分析等需要大量并行处理的应用来说至关重要。

  • 英伟达是一家什么公司?
      这时候可能有小伙伴说了,英伟达是一家卖游戏显卡的,这个说法呢,对,但也不对,从财报来看,英伟达目前主要有四块业务,分别是游戏GPU,数据中心产品,自动驾驶芯片和其他业务。占比分别为33.6%,55.%,3.3%和7.4%。游戏GPU,数据中心产品,自动驾驶芯片其实都可以归类为计算芯片这个门类下面,换句话说,如果从财报公布的业务情况来分析的话,英伟达确实就是一家卖计算芯片的公司。但如果真的把英伟达当做一家卖芯片的公司,那就大错特错了。英伟达的确是靠着游戏显卡起家,并且在人工智能爆发的现在靠着一手AI计算芯片市值突破了万亿美元,但其实它并不是一家卖芯片的公司,我对英伟达的定位是,它是一家卖人工智能系统的公司。这就有两个核心的概念,一个是英伟达的计算芯片,一个是英伟达针对自家芯片做的计算架构CUDA,二者缺一不可。这种定位就像智能手机时代的苹果公司,苹果依靠着A系列芯片和ios操作系统收割了智能手机行业超过80%的利润。人工智能大发展的时代,英伟达就依靠着GPU和计算芯片与CUDA计算架构,共同组成的AI生态系统赢得了市场青睐,根据相关机构的统计数据,在独立显卡领域,英伟达的市占率高达85%,在AI算力芯片领域,在未来可能达到90%,现在做深度学习,英伟达的卡就是刚需,没有其他的选择。

  因此,我们建议还是选择 NVIDIA 的显卡。如果对应的ChatGLM-6B模型的硬件配置说明,我们就可以这样选择GPU。理论上,在进行少量对话时:

  在选择显卡时,必须遵循的首要准则是:显卡的显存容量一定要高于大模型官方要求的最低显存配置。这是确保模型能够有效运行的基本要求。显存容量越大,其推理或微调的能力就会越强。当然,随着显存容量的增加,显卡的价格也相应提高。以下是目前最主流的几款大模型的显卡型号及其显存容量:

显卡型号 显存容量
H100 80 GB
A100 80/40 GB
H800 80 GB
A800 80 GB
4090 24 GB
3090 24 GB

  其组合形式可以分为以下四类:

  1. 纯CPU:基于不同架构的CPU配置,适用于不需要或不能使用GPU加速的场景。(不推荐)

    • x86 (如Intel或AMD)
    • ARM (如Apple、Qualcomm、MTK)


  2. 单机单卡:使用一块GPU进行计算,适用于大多数个人使用和一些中等计算负载的场景。(典型配置)

    • Nvidia系列GPU
    • AMD系列GPU
    • Apple系列GPU
    • Apple Neural Engine(较少见,支持有限)


  3. 单机多卡:在一台机器上使用多张GPU卡,适用于高计算负载的场景,如模型分割处理。(典型配置)

  4. 多机配置:使用多台计算机进行集群计算,通常超出个人使用范围,主要用于从头预训练基座模型等高负载任务。

  所以,在单个显卡的显存容量不足以满足需求时,也可以采用多显卡配置来增加整体的显存容量。只要总显存超过官方推荐的配置要求就可以。此外,在选择显卡时,除了考虑整体显存容量,还要根据不同显卡的性能和成本进行权衡。根据具体需求和预算,决定是选择单张高性能显卡,还是部署多张成本效益更高的低版本显卡。实现最优的性价比。比如在理论上,在进行多轮对话时或需要微调时,采用单机多卡:

2.2 主流显卡性能分析

  对于 NVIDIA的显卡(N卡)卡来说,我们可以按照以下几个维度来划分:

  按照产品线划分:

系列 特点 主要应用领域
GeForce系列(G系列) 消费级GPU产品线,注重提供高性能的图形处理能力和游戏特性,性价比高,适合游戏和深度学习推理、训练。 主要面向游戏玩家和普通用户。
Quadro系列(P系列) 专业级GPU产品线,针对商业和专业应用领域进行了优化,适用于设计、建筑等专业图像处理。 设计、建筑、专业图像处理等领域。
Tesla系列(T系列) 主要用于高性能计算和机器学习任务,集成深度学习加速器,提供快速的矩阵运算和神经网络推理。 高性能计算、机器学习任务等领域。
Tegra系列 移动处理器产品线,用于嵌入式系统、智能手机、平板电脑、汽车电子等领域,具备高性能的图形和计算能力,低功耗。 嵌入式系统、智能手机、平板电脑、汽车电子等领域。
Jetson系列 面向边缘计算和人工智能应用的嵌入式开发平台,具备强大的计算和推理能力,适用于智能摄像头、机器人、自动驾驶系统等。 边缘计算、人工智能、机器人等领域。
DGX系列 面向深度学习和人工智能研究的高性能计算服务器,集成多个GPU和专用硬件,支持大规模深度学习模型的训练和推理。 深度学习、人工智能研究和开发等领域。

  按照架构划分:

### OmegaConf 配置管理简介 OmegaConf 是一个强大的 Python 库,用于处理复杂的配置文件。它支持多种数据结构(如字典、列表)以及 YAML 文件的解析和操作。以下是有关如何使用 OmegaConf 的详细介绍。 #### 创建配置对象 可以通过 `OmegaConf.create` 方法创建一个新的配置对象。该方法可以接受字典、YAML 字符串或其他兼容的数据结构作为输入[^1]。 ```python import omegaconf from omegaconf import OmegaConf config_dict = {"database": {"host": "localhost", "port": 6379}} config = OmegaConf.create(config_dict) print(OmegaConf.to_yaml(config)) # 将配置转换为 YAML 格式的字符串 ``` #### 加载外部 YAML 文件 如果需要加载外部 YAML 文件,可使用 `OmegaConf.load` 方法。这使得程序能够轻松读取并应用存储在磁盘上的配置文件。 ```python yaml_file_path = "./example_config.yaml" file_conf = OmegaConf.load(yaml_file_path) # 打印加载后的配置内容 print(file_conf.database.host) # 输出 'localhost' ``` #### 合并多个配置源 当存在多个配置来源时(例如默认设置与命令行参数),可以使用 `OmegaConf.merge` 来无缝合并它们。此功能允许开发者优先级较高的配置覆盖较低级别的配置项。 ```python default_configs = OmegaConf.create({"model": {"type": "resnet50"}}) cli_args = OmegaConf.from_dotlist(["model.type=vgg16"]) merged_config = OmegaConf.merge(default_configs, cli_args) assert merged_config.model.type == "vgg16" # 命令行参数成功覆盖默认值 ``` #### 动态更新配置 除了静态定义外,还可以通过访问器动态修改现有配置中的字段。这种灵活性非常适合运行时调整某些超参数或环境变量。 ```python dynamic_update = file_conf.copy() dynamic_update.database.port = 8080 print(dynamic_update.database.port) # 输出新的端口号 8080 ``` #### 错误处理机制 为了防止非法赋值破坏整个系统的稳定性,OmegaConf 提供了严格的模式控制选项。启用严格模式后,任何未声明过的键都将引发异常提示用户修正错误。 ```python strict_mode_enabled = file_conf.copy() strict_mode_enabled.set_struct(True) # 开启只读保护状态 try: strict_mode_enabled.new_field = True # 此处会抛出 AttributeError 异常 except AttributeError as e: print(f"Catch expected error: {e}") ``` --- ### 总结 以上展示了 OmegaConf 在不同场景下的典型用法,包括但不限于初始化配置实例、加载外部资源、融合多层设定逻辑以及实施安全防护措施等方面的功能特性。希望这些例子能帮助快速掌握其核心概念和技术要点!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值