更新时间:2026-09-28 GMT+08:00
分享

使用Ubuntu 20.04系统安装CUDA相关软件(PyTorch+CPU/GPU)

在ModelArts中使用自定义镜像前,需在ECS服务器上以ModelArts官方镜像或第三方镜像为基础编写Dockerfile,构建镜像、推送到容器镜像服务SWR、注册到ModelArts,最后创建Notebook验证。

本文以Ubuntu 20.04系统的ECS为例,介绍安装CUDA相关软件(PyTorch+CPU/GPU)并构建Notebook自定义镜像的完整流程。

前提条件

在使用ModelArts前,需完成华为云账号注册、实名认证及相关权限授权。具体操作,请参见一、前置准备:账号与权限。

计费说明

本操作涉及ECS、SWR和Notebook费用,完成后请及时释放资源以避免持续计费。计费详情请参见ECS计费、SWR计费和Notebook计费。

Notebook自定义镜像规范约束

制作自定义镜像时,基础镜像需满足如下规范:

  • 基于NVIDIA官网、Docker Hub官网等官方开源镜像制作,开源镜像需满足如下操作系统约束:

    X86:Ubuntu 22.04、Ubuntu 20.04

  • CUDA包建议安装12.0及以上版本,本文以ubuntu20.04-cuda12.4版本为例,详情请参见NVIDIA官网。
  • Dockerfile中需包含ma-user相关配置和ipykernel依赖包,否则无法使用Notebook相关功能。

    ma-user是ModelArts Notebook运行时的系统用户,镜像中需预置该用户及目录权限。

  • 如果镜像内存在Jupyter静态文件,可能导致Notebook页面打开异常,请执行jupyter --path命令查看相关目录,并清理列出的目录中的静态文件。
  • 训练调试模式场景:需保证curl命令存在。

自定义镜像构建流程

  1. 准备一台Linux服务器,本文以ECS服务器为例。
  2. 在ECS中构建自定义镜像(本文提供Dockerfile样例文件)。
  3. 将构建的镜像推送到SWR。
  4. 注册SWR镜像到ModelArts。
  5. 创建Notebook并验证新镜像。

步骤一:准备ECS服务器并配置环境信息

在弹性云服务器(ECS)控制台购买一台X86架构的Ubuntu系统服务器,并配置弹性公网IP。

  1. 登录ECS控制台,在“弹性云服务器”页面右上角,单击“购买弹性云服务器”。

    本文以自定义购买为例,“CPU架构”选择“x86计算”,“操作系统”选择Ubuntu 20.04或22.04版本,其他参数按需配置。具体操作,请参见自定义购买ECS。

  2. 通过CloudShell或VNC登录ECS。具体操作,请参见登录Linux ECS。
  3. 在ECS中,执行以下命令,安装Docker并设置开机自启动。
    wget https://cnnorth4-modelarts-sdk.obs.cn-north-4.myhuaweicloud.com/modelarts/custom-image-build/install_docker_on_ubuntu.sh
    bash install_docker_on_ubuntu.sh
    source /etc/profile

    安装完成后,执行以下命令,查看Docker运行状态。

    systemctl status docker

    如果回显中显示“active (running)”,表示Docker正常运行。

    图1 查看Docker运行状态
  4. (可选)执行以下命令,查看Docker Engine版本。
    docker version | grep -A 1 Engine

    如果回显中显示版本号,表示Docker Engine安装成功。

    图2 查看Docker Engine版本

步骤二:制作自定义镜像

