AI全栈大模型工程师(二十六)如何选择 GPU 和云服务厂商

💡 这节课会带给你

  • 如何选择 GPU 和云服务厂商,追求最高性价比
  • 如何部署自己 fine-tune 的模型,向业务提供高可用推理服务
  • 如何控制内容安全,做好算法备案,确保合规

开始上课!

硬件选型

当我们为模型训练及推理做硬件选型时,NVIDIA 几乎是唯一选择。

这是一家全球知名的图形处理器(GPU)公司,成立于 1993 年。

因为在 GPU 领域,尤其 AI 领域芯片的垄断性优势,其创始人黄仁勋被坊间称为「黄教主」。

huangrenxun
huangrenxun

什么是 GPU?

Graphical Processing Units (GPUs)

  • 图形处理单元(GPU)是一种功能强大的电子芯片,用于在沉浸式视频游戏、电影和其他视觉媒体中呈现丰富的 2D/3D 图形和动画
  • 因其超越 CPU 的并行矩阵运算性能,所以也被广泛应用于人工智能相关的各种系统,包括机器视觉、NLP、语音识别、自动驾驶等
nvidia gpu
nvidia gpu

CUDA 核心和 Tensor 核心

CUDA 核心

  • 是 NVIDIA 开发的并行计算平台和编程模型,用于 GPU 上的通用计算,就像是万能工人,可以做很多不同的工作
  • 适合游戏和图形渲染、天气预测、电影特效等场景

Tensor 核心

  • 中文叫:张量核心
  • 专门设计用于深度学习中的矩阵运算,加速深度学习算法中的关键计算过程
  • 适合语音助手、人脸识别等场景

案例 1:视频渲染 当一个电影制片公司决定制作一部具有高度视觉效果的 3D 电影时,他们需要大量的计算能力来渲染每一帧。这里,CUDA 核心非常有用,因为它们能够处理大量的细节,如光线追踪、纹理和阴影。例如,当一束光从一个光源反射到一个物体上,然后反射到摄像机上,CUDA 核心可以用来计算这个光线路径上的所有细节,确保最终的图像看起来真实并且美观。

案例 2:面部识别 安全系统、智能手机和许多应用程序现在都使用面部识别技术。这需要通过深度学习模型来识别人的面部特征。Tensor 核心在这里发挥关键作用,它们可以迅速地处理神经网络中的大量矩阵乘法和加法,确保面部识别既准确又快速。

AI 领域常用 GPU

这个表格依据价格进行排序,价格从低到高。

显卡目标市场性能应用场景价格
T4企业/AI 推理适中AI 推理, 轻量级训练, 图形渲染7999(14G)
4090消费者非常高通用计算, 图形渲染, 高端游戏, 4K/8K 视频编辑14599(24G)
A10企业/图形适中图形渲染, 轻量级计算18999(24G)
A6000企业/图形适中图形渲染, 轻量级计算32999(48G)
V100数据中心/AI深度学习训练/推理, 高性能计算42999(32G)
A100数据中心/AI深度学习训练/推理, 高性能计算69999(40G)
A800数据中心/AI中等深度学习推理, 高性能计算, 大数据分析110000
H100数据中心/AI深度学习训练/推理, 高性能计算, 大数据分析242000
  • 有些在京东就能买到:https://item.jd.com/10065826100148.html
  • 美国商务部限制 GPU 对华出口的算力不超过 4800 TOPS 和带宽不超过 600 GB/s,导致最强的 H100 和 A100 禁售。黄教主随后推出针对中国市场的 A800 和 H800。

参考:

  • 英伟达 A100 和 H100 已被禁止向中国供货
  • 50 亿美元,算力芯片迎来狂欢,腾讯字节抢购英伟达 A800 订单
H100 与 A100:H100 比 A100 快多少?

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

a100-h100-a
a100-h100-a

参考资料:https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/

物理机 vs. 云服务

划重点:
  • 如果经常做微调实验,有自己的物理机会方便很多很多
  • 提供推理服务,首选云服务
  • 如果有自建机房或 IDC,请随意

云服务厂商对比

国内主流

  • 阿里云:https://www.aliyun.com/product/ecs/gpu (可 申请免费试用)
  • 腾讯云:https://cloud.tencent.com/act/pro/gpu-study
  • 火山引擎:https://www.volcengine.com/product/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 更为经济,适合日常模型微调和推理任务。

NVIDIA A100:

云服务提供商GPU 型号CPU 核心数内存(GiB)价格(元/小时)
火山引擎A10014 核24540.39
阿里云A10016 vCPU12534.742
腾讯云A10016 核9628.64

