当前位置: 首页 > news >正文

【AI大模型】-- 应用部署

一、GPU价格参考

  • 有些在京东就能买到:https://item.jd.com/10065826100148.html
  • 美国商务部限制 GPU 对华出口的算力不超过 4800 TOPS 和带宽不超过 600 GB/s,导致最强的 H100 和 A100 禁售。英伟达随后推出针对中国市场的 A800 和 H800。
H100 与 A100:H100 比 A100 快多少?

16-bit 推理快约 3.5 倍,16-bit 训练快约 2.3 倍。

二、部署大模型的最低和最佳配置

 以 llama3::70B大模型为例

GPU要求

模型参数内存需求

一般显存需求为参数规模的两倍。

  • 模型参数:70B(700亿)个参数
  • 内存需求:70B参数 * 2字节 = 140GB
额外内存需求

额外内存需求是模型参数内存的0.5到1倍:

  • 最小额外内存需求:140GB * 0.5 = 70GB
  • 最大额外内存需求:140GB * 1 = 140GB
总内存需求
  • 最小总内存需求 = 模型参数内存 + 最小额外内存 = 140GB + 70GB = 210GB
  • 最大总内存需求 = 模型参数内存 + 最大额外内存 = 140GB + 140GB = 280GB
计算所需GPU数量

NVIDIA RTX 4090(24GB)

  • 每块显存:24GB

  • 最小所需块数:210GB / 24GB ≈ 8.75块,约9块

  • 最大所需块数:280GB / 24GB ≈ 11.67块,约12块

调整配置建议
最低要求
  • NVIDIA RTX 4090(24GB):12块(考虑到实际部署中的冗余)
最佳配置
  • NVIDIA RTX 4090(24GB):14块(更多的冗余和性能优化)

内存需求分析

1. 模型参数加载
  • 参数数量:Llama 3: 70B模型有70亿个参数。
  • 模型参数内存需求:每个参数假设为2字节(FP16格式),因此模型参数占用的显存为140GB。
2. 数据预处理和加载
  • 数据预处理:处理输入数据(如文本分词、特征提取等)需要一定的系统内存。
  • 数据加载:将数据从存储设备加载到GPU显存中,通常在系统内存中进行缓冲和管理。
3. 中间结果存储
  • 激活值和中间结果:前向传播和反向传播(如果进行训练)会产生大量的中间结果,这些中间结果会占用系统内存。
4. 操作系统和应用程序
  • 操作系统:操作系统本身和后台服务需要一定的内存。
  • 并行处理:多线程或多进程计算也会占用系统内存。
计算系统内存需求
内存分配比例
  1. 模型参数加载(总内存需求的40%)
  2. 数据预处理和加载(总内存需求的20%)
  3. 中间结果存储(总内存需求的20%)
  4. 操作系统和应用程序(总内存需求的20%)
最低和最佳内存要求
最低要求

系统内存需求:考虑到实际操作中的冗余和性能优化,最低要求如下:

  • 模型参数加载:140GB
  • 数据预处理和加载:70GB(假设模型参数内存的50%)
  • 中间结果存储:70GB(假设模型参数内存的50%)
  • 操作系统和应用程序:50GB(一般需求)

总最低内存要求:140GB + 70GB + 70GB + 50GB = 330GB

最佳配置

系统内存需求:为了更高效地运行和处理大模型,最佳配置考虑了更多的冗余和计算需求:

  • 模型参数加载:140GB
  • 数据预处理和加载:140GB(假设模型参数内存的100%)
  • 中间结果存储:140GB(假设模型参数内存的100%)
  • 操作系统和应用程序:100GB(更高的需求以保证系统稳定性)

总最佳内存要求:140GB + 140GB + 140GB + 100GB = 520GB

内存分配比例

在部署大模型时,各部分内存的分配比例如下:

  1. 模型参数加载:40%
  2. 数据预处理和加载:20%
  3. 中间结果存储:20%
  4. 操作系统和应用程序:20%
结论
  • 最低内存要求:约330GB
  • 最佳内存配置:约520GB

这个数据可以有点偏大,我在实测过程中,部署llama3:14b的大模型,占用了仅16G内存,触发推理时会多一些,这个数据可作为参考。

云服务厂商对比

