问题

AMD的CPU是否适合搭建深度学习主机?

回答
用AMD CPU组建深度学习主机?这事儿得这么看!

对于很多想要踏入深度学习领域的朋友来说,组建一台专属的训练主机是必不可少的一步。在选择核心组件——CPU时,不少人会将目光投向AMD。那么,AMD的CPU究竟适不适合用来搭建深度学习主机呢?这可不是一个简单的“是”或“否”就能回答的问题,咱们得深入聊聊其中的门道。

核心问题:CPU在深度学习中的角色

首先,我们要明白CPU(中央处理器)在深度学习工作流中的具体作用。它就像是整个工作流程的“总指挥官”,负责:

数据预处理: 加载数据集、进行图像缩放、裁剪、数据增强等操作。这些过程通常涉及大量的CPU计算。
模型构建与管理: 加载模型、设置模型参数、管理模型的生命周期。
数据加载与传输: 将处理好的数据高效地传输到GPU(图形处理器)上,这是训练效率的关键一环。
一些特定计算: 虽然大部分的并行计算和矩阵运算交给GPU,但某些模型的某些部分或在某些框架下,CPU依然会承担一部分计算任务。
推理(非实时高并发场景): 在一些不需要实时响应或者并发量不大的推理场景下,CPU也可以胜任。

AMD CPU的优势在哪里?

近些年来,AMD在CPU领域可谓是风生水起,其Ryzen系列处理器凭借出色的多核性能和性价比,赢得了不少用户的青睐。那么,这些优势在深度学习主机上能体现出来吗?

1. 强大的多核性能: 深度学习的数据预处理、数据加载以及某些模型的执行,都受益于更多的CPU核心。AMD的Ryzen系列,尤其是中高端型号,往往提供比同价位英特尔更多的物理核心。这意味着在同时处理大量数据、进行复杂的预处理操作时,AMD CPU能够展现出更强的并行处理能力,显著缩短数据准备时间,提高整体效率。
2. 高性价比: 相对于同级别的英特尔处理器,AMD往往能提供更具竞争力的价格。对于预算有限但又追求高性能的用户来说,AMD的CPU能够让你在CPU部分节省开销,将更多的预算投入到更关键的GPU上,而GPU才是深度学习训练的绝对主力。
3. PCIe通道数: AMD平台的芯片组在PCIe通道数方面通常表现不错,尤其是在Threadripper等高端平台上。这意味着你可以连接更多的显卡、高速NVMe SSD等设备,为你的主机提供更强的扩展性和数据传输能力,这对于需要多GPU并行训练或者存储海量数据集的用户来说非常重要。
4. 内存支持: AMD平台通常对内存的兼容性和支持度也比较友好,能够支持更高频率的内存条,这对于某些内存密集型的数据预处理任务或大型数据集的加载也有一定的帮助。

AMD CPU的局限性或需要注意的地方:

当然,任何硬件都有其两面性,在组建深度学习主机时,选择AMD CPU也需要考虑一些潜在的因素:

1. 单核性能的相对差距(历史遗留但正在改善): 尽管AMD近年来在单核性能上已经取得了巨大的进步,但在某些对单核性能要求极高的特定应用或某些早期的深度学习框架优化中,英特尔的处理器可能依然能保持一定的优势。不过,对于绝大多数深度学习任务而言,多核性能的优势往往更能抵消这一点。
2. 软件生态和优化: 过去,部分深度学习框架和库在针对英特尔平台的优化上可能更为成熟。尽管现在情况已经大为改善,CUDA(英伟达的并行计算平台)生态的成熟度依然是GPU选择的主要考量,而CPU的优化程度相对而言影响没有那么“致命”。不过,在一些非常前沿或特定的优化场景下,可以留意一下是否有什么针对性的性能差异。
3. 发热与功耗: 一些高性能的AMD CPU在高负载下,其发热量和功耗也可能相对较高,这需要你选择一个与之匹配的散热器和电源,以确保系统的稳定运行。

总结:AMD CPU适合搭建深度学习主机吗?

答案是:非常适合,并且在很多情况下是非常优秀的选择!

对于绝大多数深度学习用户来说,尤其是预算相对有限的用户,AMD的Ryzen系列CPU可以提供极其出色的性价比和强大的多核性能,足以胜任数据预处理、数据加载等关键任务。你可以通过选择性能强劲的AMD CPU,在CPU部分获得足够的算力支持,并将更多的预算倾斜给核心的GPU,从而构建一个更具竞争力的深度学习训练平台。

