Closed temerara-nplab closed 4 years ago
안녕하세요.
training타임때는 (nsml run
으로 세션을 실행했을때) test, test_submit폴더에 접근을 못합니다.
test, test_submit폴더에는 nsml submit
할때 접근할수가 있습니다. nsml submit
일땐 기존에 training세션을 복사해오고, infer함수에서 test데이터셋의 root_path가 들어오니 infer함수안에서 inference 작업을 진행하면 될것같습니다.
안녕하세요.
training타임때는 (
nsml run
으로 세션을 실행했을때) test, test_submit폴더에 접근을 못합니다.test, test_submit폴더에는
nsml submit
할때 접근할수가 있습니다.nsml submit
일땐 기존에 training세션을 복사해오고, infer함수에서 test데이터셋의 root_path가 들어오니 infer함수안에서 inference 작업을 진행하면 될것같습니다.
nsmal submit 시에 util.py에 있는 inference() 함수가 실행된다는 얘기인가요? 현재 저희는 main.py 안에 inferencing 하는 부분을 넣었는데 이 부분을 inference() 함수에 넣으면 되는건가요?
nsml submit 시에 nsml.bind()에 bind된 infer함수가 호출됩니다.
이 infer함수의 첫번째 argument로 test_data 의 path가 들어옵니다.
nsml submit 시에 nsml.bind()에 bind된 infer함수가 호출됩니다.
이 infer함수의 첫번째 argument로 test_data 의 path가 들어옵니다.
답변 감사합니다. 말씀해 주신대로 run으로 체크포인트 생성해서 submit 했는데요. nsml.bind()에서 save()는 정상적으로 실행되고 파일생성 되는 걸 확인했는데 그 후에 세션이 그냥 종료됩니다. load()나 infer() 자체가 실행이 안되는데 어떻게 해결해야 할까요?
아래는 저희가 수정한 nsml_util.py 내용입니다.
import nsml
import os
import tensorflow as tf
from utils import inference
def bind_model(model):
def load(save_folder, **kwargs):
print("Loading model")
model = tf.lite.Interpreter(os.path.join(save_folder, 'model.tflite'))
model.allocate_tensors()
def save(save_folder, **kwargs):
filename = os.path.join(save_folder, 'model.tflite')
model2 = tf.keras.models.load_model('model.h5')
converter = tf.lite.TFLiteConverter.from_keras_model(model2)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
model = converter.convert()
with open(filename, 'wb') as f:
f.write(model)
print("Saving model")
def infer(data_path, **kwargs):
print("Bind inferencing")
return inference(model, data_path)
nsml.bind(save=save, load=load, infer=infer)
코드를 안봐서 잘모르겠지만
main파일에서 argument를 받을수있어야 하고,
pause 옵션에 따라서 (nsml에서 자동으로 셋팅함) nsml.paused()함수가 호출되어야 합니다.
이부분이 있나요?? 이부분이 있어도 안되면 세션네임을 알려주시기 바랍니다
test 폴더만 있고 test_submit폴더라는건 없습니다. submit -t
일때는 test_submit폴더가 마운트되긴하지만 세션내에서는 test라는 폴더로 보이게 됩니다.
baseline에서 nsml이 활용되는 부분을 확인해보시면 많이 도움이 될것같습니다.
덕분에 잘 고쳤습니다. 감사합니다.
tensorflow로 inferencing 코드를 작성하고 있습니다. data loader를 만들기 위해 아래와 같은 코드를 작성했는데요.
test_submit 폴더에 접근할 수 없다고 오류가 나오네요. test 폴더도 마찬가지입니다. 참고로 train 폴더에는 접근가능했고 더미 데이터가 1개 있는 것 확인했습니다. 도움 주시면 감사하겠습니다.