[TroubleShooting] Colab gpu 연결 확인과 argparser 설정

리쫑·2023년 1월 6일

TroubleShooting

목록 보기
2/2
Colab argparser

📙이번 글 소개

  • 이번 글에서는 Colab에서 gpu가 제대로 연결 되었는지 확인하는 것과 argparser를 어떻게 입력 받아야하는지에 대한 내용입니다.😁

📙Colab GPU 설정

  • 우선, Colab의 런타임으로 GPU를 할당하려면 왼쪽 위 목록에서 런타임 -> 런타임 유형 변경 -> 하드웨어 가속기 (GPU) 이렇게 설정하고 저장하면 됩니다.
  • 처음 Colab을 켰을 땐 하드웨어 가속기에 None이라고 되어있습니다.

📗GPU 할당 하기

📘GPU 할당 전

사용 가능한 device 목록 확인

# 런타임 유형 None 일때
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 9239564788581612017
 xla_global_id: -1]

Tensorflow에 할당된 GPU 목록 확인

# tensorflow에 할당된 GPU 목록 확인
import tensorflow as tf
tf.config.list_physical_devices('GPU')
[]

📘GPU 할당 후

# 런타임 유형 None 일때
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 18301612857726933975
 xla_global_id: -1, name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 14415560704
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 5233574171229353908
 physical_device_desc: "device: 0, name: Tesla T4, pci bus id: 0000:00:04.0, compute capability: 7.5"
 xla_global_id: 416903419]

GPU가 여러개 일때 원하는 GPU 할당

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

Tensorflow에 할당된 GPU 목록 확인

# tensorflow에 할당된 GPU 목록 확인
import tensorflow as tf
tf.config.list_physical_devices('GPU')
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

📙Colab arparser 설정

  • 강화학습 프로젝트를 진행하며 제 컴퓨터에서는 cmd창의 argparserargparser의 인자를 넣어주며 모델을 훈련시켰는데, Colab에서는 어떻게 진행해야 할지 난감했습니다.
  • 그래서 찾아본 결과 esaydictesaydict를 통해 argparserargparser인자를 받아서 해결할 수 있었습니다.

기존의 main.py 코드

import os
import sys
import logging
import argparse
import utils
import json
import data_preprocess 
from environment import Environment
from agent import A3CAgent

if __name__ == "__main__" :
    # argparse 설정
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', default=utils.get_time_str())
    parser.add_argument('--code', type=str, default='005380')
    parser.add_argument('--mode', choices=['train', 'test', 'update'], default='train')
    parser.add_argument('--start_date', default='20180601')
    parser.add_argument('--end_date', default='20221220')
    parser.add_argument('--lr', type=float, default=0.0001)
    parser.add_argument('--n_steps', type=int, default=5)
    parser.add_argument('--balance', type=int, default=100000000)
    args = parser.parse_args()
    
    # 학습기 파라미터 설정
    output_name = f'{args.code}_{args.name}'
    
   	...
    ...
    ...

esaydict를 사용한 argparser 입력 코드


import os
import sys
import logging
# import argparse
import utils
import json
import data_preprocess 
from environment import Environment
from agent import A3CAgent

# Colab 환경을 위한 argparser 처리
import easydict
 
if __name__ == "__main__" :
    args = easydict.EasyDict({ "name":  utils.get_time_str(), "code": '005380', 
    							'mode' : 'update', 'start_date' : '20180601', 
                                'end_date' : '20221220', 'lr' : 0.00004, 'n_steps' : 10, 
                                'balance' : 100000000})
    
    # 학습기 파라미터 설정
    output_name = f'{args.code}_{args.name}'
    ...
    ...
    ...
import easydict

args = easydict.EasyDict({argparser인자 입력})
  • argpaser로 받는 인자들을 easydict.EasyDict({})에 동일하게 넣어주고 args로 같은 이름의 객체에 할당해주면 됩니다.

📙참고 문헌

profile
AI, Data Scientist 취업 준비생 입니다. 공부한 내용을 포스팅하고자 합니다. 방문해주셔서 감사합니다

0개의 댓글