深度学习500问——Chapter15:异构计算,GPU和框架选型(2)

news2024/11/17 21:36:42

文章目录

15.5 GPU硬件环境配置推荐

15.5.1 GPU主要性能指标

15.5.2 购买建议

15.6 软件环境搭建

15.6.1 操作系统选择

15.6.2 常用基础软件安装


15.5 GPU硬件环境配置推荐

15.5.1 GPU主要性能指标

GPU的性能主要由以下三个参数构成:

  1. 计算能力。通常我们关心的是32位浮点计算能力。16位浮点训练也开始流行,如果我们只做预测的话也可以用8位整数。
  2. 内存大小。当模型越大,或者训练时的批量越大时,所需要的GPU内存就越多。
  3. 内存带宽。只有当内存带宽足够时才能充分发挥计算能力。

对于大部分用户来说,只要考虑计算能力就可以了。GPU内存尽量小于4GB。但如果GPU要同时显示图形界面,那么推荐的内存大小至少为6GB。内存带宽通常相对固定,选择空间较小。

下图描绘了GTX 900和1000系列里各个型号的32位浮点计算能力和价格的对比。其中价格为Wikipedia的建议价格。

我们可以从图中读出两点信息:

  1. 在同一个系列里面,价格和性能大体上成正比。但后发布的型号性价比更高,例如980Ti 和 1080 Ti。
  2. GTX 1000系列比 900系列在性价比上高出2倍左右。

如果大家继续比较GTX较早的系列,也可以发现类似的规律。据此,我们推荐大家在能力范围内尽可能买较新的GPU。

对于RTX系列,新增了Tensor Cores单元以及支持FP16,使得显卡的可选择范围更加多元。

15.5.2 购买建议

首先给出一些总体的建议:

性价比高但较贵:RTX 2070,GTX 1080 Ti

性价比高又便宜:RTX 2060,GTX 1060(6GB)

当使用数据集 > 250GB:GTX Titan X(Maxwell),NVIDIA Titan X Pascal 或 NVIDIA Titan Xp

没有足够的💰:GTX 1060(6GB)

几乎没有💰,入门级:GTX 1050 Ti(4GB)

做Kaggle比赛:RTX 2070、GTX 1060(6GB)适用于任何“正常”比赛,GTX 1080 Ti(预算足够可以选择RTX 2080 Ti)用于“深度学习竞赛”。

计算机视觉研究员:RTX 2080 Ti(涡轮散热或水冷散热较好,方便后期增加新的显卡)如果网络很深可以选择 Titan RTX。

一名NLP研究人员:RTX 2080 Ti,并使用FP16来训练

搭建一个GPU集群:这个有点复杂,另作探讨。

刚开始进行深度学习研究:从RTX 2060 或GTX 1060(6GB)开始,根据i下一步兴趣(入门,Kaggel比赛,研究,应用深度学习)等等,再进行选择。目前,RTX 2060 和GTX 1060都比较适合入门的选择。

想尝试下深度学习,但没有过多要求:GTX 1050 Ti(4或2GB)

目前独立GPU主要有AMD和Nvidia两家厂商。其中Nvidia在深度学习布局较早,对深度学习框架支持更好。因此,目前大家主要会选择Nvidia的GPU。

Nvidia有面向个人用户(例如GTX系列)和企业用户(例如Tesla系列)对两类GPU。这两类GPU的计算能力相当。然而,面向企业用户的GPU通常使用被动散热并增加了内存校验,从而更适合数据中心,并通常要比面向个人用户的GPU贵上10倍。

如果你是拥有100台机器以上的大公司用户,通常可以考虑针对企业用户的Nvidia Tesla系列。如果你是拥有10到100台机器的实验室和中小公司用户,预算充足的情况下可以考虑Nvidia DGX系列,否则可以考虑购买如 Supermicro之类的性价比比较高的服务器,然后再购买安装GTX系列的GPU。

Nvidia一般每一两年发布一次新版本的GPU,例如2017年发布的是GTX 1000系列,每个系列中会有数个不同的型号,分别对应不同的性能。

15.6 软件环境搭建

深度学习其实就是指基于一套完整的软件系统来构建算法,训练模型。如何搭建一套完整的软件系统,比如操作系统的选择,安装环境中遇到的问题等等,本节做一个简单的总结。

15.6.1 操作系统选择

针对硬件厂商来说,比如NVIDIA,对各个操作系统的支持都是比较好的,比如WIndows系列,Linux系列,但是由于Linux系统对专业技术人员比较友好,所以目前几乎所有的深度学习系统构建都是基于Linux的,比较常用的系统如Ubuntu系列,CentOS系列等等。在构建系统的时候,如何选择合适的操作系统是一个刚刚入门深度学习的工作者面临的问题,在这里给出几点建议:

(1)刚刚入门,熟悉Windows系统,但是对Linux和深度学习都不太熟,这个时候可以基于windows系列系统来做入门学习。

