1D1T(1Day 1Torch) 6일차!
학습을 진행하다보면 당연하게도 학습과정과 학습결과를 저장해서 보고 싶은 생각이 든다. python logging을 통해서도 가능하지만 좀 더 많은 기능을 제공하는 tensorboard에 대해서 알아보자.
Tensorboard를 이용하여 pytorch 모델과 metric을 기록할 수 있다. tensorboard에서 필요한 기능들은 pytorch model에 의해 지원된다.
Summary Writer class는 log data의 main entry이다.
많은 정보들이 한 실험에서 기록될 수 있다. UI가 어수선 해지는 것을 방지하고 더 나은 결과 클러스터링을 얻기 위해 log하는 정보의 이름에 hierachy를 포함한 이름을 지정하여 정보를 그룹화 할 수 있습니다.
Writes entries directly to event files in the log_dir to be consumed by TensorBoard.
The SummaryWriter class provides a high-level API to create an event file in a given directory and add summaries and events to it. The class updates the file contents asynchronously. This allows a training program to call methods to add data to the file directly from the training loop, without slowing down training.
entries를 tensorboard에서 사용할 log_dir 내부의 event file에 write한다. SummaryWriter class는 event file을 주어진 directory에 생성하기 위한 high-level API를 제공한다. 그리고 summary와 event도 추가해준다. 이 class는 file의 contents를 비동기적으로 업데이트한다. 이것은 training program이 training 과정에서 training을 느리게 하지 않고 파일에 데이터를 추가하는 method를 호출할 수 있게 한다.
from torch.utils.tensorboard import SummaryWriter
# create a summary writer with automatically generated folder name.
writer = SummaryWriter()
# folder location: runs/May04_22-14-54_s-MacBook-Pro.local/
# create a summary writer using the specified folder name.
writer = SummaryWriter("my_experiment")
# folder location: my_experiment
# create a summary writer with comment appended.
writer = SummaryWriter(comment="LR_0.1_BATCH_16")
# folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/
comment (string) – Comment log_dir suffix appended to the default log_dir. If log_dir is assigned, this argument has no effect.
purge_step (int) – When logging crashes at step T+X and restarts at step T , any events whose global_step larger or equal to T will be purged and hidden from TensorBoard. Note that crashed and resumed experiments should have the same log_dir.
max_queue (int) – Size of the queue for pending events and summaries before one of the ‘add’ calls forces a flush to disk. Default is ten items.
flush_secs (int) – How often, in seconds, to flush the pending events and summaries to disk. Default is every two minutes.
filename_suffix (string) – Suffix added to all event filenames in the log_dir directory. More details on filename construction in tensorboard.summary.writer.event_file_writer.EventFileWriter.
공식 설명은 아래와 같다.
Add scalar data to summary.
scalar data를 summary에 추가한다.
공식설명은 아래와 같다.
Adds many scalar data to summary.
scalar data 여러개를 summary에 추가한다.
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
r = 5
for i in range(100):
writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r),
'xcosx':i*np.cos(i/r),
'tanx': np.tan(i/r)}, i)
writer.close()
# This call adds three values to the same scalar plot with the tag
main_tag (string) – The parent name for the tags
tag_scalar_dict (dict) – Key-value pair storing the tag and corresponding values
global_step (int) – Global step value to record
walltime (float) – Optional override default walltime (time.time()) seconds after epoch of event
위의 add_scalar와 거의 유사하지만 활용도가 높을 것으로 예상되어 따로 기록하였다.