具体建议:

入门级/学习者: Ryzen 5 或 Ryzen 7 系列中高型号,如 Ryzen 5 5600X、Ryzen 7 5700X/5800X,或者更新的Ryzen 5 7600X、Ryzen 7 7700X 等,都能提供不错的体验。
进阶级/专业用户: Ryzen 9 系列,如 Ryzen 9 5900X、5950X,或更新的 Ryzen 9 7900X、7950X,凭借其更多的核心和线程数,在处理大型数据集和复杂的预处理流程时会更加得心应手。
极致追求(多GPU,大数据): 如果预算充足,并且计划使用多张高端GPU或者需要处理非常庞大的数据集,可以考虑Threadripper系列。它们提供海量的PCIe通道和核心数,是构建顶级深度学习工作站的强大基石。

最终的硬件选择永远是系统整体的平衡。 你需要根据你的预算、预期的训练任务类型(例如,是图像识别为主,还是自然语言处理为主?)、数据集的大小以及对训练速度的要求,来合理分配你的预算给CPU、GPU、内存、存储等各个部分。

别再纠结于所谓的“派系”之争了,AMD的CPU在深度学习领域已经证明了它的实力。选择适合你需求和预算的AMD CPU,搭配一块强劲的GPU,你就能搭建起一台高效的深度学习主机,开始你的探索之旅了!

网友意见

user avatar

在AMD的CPU上,有些程序运行时间会明显慢于Intel,若使用openblas重新编译的Numpy,Scipy和Pytorch,可能带来显著的性能提升。

如果你遇到了类似的问题,建议先用pycharm等工具profile,确定耗时的地方在Numpy,Scipy和Pytorch三者之一,然后再考虑重新编译,否则可能花费时间,但运算速度没有提高。


  • 零、创建新的anaconda环境

这一步可选,真男人用啥虚拟环境,hahaha。

       conda create -n ~~~~~~~ python=3.8 conda activate ~~~~~~~     

  • 一、编译openblas
       # 安装gfortran sudo apt-get install gfortran  ## 来自:https://stackoverflow.com/questions/11443302/compiling-numpy-with-openblas-integration # 下载openblas git clone https://github.com/xianyi/OpenBLAS # 进入目录,然后编译 cd OpenBLAS && make FC=gfortran # 安装,以及解决环境变量 sudo make PREFIX=/opt/OpenBLAS install export LD_LIBRARY_PATH=/opt/OpenBLAS/lib:$LD_LIBRARY_PATH sudo ldconfig     

  • 二、编译numpy

(如果之前已经安装了其他版本的numpy,先采用稳妥的方式卸载)

       # 克隆numpy git clone https://github.com/numpy/numpy.git cd numpy     

接下来创建一个site.cfg,里面指明openblas的位置,当然site.cfg是有模板的(site.cfg.example):

       cp site.cfg.example site.cfg nano site.cfg     

把下面这几行的注释去掉

....
[openblas]
libraries = openblas
library_dirs = /opt/OpenBLAS/lib
include_dirs = /opt/OpenBLAS/include
....

然后运行测试(新版本的numpy似乎不能使用这种方法检查了,这不重要,直接跳过就行)

       python setup.py config     

如果顺利的话,应该会看到openblas,而不是MKL

         FOUND:     libraries = ['openblas', 'openblas']     library_dirs = ['/opt/OpenBLAS/lib']     language = c     define_macros = [('HAVE_CBLAS', None)]     runtime_library_dirs = ['/opt/OpenBLAS/lib']    FOUND:     libraries = ['openblas', 'openblas']     library_dirs = ['/opt/OpenBLAS/lib']     language = c     define_macros = [('HAVE_CBLAS', None)]     runtime_library_dirs = ['/opt/OpenBLAS/lib']     

如果出现MKL(如下),说明openblas没装好,或者conda环境中已经安装了MKL,需要在一个干净的conda环境中重复以上过程。

         FOUND:  如果失败如出现 MKL     libraries = ['mkl_rt', 'pthread']     library_dirs = ['/home/fuqingxu/anaconda3/lib']     define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]     include_dirs = ['/usr/local/include', '/usr/include', '/home/fuqingxu/anaconda3/include']     

最后,all clear,可以直接编译安装了,简单的不得了

       pip install . --verbose     

检查是不是安装成功了

       cd .. python     

