人工智能领域已显着扩张,但也变得越来越分散。 如今,每个商业项目都有自己的网站、应用程序和不和谐机器人。 我们已经达到了这样的程度:在自己的硬件上进行测试通常可以简化流程。 与此同时,依赖“云”可能会很麻烦且成本高昂,特别是如果您计划定期运行或训练模型。在这篇文章中,我将解释我的硬件选择、软件注意事项,并给出一些一般性建议,这些建议使我不仅可以进行人工智能实验,还可以充分利用我的家庭实验室。硬件选择2023 年,硬件价格仍然很高。虽然二手或翻新市场上有一些交易,但我建议谨慎行事。例如,我会犹豫是否要从这些市场购买电源或 RAM 等组件。鉴于我住在法国/欧洲,这些特定物品的新组件和二手组件之间的成本差异很小,因此节省成本几乎不合理。尽管如此,您应该探索当地市场的机箱和主板等组件(特别是如果它们已退役或被公司替换)。 另外,考虑一下 CPU,这些组件通常不会短缺。由于它们不会经常移动,因此收到损坏的可能性很小。选择正确的硬件“正确”硬件的构成因人而异。然而,当谈到人工智能工作负载,尤其是训练时,有几个关键因素需要考虑:机箱为了适合您需要的所有硬件,您至少需要一个 ATX 兼容机箱,或者如果您已经拥有一些服务器级设备,请选择 4U 服务器。对于我的家庭实验室,我选择了 Define R5,以便不仅适合 GPU,还适合 nas 的许多硬盘。CPU对于 CPU 来说,主要问题是 PCIe 通道,您不需要大量核心来处理 ML 工作负载,但您肯定需要分配给 NVME 驱动器、网卡、GPU 的通道之间的通道,因此很难找到消费者 可以处理一切的等级主板和CPU。如果您从头开始设置,第二代 Threadripper 是一个值得注意的选择。我选择了 AMD Ryzen 5950x。母板您的 CPU 选择本质上会影响您的主板选项。这就是为什么我之前为那些寻求最大 PCIe 通道的人强调了第二代 Threadripper。必须认识到 20 条车道可能会受到限制,并且您并不总是能够根据需要灵活地分配这些车道。上表显示了消费级硬件上吞吐量的差异。 就我而言,我要么使用 Gen4x16 作为 GPU 所在的第一个插槽,要么使用双 Gen4x8(如果有两个 GPU)。如果您只考虑吞吐量,Gen4x8 与 Gen3x16“相同”,许多人仍在将 Gen3x16 用于游戏目的,但如果您需要大量并行化,则可能会遇到一些瓶颈。根据您的主板,您可能还拥有一些功能,例如 10G NIC、Thunderbolt 和更好的软件支持(稍后将在软件部分详细介绍)。我选择了ASRock X570 Taichi,它对虚拟化有相当强大的支持,并且在 PCIe 通道的分配方式上具有良好的平衡。图形处理器选择 GPU 的第一步应该是阅读 Tim Dettmers 的这篇优秀文章GPU 选择中最困难的部分实际上是在建议零售价中找到一个,更不用说两个或更多,除非您是隶属于 Nvidia Inception Program 的组织或初创公司。作为视觉注释,我想提醒您,RTX 4090 体积庞大,12VHPWR 连接器不应弯曲成极端角度到目前为止,我只提到了 NVIDIA,那是因为 ROCm 和 oneAPI 还有很长的路要走,而像 George Hotz 这样的其他人正在试图让 AMD 参与 MLPerf。虽然消费者看到这样的竞争是有希望的,但那些从事严肃工作的人应该优先考虑可用的最稳定的硬件,当然,除非你的爱好/工作围绕着修补驱动程序和软件集成。其他组件其他组件也应仔细选择,以下是一个不详尽的列表:lRAM:AMD 允许使用 ECC RAM,这非常适合始终在线的服务器,请检查您的主板 QVL 和论坛以获取更多信息l风扇:高品质风扇可以显着降低噪音,同时提供增强的静压。l导热膏:正确的导热膏可以帮助将系统温度降低几个关键的度数M.2 NVME:我为 Proxmox 分配了第一个驱动器(涵盖主操作系统、备份和其他虚拟机)。我专门为 AI VM 提供了一个更大的第二个驱动器。值得注意的是,添加多个 M.2 驱动器可能会禁用或降低某些 PCIe 插槽的速度l硬盘:由于我还将服务器用于 NAS 目的,因此我集成了 Seagate Exos 硬盘。它们以可靠性而闻名,尽管在密集的写入操作期间它们可能会有点吵噪音、热量和功耗每个人的噪音承受能力各不相同,但我想很多人都会同意:在机器学习工作负载期间,风扇全速运转绝对令人不愉快。 如果可能,请将服务器迁移到单独的空间,例如通风良好的壁橱或杂物间。对于功耗,我有一个 Eve Energy 智能插头,考虑到当前的电价,我的系统在闲置负载下平均每天约 1 千瓦时。软件注意事项就软件而言,个人要求和偏好差异很大。 但是,如果您运行的是多用途服务器,那么选择模块化生态系统非常有利。 这将使您能够灵活地轻松启动、修改和备份您的服务和应用程序。 就我而言,我选择了名为 Proxmox 的 T1 Hypervisor。T1 虚拟机管理程序类型 1 虚拟机管理程序(也称为裸机虚拟机管理程序)在主机上运行,鉴于您的服务在各个虚拟机内保持隔离,这种方法可以提高性能和安全性。Proxmox 虚拟环境(PVE)是一个开源服务器管理平台,在家庭实验室社区中非常流行。其强大的用户群提供了丰富的文档,Proxmox 的标准版本提供了远程虚拟机管理所需的所有基本功能。GPU直通虽然我使用 Proxmox 来传递各种设备,但在深入设置之前必须记住以下几点:设置BIOS。
正如我在硬件方面提到的,并非所有主板都适合 Proxmox 设置,您需要良好的 IOMMU 组,甚至同一品牌的两个主板之间的情况也有所不同。作为一般规则,您应该获得可用的最高层芯片组(例如 X570 或 X670e)或查看有关此主题的论坛以找到合适的主板以下是我已启用或禁用的选项列表:l获取最新的 Proxmox VE 8 ISOl阅读文档,尤其是“准备安装介质”部分。我在安装后遇到了几次安装失败的情况,因为 USB 密钥已损坏,或者因为我使用 Etcher 而不是“dd”,请毫不犹豫地尝试其他 USB 密钥。
l更新 Proxmox,如果需要,请使用干净的脚本l检查 PCIe 设备l检查IOMMU是否激活l检查 IOMMU 组如果您的 GPU 位于它自己的组中(及其音频设备),那么您就可以继续l阅读有关 GPU 直通的文档。剩下的步骤不多了,其中包括将 vfio 添加到 /etc/modules、更新 initramfs、将主机上的 nouveau/nvidia 列入黑名单l获取 Ubuntu Server 并将其添加到模板文件夹中l使用以下主要设置创建您的第一个虚拟机注意:首次启动时不要传递任何 GPU 并正确配置虚拟机(还要确保禁用安全启动)驱动程序:CUDA、CudNN目前 CUDA 最兼容的版本是 11.8,因为 TensorFlow 和大多数项目都没有考虑到 CUDA 12+ 编写。以下是您需要开始使用的两个链接:lCUDA 工具包 11.8 https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_networkl用于 CUDA 11.8 的 CudNN https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html如果您的项目需要使用多个 CUDA 版本进行更多隔离,您应该查看 NVIDIA NGC,这是一个适用于深度学习等多种用例的容器化应用程序存储库。Python、Venv 和 Autoenv一旦一切都在虚拟机上启动并运行,您应该将每个项目与其自己的依赖项隔离开来。 就我个人而言,我使用以下工作流程:l使用 pyenv 安装 python 版本l为给定项目创建 venvl在文件夹内克隆/创建存储库l添加 Autoenv 文件,如果您不熟悉 Autoenv,这里有一个简要概述:一个目录包含一个 .env 文件,当你 cd 进入它时,它会自动执行。启用后(将 AUTOENV_ENABLE_LEAVE 设置为非空字符串),如果目录包含 .env.leave 文件,那么当您离开它时,它将自动执行。这是我方便的 .env 和 .env.leave 脚本以及它在终端中的外观图像远程访问虽然您可以像我在上一篇文章中展示的那样明确部署 Cloudflare 隧道,但我决定使用 Tailscale 和“允许本地网络访问”选项,以便在我的所有设备上使用 192.168.X.XURL,而无需费心放置更多网络基础设施 背后有什么。
结论在我的人工智能之旅中,我注意到我经常在应用程序/项目之间切换,而不是真正地参与其中。感觉好像我没有按照自己的方式进行实验。这种认识促使我创建了自己的 AI Homelab,它也可以兼作 NAS。围绕正确的硬件和最大化软件实用性的初始决策可能很复杂,这是受到预算、个人喜好以及对噪音和热量的容忍度等因素的影响。 尽管如此,在真正属于您的机器上进行实验会带来独特的满足感。
0 评论