You need to enable JavaScript to run this app.
E-MapReduce

E-MapReduce

复制全文
mGPU 作业
EMR Serverless 使用 mGPU 资源
复制全文
EMR Serverless 使用 mGPU 资源

mGPU概述

说明

详细说明请参考:mGPU 概述

mGPU 是火山引擎基于内核虚拟化隔离 GPU 并结合自研调度框架提供的容器共享 GPU 方案,通过内核虚拟化技术,实现单张 GPU 显卡的共享,灵活分配算力核心与现存资源并严格隔离。
开启 mGPU 后,队列中的作业可直接指定调用单张 GPU 的部分核心与显存容量,在小模型场景能显著降低使用成本,提升资源利用率。
在EMR Serverless GPU队列上,支持Spark/Ray/CustomJob 三个引擎使用mGPU,您可以在不改动引擎业务代码的情况下使用mGPU,在多个作业/Pod 间共享GPU资源。

使用限制

  • mGPU与GPU互斥,单个队列只能选择开通GPU 或 mGPU队列
  • 一张 GPU 卡上最多可创建 16 个 mGPU Executor/Worker。 计算性能会随 mGPU 的创建数量衰减,建议按照业务要求规划引擎Executor/Worker数量。
  • mGPU设置的最小显存为:256mb,最小core为:5
  • 暂不支持单Pod多GPU卡的情况

mGPU资源开通

在EMR Serverless队列开通界面,选择GPU队列后,您可以选择开启mGPU,创建后队列则使用mGPU进行GPU资源分配。

注:

  • mGPU与GPU 互斥,单个队列只能使用GPU或使用mGPU。
  • mGPU虚拟化本身会占用小部分显存,实际可用显存略低于整卡原生显存。

Image

mGPU资源使用

各类引擎提交作业时,使用 mGPU 资源是可在原有GPU参数上额外加上以下两个参数。

参数key

参数示例

参数含义

emr.serverless.mgpu.core

30

设置单Pod使用的算力,范围为5~99,此时代表使用30%的算力。
最小GPU 算力 为5 且步长为 5,设置为99 则代表用整张卡的99%。

emr.serverless.mgpu.memory

4096

设置单Pod使用的显存,单位为 MiB,此处表示 GPU 显存为4 GiB。

对于引擎来说,引擎感知的GPU还是一整张卡,只是这张“卡”的显存和算力受到了限制。因此,上层引擎业务代码还是可以按照1张卡进行使用。

Spark

Spark可在任务中设置如下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相关参数,代表一个张gpu可以跑10个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'
#mgpu相关参数
'emr.serverless.mgpu.core': '30',
'emr.serverless.mgpu.memory': '4096'

设置后,每个Executor/Driver都会挂载一张GPU卡,但每个Executor/Driver 只会各使用30%的算力和4096mb的显存。同时一个Executor上能并发跑10个task。

Ray

  • 在default计算组,可以设置如下参数:

    # gpu相关参数
    serverless.ray.worker.gpu.vendor=nvidia.com;
    serverless.ray.worker.gpu.amount=1;
    #mgpu相关参数
    emr.serverless.mgpu.core=30;
    emr.serverless.mgpu.memory=4096;
    

    设置后,每个Ray Worker都会挂载一张GPU卡,但每个Worker 只会各使用30%的算力和4096mb的显存。同时能在ray dashborad里看到worker有1张gpu卡的资源:
    Image

  • 在Ray Cluster中,可以通过界面设置Worker所需的mGpu core 和memory
    Image

CustomJob

在default计算组,可以额外设置如下参数.

-- 设置gpu相关参数
set serverless.custom.job.gpu.enabled = true;
set serverless.custom.job.task.gpus=1;
-- 设置mgu相关参数
set emr.serverless.mgpu.core=30;
set emr.serverless.mgpu.memory=1000;

设置后,每个CustomJob的Task会挂载一张gpu卡,并仅使用其30%的算力和1000mb的显存

公共队列mGPU按量计费

GPU计费参考:GPU 加速计算资源

在使用按量GPU资源时,如果使用了mGPU,则会按照使用的比例计算GPU时,具体规则如下:
Pod GPU时 = 1 * (对应显卡的GPU时单位) * (pod申请mGPU所占整张卡的比例)
Pod申请mGPU所占整张卡的比例 = Max(mgpu-core / 100, mgpu-memory / 整卡显存)
例如,客户作业跑了1h,使用一张卡,卡类型为A10,其中mgpu-core = 30,mgpu-memory = 4096,A10 卡对应10gpu时,A10 卡总共可用mGPU显存为:22731mb
Pod GPU时 = 1 * 10 * Max(30 / 100, 4069 / 22731) = 3 GPU时

最近更新时间:2026.02.09 18:26:30
这个页面对您有帮助吗?
有用
有用
无用
无用