@@ -10,7 +10,6 @@ from fastNLP.envs.env import ( | |||||
FASTNLP_DISTRIBUTED_CHECK, | FASTNLP_DISTRIBUTED_CHECK, | ||||
FASTNLP_LOG_LEVEL, | FASTNLP_LOG_LEVEL, | ||||
FASTNLP_GLOBAL_SEED, | FASTNLP_GLOBAL_SEED, | ||||
USER_CUDA_VISIBLE_DEVICES, | |||||
) | ) | ||||
from .utils import ( | from .utils import ( | ||||
find_free_ports, | find_free_ports, | ||||
@@ -42,7 +42,8 @@ def initialize_paddle_driver(driver: str, device: Optional[Union[str, int, List[ | |||||
user_visible_devices = os.getenv("USER_CUDA_VISIBLE_DEVICES") | user_visible_devices = os.getenv("USER_CUDA_VISIBLE_DEVICES") | ||||
if user_visible_devices is None: | if user_visible_devices is None: | ||||
raise RuntimeError("This situation cannot happen, please report a bug to us.") | |||||
raise RuntimeError("`USER_CUDA_VISIBLE_DEVICES` cannot be None, please check if you have set " | |||||
"`FASTNLP_BACKEND` to 'paddle' before using FastNLP.") | |||||
_could_use_device_num = len(user_visible_devices.split(",")) | _could_use_device_num = len(user_visible_devices.split(",")) | ||||
if isinstance(device, int): | if isinstance(device, int): | ||||
if device < 0 and device != -1: | if device < 0 and device != -1: | ||||
@@ -39,6 +39,9 @@ class PaddleSingleDriver(PaddleDriver): | |||||
raise ValueError("`paddle.DataParallel` is not supported in `PaddleSingleDriver`") | raise ValueError("`paddle.DataParallel` is not supported in `PaddleSingleDriver`") | ||||
cuda_visible_devices = os.environ.get(USER_CUDA_VISIBLE_DEVICES, None) | cuda_visible_devices = os.environ.get(USER_CUDA_VISIBLE_DEVICES, None) | ||||
if cuda_visible_devices is None: | |||||
raise RuntimeError("`USER_CUDA_VISIBLE_DEVICES` cannot be None, please check if you have set " | |||||
"`FASTNLP_BACKEND` to 'paddle' before using FastNLP.") | |||||
if cuda_visible_devices == "": | if cuda_visible_devices == "": | ||||
device = "cpu" | device = "cpu" | ||||
logger.info("You have set `CUDA_VISIBLE_DEVICES` to '' in system environment variable, and we are gonna to" | logger.info("You have set `CUDA_VISIBLE_DEVICES` to '' in system environment variable, and we are gonna to" | ||||
@@ -54,7 +57,7 @@ class PaddleSingleDriver(PaddleDriver): | |||||
device_id = device | device_id = device | ||||
else: | else: | ||||
device_id = get_paddle_device_id(device) | device_id = get_paddle_device_id(device) | ||||
os.environ["CUDA_VISIBLE_DEVICES"] = os.environ[USER_CUDA_VISIBLE_DEVICES].split(",")[device_id] | |||||
os.environ["CUDA_VISIBLE_DEVICES"] = cuda_visible_devices.split(",")[device_id] | |||||
self.model_device = get_paddle_gpu_str(device) | self.model_device = get_paddle_gpu_str(device) | ||||
self.local_rank = 0 | self.local_rank = 0 | ||||
@@ -37,8 +37,8 @@ def get_device_from_visible(device: Union[str, int], output_type=int): | |||||
cuda_visible_devices = os.getenv("CUDA_VISIBLE_DEVICES") | cuda_visible_devices = os.getenv("CUDA_VISIBLE_DEVICES") | ||||
user_visible_devices = os.getenv(USER_CUDA_VISIBLE_DEVICES) | user_visible_devices = os.getenv(USER_CUDA_VISIBLE_DEVICES) | ||||
if user_visible_devices is None: | if user_visible_devices is None: | ||||
raise RuntimeError("`USER_CUDA_VISIBLE_DEVICES` is None, please check if you have set " | |||||
"`FASTNLP_BACKEND` to 'paddle' before 'import fastNLP'.") | |||||
raise RuntimeError("`USER_CUDA_VISIBLE_DEVICES` cannot be None, please check if you have set " | |||||
"`FASTNLP_BACKEND` to 'paddle' before using FastNLP.") | |||||
idx = get_paddle_device_id(device) | idx = get_paddle_device_id(device) | ||||
# 利用 USER_CUDA_VISIBLDE_DEVICES 获取用户期望的设备 | # 利用 USER_CUDA_VISIBLDE_DEVICES 获取用户期望的设备 | ||||
if user_visible_devices is None: | if user_visible_devices is None: | ||||