You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
E-MapReduce

E-MapReduce

复制全文
下载 pdf
队列高级应用
EMR Serverless GPU 参数说明
复制全文
下载 pdf
EMR Serverless GPU 参数说明

EMR Serverless 产品目前已提供 GPU 算力,您可以在 Serverless 产品的各种类型的任务中申请使用 GPU 算力,目前支持以下三种类型的作业:

  • Serverless Spark
  • Serverless Ray
  • Custom Job

如果您需要使用 GPU 算力,可联系我们协助您开通所需的队列等资源。

说明

当前 GPU 算力功能为邀测功能,如需使用请联系火山引擎支持人员。

独占队列

您可以在创建队列时选择 GPU 队列,并根据您的需要选择相应的 GPU 卡型及 CPU/内存规格的机型。
Image
创建好 GPU 独占队列后,您可以根据以下介绍在 GPU 独占队列的 Default 计算组和 Ray 计算组中使用 GPU 资源。

Default 计算组

Serverless Spark 作业

参数名

是否必填

默认值

说明

spark.driver(或executor, task).resource.gpu.discoveryScript

none

Spark 框架用来获取 GPU 资源数量的脚本,此处配置为固定值
/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh

spark.driver(或executor, task).resource.gpu.vendor

none

GPU 供应商,此处可填nvidia.com

spark.driver(或executor, task).resource.gpu.amount

none

GPU 卡的数量,此值需为整数

ServerlessSpark 控制台提交 Pyspark 作业,详细操作步骤请参考PySpark 作业

def execute_pyspark_task():
    from serverless.client import ServerlessClient
    from serverless.auth import StaticCredentials
    from serverless.task import PySparkTask

    ak = '<此处填写用户实际的 AKFill in the user's actual AK here.>'
    sk = '<此处填写用户实际的 SK>'
    region = 'cn-beijing' #用户需根据实际情况填写
    service = 'emr_serverless'
    endpoint = 'https://emr-serverless.cn-beijing.volcengineapi.com'

    client = ServerlessClient(credentials=StaticCredentials(ak, sk), service=service, region=region, endpoint=endpoint)

    pyscript_resource = 'tos://demo-bucket/path/to/demo.py' #pyspark主程序代码地址
    main_args = []
    task = PySparkTask(name='spark on gpu test',
        script=pyscript_resource,
        args=main_args,
        conf={
            'serverless.spark.access.key': ak,
            'serverless.spark.secret.key': sk,
            ### driver相关参数
            'spark.driver.resource.gpu.discoveryScript': '/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh',
            'spark.driver.resource.gpu.vendor': 'nvidia.com', #GPU vendor
            'spark.driver.resource.gpu.amount': '1', #GPU 卡数量
            ### executor相关参数
            'spark.executor.resource.gpu.discoveryScript': '/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh',
            'spark.executor.resource.gpu.vendor': 'nvidia.com', #GPU vendor
            'spark.executor.resource.gpu.amount': '1', #GPU 卡数量
            ### task相关参数
            'spark.task.resource.gpu.discoveryScript': '/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh',
            'spark.task.resource.gpu.vendor': 'nvidia.com',
            'spark.task.resource.gpu.amount': '0.1'
            }
    )

    job = client.execute(task=task, is_sync=True)

    print('The task executed successfully.')
    print('Tracking ui: %s' % job.get_tracking_url())

if __name__ == "__main__":
    execute_pyspark_task()

说明

若 driver 无需使用 GPU 则可以不配置 driver 相关 GPU 参数。

Serverless Ray 作业

参数名

是否必填

默认值

说明

serverless.ray.worker.gpu.vendor

none

GPU 供应商,此处可填 nvidia.com

serverless.ray.worker.gpu.amount

none

GPU 卡的数量,此值需为整数

在 Serverless Spark 控制台提交 Ray 作业,详细操作步骤请参考Serverless Ray 使用指南

-- Ray任务参数
set las.query.engine.type = RayJob;

