tensorflow serving

문주은·2022년 6월 23일
0

🖥 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개의 인자가 포함되어야 한다.

  • variables/variables.data-00000-of-00000
  • variables/variables.index
  • saved_model.pb

🖥 7. copy_path에 있는 모델파일들을 서빙 경로로 이동

for file in copy_list:
	shutil.copy2(file, tfs_path, + '/' + folder_name + copy_path)
print(f'서빙경로인 {tfs_path}로 모델이 이동되었습니다.')
profile
Data Engineer

0개의 댓글