本节介绍如何通过Dockerfile安装必需软件包,并构建新的Notebook镜像。

  • 基础安装包:torchvision、torchaudio、ipykernel、numpy。
  • CUDA相关安装包:Miniconda3、CUDA Toolkit。
  1. 查询基础镜像,用于编写Dockerfile文件(第三方镜像可跳过此步骤)。

    获取ModelArts官方镜像地址,请参见ModelArts官方镜像。

  2. 连接容器镜像服务。
    1. 登录容器镜像服务控制台,选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中单击复制登录指令。
      登录指令用于完成Docker客户端与SWR之间的鉴权,后续才能push镜像。
      图3 获取登录指令

      按需选择有效时长。如果需要长期有效的登录指令,请参见获取长期有效登录指令。获取了长期有效的登录指令后,在有效期内的临时登录指令仍然可以使用。

    2. 在安装Docker的服务器中执行上一步复制的登录指令。登录成功会显示“Login Succeeded”。
  3. 编写容器镜像Dockerfile文件。
  4. 构建容器镜像。

    在Dockerfile文件目录中,执行以下命令,构建容器镜像。命令中的SWR镜像地址请按需修改。构建时间取决于网络带宽和镜像大小,大约30分钟。

    docker build -t swr.cn-north-4.myhuaweicloud.com/dev-custom/pytorch2_6-cuda12.4.0:v1 -f Dockerfile .

    如果回显中显示“Successfully built”和“Successfully tagged”,表示镜像构建成功。

    图4 容器镜像构建成功

步骤三:将镜像推送到SWR

  1. 执行以下命令,将本地构建的镜像上传到SWR。
    docker push swr.cn-north-4.myhuaweicloud.com/dev-custom/pytorch2_6-cuda12.4.0:v1

    如果回显中显示“digest”和SHA256哈希值,表示镜像已成功上传到SWR。

    图5 镜像推送成功
  2. 在SWR控制台左侧导航栏,单击“我的镜像”,执行刷新操作后显示新增的镜像,单击镜像名称,可查看镜像详情。

步骤四:在ModelArts注册新镜像

将新镜像注册到ModelArts镜像管理服务中,以便在ModelArts中使用该镜像。具体操作,请参见镜像注册与管理。

镜像源即为步骤三推送到SWR中的镜像。上述安装包均在X86架构镜像下完成,因此架构类型选择X86,类型选择GPU/CPU。

图6 注册镜像

步骤五:创建Notebook并验证新镜像

  1. 创建Notebook实例(请确保当前区域有相应的GPU机器资源)。
    1. 在ModelArts管理控制台左侧导航栏,按需选择以下操作,进入Notebook管理页面。
      • 新版控制台:选择“模型开发与训练 > Notebook”,进入“Notebook”页面。
      • 旧版控制台:选择“开发空间 > Notebook”,进入“Notebook”页面。
    2. 在“Notebook”页面右上角,单击“创建”。

      在“资源配置”区域,实例规格选择GPU/CPU;在“环境配置”区域,选择“自定义镜像”,单击图标,选择步骤四注册的镜像及版本,WebIDE选择JupyterLab。

      关于创建Notebook的参数说明,请参见创建Notebook实例。
      图7 创建Notebook

      当Notebook实例的“状态”显示为“运行中”,表示Notebook实例创建成功。

  2. 在“Notebook”页面,单击操作列的“接入环境”,在“接入方式”对话框,单击JupyterLab接入右侧的“接入”。
  3. 在“ModelArts Launcher”页面的Notebook区域,单击pytorch_2_6,创建一个ipynb文件。
    图8 打开pytorch_2_6
  4. 执行以下命令,导入PyTorch库,查看PyTorch版本号。
    import torch
    print(torch.__version__)

    显示版本如下,表示PyTorch安装成功。

    图9 查看PyTorch版本号
  5. 查看CUDA是否安装成功。
    1. 在左侧目录区域右键,单击“New File”,新建一个脚本文件test.py。
      图10 新建文件
    2. 在test.py文件中输入以下内容。
      import torch
      # 检查 CUDA 是否可用
      print(f"PyTorch version: {torch.__version__}")
      print(f"CUDA available: {torch.cuda.is_available()}")
      if torch.cuda.is_available():
      	print(f"GPU device: {torch.cuda.get_device_name(0)}")
      # 创建张量并转移到 GPU
      x = torch.randn(2, 2).cuda()
      y = torch.randn(2, 2).cuda()
      z = x.mm(y)
      print(z)
    3. 在左侧导航栏,单击图标,选择Terminal。
      图11 打开Terminal
    4. 在Terminal中执行以下命令,运行test.py文件。
      python test.py

      输出结果如下,表示CUDA安装成功。

      图12 CUDA安装成功

相关文档