国内主流

  • 阿里云:GPU云服务器_GPU云计算_异构计算_弹性计算-阿里云 (可申请免费试用)
  • 腾讯云:腾讯云最新活动_腾讯云促销优惠_代金券-腾讯云官网入口
  • 火山引擎:GPU云服务器-火山引擎

国外主流

  • AWS:https://aws.amazon.com
  • Vultr:https://www.vultr.com
  • TPU:https://cloud.google.com/tpu

TPU 是 Google 专门用于加速机器学习的硬件。它特别适合大规模深度学习任务,通过高效的架构在性能和能源消耗上表现出色。

它的优点和应用场景:

  1. 高性能和能效: TPU 可以更快地完成任务,同时消耗较少的能源,降低成本。

  2. 大规模训练: TPU 适用于大规模深度学习训练,能够高效地处理大量数据。

  3. 实时推理: 适合需要快速响应的任务,如实时图像识别和文本分析。

  4. 云端使用: Google Cloud 提供 TPU 服务,允许用户根据需求使用,无需购买硬件。

适用于图像处理、自然语言处理、推荐系统等多个领域。

在国外,科研机构、大公司和初创企业普遍使用 TPU。

下面是对两款 NVIDIA GPU 在他主流厂商的价格进行对比:
  • A100:在云服务中,A100 是顶级的企业级 GPU,适用于高性能计算需求。
  • T4:相比之下,T4 更为经济,适合日常模型微调和推理任务。

算力平台

主要用于学习和训练,不适合提供服务。

  • Colab:谷歌出品,升级服务仅需 9 美金。https://colab.google.com
  • Kaggle:免费,每周 30 小时 T4,P100 可用。https://www.kaggle.com
  • AutoDL:价格亲民,支持 Jupyter Notebook 及 ssh,国内首选。https://www.autodl.com

建议:若需高速下载,尤其依赖于 GitHub 或 Docker 官方镜像,建议选择国外服务器。

根据场景选择 GPU

以下是基于显卡 4090 上的 chatglm 和 chatglm2 模型的 Fine tuning 实验数据概览:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 经典文献阅读之--World Models for Autonomous Driving(自动驾驶的世界模型:综述)
  • 贪心算法总结(2)
  • 排序算法:冒泡排序,golang实现
  • 20.rabbitmq插件实现延迟队列
  • JAVA(IO流-字节流)day 7.29
  • php将数字转为中文汉字
  • 计算机毕业设计LSTM+Tensorflow股票分析预测 基金分析预测 股票爬虫 大数据毕业设计 深度学习 机器学习 数据可视化 人工智能
  • Javascript前端面试基础4【每日学习并更新10】
  • IndexError: list index out of range
  • 物联网架构之Hadoop
  • 区块链软硬件协同,做产业数字化转型的“安全官” |《超话区块链》直播预告
  • 【C++】学习笔记——C++11_1
  • 0729_驱动1 异步通知
  • RocketMQ Server Windows安装
  • 现在有什么赛道可以干到退休?
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 2017届校招提前批面试回顾
  • Akka系列(七):Actor持久化之Akka persistence
  • input的行数自动增减
  • JAVA_NIO系列——Channel和Buffer详解
  • KMP算法及优化
  • LeetCode算法系列_0891_子序列宽度之和
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Mysql数据库的条件查询语句
  • nodejs:开发并发布一个nodejs包
  • React中的“虫洞”——Context
  • 从tcpdump抓包看TCP/IP协议
  • 大快搜索数据爬虫技术实例安装教学篇
  • 关于springcloud Gateway中的限流
  • 机器学习学习笔记一
  • 基于组件的设计工作流与界面抽象
  • 数组大概知多少
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 运行时添加log4j2的appender
  • 昨天1024程序员节,我故意写了个死循环~
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #java学习笔记(面向对象)----(未完结)
  • #Lua:Lua调用C++生成的DLL库
  • #每天一道面试题# 什么是MySQL的回表查询
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (3)nginx 配置(nginx.conf)
  • (52)只出现一次的数字III
  • (pojstep1.3.1)1017(构造法模拟)
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二)c52学习之旅-简单了解单片机
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (转)JAVA中的堆栈
  • (转)大型网站的系统架构
  • .gitignore不生效的解决方案
  • .NET Core 发展历程和版本迭代
  • .NET DataGridView数据绑定说明
  • .NET/C# 的字符串暂存池
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • @GetMapping和@RequestMapping的区别