Windows Powershell에서 python 실행시 환경변수 설정 방법

공대생의 팁 2024. 5. 28. 19:38


Windows 운영체제에서 딥러닝 라이브러리를 학습할 때 2024년 5월 현재 상황에서는 멀티 GPU 학습이 지원되지 않아 단 하나의 GPU에서만 학습을 수행할 수밖에 없습니다. 그나마 Windows 11 이후 WSL을 통해 Linux 환경에서 학습을 수행할 수 있게 되면서 Windows 운영체제에서 멀티 GPU 학습을 할 수 있는 방법이 생겼습니다.


 그러나, Linux 환경에서 단지 한 줄 터미널에 입력하여 실행할 수 있는 명령어들이 Windows에서는 그대로 사용할 수 없어 안타까운 상황들이 아직까지도 종종 있습니다. 예를 들어, 여러대의 GPU가 설치된 PC에서 특정 GPU만 사용하여 학습을 수행할 때 Linux 환경에서는 Terminal에서 아래와 같이 명령어를 입력하면 됩니다.

 

CUDA_VISIBLE_DEVICES=1 python main.py


 그렇다면, Windows에서 위와 같은 기능으로 학습을 수행하려면 어떻게 해야할까요?  Windows에서 특정 GPU에서 학습을 수행하고자 할 때 여러가지 방법이 있는데 첫 번째는 실행하고자 하는 Python 소스코드를 직접 수정하는 것입니다.

 

import os
os.environ['CUDA_DEVICE_ORDER'] = 'PCI_BUS_ID'
os.environ['CUDA_VISIBLE_DEVICES'] = '1'


소스코드에서 직접 설정해서 수행할 수 있어 특정 소스코드를 명시적으로 실행할 수 있으나, 이 경우 소스코드를 직접 수정해야 하는 번거로움이 있습니다.


 다른 방법으로는 학습하고자 하는 명령어를 여러 번 사용하는 경우 Shellscript를 작성하여 필요할 때 마다 Powershell에서 해당 Shell을 수행하는 방법이 있습니다.
예를 들어 아래와 같이 Shell을 작성합니다.


exec_train.ps1

$env:CUDA_VISIBLE_DEVICES = "1"
python main.py

 

 생성된 ShsellScript를 Powershell에서 다음과 같이 실행합니다.

> ./exec_train.ps1

 

위에서 설명드린 방법대로 수행하신다면 Windows 환경에서 멀티GPU를 개별로 다룰 수 있습니다.

300x250