os.environ["CUDA_VISIBLE_DEVICES"] = "0,1"

os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" 是在 Python 程序中设置环境变量 CUDA_VISIBLE_DEVICES 的一种方式。它用于控制哪些 GPU 设备对当前 Python 进程及其子进程可见。具体来说:

解释:

  • os.environ 是 Python 的一个字典,用于访问和修改环境变量。
  • CUDA_VISIBLE_DEVICES 是一个环境变量,用于指定哪些 GPU 设备可以被 CUDA 应用程序(如 TensorFlow、PyTorch 等)使用。
  • "0,1" 表示只允许使用编号为 0 和 1 的 GPU 设备。

具体含义:

假设你的系统中有多个 GPU 设备(例如 4 块 GPU),它们的编号可能是 0, 1, 2, 3。通过设置 os.environ["CUDA_VISIBLE_DEVICES"] = "0,1",你告诉 CUDA 只能看到编号为 0 和 1 的 GPU,而忽略其他 GPU(即编号为 2 和 3 的 GPU)。

示例代码:

import os

# 设置只使用 GPU 0 和 GPU 1
os.environ["CUDA_VISIBLE_DEVICES"] = "0,1"

# 接下来加载你的深度学习框架(如 TensorFlow 或 PyTorch)
import tensorflow as tf
# 或者
import torch

# 现在,TensorFlow 或 PyTorch 将只会看到编号为 0 和 1 的 GPU

使用场景:

  • 多 GPU 系统:当你有多块 GPU 时,可以通过这个设置来分配不同的 GPU 给不同的任务,避免资源冲突。
  • 资源管理:在多用户环境中,管理员可以使用这个变量来限制用户只能使用特定的 GPU。
  • 调试和测试:在开发过程中,你可以通过改变这个环境变量来测试不同配置下的性能或行为。

注意事项:

  • 全局影响:这个设置会影响当前 Python 进程及其所有子进程。如果你在一个进程中设置了这个环境变量,那么该进程启动的所有子进程也会继承这个设置。
  • 顺序问题:你应该在导入任何依赖 CUDA 的库(如 TensorFlow 或 PyTorch)之前设置这个环境变量,以确保这些库能够正确识别可用的 GPU。
  • 空字符串或负数:如果你想让某个进程只使用 CPU,可以设置 os.environ["CUDA_VISIBLE_DEVICES"] = "" 或者 os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

希望这能帮助你理解 os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" 的作用!如果你有更多问题,请随时提问。


export CUDA_VISIBLE_DEVICES=0,1 是一个环境变量设置命令,通常用于 Linux 或 Unix 系统中。它用于控制哪些 GPU 设备对当前 shell 会话或脚本可见。具体来说:

  • CUDA_VISIBLE_DEVICES 是一个环境变量,用于指定哪些 GPU 设备可以被 CUDA 应用程序(如 TensorFlow、PyTorch 等)使用。
  • 0,1 表示只允许使用编号为 0 和 1 的 GPU 设备。

具体含义:

假设你的系统中有多个 GPU 设备(例如 4 块 GPU),它们的编号可能是 0, 1, 2, 3。通过设置 CUDA_VISIBLE_DEVICES=0,1,你告诉 CUDA 只能看到编号为 0 和 1 的 GPU,而忽略其他 GPU(即编号为 2 和 3 的 GPU)。

示例:

  • 如果你不设置这个环境变量,默认情况下 CUDA 会看到所有的 GPU。
  • 设置 CUDA_VISIBLE_DEVICES=0,1 后,CUDA 应用程序将只会看到这两块 GPU,并且它们在程序中的编号将是 0 和 1(即使它们在系统中的原始编号是 0 和 1)。
  • 如果你设置 CUDA_VISIBLE_DEVICES=2,3,那么 CUDA 应用程序将只会看到编号为 2 和 3 的 GPU,并且在程序中它们的编号将变为 0 和 1。

注意事项:

  • 这个设置只影响当前 shell 会话或启动的应用程序。如果你希望在不同的会话中也生效,可以在 .bashrc.bash_profile 文件中添加该命令。
  • 如果你想让某个进程只使用 CPU,可以设置 CUDA_VISIBLE_DEVICES="" 或者 CUDA_VISIBLE_DEVICES=-1

使用场景:

  • 当你有多块 GPU 时,可以通过这个环境变量来分配不同的 GPU 给不同的任务,避免资源冲突。
  • 在多用户环境中,管理员可以使用这个变量来限制用户只能使用特定的 GPU。

希望这能帮助你理解这个命令的作用!

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