🖥 1. import library
import os, sys
import json
import pandas as pd
import warnings
from pathlib import Path
from datetime import datetime, timedelta
from contextlib import suppress
import shutil
🖥 2. 경로 설정
curdir = Path(__name__).absolute().parent
# tfserving 보낼 모델이 저장된 경로
model_dir = curdir/'model'/'3'
# tfserving 경로에 있는 모델 폴더
tfs_path = '/root/workspaces/models'
🖥 3. 서빙 경로에 있는 모델 폴더의 리스트 Load
서빙 경로에 어떤 모델이 있는지 확인을 위한 작업
try:
model_list = os.listdir(tfs_path)
model_list = [int(i) for i in model_list]
except FileNotFoundError as e:
print('서빙경로가 올바르지 않습니다.')
🖥 4. 폴더 이름을 str type의 숫자 형태로 생성
만약 현재 운영중인 모델이 있으면 가장 큰 숫자 +1로 생성
if model_list == []:
folder_name = '1'
else:
folder_name = max(model_list) + 1
folder_name = str(folder_name)
🖥 5. tfserving 경로에 가장 높은 숫자로 된 폴더 생성
os.mkdir(tfs_path + '/' + folder_name)
os.mkdir(tfs_path + '/' + folder_name + '/' + 'assets')
os.mkdir(tfs_path + '/' + folder_name + '/' + 'variables')
🖥 6. 모델 경로에서 tfserving 경로에 이동할 파일 Load
def read_all_file(path):
output = os.listdir(path)
for i in output:
if os.path.isdir(path+'/'+i):
file_list.extend(read_all_file(path+"/"+i))
elif os.path.isfile(path+"/"+i):
file_list.append(path+"/"+i)
return file_list
copy_list = read_all_file(model_dir)
copy_list # (.pb. variables폴더의 파일) 총 3개의 파일의 전체 경로가 return
for file in copy_list:
# find('model')+9 경로 변경 필요
copy_path = '/' + file[file.find('model')+9:]
print(copy_path)
copy_path list는 총 3개의 인자가 포함되어야 한다.
🖥 7. copy_path에 있는 모델파일들을 서빙 경로로 이동
for file in copy_list:
shutil.copy2(file, tfs_path, + '/' + folder_name + copy_path)
print(f'서빙경로인 {tfs_path}로 모델이 이동되었습니다.')