然后显示runtime 运行库都是openblas,成功。。另外scipy的编译和numpy是一模一样的,只要别下载错仓库就行,所以不再赘述

       >>> import numpy >>> numpy.__config__.show() blas_mkl_info:   NOT AVAILABLE blis_info:   NOT AVAILABLE openblas_info:     libraries = ['openblas', 'openblas']     library_dirs = ['/opt/OpenBLAS/lib']     language = c     define_macros = [('HAVE_CBLAS', None)]     runtime_library_dirs = ['/opt/OpenBLAS/lib'] blas_opt_info:     libraries = ['openblas', 'openblas']     library_dirs = ['/opt/OpenBLAS/lib']     language = c     define_macros = [('HAVE_CBLAS', None)]     runtime_library_dirs = ['/opt/OpenBLAS/lib'] lapack_mkl_info:   NOT AVAILABLE openblas_lapack_info:     libraries = ['openblas', 'openblas']     library_dirs = ['/opt/OpenBLAS/lib']     language = c     define_macros = [('HAVE_CBLAS', None)]     runtime_library_dirs = ['/opt/OpenBLAS/lib'] lapack_opt_info:     libraries = ['openblas', 'openblas']     library_dirs = ['/opt/OpenBLAS/lib']     language = c     define_macros = [('HAVE_CBLAS', None)]     runtime_library_dirs = ['/opt/OpenBLAS/lib']     


三、编译pytorch

编译pytorch更难,在网络不好的地方,你首先试试把pytorch克隆下来哈哈:

       # Get the PyTorch Source git clone --recursive pytorch/pytorch cd pytorch # if you are updating an existing checkout git submodule sync git submodule update --init --recursive     

克隆不了的话,只能设置代理:

       git config --global http.proxy socks5://127.0.0.1:port???? git config --global https.proxy socks5://127.0.0.1:port????     

需要安装除了排除掉MKL的其他依赖,注意里面不能有numpy,有的话会直接覆盖掉前面的numpy,前面numpy就白编译了

       conda install ninja pyyaml setuptools cmake cffi typing_extensions future six requests dataclasses conda install -c pytorch magma-cuda110     

配置编译所需的环境变量,其中USE_CUDA是对GPU的支持,当然要支持,不支持GPU用啥pytorch,MAX_JOBS是使用多少线程编译,取决于cpu有多牛逼,BLAS=OpenBLAS即指定Openblas的使用,USE_MKLDNN要一块关了因为我们用CUDNN

       export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"} export USE_OPENMP=1  # 不是很懂这个 export BLAS=OpenBLAS export USE_CUDA=1 export USE_CUDNN=1 export MAX_JOBS=128 export USE_MKLDNN=0 # export USE_NUMPY=1 这个我不是很确定,哪位大佬看到可以评论一下这个有什么作用 export USE_MPI=1        # 不是很懂这个 export BUILD_BINARY=1 export LD_LIBRARY_PATH=/opt/OpenBLAS/lib:$LD_LIBRARY_PATH export OpenBLAS_HOME=/opt/OpenBLAS export CUDA_HOME=/usr/local/cuda-11.0        # 取决于cuda的安装位置和版本 export CUDNN_LIB_DIR=/usr/local/cuda-11.0/lib64  # 取决于cuda的安装位置和版本 export CUDNN_INCLUDE_DIR=/usr/local/cuda-11.0/include  # 取决于cuda的安装位置和版本     

当然,也得安装cuda和cudnn,务必注意版本问题,由于版本更新很快,需要自己把握各组件的版本对应关系。

最后编译和安装就可以了

       # exectute building python setup.py install     

万一失败了,再次编译前需要清理上次编译的残余:

       git clean -xfd && git submodule foreach git clean -xfd     

测试显示已经替换掉了MKL

       cd ..  python >>> import torch >>> torch.cuda.is_available() True >>> torch.__config__.show() 'PyTorch built with:
  - GCC 9.3
  - C++ Version: 201402
   - OpenMP 201511 (a.k.a. OpenMP 4.5)
   - NNPACK is enabled
   - CPU capability usage: AVX2
   - CUDA Runtime 11.0
   - NVCC architecture flags: -gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_75,code=sm_75; -gencode;arch=compute_80,code=compute_80
   - CuDNN 8.1.1  (built against CUDA 11.2)
   - Magma 2.5.2
   - Build settings: BLAS_INFO=open, BUILD_TYPE=Release,  CUDA_VERSION=11.0, CUDNN_VERSION=8.1.1, CXX_COMPILER=/usr/bin/c++, CXX_FLAGS= -Wno-deprecated  -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM  -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type  -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas  -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable  -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow  -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic  -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new  -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format  -Werror=cast-function-type -Wno-stringop-overflow,  FORCE_FALLBACK_CUDA_MPI=1, LAPACK_INFO=open, PERF_WITH_AVX=1,  PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.9.0,  USE_CUDA=1, USE_CUDNN=1, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF,  USE_GLOG=OFF, USE_MKLDNN=OFF, USE_MPI=1, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=1, 
