You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置device_map使模型在指定的两个GPU设备上运行?

多GPU指定分配配置方法

如果只能使用服务器上的两个GPU,有两种常用配置方式:

方式一:环境变量限制可见GPU + 自动分配(推荐)

先通过环境变量指定程序能访问的GPU,再让transformers自动把模型拆分到这两个GPU上,操作最简单且无需了解模型结构:

import os
# 替换成你有权限使用的两个GPU编号,比如要用到cuda:2和cuda:3就写"2,3"
os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"

from transformers import AutoTokenizer, AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",  # 自动将模型层均衡分配到可见的两个GPU上
)

设置CUDA_VISIBLE_DEVICES后,程序会把指定的GPU识别为0和1号,device_map="auto"会自动拆分模型权重到这两个GPU上,充分利用显存资源。

方式二:手动指定层的GPU分配(精细控制)

如果不需要修改环境变量,可以手动给模型的不同层分配目标GPU,适合需要精准控制层位置的场景:

from transformers import AutoTokenizer, AutoModelForCausalLM

# 根据模型实际层结构,指定各层对应的GPU(可通过print(model)查看层命名)
device_map = {
    "transformer.h.0": "cuda:2",
    "transformer.h.1": "cuda:2",
    "transformer.h.2": "cuda:3",
    "transformer.h.3": "cuda:3",
    "transformer.ln_f": "cuda:3",
    "lm_head": "cuda:3"
}

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map=device_map,
)

内容的提问来源于stack exchange,提问作者ssamtkwon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 00:58:15