반응형


Jupyter Notebook/Lab 에서 파이썬 스크립트를 반복문으로 실행하는 방법

 

필자처럼 ML쪽 업무를 하는 사람이라면, Jupyter Notebook 혹은 Jupyter Lab을 매우매우 자주 활용하게 된다. 

실시간으로 Line by Line 실행 결과를 확인하면서 디버그 하기도 용이하고, ML 모델이 잘 학습되고 있는지 로그 찍어보기도 편리하기 때문이다.

 

하지만 때로는 주피터 노트북 형태의 커널이 아니라, 일종의 서버 인터페이스용으로 주피터를 사용하며 파이썬 스크립트를 주피터 상에서 돌리는 경우도 있다.

 

이 때, 항상 아쉬웠던 점이 특정 인자를 바꿔가면서 다양한 실험을 해보고 싶을 때 !와 함께 사용하는 스크립트 실행으로는 모든 Argument를 하나하나 입력하는 방식으로 작성해놔야 한다는 점이었다. 단순히 반복문과 함께 ! 기능을 사용하여 실행시킬 수도 있지만, 이럴 경우 파이썬 스크립트가 에러가 나서 종료되었을 때, 에러 메시지를 뱉지 않고 다음 스크립트로 넘어가는 현상이 종종 있다.

 

다음과 같은 형태로 에러 걱정 없이 순차적으로 명령어를 수행시킬 수 있다.

아래 예시는 glob을 통해 추출한 다양한 checkpoint 파일에 대해서 inference를 수행하는 예시이다.

 

from glob import glob
from subprocess import check_all

model_list = glob('outputs/models/*.pth')

for m in model_list:
	run_name = m.split('/')[-1][:-4]
    check_call(["python", "evaluate.py", "--checkpoint", "{m}", "--run_name", "{run_name}"])

'''
아래와 같이 실행되는 효과를 지닌다.
python evaluate.py --checkpoint outputs/models/model1.pth --run_name model1
python evaluate.py --checkpoint outputs/models/model2.pth --run_name model2
python evaluate.py --checkpoint outputs/models/model3.pth --run_name model3
'''

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,