'     



感谢看到这,有帮助的话留个赞吧,不胜感谢!

类似的话题

  • 回答
    用AMD CPU组建深度学习主机?这事儿得这么看!对于很多想要踏入深度学习领域的朋友来说,组建一台专属的训练主机是必不可少的一步。在选择核心组件——CPU时,不少人会将目光投向AMD。那么,AMD的CPU究竟适不适合用来搭建深度学习主机呢?这可不是一个简单的“是”或“否”就能回答的问题,咱们得深入聊.............
  • 回答
    您这个问题触及了 AMD 和 Intel CPU 在物理接口设计上的一个核心差异,也是很多DIY爱好者和普通用户关心的问题。简单来说,AMD 长期以来坚持采用 ZIF 插槽(Zero Insertion Force,零插入力插槽),也就是您说的“针脚放在主板上”,而 Intel 主要采用 LGA 插.............
  • 回答
    这个问题其实非常普遍,很多朋友在购买笔记本时,可能会纠结于AMD和Intel两大阵营,或者在日后想升级设备时,会想到这个问题。简单来说,AMD CPU 的笔记本,通常情况下是不能直接更换为 Intel CPU 的。这背后的原因,我们要从笔记本电脑的硬件设计和兼容性上好好捋一捋。1. 核心的差异:CP.............
  • 回答
    用AMD的CPU搭配NVIDIA的显卡,说实话,这在大部分情况下都不会有什么“后果”,更像是一种常见的、而且性能也很不错的组合。很多人都有这样的配置,而且用得挺顺手的。为什么会出现这种“搭配”?其实,CPU和显卡虽然都是电脑核心部件,但它们各自负责的任务是不同的。 CPU (中央处理器):主要负.............
  • 回答
    2020年,AMD凭借其Zen 2架构的锐龙处理器,在CPU市场可谓是风光无限。尤其是在桌面和笔记本领域,AMD产品的表现让不少消费者眼前一亮,性能的提升、性价比的优势,甚至在某些高端领域AMD一度成为了许多玩家和专业人士的首选。AMD的成功并非偶然,而是其多年技术积累和市场策略调整的必然结果。面对.............
  • 回答
    这个问题问得挺好,也触及了CPU设计的一个核心权衡点。说起来,CPU缓存的设计并非越多越好,它背后是一系列非常复杂的取舍。英特尔和AMD之所以普遍采用三级缓存(L1, L2, L3),而不是四级甚至更多,主要是出于以下几个关键因素的考虑:1. 性能与延迟的平衡: 缓存层级越多,访问延迟越高。 这.............
  • 回答
    苹果公司(Apple)自2006年起从使用PowerPC处理器转向Intel处理器,而在2020年,苹果又开始了自己的CPU研发之路,推出了基于ARM架构的Apple Silicon(M系列芯片)。在这个过程中,AMD公司的CPU产品线几乎从未出现在Mac电脑的主板上。这其中的原因并非单一,而是由一.............
  • 回答
    在深度学习工作站中选择AMD CPU,究竟会不会带来一些“问题”,或者说需要注意的地方,这确实是一个值得深入探讨的话题。与其说“有问题”,不如说是在某些特定场景下,AMD CPU的表现和Intel相比,可能会有一些细微的差异,需要我们提前了解和权衡。首先,我们得承认,AMD在近几年进步神速,其Ryz.............
  • 回答
    问这个问题的朋友,说明你对DIY硬件挺上心的,这非常好!现在不少朋友组装电脑,尤其是追求高性能的朋友,确实会把AMD的CPU列入首选考虑。这背后可不是什么“跟风”,而是AMD这几年推出的产品确实给力,让Intel在中高端市场感受到了不小的压力。咱们就来好好聊聊,为什么AMD现在这么受欢迎,以及它和I.............
  • 回答
    2021 年,AMD 在 CPU 市场上继续发力,其锐龙系列处理器凭借出色的性能和性价比赢得了广泛赞誉。尤其是在高端市场,AMD 已经成功地对英特尔构成了强有力的挑战。面对这样的局面,英特尔要想重新夺回市场主导地位,绝非易事,需要打出一系列组合拳,从产品、技术、市场策略等多个维度进行深度调整。首先,.............
  • 回答
    知乎的各位大佬们大家好!关于AMD 3400G搭配独显后的CPU性能问题,以及在寝室限功率环境下作为过渡方案的详细分析,我来给大家说一说。核心问题:AMD 3400G 搭配独显相当于什么CPU的水平?首先,要明白一点:APU(Accelerated Processing Unit)的CPU部分和独立.............
  • 回答
    AMD 锐龙 CPU 的稳定性问题,这话题在电脑硬件圈里也算是个老生常谈了。要说它“真的那么不稳定”,这个说法有点绝对,但确实,在某些特定时期或者搭配某些特定硬件时,锐龙 CPU 确实出现过一些让用户头疼的稳定性问题。到底是怎么回事?为什么会有这种说法?要理解这个问题,得从几个方面来看:1. 早期.............
  • 回答
    老实说,关于Intel CPU的保值能力,在AMD Ryzen 3000系列出来之后,确实是个值得好好掰扯掰扯的问题。以前Intel在CPU市场一家独大,产品迭代也相对稳健,大家默认“Intel出新品,老型号降价但基本盘稳定”。但Ryzen 3000的出现,一下子给CPU市场带来了不少冲击,情况就有.............
  • 回答
    这问题啊,得一分为二地看,不能一概而论地说AMD就一定比Intel“强很多”。说实话,过去几年AMD的翻身仗打得那叫一个漂亮,尤其是在消费级市场,给Intel带来了巨大的压力。但说“强很多”,这得看你指的是哪个方面,以及你对比的是哪个具体型号。咱们先说说AMD是怎么一步步走到今天这一步的,这背后可是.............
  • 回答
    要回答“超威半导体(AMD)的三代锐龙中央处理器(CPU)哪个最有性价比?”,我们需要深入分析三代锐龙(Zen 2架构)的各个产品线,并结合性能、价格、功耗、应用场景等多个维度进行考量。首先,明确一下“三代锐龙”指的是基于Zen 2架构的锐龙系列CPU,其代表性的产品线包括: 锐龙 3 系列(R.............
  • 回答
    在其他配置相同的情况下,如果执行同样的中等压力任务,Intel Core i5 和 AMD Ryzen R5 笔记本 CPU 通常会比 Ryzen R7 更安静一些。要详细解释这一点,我们需要深入探讨几个关键因素:1. CPU 的功耗与散热 (Power Consumption & Thermal .............
  • 回答
    日本在电子技术领域确实拥有举世瞩目的成就,但谈及个人电脑(PC)的中央处理器(CPU)市场,确实没有出现能与Intel和AMD正面抗衡的日本厂商。这背后有着复杂而深刻的历史、技术、商业和战略原因,并非一句简单的“技术不够”就能概括。历史渊源与市场格局的形成:首先,我们需要理解PC CPU市场是如何走.............
  • 回答
    这篇文章确实提到了一个引起AMD用户普遍担忧的问题:Windows 11更新后,部分AMD处理器的游戏性能出现了明显的下降,据称最高可达15%。许多用户因此感到沮丧,而官方的建议更是火上浇油——暂时不要升级到Windows 11。这无疑让不少AMD玩家陷入了两难境地。究竟是怎么回事?为什么会让AMD.............
  • 回答
    “我们要夺回曾经失去的市场”——AMD 这句话说的可不是一时兴起,这背后透露出的雄心壮志,以及他们这些年默默积蓄的能量,都值得我们好好掰扯一下。首先,得说说 AMD 过去的辉煌。别忘了,AMD 曾经是 CPU 领域能够跟 Intel 分庭抗礼的玩家。尤其是那个 Athlon 64 时代,AMD 的处.............
  • 回答
    这问题问得挺实在的,很多人都疑惑,为什么同样是八核十六线程,英特尔和 AMD 的价格能差出个千八百块来。这可不是随便定价的,这里面道道可多了去了,得一点点掰开了说。首先,得明白一个最根本的点:“同性能”是相对的,而且价格差异不仅仅是性能决定的。 即使是八核十六线程这个规格听起来一样,但它们内部的设计.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有