Closed DevKiHyun closed 5 years ago
학습 도중 또는 완료된 세션이든 nsml.save()
로 전달된 argument에 저장된 파일들은 남아있지않습니다. (nsml 상의 개인 storage 서버가 있는데 그곳에 저장됩니다)
세션 52 에서 nsml.save()
로 제대로 저장이 되었다면,
세션 53 에서는 nsml.bind(load=load)
로 52에 저장된 모델을 불러오는 load함수를 바인딩후에, nsml.load(checkpoint, session='sessionName')
과 같이 불러올수있습니다.
예제)
def load(self):
load_delivery = []
# load_delivery의 빈 리스트를전달하면 nsml.load 함수가 실행된후 해당리스트는 모델로 채워지고 값을 가져올수있습니다.
bind_load_model(load_delivery)
nsml.load('0', session='nsml-team/ir_ph1_v2/52')
network = load_delivery[0]
def bind_load_model(load_delivery):
def nsml_load(dir_name):
state = torch.load(dir_name)
load_delivery.append(state)
nsml.bind(load=nsml_load)
개인 storage 서버는 접근 가능한가요? 가능하다면 처리된 데이터를 읽고/쓰기가 가능한가요? docs에서 찾아보질 못한 것 같습니다.
아쉽지만 개인storage 는 접근할수없습니다 ㅠ.ㅠ 하지만 세션내에서 처리된 데이터를 쓴 파일(저장된 파일)은 다운받아올수있습니다.
본문 질문에서 좀 더 벗어난 질문이지만 만약 전처리된 데이터를 저장했다가 계속 새로운 세션마다 불러오려면 어떤 기능을 이용하면 되나요? 방금 말씀 주신것처럼 개인 storage에는 접근이 안된다고 하셨는데 제가 알기론 트레이닝 데이터는 로컬로 받을 수 없다고 들은 것 같아서 질문드립니다.
nsml.cache()기능을 이용하면될것같습니다.
전처리 함수가 바뀔때마다 함수이름을 바꿔서 cache에 함수를 넘겨주면 새롭게 캐시파일을 생성합니다.
https://github.com/AiHackathon2018/AI-Vision/issues/73#issuecomment-451340795
output_path = ['./img_list_{}.pkl', './label_list_{}.pkl']
nsml.cache(train_data_loader_v2, data_path=train_dataset_path,
output_path=output_path, is_training=True)
def train_data_loader_v2(data_path, output_path, is_training):
img_list = ~~~
label_list = ~~~
interval = 28416 // 4
for i in range(4):
with open(output_path[0].format(i), 'wb') as img_f:
pickle.dump(img_list[i*interval:(i+1)*interval], img_f)
with open(output_path[1].format(i), 'wb') as label_f:
pickle.dump(label_list[i*interval:(i+1)*interval], label_f)
제 전처리코드로 나온 데이터가 28416개가 되고 전부 size가 224x224 일 경우에 전처리 함수의 이름도 바꿔서 nsml.cache에 넣고 돌렸습니다. 4개로 나눠서 저장할 경우
/bin/bash: line 1: 48 Killed python -u main.py
라는 에러가 발생합니다. 전에 위와 같은 에러가 용량 부족으로 발생한다고 들었습니다. 함수 이름도 바꿔서 cache에 넣었는데도 에러가 난다는 것은 캐시파일 용량이 제공된 용량보다 커서 그런건가요?
세션 이름은 Resource_exhausted/ir_ph1_v2/75 입니다.
학습 중 또는 완료 후 save 함수로 저장되는 파일들은 남아 있게 되나요? 예를 들어 52 라는 세션에서 저장된 파일들이 새로운 53 세션에서 접근 가능한지 궁금합니다.