Tensorflow 2.x에서 모델을 저장하고 불러오기 위한 코드입니다.
*.pb 파일을 불러오는 예제입니다.
import tensorflow as tf
pb_path = 'PATH TO DIR CONTAINING PB FILE'
model = tf.saved_model.load(pb_path)
tf.saved_model.save(model, "PATH TO SAVE MODEL")
Tensorflow 2.x에서 모델을 저장하고 불러오기 위한 코드입니다.
*.pb 파일을 불러오는 예제입니다.
import tensorflow as tf
pb_path = 'PATH TO DIR CONTAINING PB FILE'
model = tf.saved_model.load(pb_path)
tf.saved_model.save(model, "PATH TO SAVE MODEL")
Summarization task를 돌리다 보면 pyrouge 패키지를 이용하는 것을 볼 수 있다.
그런데, 단순히 pip install pyrouge 하면 끝나는 게 아니라, 추가적인 설정이 필요하다.
일단, pyrouge 프로젝트의 github의 README를 보면 다음과 같다.
'pip install pyrouge'를 실행하면 여러 binary 실행 파일도 같이 설치되며, 그 중 하나가 pyrouge_set_rouge_path'이다.
인자로 '/absolute/path/to/ROUGE-1.5.5/directory'를 설정해야 하는데, 여기서 말하는 ROUGE-1.5.5는 https://github.com/andersjo/pyrouge의 './tools/ROUGE-1.5.5/'를 의미한다.
프로젝트를 다운받고, 경로를 설정해 준다.
그러면, 'python -m pyrouge.test'가 성공하는 것처럼 나오는데, 실제 실행할 경우 'Cannot open exception db file for reading: ~/Projects_PATH/rouge/tools/ROUGE-1.5.5/data/WordNet-2.0.exc.db' 이런 메세지가 나왔다.
한동안 해결을 못하고 있다가, 다른 Summarization repo를 보다가 해결책이 보였다.
위의 명령어를 실행해 WordNet-2.0.exc.db 파일을 다시 만들어주면 test가 완료된다.
Kubeflow를 활용한 MLOps에 대해 공부를 시작하면서 알게 된 내용들을 기록한다.
Cloud 상이 아닌 로컬(on-premise) 환경에서 테스트했다.
apiVersion: "serving.kubeflow.org/v1alpha2" kind: "InferenceService" metadata: name: "flowers-sample" spec: default: predictor: tensorflow: storageUri: "gs://kfserving-samples/models/tensorflow/flowers"
kubectl apply -f tensorflow.yaml
inferenceservice.serving.kubeflow.org/flowers-sample created
kubectl get inferenceservice flowers-sample NAME URL READY DEFAULT TRAFFIC CANARY TRAFFIC AGE flowers-sample http://flowers-sample.default.example.com True 100 9m
kubectl get -n istio-system svc/istio-ingressgateway NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway NodePort 10.104.40.48 <none> 15020:32026/TCP,80:31380/TCP... 129m
# Minikube export INGRESS_HOST=$(minikube ip) export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')초
CLUSTER_IP=$(kubectl -n istio-system get service flowers-sample -o jsonpath='{.status.loadBalancer.ingress[0].ip}') curl -v -H "Host: ${SERVICE_HOSTNAME}" http://${INGRESS_HOST}:${INGRESS_PORT}/v1/models/flowers-sample:predict -d @./input.json' * Trying 192.168.49.2... * TCP_NODELAY set * Connected to 192.168.49.2 (192.168.49.2) port 31380 (#0) > POST /v1/models/flowers-sample:predict HTTP/1.1 > Host: flowers-sample.default.example.com > User-Agent: curl/7.58.0 > Accept: */* > Content-Length: 16193 > Content-Type: application/x-www-form-urlencoded > Expect: 100-continue > < HTTP/1.1 100 Continue * We are completely uploaded and fine < HTTP/1.1 200 OK < content-length: 220 < content-type: application/json < date: Thu, 01 Apr 2021 07:33:01 GMT < x-envoy-upstream-service-time: 1457 < server: istio-envoy < { "predictions": [ { "prediction": 0, "key": " 1", "scores": [0.999114931, 9.2098875e-05, 0.000136786475, 0.00033725836, 0.000300533167, 1.84814126e-05] } ] * Connection #0 to host 192.168.49.2 left intact }