set serverless.ray.version = {ray版本};
set serverless.ray.image = emr-serverless-online-cn-shanghai.cr.volces.com/emr-serverless-ray/ray:2.23.0-cu12.2.0-py3.11-ubuntu20.04-neo-1.6.0;
set serverless.ray.head.cpu = 4;
set serverless.ray.head.memory = 16Gi;
set serverless.ray.worker.cpu = 4;
set serverless.ray.worker.memory = 16Gi;
set serverless.ray.worker.replicas = 1;
-- tos文件路径,请根据实际情况修改
set serverless.ray.entrypoint.bundle.path = tos://wbw-dev-sh/cxh/serverless-ray/gpu/demo2.zip;
set serverless.ray.entrypoint.cmd = python /home/ray/workdir/test3.py;

-- 声明使用队列中的GPU资源
--work节点参数
set serverless.ray.worker.gpu.vendor=nvidia.com;
set serverless.ray.worker.gpu.amount=1;

Custom Job 作业

操作样例

set serverless.custom.job.image=emr-vke-qa-cn-beijing.cr.volces.com/emr/custom-job:python312;
set serverless.custom.job.entrypoint=["python", "ziwen/custom_job.py"];
set serverless.emr.access.key=xx;
set serverless.emr.secret.key=xx;
set serverless.tos.mount.path=["tos://test-zmn/ziwen"];
-- 声明使用GPU资源
set serverless.custom.job.gpu.enabled = true;
set serverless.custom.job.task.gpus=1;

Custom Job 同样支持使用 GPU 资源,详细配置方法可参考文档:EMR Serverless Custom Job 使用说明

Ray计算组

您在创建 Ray 计算组时,可为 worker 节点选择挂载本队列内的 GPU 卡:
Image
在 Ray 计算组中提交 Ray 作业时, 您可以在作业中通过以下方式来声明使用 GPU 资源:

  • 通过 ScalingConfig 来声明使用 GPU 资源。

    import torch
    from ray.train import ScalingConfig
    from ray.train.torch import TorchTrainer, get_device
    
    
    def train_func():
        assert torch.cuda.is_available()
    
        device = get_device()
        assert device == torch.device("cuda:0")
    
    trainer = TorchTrainer(
        train_func,
        scaling_config=ScalingConfig(
            num_workers=1,
            use_gpu=True #声明使用GPU卡
        )
    )
    trainer.fit()
    
  • 在 ray task/actor 中通过@ray.remote 装饰器声明使用GPU。

    import ray
    
    ray.init()
    
    @ray.remote(num_gpus=1)
    class GPUActor:
        def say_hello(self):
            print("I live in a pod with GPU access.")
    
    # Request actor placement.
    gpu_actors = [GPUActor.remote() for _ in range(2)]
    # The following command will block until two Ray pods with GPU access are scaled
    # up and the actors are placed.
    ray.get([actor.say_hello.remote() for actor in gpu_actors])
    

更多声明方式请参考 Ray 文档:Using GPUs

公共队列

EMR Serverless 公共队列可提供弹性的 GPU 算力,若您在公共队列执行作业时需要使用 GPU 资源,您可以在公共队列提交 Spark、Ray、CustomJob 类型作业时加上以下参数:

通用参数

参数名

默认值

含义

serverless.public.queue.gpu.enabled

false

是否使用 GPU 资源,若需使用则设置为 true

serverless.public.queue.gpu.pool

none

GPU 资源类型代号

其中 GPU 资源类型代号可选值及详细规格:

代号

GPU 卡型

GPU 显存

GPU 启动版本

A10E1

A10

24GB

535.129.03

T4E1

T4

16GB

535.129.03

注意

若您需要使用上述列表以外的 GPU 资源规格,请工单咨询火山引擎技术人员。

Serverless Spark 作业

ServerlessSpark 控制台提交 Pyspark 作业,详细操作步骤请参考PySpark 作业
代码如下:

def execute_pyspark_task():
    from serverless.client import ServerlessClient
    from serverless.auth import StaticCredentials
    from serverless.task import PySparkTask

    ak = '<此处填写用户实际的 AKFill in the user's actual AK here.>'
    sk = '<此处填写用户实际的 SK>'
    region = 'cn-beijing'
    service = 'emr_serverless'
    endpoint = 'emr-serverless.cn-beijing.volcengineapi.com'

    client = ServerlessClient(credentials=StaticCredentials(ak, sk), service=service, region=region, endpoint=endpoint)

    pyscript_resource = 'tos://demo-bucket/path/to/demo.py' # pyspark主程序代码地址
    main_args = []
    task = PySparkTask(name='spark on gpu test',
        script=pyscript_resource,
        args=main_args,
        conf={
            'serverless.spark.access.key': ak,
            'serverless.spark.secret.key': sk,
            'serverless.public.queue.gpu.enabled': 'true', #设置开启使用GPU资源
            'serverless.public.queue.gpu.pool': 'A10E', #指定需要使用的GPU资源类型代号
            ### driver相关参数
            'spark.driver.resource.gpu.discoveryScript': '/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh',
            'spark.driver.resource.gpu.vendor': 'nvidia.com', #GPU vendor
            'spark.driver.resource.gpu.amount': '1', #GPU 卡数量
            ### executor相关参数
            'spark.executor.resource.gpu.discoveryScript': '/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh',
            'spark.executor.resource.gpu.vendor': 'nvidia.com', #GPU vendor
            'spark.executor.resource.gpu.amount': '1', #GPU 卡数量
            ### task相关参数
            'spark.task.resource.gpu.discoveryScript': '/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh',
            'spark.task.resource.gpu.vendor': 'nvidia.com',
            'spark.task.resource.gpu.amount': '0.1'
            }
    )

    job = client.execute(task=task, is_sync=True)

    print('The task executed successfully.')
    print('Tracking ui: %s' % job.get_tracking_url())

if __name__ == "__main__":
    execute_pyspark_task()

spark 配置参数说明

参数名

是否必填

默认值

说明

spark.driver(或executor, task).resource.gpu.discoveryScript

none

spark框架用来获取gpu资源数量的脚本,此处配置为固定值
/opt/emr/current/spark/examples/src/main/scripts/getGpusResources.sh

spark.driver(或executor, task).resource.gpu.vendor

none

GPU供应商,此处可填nvidia.com

spark.driver(或executor, task).resource.gpu.amount

none

GPU卡的数量,此值需为整数

说明

若 driver 无需使用 GPU 则可以不配置 driver 相关 GPU 参数。

Serverless Ray 作业

在Serverless Spark 控制台提交 Ray 作业,详细操作步骤请参考Serverless Ray 使用指南

-- Ray任务参数
set las.query.engine.type = RayJob;

set serverless.ray.version = {ray版本};
set serverless.ray.image = emr-serverless-online-cn-shanghai.cr.volces.com/emr-serverless-ray/ray:2.23.0-cu12.2.0-py3.11-ubuntu20.04-neo-1.6.0;
set serverless.ray.head.cpu = 4;
set serverless.ray.head.memory = 16Gi;
set serverless.ray.worker.cpu = 4;
set serverless.ray.worker.memory = 16Gi;
set serverless.ray.worker.replicas = 1;
-- tos文件路径
set serverless.ray.entrypoint.bundle.path = tos://wbw-dev-sh/cxh/serverless-ray/gpu/demo2.zip;
set serverless.ray.entrypoint.cmd = python /home/ray/workdir/test3.py;

-- 指定GPU资源
set serverless.public.queue.gpu.enabled=true;
set serverless.public.queue.gpu.pool=A10E;
--work节点参数
set serverless.ray.worker.gpu.vendor=nvidia.com;
set serverless.ray.worker.gpu.amount=1;

Ray 配置参数说明

参数名

是否必填

默认值

说明

serverless.ray.worker.gpu.vendor

none

GPU 供应商,此处可填 nvidia.com

serverless.ray.worker.gpu.amount

none

GPU 卡的数量,此值需为整数

Custom Job 作业

操作样例

set serverless.custom.job.image=emr-vke-qa-cn-beijing.cr.volces.com/emr/custom-job:python312;
set serverless.custom.job.entrypoint=["python", "ziwen/custom_job.py"];
set serverless.emr.access.key=xx;
set serverless.emr.secret.key=xx;
set serverless.tos.mount.path=["tos://test-zmn/ziwen"];

-- 声明使用GPU资源
set serverless.public.queue.gpu.enabled=true;
set serverless.public.queue.gpu.pool=A10E;
set serverless.custom.job.task.gpus=1;

Custom Job 同样支持使用 GPU 资源,详细配置方法可参考文档:EMR Serverless Custom Job 使用说明

最近更新时间:2026.07.07 19:55:35
这个页面对您有帮助吗?
有用
有用
无用
无用