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

如何进一步简化CUDA_VISIBLE_DEVICES使用?求更优雅的别名替代方案

简化CUDA_VISIBLE_DEVICES使用的几种优雅方法

1. 动态GPU选择bash函数

直接在.bashrc中定义函数,既支持自动选空闲GPU,也支持手动指定编号,彻底替代硬编码别名:

# 用法:gpu [GPU数量 | GPU编号列表]
# 示例:gpu 2 → 自动选取2个利用率最低的空闲GPU
# 示例:gpu 0,3 → 固定使用GPU 0和3
gpu() {
    if [[ $# -eq 0 ]]; then
        echo "用法:gpu [GPU数量 | GPU编号列表]"
        return 1
    fi

    if [[ $1 =~ ^[0-9]+$ ]]; then
        # 自动筛选N个空闲GPU(基于nvidia-smi的利用率排序)
        local gpu_ids=$(nvidia-smi --query-gpu=index,utilization.gpu --format=csv,noheader,nounits | sort -n -k2 | head -n $1 | awk '{print $1}' | paste -sd "," -)
        export CUDA_VISIBLE_DEVICES=$gpu_ids
        echo "已设置CUDA_VISIBLE_DEVICES=$gpu_ids"
    else
        # 手动指定GPU编号
        export CUDA_VISIBLE_DEVICES=$1
        echo "已设置CUDA_VISIBLE_DEVICES=$1"
    fi
}

保存后执行source ~/.bashrc生效,后续直接用gpu 2或gpu 1,3即可快速设置。

2. 临时启动命令前缀

如果不想修改全局环境变量,可写一个前缀函数,直接在训练命令前指定GPU:

# 用法:g [GPU编号] 你的训练命令
# 示例:g 0,1 python train.py
g() {
    local gpus=${1:?请指定GPU编号,例如g 0,1}
    shift
    CUDA_VISIBLE_DEVICES=$gpus "$@"
}

每次启动训练时直接用g 0,1 python train.py,用完不影响全局环境变量。

3. 交互式可视化选择

先安装gpustat(pip install gpustat),再写一个交互式函数,看状态后再选GPU:

gpu_select() {
    gpustat
    read -p "请输入要使用的GPU编号(逗号分隔):" gpus
    export CUDA_VISIBLE_DEVICES=$gpus
    echo "已设置CUDA_VISIBLE_DEVICES=$gpus"
}

执行gpu_select会先展示所有GPU的负载、显存使用情况,输入编号后自动完成设置,适合不确定空闲GPU的场景。

4. 可维护的预设组合

如果有固定常用的GPU组合,用数组存储比硬编码别名更易维护:

# 预设常用GPU组合
declare -A GPU_SETS=(
    ["single"]="4"
    ["double"]="2,5"
    ["triple"]="2,5,6"
    ["quad"]="0,4,6,7"
)

# 用法:gpu_set quad
gpu_set() {
    local set_name=$1
    if [[ -z ${GPU_SETS[$set_name]} ]]; then
        echo "可用组合:${!GPU_SETS[@]}"
        return 1
    fi
    export CUDA_VISIBLE_DEVICES=${GPU_SETS[$set_name]}
    echo "已设置CUDA_VISIBLE_DEVICES=${GPU_SETS[$set_name]}"
}

后续用gpu_set quad就能快速切换到预设的4卡组合,要修改组合只需更新GPU_SETS数组即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:35:19