文档

GPU作业开发

更新时间:

本文介绍Lindorm计算引擎GPU作业开发的详细步骤。

前提条件

已开通Lindorm计算引擎。具体操作,请参见开通与变配

GPU作业开发流程

  1. 开发并上传作业

  2. 打包并上传CUDA运行环境

  3. 提交GPU作业

步骤一:开发并上传作业

  1. 编写基于CUDA访问GPU的示例程序。

import torch
import numpy as np
from pyspark.sql import SparkSession

def check_executor_gpu_env(records):
    #将数据转化为torch类型
    data = torch.from_numpy(np.array(records)) 
    try:
        if torch.cuda.is_available():
            device = torch.device("cuda")
        else:
            raise Exception('CUDA is not available in executor')
        #将数据写入GPU
        on_gpu = data.to(device) 
        print("gpu device -- {}, sum of data -- {}".format(on_gpu.device, torch.sum(on_gpu)))
    except Exception as e:
        print(e)

if __name__ == "__main__":
    if torch.cuda.is_available():
        print('CUDA is available in driver')
    else:
        print('CUDA is not available in driver')
    spark = SparkSession.builder.appName("TEST_GPU_ENV").getOrCreate()
    rdd = spark.sparkContext.parallelize(range(100), 1)
    rdd.foreachPartition(check_executor_gpu_env)
    spark.stop()
  1. 将示例程序上传至HDFS。具体操作,请参见通过控制台上传文件

步骤二:打包并上传CUDA运行环境

打包项目依赖的Python环境和第三方类库。推荐使用Conda或Virtualenv将依赖类库打包为tar包,此处以Conda为例。

  1. 在Linux环境中创建3.7~3.10版本的Python环境,本文以3.10.10版本为例。

conda create --name gpu_env python=3.10.10
conda activate gpu_env
  1. 安装GPU相关的依赖包。

conda install pytorch=1.11.0 cudatoolkit=11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
conda install cudnn
conda install numpy
  1. 打包Conda环境,并命名为gpu_env.tar.gz

conda install conda-pack=0.7.0 -c conda-forge
conda-pack -f -o gpu_env.tar.gz
  1. gpu_env.tar.gz上传至HDFS 。具体操作,请参见通过控制台上传文件

如果您想通过Virtualenv打包项目依赖,请参见Python Package Management

步骤三:提交GPU作业

Lindorm计算引擎支持以下两种方式提交并管理作业。

提交作业时,请配置与GPU相关的Spark参数:

参数

是否必填

说明

示例值

spark.kubernetes.{driver/executor}.annotation.k8s.aliyun.com/eci-use-specs

指定GPU的规格与型号。规格列表的详细信息,请参见GPU实例规格

ecs.gn7i-c8g1.2xlarge

spark.{driver/executor}.resource.gpu.vendor

指定GPU的生产厂商。

说明

该参数需要与指定的GPU规格与型号对应。

nvidia.com

spark.{driver/executor}.resource.gpu.amount

GPU个数。

说明

GPU个数固定为1。

1

spark.{driver/executor}.resource.gpu.discoveryScript

脚本文件所在的路径。

说明

在启动Spark driver/executor时会使用该脚本查询并绑定GPU资源,且脚本文件所在的路径固定为/opt/spark/examples/src/main/scripts/getGpusResources.sh

/opt/spark/examples/src/main/scripts/getGpusResources.sh

  • 本页导读 (1)
文档反馈