nsml.bind¶
-
nsml.
bind
(save=None, load=None, **kwargs)¶ NSML에서 사용할 save와 load, infer함수를 바인드해줍니다.
Example
def load(dir_name): torch.load(os.path.join(dir_name,'model.pth')) ... def save(dir_name, **kwargs): if kwargs['real']: torch.save(object,os.path.join(dir_name, 'model.pth')) ... # kwargs got a ‘real=True’. nsml.bind(save=save, load=load, real=True)
nsml.bind-save¶
nsml.bind() 에 넘겨지는 save 함수는 model, optimizer 등 python object를 저장하는 함수입니다.
다음과 같이 첫번째 인자로 저장할 수 있는 경로를 받고, 유저는 입력받은 경로에 하나 이상의 파일을 저장합니다.
이미 생성된 session을 재현하는 nsml fork , nsml submit 등의 명령어는 save 함수를 통해 저장된 파일을 load해서 사용합니다.
- param str dir_path
저장할 위치가 폴더 경로입니다.
파일로 바로 저장하는 예제입니다.
Example
def nsml_save(dir_path): state = { 'model': model.state_dict(), 'optimizer': optimizer.state_dict() } filename = os.path.join(dir_path, 'model.pth') nsml.bind(save=nsml_save)
nsml.bind-load¶
저장된 모델을 불러오는 load 함수를 binding 합니다.
load 함수는 첫번째 인자로 반드시 폴더명을 변수로 받아야 합니다.
nsml fork, nsml submit 등의 모델을 불러오는 명령어에서 load 함수를 호출합니다.
- param str dir_path
저장된 폴더의 경로입니다.
bind-save 에서 1개의 파일만 저장했을 때 불러오는 예제입니다.
Example
def nsml_load(dir_path): checkpoint = torch.load(os.path.join(dir_path, 'model.pth')) ... nsml.bind(load=nsml_load)