(2)简单了解Linux的使用,不太懂深度学习相关知识,可以直接基于Linux系统来搭建框架,跑一些开源的项目,慢慢深入研究学习。

(3)熟悉Linux,不熟悉深度学习理论,毫无疑问,强烈推荐使用Linux系统,安装软件简单,工作效率高,总之一句话,如果不熟悉Linux,就先慢慢熟悉,最终还是要回归到Linux系统来构建深度学习系统。

15.6.2 常用基础软件安装

目前有众多深度学习框架可供大家使用,但是所有框架基本都有一个共同的特点,目前几乎都是基于Nvidia的GPU来训练模型,要想更好的使用Nvidia的GPU,cuda和cudnn就是必备的软件安装。

  1. 安装cuda
    上文中有关于cuda的介绍,这里只是简单介绍基于Linux系统安装cuda的具体步骤,可以根据自己的需要安装cuda8.0或者cuda9.0,这两种版本的安装步骤基本一致,这里以最常用的ubuntu 16.04 lts版本为例:

    1. 官网下载,地址
      cuda8.0https://developer.nvidia.com/cuda-80-ga2-download-archive
      cuda9.0https://developer.nvidia.com/cuda-90-download-archive
      进入网址之后选择对应的系统版本即可,如下图所示:

      cuda8.0

    cuda9.0

    1. 命令行中进入到cuda所在的位置,授予运行权限:
      cuda8.0: sudo chmod +x cuda_8.0.61_375.26_linux.run
      cuda9.0:sudo chmod +x cuda_9.0.176_384.81_linux.run

    2. 执行命令安装cuda:
      cuda8.0:sudo sh cuda_8.0.61_375.26_linux.run
      cuda9.0:sudo sh cuda_9.0.176_384.81_linux.run
      之后命令之后下面就是安装步骤,cuda8.0和cuda9.0几乎一致:

    • 首先出现cuda软件的版权说明,可以直接按q键跳过阅读

    • Do you accept the previously read EULA?​accept/decline/quit: accept

    • Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?​(y)es/(n)o/(q)uit:no

    • Install the CUDA 9.0 Toolkit?​(y)es/(n)o/(q)uit:yes

    • Enter Toolkit Location​ [ default is /usr/local/cuda-9.0 ]:直接按enter键即可

    • Do you want to install a symbolic link at /usr/local/cuda?​(y)es/(n)o/(q)uit:yes

    • Install the CUDA 9.0 Samples?​ (y)es/(n)o/(q)uit:yes

    以上步骤基本就是cuda的安装步骤。

  2. 安装cudnn
    cudnn是Nvidia的专门针对深度学习的加速库。。

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

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

相关文章

Python酷库之旅-第三方库Pandas(127)

目录 一、用法精讲 566、pandas.DataFrame.swapaxes方法 566-1、语法 566-2、参数 566-3、功能 566-4、返回值 566-5、说明 566-6、用法 566-6-1、数据准备 566-6-2、代码示例 566-6-3、结果输出 567、pandas.DataFrame.melt方法 567-1、语法 567-2、参数 567-3…

sheng的学习笔记-AI-蒙特卡罗强化学习

AI目录:sheng的学习笔记-AI目录-CSDN博客 强化学习:sheng的学习笔记-AI-强化学习(Reinforcement Learning, RL)-CSDN博客 K-摇臂赌博机(K-armed bandit):https://blog.csdn.net/coldstarry/ar…

【AAOS】CarService -- Android汽车服务

概述 Android Automative OS理解为Android OS + Android Automative Service,而CarService就是提供汽车相关功能的最主要模块。 CarService与Android OS的关系:CarService运行于独立的进程中,其作为原有Android服务的补充,在汽车设备上运行。CarService在整体车载通信中起…

海南聚广众达电子商务咨询有限公司可靠不?

在这个短视频与直播电商风起云涌的时代,海南聚广众达电子商务咨询有限公司以其专业的服务能力和敏锐的市场洞察力,在抖音电商领域脱颖而出,成为了众多商家信赖的合作伙伴。今天,就让我们一同走进海南聚广众达,探索它是…

LLM - 使用 vLLM 部署 Qwen2-VL 多模态大语言模型 (配置 FlashAttention) 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142528967 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 vLLM 用…

VS Code使用Git Bash终端

Git Bash可以运行linux命令,在VS Code的终端界面,找到号旁边的箭头,就能直接切换了 当然,前提是安装了Git Bash,并且在资源管理器里,能鼠标右键出"Git Bash Here"

【个人笔记】线程和线程池的状态以及转换方式

线程和线程池的状态是不一样的!! 线程有 6 种状态,查看Thread的State枚举类: NEW:创建后没启动的线程就处于这种状态RUNNABLE:正在java虚拟机中执行的线程就处于这种状态BLOCKED:受阻塞并等待…

前端中CSS选择器权重的问题

