在 AMD GPU 上创建 PyTorch/TensorFlow 代码环境

最初发布时间:
最后更新时间:
Yao Fehlis's avatar
Yao Fehlis
通讯作者
Rajat Arora's avatar
Rajat Arora
审稿人
Justin Chang's avatar
Justin Chang
审稿人
Austin Ellis's avatar
Austin Ellis
审稿人

目标:机器学习生态系统正在迅速爆炸式发展,我们的目标是通过这一系列机器学习博文,让迁移到 AMD GPU 变得简单。

受众:数据科学家和机器学习从业者,以及在 AMD GPU 上使用 PyTorch/TensorFlow 的软件工程师。您可以是机器学习新手,也可以是经验丰富的 Nvidia GPU 用户。

动机:因为在开始一个新的机器学习项目时,您可能会注意到 GitHub 上许多现有代码几乎总是基于 CUDA。如果您拥有 AMD GPU 并按照说明运行代码,通常是行不通的。我们根据我们的经验,提供可以帮助您为实验创建代码环境并管理 AMD GPU 上的 CUDA 代码库的步骤。

与现有在线资源的区别

  • 这是从机器学习从业者的角度出发,引导您避开因习惯和偏好(例如使用 Jupyter Notebooks 和 pip install)而导致的弯路。

  • 不是为了教您如何在 ROCm 上安装 PyTorch/TensorFlow,因为仅此一步通常不足以成功运行机器学习代码。

  • 不是为了教您如何 HIP 化代码,而是让您知道有时您甚至不需要这一步。

  • 截至今天,这是互联网上唯一一份关于如何在 AMD GPU 上创建 PyTorch/TensorFlow 代码环境的端到端说明文档。

前提条件是已安装 ROCm,请参阅此处此处的说明。

在 ROCm 上安装 PyTorch 或 TensorFlow

选项 1. PyTorch

我们建议遵循官方 ROCm PyTorch 网站上的说明。

选项 2. TensorFlow

我们建议遵循官方 ROCm TensorFlow 网站上的说明。

注意:我们还强烈建议使用预装了 PyTorch 或 TensorFlow 的 Docker 镜像。原因是,如果您创建虚拟环境或 conda 环境,某些 ROCm 依赖项可能无法正确安装。安装依赖项可能非常棘手。

注意:您不需要使用 —gpus all 标志来使 Docker 在 AMD GPU 上运行。

Git 克隆要运行的源代码

终端窗口
git clone –-recursive <https://github.com/project/repo.git>

根据 GitHub 存储库安装库需求

  • 跳过创建虚拟环境或 conda 环境的命令。它们通常位于 machine_install.shsetup.sh 文件中。

  • 直接转到库列表,并删除 torchtensorflow,因为它们默认是基于 CUDA 的。Docker 容器应已为 ROCm 安装了这些库。您通常可以在 requirements.txt 中找到库列表。

  • 运行 pip3 install –r requirements.txt,其中 requirements.txt 包含每行一个软件包名称(可能还有版本号)。

运行您的代码

如果您的代码能够顺利运行,那么您已成功在 AMD GPU 上创建了代码环境!

如果不能,则可能是 requirements.txt 中的附加软件包依赖于 CUDA,这些软件包需要 HIP 化才能在 AMD GPU 上运行。

获取 HIP 化后的库源代码

选项 1. 查找现有的 HIP 化库源代码

您只需在线搜索或在 GitHub 上搜索“library_name” + “ROCm”。如果存在 HIP 化代码,它就会出现。

由于此步骤并非易事,因此此处提供一个示例

如果您尝试运行与大型语言模型相关的代码,您可能需要 bitsandbytes 库(请参见链接)。

在线搜索“bitsandbytes ROCm”,您会找到这个分支,它通过 HIP 编译目标增加了 ROCm 支持。

