├── mnist_clf ├── __init__.py ├── dataset.py └── model.py ├── trainer ├── __init__.py ├── config.yaml └── task.py ├── create_model.sh ├── predict_local.sh ├── create_sample.py ├── .gitignore ├── train_local.sh ├── deploy_model.sh ├── predict_cloud.py ├── setup.py ├── train_cloud.sh ├── README.md └── sample_binary.json /mnist_clf/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /trainer/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /create_model.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | MODEL_NAME=mnist 4 | REGION=us-central1 5 | gcloud ml-engine models create $MODEL_NAME --regions=$REGION 6 | -------------------------------------------------------------------------------- /predict_local.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | gcloud ml-engine local predict \ 4 | --model-dir checkpoints/model \ 5 | --json-instances sample.json \ 6 | --verbosity debug 7 | -------------------------------------------------------------------------------- /create_sample.py: -------------------------------------------------------------------------------- 1 | from mnist_clf.dataset import load_mnist, create_sample 2 | 3 | train_x, train_y, test_x, test_y = load_mnist() 4 | samples = create_sample(test_x, test_y, export='sample.json', binary=False) 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Projects 2 | .idea 3 | .ipynb_checkpoints 4 | MANIFEST 5 | 6 | # Data & Model 7 | checkpoints 8 | mnist 9 | model.h5 10 | sample.json 11 | samples.json 12 | 13 | # Python 14 | __pycache__ 15 | *.pyc 16 | -------------------------------------------------------------------------------- /train_local.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | gcloud ml-engine local train \ 4 | --job-dir checkpoints \ 5 | --module-name trainer.task \ 6 | --package-path ./trainer \ 7 | -- \ 8 | --train-file gs://anderson-mnist 9 | 10 | -------------------------------------------------------------------------------- /trainer/config.yaml: -------------------------------------------------------------------------------- 1 | trainingInput: 2 | pythonVersion: "3.5" 3 | scaleTier: CUSTOM 4 | masterType: standard_p100 5 | workerType: standard_p100 6 | parameterServerType: large_model 7 | workerCount: 0 8 | parameterServerCount: 0 9 | -------------------------------------------------------------------------------- /deploy_model.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | MODEL_BINARIES=gs://anderson-mnist-ml/mnist_train_20180604_162855/model/ 4 | MODEL_NAME=mnist 5 | 6 | gcloud ml-engine versions create v1 \ 7 | --model $MODEL_NAME \ 8 | --origin $MODEL_BINARIES \ 9 | --runtime-version 1.8 10 | -------------------------------------------------------------------------------- /predict_cloud.py: -------------------------------------------------------------------------------- 1 | from googleapiclient import discovery 2 | import os 3 | 4 | os.putenv('GOOGLE_APPLICATION_CREDENTIALS', '/home/anderson/.ssh/gcp') 5 | 6 | 7 | def predict_json(): 8 | service = discovery.build('ml', 'v1') 9 | 10 | 11 | if __name__ == '__main__': 12 | predict_json() 13 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, find_packages 2 | 3 | setup( 4 | name='keras-cloud-ml-engine-tutorial', 5 | version='0.1', 6 | packages=find_packages(), # ['trainer'], 7 | url='', 8 | license='MIT', 9 | author='anderson', 10 | author_email='a141890@gmail.com', 11 | description='', 12 | install_requires=[ 13 | 'keras', 14 | 'h5py', 15 | 'six', 16 | 'google-api-python-client' 17 | ] 18 | ) 19 | -------------------------------------------------------------------------------- /train_cloud.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export BUCKET_NAME=anderson-mnist 4 | export JOB_NAME="mnist_train_$(date +%Y%m%d_%H%M%S)" 5 | export JOB_DIR=gs://$BUCKET_NAME/$JOB_NAME 6 | export REGION=us-east1 7 | 8 | gcloud ml-engine jobs submit training $JOB_NAME \ 9 | --job-dir $JOB_DIR \ 10 | --runtime-version 1.8 \ 11 | --module-name trainer.task \ 12 | --package-path ./trainer \ 13 | --region $REGION \ 14 | --config trainer/config.yaml \ 15 | -- \ 16 | --train-file gs://$BUCKET_NAME 17 | 18 | -------------------------------------------------------------------------------- /mnist_clf/dataset.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | from tensorflow.examples.tutorials.mnist import input_data 4 | import numpy as np 5 | import base64 6 | 7 | 8 | # Data 9 | def load_mnist(path='mnist'): 10 | mnist = input_data.read_data_sets(path, one_hot=True) 11 | train_x = mnist.train.images 12 | train_y = mnist.train.labels 13 | test_x = mnist.test.images 14 | test_y = mnist.test.labels 15 | return train_x, train_y, test_x, test_y 16 | 17 | 18 | def create_sample(data_x, data_y, export: str = 'sample.json', binary=False): 19 | samples = dict() 20 | count = 0 21 | for x, y in zip(data_x, data_y): 22 | label_idx = np.argmax(y) 23 | if label_idx == count: 24 | if binary: 25 | samples[label_idx] = (base64.b64encode(x).decode('utf-8'), y) 26 | else: 27 | samples[label_idx] = (x, y) 28 | count += 1 29 | 30 | if count == 10: 31 | break 32 | 33 | # samples = [{'key': k.tolist(), 'output': v[1].tolist(), 'image': v[0].tolist()} for k, v in samples.items()] 34 | if binary: 35 | samples = [{'image': {'b64': v[0]}} for k, v in samples.items()] 36 | else: 37 | samples = [{'image': v[0].tolist()} for k, v in samples.items()] 38 | # samples = sorted(samples, key=lambda x: x['key']) 39 | 40 | with open(export, 'w') as f: 41 | for sample in samples: 42 | f.write(json.dumps(sample)) 43 | f.write('\n') 44 | return samples 45 | -------------------------------------------------------------------------------- /trainer/task.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os 3 | import shutil 4 | 5 | import keras.backend as K 6 | import numpy as np 7 | import tensorflow as tf 8 | 9 | from mnist_clf.dataset import load_mnist 10 | from mnist_clf.model import create_model, save_as_tensorflow 11 | 12 | parser = argparse.ArgumentParser() 13 | parser.add_argument('--job-dir', default='checkpoints', help='local directory path to save the model') 14 | 15 | parser.add_argument('--train-file', default='mnist', 16 | help='either local directory path or cloud storage path to load MNIST dataset') 17 | parser = parser.parse_args() 18 | 19 | 20 | def main(parser): 21 | # Set Random Seed 22 | np.random.seed(0) 23 | tf.set_random_seed(0) 24 | 25 | # Reset Session 26 | K.clear_session() 27 | sess = tf.Session() 28 | K.set_session(sess) 29 | 30 | # Disable loading of learning nodes 31 | K.set_learning_phase(0) 32 | 33 | # Data 34 | train_x, train_y, test_x, test_y = load_mnist(parser.train_file) # load_mnist('gs://anderson-mnist') 35 | model, arg_max = create_model() 36 | 37 | # Train 38 | model.fit(train_x, train_y, batch_size=32, epochs=1, verbose=1) 39 | 40 | # Save the model 41 | model_path = os.path.join(parser.job_dir, 'model') 42 | shutil.rmtree(model_path, ignore_errors=True) 43 | save_as_tensorflow(model, model_path, arg_max=arg_max) 44 | 45 | # Evaluate 46 | test_loss, test_acc = model.evaluate(test_x, test_y, verbose=0) 47 | print('Test Loss:', test_loss) 48 | print('Test Accuracy:', test_acc) 49 | 50 | # Save the model to the Cloud 51 | # if parser.job_dir is not None: 52 | # remote_path = os.path.join(parser.job_dir, 'model.h5') 53 | # if not gfile.Exists(parser.job_dir): 54 | # gfile.MakeDirs(parser.job_dir) 55 | # with gfile.GFile('/tmp/model.h5', mode='rb') as f: 56 | # with gfile.GFile(remote_path, mode='wb') as w: # save the model to the cloud storage 57 | # w.write(f.read()) 58 | 59 | 60 | if __name__ == '__main__': 61 | # train_x, train_y, test_x, test_y = load_mnist() 62 | # samples = create_sample(test_x, test_y) 63 | main(parser) 64 | -------------------------------------------------------------------------------- /mnist_clf/model.py: -------------------------------------------------------------------------------- 1 | from typing import Tuple, List 2 | 3 | import keras.backend as K 4 | import tensorflow as tf 5 | from keras import Sequential, Model, Input 6 | from keras.backend.tensorflow_backend import set_session 7 | from keras.layers import Dense, Activation, Dropout, Lambda 8 | from tensorflow.python.saved_model import builder as tf_model_builder, tag_constants, signature_constants 9 | from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def 10 | from tensorflow.python.training.momentum import MomentumOptimizer 11 | 12 | 13 | # Model 14 | def create_model() -> Tuple[Model, tf.Tensor]: 15 | config = tf.ConfigProto() 16 | config.gpu_options.per_process_gpu_memory_fraction = 0.1 17 | set_session(tf.Session(config=config)) 18 | 19 | image_input = Input(shape=(784,)) 20 | 21 | h = Dense(512, activation='relu', input_shape=(784,))(image_input) 22 | h = Dropout(0.2, seed=0)(h) 23 | h = Dense(256, activation='relu')(h) 24 | h = Dropout(0.2, seed=0)(h) 25 | h = Dense(10)(h) 26 | output = Activation('softmax')(h) 27 | arg_max = K.argmax(output) 28 | 29 | model = Model(image_input, [output]) 30 | model.compile(loss='categorical_crossentropy', 31 | optimizer=MomentumOptimizer(0.01, momentum=0.9), 32 | metrics=['accuracy']) 33 | 34 | return model, arg_max 35 | 36 | 37 | # Save Model 38 | def save_as_tensorflow(model: Model, export_path: str, arg_max: tf.Tensor): 39 | """ 40 | Convert the Keras HDF5 model into TensorFlow SavedModel 41 | export_path: either local path or Google Cloud Storage's bucket path 42 | (ex. "checkpoints", "gs://anderson-mnist/mnist_train_20180530_145010") 43 | """ 44 | 45 | builder = tf_model_builder.SavedModelBuilder(export_path) 46 | 47 | signature = predict_signature_def(inputs={'image': model.inputs[0], 48 | 'image_bytes': model.inputs[0]}, 49 | outputs={'probabilities': model.outputs[0], 50 | 'class': arg_max}) 51 | sess = K.get_session() 52 | builder.add_meta_graph_and_variables( 53 | sess=sess, 54 | tags=[tag_constants.SERVING], 55 | signature_def_map={signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature} 56 | ) 57 | builder.save() 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [TOC] 2 | 3 | # Overview 4 | 5 | Keras를 Google Cloud ML Engine에서 학습시키고 서빙까지 하는 방법을 튜토리얼로 제공합니다. 6 | 7 | 8 | 9 | # Structure 10 | 11 | Google Cloud ML Engine에서 사용하기 위해서는 다음과 같은 **최소한의** 구조를 갖고 있어야 합니다. 12 | 13 | ``` 14 | . 15 | ├── config.yaml 16 | ├── README.md 17 | ├── setup.py 18 | ├── trainer 19 | │   ├── __init__.py 20 | │   ├── config.yaml 21 | └── train.py 22 | ``` 23 | 24 | 25 | 26 | # Virtual Environment 27 | 28 | 먼저 virtual environment 를 생성합니다. 29 | 30 | > 만약 Python2.7을 기본으로 사용하면 굳이 해줄필요는 없습니다. 31 | > gcloud ml-engine 명령어가 python 2.7 을 기본으로 사용하고 있기 때문입니다. 32 | 33 | ```bash 34 | virtualenv cmle --python=/usr/local/bin/python3.6 --system-site-packages 35 | source cmle/bin/activate 36 | ``` 37 | 38 | 39 | 40 | # Google Cloud SDK 41 | 42 | [Google Cloud SDK 설치방법](https://github.com/AndersonJo/google-cloud-platform/blob/master/01-quickstart.md) 을 참고하여 설치를 합니다. 43 | 44 | 설치후 다음과 같은 명령어를 사용할 수 있습니다. 45 | 46 | ``` 47 | sudo pip3 install --upgrade google-cloud google-api-python-client 48 | ``` 49 | 50 | 51 | **모델 리스트** 52 | 53 | ```bash 54 | gcloud ml-engine models list 55 | ``` 56 | 57 | 58 | 59 | # MNIST Dataset 60 | 61 | 먼저 MNIST 데이터를 다운 받습니다. 62 | 63 | ```bash 64 | mkdir mnist 65 | cd mnist 66 | wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz 67 | wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz 68 | wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz 69 | wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz 70 | ``` 71 | 72 | 데이터를 Google Cloud Storage에 bucket을 생성하고 업로드를 합니다. 73 | 74 | ```bash 75 | gsutil mb gs://anderson-mnist 76 | gsutil cp * gs://anderson-mnist 77 | ``` 78 | 79 | 잘 올라갔는지 확인합니다. 80 | 81 | ```bash 82 | gsutil ls gs://anderson-mnist 83 | ``` 84 | 85 | 86 | 87 | # Model 생성및 TensorFlow Moldel로 저장 함수 88 | 89 | ```python 90 | from typing import Tuple, List 91 | 92 | import keras.backend as K 93 | import tensorflow as tf 94 | from keras import Sequential, Model, Input 95 | from keras.backend.tensorflow_backend import set_session 96 | from keras.layers import Dense, Activation, Dropout 97 | from tensorflow.python.saved_model import builder as tf_model_builder, tag_constants, signature_constants 98 | from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def 99 | from tensorflow.python.training.momentum import MomentumOptimizer 100 | 101 | 102 | # Model 103 | def create_model() -> Tuple[Model, tf.Tensor]: 104 | config = tf.ConfigProto() 105 | config.gpu_options.per_process_gpu_memory_fraction = 0.1 106 | set_session(tf.Session(config=config)) 107 | 108 | image_input = Input(shape=(784,)) 109 | 110 | h = Dense(512, activation='relu', input_shape=(784,))(image_input) 111 | h = Dropout(0.2, seed=0)(h) 112 | h = Dense(256, activation='relu')(h) 113 | h = Dropout(0.2, seed=0)(h) 114 | h = Dense(10)(h) 115 | output = Activation('softmax')(h) 116 | arg_max = K.argmax(output) 117 | 118 | model = Model(image_input, [output]) 119 | model.compile(loss='categorical_crossentropy', 120 | optimizer=MomentumOptimizer(0.01, momentum=0.9), 121 | metrics=['accuracy']) 122 | 123 | return model, arg_max 124 | ``` 125 | 126 | Keras Model을 그냥 저장시키면 안되고 TensorFlow Model 형태로 저장을 해야 합니다. 127 | 128 | 아래의 함수를 사용해서 TensorFlow Model로 저장할수 있습니다. 129 | 130 | ```python 131 | # Save Model 132 | def save_as_tensorflow(model: Model, export_path: str, arg_max: tf.Tensor): 133 | builder = tf_model_builder.SavedModelBuilder(export_path) 134 | signature = predict_signature_def(inputs={'image': model.inputs[0]}, 135 | outputs={'probabilities': model.outputs[0], 136 | 'class': arg_max}) 137 | sess = K.get_session() 138 | builder.add_meta_graph_and_variables( 139 | sess=sess, 140 | tags=[tag_constants.SERVING], 141 | signature_def_map={signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature} 142 | ) 143 | builder.save() 144 | ``` 145 | 146 | 147 | 148 | 149 | 150 | # Trainer 151 | 152 | trainer 파이썬 패키지안에 task.py를 생성합니다. 153 | 154 | ```python 155 | import argparse 156 | import os 157 | import shutil 158 | 159 | import keras.backend as K 160 | import numpy as np 161 | import tensorflow as tf 162 | 163 | from mnist_clf.dataset import load_mnist 164 | from mnist_clf.model import create_model, save_as_tensorflow 165 | 166 | parser = argparse.ArgumentParser() 167 | parser.add_argument('--job-dir', default='checkpoints', help='local directory path to save the model') 168 | parser.add_argument('--train-file', default='mnist', 169 | help='either local directory path or cloud storage path to load MNIST dataset') 170 | parser = parser.parse_args() 171 | 172 | def main(parser): 173 | # Set Random Seed 174 | np.random.seed(0) 175 | tf.set_random_seed(0) 176 | 177 | # Reset Session 178 | K.clear_session() 179 | sess = tf.Session() 180 | K.set_session(sess) 181 | 182 | # Disable loading of learning nodes 183 | K.set_learning_phase(0) 184 | 185 | # Data 186 | train_x, train_y, test_x, test_y = load_mnist(parser.train_file) 187 | model, arg_max = create_model() 188 | 189 | # Train 190 | model.fit(train_x, train_y, batch_size=32, epochs=1, verbose=1) 191 | 192 | # Save the model 193 | model_path = os.path.join(parser.job_dir, 'model') 194 | shutil.rmtree(model_path, ignore_errors=True) 195 | save_as_tensorflow(model, model_path, arg_max=arg_max) 196 | 197 | # Evaluate 198 | test_loss, test_acc = model.evaluate(test_x, test_y, verbose=0) 199 | print('Test Loss:', test_loss) 200 | print('Test Accuracy:', test_acc) 201 | 202 | if __name__ == '__main__': 203 | main(parser) 204 | ``` 205 | 206 | 207 | 208 | 로컬 환경에서 테스트를 합니다. 209 | 210 | ```bash 211 | python3.6 trainer/train.py --checkpoint=checkpoints 212 | ``` 213 | 214 | Cloud Storage에 저장이 잘 되는지 테스트 215 | 216 | ```bash 217 | python3.6 trainer/train.py --job-dir=gs://anderson-mnist/checkpoints 218 | ``` 219 | 220 | 221 | 222 | 223 | 224 | # config.yaml 설정 225 | 226 | Cloud ML Engine내에서 학습시킬때 Python 3.5를 사용하게 하거나 (default는 python2.7), GPU를 사용하기 위해서는 `config.yaml` 같은 파일을 만들고 설정파일을 넣습니다. 227 | 228 | 먼저 config.yaml을 trainer 디렉토리안에 생성을 합니다. 229 | 230 | ``` 231 | cd trainer 232 | vi config.yaml 233 | ``` 234 | 235 | 설정은 다음과 같이 합니다. 236 | 237 | ``` 238 | trainingInput: 239 | pythonVersion: "3.5" 240 | scaleTier: CUSTOM 241 | masterType: standard_p100 242 | workerType: standard_p100 243 | parameterServerType: large_model 244 | workerCount: 0 245 | parameterServerCount: 0 246 | ``` 247 | 248 | 249 | 250 | ## Python 3.5 사용 251 | 252 | 아래의 설정이 들어가야 합니다. 253 | 254 | ``` 255 | trainingInput: 256 | pythonVersion: "3.5" 257 | ``` 258 | 259 | `gcloud ml-engine ` 을 사용시 ```--runtime-version``` 은 1.4 이상이 되야 합니다. 260 | 자세한 정보는 [Runtime Version List](https://cloud.google.com/ml-engine/docs/tensorflow/runtime-version-list) 를 참고 합니다. 261 | 262 | ``` 263 | gcloud ml-engine jobs submit training $JOB_NAME \ 264 | ... 265 | --runtime-version 1.8 \ 266 | ``` 267 | 268 | 269 | 270 | ## GPU 설정 271 | 272 | GPU 모델은 다음의 옵션으로 설정 가능합니다. 273 | 274 | - `standard_gpu`: A single NVIDIA Tesla K80 GPU 275 | - `complex_model_m_gpu`: Four NVIDIA Tesla K80 GPUs 276 | - `complex_model_l_gpu`: Eight NVIDIA Tesla K80 GPUs 277 | - `standard_p100`: A single NVIDIA Tesla P100 GPU (*Beta*) 278 | - `complex_model_m_p100`: Four NVIDIA Tesla P100 GPUs (*Beta*) 279 | 280 | 현재 GPU는 해당 리젼에서만 제공이 됩니다. 281 | 282 | - `us-east1` 283 | - `us-central1` 284 | - `asia-east1` 285 | - `europe-west1` 286 | 287 | 288 | 289 | 290 | ## Machine Type 설정 291 | 292 | [Machine Types](https://cloud.google.com/ml-engine/docs/tensorflow/machine-types) 을 참고 합니다. 293 | 294 | 295 | 296 | 297 | # setup.py 설정하기 298 | 299 | 아래와 같이 설정을 합니다. 300 | 301 | ```python 302 | from setuptools import setup, find_packages 303 | 304 | setup( 305 | name='keras-cloud-ml-engine-tutorial', 306 | version='0.1', 307 | packages=find_packages(), # ['trainer'], 308 | url='', 309 | license='MIT', 310 | author='anderson', 311 | author_email='a141890@gmail.com', 312 | description='', 313 | install_requires=[ 314 | 'keras', 315 | 'h5py', 316 | 'six' 317 | ] 318 | ) 319 | ``` 320 | 321 | 실제 cloud ml engine상에서 돌려보면 필요한 라이브러리를 설치한 후에 실행이 됩니다. 322 | 이때 참고 되는 파일이 setup.py입니다. 323 | 324 | 325 | 326 | # gcloud 사용해서 학습시키기 327 | 328 | 먼저 변수들을 선언해줍니다. 329 | 330 | ```bash 331 | export BUCKET_NAME=anderson-mnist 332 | export JOB_NAME="mnist_train_$(date +%Y%m%d_%H%M%S)" 333 | export JOB_DIR=gs://$BUCKET_NAME/$CHECKPOINT 334 | export REGION=us-east1 335 | ``` 336 | 337 | ## Local 환경에서 학습 338 | 339 | Local에서 학습을 테스트 합니다. 340 | Cloud환경에서 먼저 학습을 돌리기전에 테스트하는 과정이라고 생각하면 됩니다. 341 | 342 | ```bash 343 | gcloud ml-engine local train \ 344 | --job-dir checkpoints \ 345 | --module-name trainer.task \ 346 | --package-path ./trainer \ 347 | -- \ 348 | --train-file gs://$BUCKET_NAME 349 | ``` 350 | 351 | ## Cloud 환경에서 학습 352 | 353 | Cloud 환경에서 실제 학습을 다음과 같이 시킬수 있습니다. 354 | 355 | ````bash 356 | gcloud ml-engine jobs submit training $JOB_NAME \ 357 | --job-dir $JOB_DIR \ 358 | --runtime-version 1.8 \ 359 | --module-name trainer.task \ 360 | --package-path ./trainer \ 361 | --region $REGION \ 362 | --config trainer/config.yaml \ 363 | -- \ 364 | --train-file gs://$BUCKET_NAME 365 | ```` 366 | 367 | - **JOB DIR**: 학습 뒤 결과가 저장되는 곳이며, Cloud Storage의 주소를 적으면 됩니다. 368 | 369 | 370 | 371 | # Local 환경에서 Predict 372 | 373 | ```bash 374 | gcloud ml-engine local predict \ 375 | --model-dir checkpoints/model \ 376 | --json-instances sample.json \ 377 | --verbosity debug 378 | ``` 379 | 380 | 381 | 382 | # Cloud ML에 Deploy하기 383 | 384 | 먼저 모델을 만들도록 합니다. 385 | 386 | ```bash 387 | MODEL_NAME=mnist 388 | REGION=us-central1 389 | gcloud ml-engine models create $MODEL_NAME --regions=$REGION 390 | ``` 391 | 392 | 모델을 만들었으면 학습된 TensorFlow 저장된 파일을 연결시켜야 합니다. 393 | 394 | 클라우드상에 설치된 모델을 ls 명령어로 확인을 합니다. 395 | 396 | ```bash 397 | gsutil ls gs://anderson-mnist/mnist_train_* 398 | ``` 399 | 400 | ``` 401 | gs://anderson-mnist/mnist_train_20180530_144908/: 402 | gs://anderson-mnist/mnist_train_20180530_144908/model/ 403 | gs://anderson-mnist/mnist_train_20180530_144908/packages/ 404 | 405 | gs://anderson-mnist/mnist_train_20180530_162809/: 406 | gs://anderson-mnist/mnist_train_20180530_162809/model/ 407 | gs://anderson-mnist/mnist_train_20180530_162809/packages/ 408 | ``` 409 | 410 | 모델의 주소가 `gs://anderson-mnist/mnist_train_20180530_162809/model/` 라는 것을 확인했고 디플로이를 합니다. 411 | 412 | ```bash 413 | MODEL_BINARIES=gs://anderson-mnist/mnist_train_20180530_162809/model/ 414 | MODEL_NAME=mnist 415 | 416 | gcloud ml-engine versions create v1 \ 417 | --model $MODEL_NAME \ 418 | --origin $MODEL_BINARIES \ 419 | --runtime-version 1.8 420 | ``` 421 | 422 | 클라우드상에 생성된 모델을 확인합니다. 423 | 424 | ```bash 425 | gcloud ml-engine models list 426 | ``` 427 | 428 | ``` 429 | NAME DEFAULT_VERSION_NAME 430 | mnist v1 431 | ``` 432 | 433 | 최종적으로 **예측**도 해봅니다. 434 | 435 | ``` 436 | gcloud ml-engine predict \ 437 | --model $MODEL_NAME \ 438 | --version v1 \ 439 | --json-instances sample.json 440 | ``` 441 | 442 | ``` 443 | CLASS PROBABILITIES 444 | 0 [0.9993340373039246, ..., 0.0002702845085877925] 445 | 1 [1.169654979094048e-06, ..., 8.002129470696673e-05] 446 | 2 [2.6620080461725593e-05, ..., 8.218656262215518e-07] 447 | 3 [2.932660026999656e-05, ..., 0.00019038221216760576] 448 | 4 [5.971842398366789e-08, ..., 0.04169595614075661] 449 | 5 [0.0009943349286913872, ..., 0.0004937952617183328] 450 | 6 [5.941236668149941e-05, ..., 1.3123836879458395e-06] 451 | 7 [2.825109504556167e-06, ..., 0.004673224873840809] 452 | 8 [0.0004219221300445497, ..., 0.001314960652962327] 453 | 9 [0.000538919004611671, ..., 0.8796722888946533] 454 | ``` 455 | 456 | -------------------------------------------------------------------------------- /sample_binary.json: -------------------------------------------------------------------------------- 1 | {"image": {"b64": "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"}} 2 | {"image": {"b64": "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"}} 3 | {"image": {"b64": "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"}} 4 | {"image": {"b64": "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"}} 5 | {"image": {"b64": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAPODe3j6GhQU/paSkPoGAgDsAAAAAAAAAAAAAAADCwEA8ysjIPqmoKD/Y1lY/mZiYPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKuqqj7//X0///19P//9fT+xsDA9AAAAAAAAAACBgIA8AP/+Pv/9fT///X0///19P5GQED4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLgYD7p52c///19P//9fT/w7m4/oaAgPQAAAAAAAAAAlZQUPv/9fT///X0///19P//9fT/g3t4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3tjY///19P//9fT///X0/kZAQPwAAAAAAAAAAAAAAAJWUFD7//X0///19P//9fT///X0/hoUFPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgIA+6+lpP//9fT///X0///19P+roaD4AAAAAAAAAAAAAAACVlBQ+//19P//9fT///X0///19P5GQED4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxsDA9xMJCP//9fT///X0///19P//9fT/CwMA9AAAAAIGAgDyrqqo+zMpKP//9fT///X0///19P//9fT+RkBA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlZQUPv/9fT///X0///19P//9fT///X0/zMrKPquqqj7T0VE///19P//9fT///X0///19P//9fT+5uDg/4uDgPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6NDT///X0///19P//9fT///X0///19P//9fT///X0/AP9+P//9fT///X0///19P//9fT///X0/g4KCPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW1NQ+//19P//9fT///X0///19P//9fT///X0///19PwD/fj///X0///19P//9fT///X0/vLs7P6GgoDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlZQUPv/9fT///X0///19P//9fT///X0///19P//9fT8A/34///19P//9fT///X0///19P7W0ND8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2MDD76+Hg/9PJyP5aVFT/e3Fw/9PJyP/Tycj/08nI/9vR0PwD/fj8A/34/AACAPwD/fj+wry8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0tBQPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMLAwDzAvz8///19P//9fT///X0/8vBwPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkpERP//9fT///X0///19P5uamj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkZAQPdzaWj///X0///19P//9fT+1tDQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmoKD7//X0///19P//9fT///X0/mJcXPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk4mI///19P//9fT///X0///19P/LwcD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIxsY+AP9+P//9fT///X0///19P//9fT/y8HA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vT0PgD/fj///X0///19P//9fT/o5mY/lZQUPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMLAQD0A/34///19P//9fT///X0/p6amPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9+P//9fT+hoCA/sbAwPYGAgDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="}} 6 | {"image": {"b64": "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"}} 7 | {"image": {"b64": "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"}} 8 | {"image": {"b64": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAPsC/Pz8AAIA/gYAAP4GAAD+BgAA/gYCAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAAD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/gYAAP4GAAD+BgIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgIA+AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP8C/Pz+BgIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgIA+gYCAPoGAAD+BgAA/gYAAP4GAAD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP4GAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAPsC/Pz8AAIA/AACAPwAAgD8AAIA/AACAP4GAgD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAPgAAgD8AAIA/AACAPwAAgD+BgAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgIA+AACAPwAAgD8AAIA/gYAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAAD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgAA/AACAPwAAgD8AAIA/gYCAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYAAPwAAgD8AAIA/AACAP4GAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAAD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgAA/AACAPwAAgD/Avz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwL8/PwAAgD8AAIA/gYAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYAAPwAAgD8AAIA/AACAP4GAgD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgD8AAIA/AACAP8C/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AACAPwAAgD+BgIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAvz8/AACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgAA/AACAPwAAgD8AAIA/wL8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYAAPwAAgD8AAIA/wL8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAAD8AAIA/AACAP4GAgD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="}} 9 | {"image": {"b64": "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"}} 10 | {"image": {"b64": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+ODj8A/34/zsxMP62sLD/Jx0c/jYwMP7e2tj7a2Ng9gYAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImIiD7g3l4/o6KiPpWUlD6amRk/urk5P+/tbT/v7W0//Pp6P8TCQj/q6Og9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACnpiY/xsREPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjm5j6joqI+sbAwPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA19VVP6CfHz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4uDgPN7cXD/o5uY+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImICD749nY/g4ICPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqagoP/j2dj+pqKg9AAAAAAAAAAAAAAAAAAAAAIuKCj+Lioo+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISDAz8A/34/yMbGPgAAAAAAAAAAAAAAAAAAAAC+vT0/jIsLPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClpKQ+AP9+P9jW1j4AAAAAAAAAAAAAAACrqqo+5+VlP7Oysj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYAAPMbERD/m5GQ/sbAwPQAAAAAAAAAAm5oaPwD/fj/m5GQ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADe3Nw+AP9+P4KBAT+BgIA7kZAQPdHPTz8AAIA/5uRkPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMPBQT8A/34/uLc3P728PD+wry8/AP9+P+bkZD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJiIg96ujoPpSTEz+xsLA9k5ISPwD/fj/m5GQ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjGxj4A/34/5uRkPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIxsY+AP9+P+bkZD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKcnPwD/fj/m5GQ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiHBz/q6Gg/gYAAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIxsY+/ft7P9LQUD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMbGPvj2dj+lpCQ+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP78/D7n5WU/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="}} 11 | --------------------------------------------------------------------------------