前言 前端中很重要的CSS,使得网页更加丰满美丽,我们使用CSS时,必不可少的需要使用选择器,选择器也分为简单选择器和复合选择器。而在给选择器中填充内容时,有时候会有一些命令重复,会涉及到优先级的问题&a…

setInterval 实现匀速运动示例【JavaScript】

这段代码利用 setInterval 实现了一个简单的动画&#xff0c;当用户点击按钮时&#xff0c;页面上的方块会向右移动&#xff0c;直到到达一定的边界为止。 实现效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><met…

Java搭建法律AI助手,快速实现RAG应用

使用AI4J快速接入RAG应用 | 结合Pinecone实现法律AI助手RAG应用 本博文给大家介绍一下如何使用AI4J快速接入OpenAI大模型&#xff0c;并且结合Pinecone向量数据库实现一个刑法AI助手的RAG应用。 介绍 由于SpringAI需要使用JDK17和Spring Boot3&#xff0c;但是目前很多应用依…

初识 C 语言(一)

目录 一、 第一个 C 程序1. printf() 函数和 stdio.h 头文件2. main() 函数和 return 语句 二、类型和变量1. C 语言中的基本类型2. 变量的创建和命名规则3. 类型和变量的大小 三、printf() 函数和 scanf() 函数1. printf() 函数的使用2. 各种类型的输出格式3. scanf() 函数的使…

屏幕翻译下载哪个?建议试试这5个

国庆假期快到了&#xff0c;计划出国游或享受宅家追更海外剧的你&#xff0c;是否担心语言不通带来的小困扰&#xff1f; 别急&#xff0c;下面这篇文章就为你揭秘5款屏幕翻译免费软件&#xff0c;无论是浏览外国网站、阅读外语文档还是跨越语言障碍&#xff0c;都毫无压力。 …

YOLOv8-pose+streamlit 实现人体关键点检测/姿态估计系统(后续可用于健身时的姿态估计,训练纠正等....)

人体关键点检测系统 一、安装与配置1.1 安装 Streamlit1.2 配置文件1.3 运行Streamlit应用1.4 找模板 二、人体关键点检测算法2.1 关键点序号2.2 YOLOv8-pose图像推理 三、将YOLOv8-pose算法内置到streamlit中3.1 整体结构3.2 常见问题- RGB通道颠倒- Numpy与OpenCV之间的转换 …

java-必会jdk1.8新特性

1:抽象类的变化 前言&#xff1a; 接口里只能做方法定义不能有方法的实现&#xff0c;抽象类的方法不需要继承类必须去实现的一种方式。 定义一个抽象类TestAbstractclass 如下 package com.lm.jdk8.Abstractclass;/*** 抽象类*/ public abstract class Abstractclass {abstrac…

通信工程学习:什么是PNF物理网络功能

PNF:物理网络功能 PNF(Physical Network Function)即物理网络功能,是指支持网络功能的物理设备。以下是关于PNF的详细解释: 一、定义与特点 定义: PNF是网络设备厂商(如Cisco、华为、H3C等)通过专用硬件实体提供软件功能的设备。这些设备直接在物理服务器上运…

java:异常处理

背景 Java中的异常体系基于几个关键的概念和类&#xff0c;主要包括Throwable类、Exception类&#xff08;及其子类&#xff09;和Error类。 异常分类 1. Throwable 类 Throwable 是所有错误与异常的超类。它有两个直接子类&#xff1a;Error 和 Exception。 2. Error 类 …

【OpenAI o1思维链CoT必看论文】谷歌“思维链提示“让AI更懂人类推理

原创 超 超的闲思世界 AI的推理能力正迎来一场重大突破。谷歌大脑团队最新开发的"思维链提示"方法&#xff0c;让大型语言模型在复杂推理任务上展现出惊人的进步。这项创新技术无需对模型进行额外训练&#xff0c;却能显著提升AI的推理能力&#xff0c;让机器的思…

python命令行怎么换行

在命令行中“>>>”是python的输入提示符&#xff0c;按回车键则表示输入结束。那么如何在命令行中换行呢&#xff1f; 换行方法&#xff1a;\ 如&#xff1a; >>> print aaa; \ ... print bbb; \ ... print ccc 注意“&#xff1b;”的使用。python本身语句…

excel单元格增加可选下拉列表

excel单元格增加可选下拉列表 下拉设置&#xff1a;数据–数据验证-选择序列-填写来源&#xff08;来源数据用英文逗号分隔&#xff09;&#xff08;是,否&#xff09;- 区域应用&#xff1a;选定区域-数据验证-是-确认

2024年第十届信息学与商业工程国际会议(ICIBE 2024)将在泰国曼谷召开!

2024年第十届信息学与商业工程国际会议 (ICIBE 2024) 将于2024年12月20日-22日在泰国曼谷举办。ICIBE 2024由泰国兰实大学主办&#xff0c;中国澳门大学和菲律宾马普亚大学提供技术支持。本次会议为来自世界各地的专业人士、科学家、工程师、教育工作者、学生和研究人员提供了一…