终端窗口
git clone https://github.com/agrocylo/bitsandbytes-rocm
cd bitsandbytes-rocm
export ROCM_HOME=/opt/rocm/
make hip -j
python3 setup.py install

注意:安装位置可能包含版本号,例如 /opt/rocm-5.5.0

选项 2. 必要时 HIP 化代码

对于此选项,我们建议遵循以下教程。

将更改提交到 Docker 镜像

完成修改新的 Docker 容器(按照“在 ROCm 上安装 PyTorch 或 TensorFlow”第一步)后,退出。

终端窗口
exit

提示系统显示已启动的容器列表,并找到 Docker 容器 ID。

终端窗口
docker ps -a

通过提交更改来创建一个新镜像。

终端窗口
docker commit [CONTAINER_ID] [new_image_name]

总之,本文介绍了在 AMD GPU 上创建 PyTorch/TensorFlow 代码环境的关键步骤。ROCm 是一个不断成熟的生态系统,未来将有更多 GitHub 代码包含 ROCm/HIP 化后的端口。AMD Lab Notes 将在后续帖子中讨论从 CUDA 到 HIP 移植的具体细节,以及有关运行 HuggingFace 上流行社区模型的指南。

Yao Fehlis's avatar

Yao Fehlis

通讯作者
Yao Fehlis 是 AMD 研究与高级开发部门的技术员工 (MTS),她的工作重点包括科学 AI、制造 AI 和大型语言模型。在科学 AI 领域,她与学术界合作,通过机器学习来增强传统的 HPC 应用,以加速科学发现。在制造 AI 领域,她与产品团队合作,利用机器学习来揭示 AMD 设计中的最优参数和配置。在加入 AMD 之前,她曾担任 KUKA Robotics 的数据科学家,负责领导工业 KUKA 机器人的预测性维护项目,并参与了诸如教会机器人抓取物体等深度学习项目。她拥有莱斯大学计算化学博士学位。
Rajat Arora's avatar

Rajat Arora

审稿人
Rajat Arora 是 AMD 数据中心 GPU 软件解决方案部门的高级技术人员 (SMTS) 软件系统设计工程师,他致力于为 AMD GPU 移植和优化高性能计算应用程序。他获得了卡内基梅隆大学计算力学博士学位。他的博士研究集中在高​​性能科学计算、数值分析和材料科学的交叉领域。最近,他的研究兴趣已扩展到包括物理信息机器学习模型的开发以及加速科学发现和工程设计的工具。
Justin Chang's avatar

Justin Chang

审稿人
Justin Chang 是 AMD 数据中心 GPU 软件解决方案部门的高级技术人员 (SMTS) 软件系统设计工程师,负责管理 AMD lab notes 博文系列。他获得了休斯顿大学土木工程博士学位,并发表了多篇关于多孔介质传输的结构保持高性能计算方法的期刊论文。作为博士后,他曾在莱斯大学和美国国家可再生能源实验室工作,以加速电动汽车所用双孔隙多孔介质和锂离子电池的地下流体模拟时间。他还曾在石油和天然气行业工作,专注于关键 FWI、RTM 和其他地震成像工作负载的 GPU 移植和优化。
Austin Ellis's avatar

Austin Ellis

审稿人
Austin Ellis 是 AMD 的技术员工 (MTS),也是劳伦斯·利弗莫尔国家实验室的现场 APU 应用架构师,协助部署 AMD 的下一代超级计算机 El Capitan。他专注于高性能计算、机器学习、GPU 计算、可扩展算法和数据分析。此前,他曾在橡树岭国家实验室 (OLCF) 的“大规模分析与 AI 方法”小组担任 HPC 研究科学家。在 OLCF 工作期间,他参与了 HPL-MxP 团队,该团队目前是全球第一台 Exascale 超级计算机 Frontier(由 AMD 硬件驱动)上进行有史以来最快计算(9.951 ExaOps)的世界纪录保持者。

相关新闻和技术文章

© . This site is unofficial and not affiliated with AMD.