NVIDIA T4:

云服务提供商CPU 核心数内存(GiB)GPU 型号价格(元/小时)
阿里云4 vCPU15T411.63
火山引擎4 核16T411.28
腾讯云8 核32T48.68

算力平台

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

  • 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 实验数据概览:

模型数据条数时长技术
chatglm99991:42:46pt2
chatglm393336:45:21pt2
chatglm99991:31:05Lora
chatglm393335:40:16Lora
chatglm299991:50:27pt2
chatglm2393337:26:25pt2
chatglm299991:29:08Lora
chatglm2393335:45:08Lora
下面是 llm-utils 上一些选型的建议
  • Falcon 是目前为止huggingface上排行榜第一的模型

根据不同的使用情境,以下是使用的建议GPU:

用例显卡要求推荐显卡
Running Falcon-40B运行 Falcon-40B 所需的显卡应该有 85GB 到 100GB 或更多的显存See Falcon-40B table
Running MPT-30B当运行 MPT-30B 时,显卡应该具有80GB的显存See MPT-30B table
Training LLaMA (65B)对于训练 LLaMA (65B),使用 8000 台 Nvidia A100 显卡。Very large H100 cluster
Training Falcon (40B)训练 Falcon (40B) 需要 384 台具有 40GB 显存的 A100 显卡。Large H100 cluster
Fine tuning an LLM (large scale)大规模微调 LLM 需要 64 台 40GB 显存的 A100 显卡H100 cluster
Fine tuning an LLM (small scale)小规模微调 LLM 则需要 4 台 80GB 显存的 A100 显卡。Multi-H100 instance
划重点:
  • 对于本地个人研发项目,GeForce RTX 4090 等消费级 GPU 足以满足中等规模的需求。
  • 对于公司的大规模数据和复杂模型,推荐使用如 NVIDIA A100 的高性能 GPU。
  • 数据规模小时,可考虑预算内的 A10 或 T4 型号。
  • 如果追求性价比,可以选择把 4090 显卡搭建服务器使用,也可以选择市面的第三方服务,比如:AutoDL 的 4090 服务

参考资料:

  • https://gpus.llm-utils.org/cloud-gpu-guide/
  • https://gpus.llm-utils.org/nvidia-h100-gpus-supply-and-demand/

后记

📢博客主页:https://manor.blog.csdn.net

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📢本文由 Maynor 原创,首发于 CSDN博客🙉

📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐

📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12471942.html

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子学会C/C++编程等级考试2022年12月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:漫漫回国路 2020年5月,国际航班机票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。 时间限制:1000 内存限制:655…

golang 基于数组、切片、链表实现队列

数组 package mainimport ("errors""fmt" )func main() {// 创建一个简单队列// 如果head tail 队列空// 如果tail len(array) - 1// 整体做迁移 如果head 0 队列满stack1 : createQueue[int]()err : stack1.push(1)// 处理错误 后面的就不处理了if er…

Ajax原理以及优缺点

Ajax原理 1.Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎),通过XmlHttpRequest对象来向服务器发异步请求, 2.从服务器获得数据,然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。 3.这其中最关键的一…

Java----冒泡排序、选择排序、插入排序、快速排序、堆排序

int[] arr {4, 2, 7, 1, 5, 9, 3, 6, 8}; 冒泡排序 for(int i 0; i < arr.length-1; i) //外循环是控制排序的次数n-1, 每次循环结束确定一个最大值{for(int j 0; j < arr.length - 1 - i; j) // 内循环是第i次循环中比较的次数n-i{if(arr[j] > arr[j1]){//前面一…

LeetCode-23. 合并 K 个升序链表

问题分析 先建立一个小顶堆将每一路的最小元素都加入小顶堆&#xff0c;此时堆顶元素就是全局的最小值将堆顶元素弹出。若堆顶元素所在的数组不为空&#xff0c;则将下一元素加入堆中重复2、3操作&#xff0c;直到所有数据都读取完毕将堆内元素按顺序读出&#xff0c;并清空堆…

双系统安装显卡驱动

安装步骤 更新系统: 在安装任何新软件之前&#xff0c;最好先更新系统&#xff0c;以确保所有依赖都是最新的。打开终端&#xff08;Terminal&#xff09;并运行以下命令&#xff1a; sudo apt update sudo apt upgrade关闭Nouveau驱动: Nouveau是Nvidia显卡的开源驱动&#xf…

Linux系统使用ESP8266开发板(CP2102)

连接ESP8266开发板到电脑 虚拟机选择开发板硬件连接 查看USB连接情况: lsusb 授权USB接口访问 成功连接 编译项目 上传到开发板 成功提供WIFI热点服务

跳跃游戏 + 45. 跳跃游戏 II

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输…

动态SQL学习及使用场景(简略)

假设我们有一个商品表&#xff0c;包含id、name、price和category四个字段。现在需要实现修改商品价格的功能&#xff0c;我们可以使用动态SQL实现。 首先&#xff0c;我们需要构造一个SQL语句&#xff0c;根据用户提供的参数来动态生成&#xff0c;具体实现如下&#xff1a; …

三、Shell 环境

一、Linux 系统分类 在 Linux 中&#xff0c;常见的 Shell 有以下几种&#xff1a; Bourne Shell&#xff08;sh&#xff09;&#xff1a;最早的 Shell&#xff0c;由 Stephen Bourne 开发。它是大多数其他 Shell 的基础。Bourne Again Shell&#xff08;bash&#xff09;&am…

Tomcat指定jdk启动

要在Tomcat中指定使用特定的JDK启动&#xff0c;可以按照以下步骤进行操作&#xff1a; 确保你已经安装了所需的JDK&#xff0c;并且知道其安装路径。 打开Tomcat的安装目录&#xff0c;在bin目录下找到catalina.bat&#xff08;Windows&#xff09;或catalina.sh&#xff08;…

thinkphp6入门(13)-- 一对多关联模型

定义一对一关联&#xff0c;例如&#xff0c;一个用户都有多个工作经历。 一、两表 1.用户表:user 2.工作经验表&#xff1a;work_experience user表的id关联work_experience表的user_id。 注意看&#xff0c;user_id1的有2条工作经验 二、数据模型 主表模型&#xff1a;…

2023.12.6 关于flask中的route、render_template、redirect的关系问题

2023.12.6 关于flask中的route、render_template、redirect的关系问题 之前对于route、render_template、redirect三者的关系还有一些模糊&#xff0c;测试了一个案例后就比较清晰了&#xff0c;简单来说就是路径、模板和重定向&#xff0c;三者相对独立&#xff0c;只是一般命…

我的创作纪念日-第四年

机缘 不知不觉&#xff0c;CSDN 写博客已经四年了&#xff0c;也伴随了我读研读博的绝大多数时间。最多的时候&#xff0c;还是想记录下自己所走过的路程吧&#xff0c;然后留给后人一点经验借鉴。 实战项目中的经验分享   应该只分享过一篇博文&#xff1a;基于Jetson nan…

如何在 1 天内将网站打造为手机app

为您的网站提供移动应用程序的重要性怎么强调都不为过。随着用户越来越依赖智能手机和平板电脑进行在线活动&#xff0c;将您的网站转变为移动手机app可以显着增强用户体验、提高参与度并扩大您的在线影响力。在这篇博客中&#xff0c;我们将探讨如何快速有效地将网站制作成移动…

【Let‘s Encrypt SSL】使用 acme.sh 给 Nginx 安装 Let’s Encrypt 提供的免费 SSL 证书

安装acme.sh 安装 acme.sh 并设置邮箱用来接受重要通知&#xff0c;如证书快过期未更新通知 curl https://get.acme.sh | sh -s emailmyexample.com执行命令后几秒就安装好了&#xff0c;如果半天没有反应请 CtrlC 后重新执行命令。acme.sh 安装在 ~/.acme.sh 目录下&#xf…

windows 10多用户同时远程登陆配置【笔记】

系统环境&多用户访问情况&#xff1a; 1、【win】【R】键入【gpedit.msc】 2、依次选择【计算机配置】→ 【管理模板】 → 【Windows组件】 → 【远程桌面服务】 → 【远程桌面会话主机】 →【连接】 2.1、右键 【允许用户通过使用远程桌面服务进行远程连接】 编辑 …

C++初阶-vector类的模拟实现

vector类的模拟实现 一、经典的vector类问题1.1 前期准备 二、vector的默认成员函数2.1 构造函数2.1.1 无参构造2.1.2 构造具有n个对象值为val的容器&#xff08;数据类型为模板类型T&#xff09;2.1.3 拷贝构造 2.2 swap&#xff08;operator需要用&#xff09;2.3 复制重载op…

volatile 系列之指令重排序导致的可见性问题

什么是指令重排序呢?为了更加直观地理解&#xff0c;老司机还是通过一个案例来说明 public class MemoryReorderingExample {private static int x0,y0:private static int a0,b0;public static void main(String[] args) throws InterruptedException {int i0;while(true){…

排序算法之一:直接插入排序

1.基本思想 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a; 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 实际中我们玩扑克牌时&#xff0c;就用…