From cdbba13aa076c0435ccfd0dba751605e21091d66 Mon Sep 17 00:00:00 2001 From: Hashim Sharif <hsharif3@miranda.cs.illinois.edu> Date: Fri, 19 Mar 2021 00:23:25 -0500 Subject: [PATCH] Creating pip installabe package for Keras frontend --- .../{frontend => keras_frontend}/__init__.py | 0 .../approxhpvm_translator.py | 10 ++++---- .../{frontend => keras_frontend}/config.py | 0 .../hpvm_dfg_translator.py | 4 ++-- .../hpvm_intrinsics.py | 0 .../{frontend => keras_frontend}/knobs.py | 0 .../promise_translator.py | 6 ++--- .../quantize_utils.py | 0 .../{frontend => keras_frontend}/setup.py | 0 .../{frontend => keras_frontend}/utils.py | 0 .../weight_utils.py | 0 hpvm/projects/keras/setup.py | 16 +++++++++---- hpvm/projects/keras/src/Benchmark.py | 23 +++++++++++-------- 13 files changed, 35 insertions(+), 24 deletions(-) rename hpvm/projects/keras/{frontend => keras_frontend}/__init__.py (100%) rename hpvm/projects/keras/{frontend => keras_frontend}/approxhpvm_translator.py (99%) rename hpvm/projects/keras/{frontend => keras_frontend}/config.py (100%) rename hpvm/projects/keras/{frontend => keras_frontend}/hpvm_dfg_translator.py (99%) rename hpvm/projects/keras/{frontend => keras_frontend}/hpvm_intrinsics.py (100%) rename hpvm/projects/keras/{frontend => keras_frontend}/knobs.py (100%) rename hpvm/projects/keras/{frontend => keras_frontend}/promise_translator.py (99%) rename hpvm/projects/keras/{frontend => keras_frontend}/quantize_utils.py (100%) rename hpvm/projects/keras/{frontend => keras_frontend}/setup.py (100%) rename hpvm/projects/keras/{frontend => keras_frontend}/utils.py (100%) rename hpvm/projects/keras/{frontend => keras_frontend}/weight_utils.py (100%) diff --git a/hpvm/projects/keras/frontend/__init__.py b/hpvm/projects/keras/keras_frontend/__init__.py similarity index 100% rename from hpvm/projects/keras/frontend/__init__.py rename to hpvm/projects/keras/keras_frontend/__init__.py diff --git a/hpvm/projects/keras/frontend/approxhpvm_translator.py b/hpvm/projects/keras/keras_frontend/approxhpvm_translator.py similarity index 99% rename from hpvm/projects/keras/frontend/approxhpvm_translator.py rename to hpvm/projects/keras/keras_frontend/approxhpvm_translator.py index f3bc0076c6..48f469f226 100644 --- a/hpvm/projects/keras/frontend/approxhpvm_translator.py +++ b/hpvm/projects/keras/keras_frontend/approxhpvm_translator.py @@ -1,11 +1,11 @@ import sys import numpy as np -from frontend.promise_translator import PromiseRtTranslator -from frontend.hpvm_dfg_translator import HPVMTranslator -from frontend.weight_utils import dumpLabels, dumpData, dumpConvWeights, dumpFcWeights, dumpFcBias -from frontend.utils import * -from frontend.knobs import * +from keras_frontend.promise_translator import PromiseRtTranslator +from keras_frontend.hpvm_dfg_translator import HPVMTranslator +from keras_frontend.weight_utils import dumpLabels, dumpData, dumpConvWeights, dumpFcWeights, dumpFcBias +from keras_frontend.utils import * +from keras_frontend.knobs import * import keras import os diff --git a/hpvm/projects/keras/frontend/config.py b/hpvm/projects/keras/keras_frontend/config.py similarity index 100% rename from hpvm/projects/keras/frontend/config.py rename to hpvm/projects/keras/keras_frontend/config.py diff --git a/hpvm/projects/keras/frontend/hpvm_dfg_translator.py b/hpvm/projects/keras/keras_frontend/hpvm_dfg_translator.py similarity index 99% rename from hpvm/projects/keras/frontend/hpvm_dfg_translator.py rename to hpvm/projects/keras/keras_frontend/hpvm_dfg_translator.py index d14c64bbf4..53369478e3 100644 --- a/hpvm/projects/keras/frontend/hpvm_dfg_translator.py +++ b/hpvm/projects/keras/keras_frontend/hpvm_dfg_translator.py @@ -1,8 +1,8 @@ import os import sys -from frontend.utils import * -from frontend.hpvm_intrinsics import * +from keras_frontend.utils import * +from keras_frontend.hpvm_intrinsics import * class HPVMTranslator: diff --git a/hpvm/projects/keras/frontend/hpvm_intrinsics.py b/hpvm/projects/keras/keras_frontend/hpvm_intrinsics.py similarity index 100% rename from hpvm/projects/keras/frontend/hpvm_intrinsics.py rename to hpvm/projects/keras/keras_frontend/hpvm_intrinsics.py diff --git a/hpvm/projects/keras/frontend/knobs.py b/hpvm/projects/keras/keras_frontend/knobs.py similarity index 100% rename from hpvm/projects/keras/frontend/knobs.py rename to hpvm/projects/keras/keras_frontend/knobs.py diff --git a/hpvm/projects/keras/frontend/promise_translator.py b/hpvm/projects/keras/keras_frontend/promise_translator.py similarity index 99% rename from hpvm/projects/keras/frontend/promise_translator.py rename to hpvm/projects/keras/keras_frontend/promise_translator.py index 015c1c562a..124037c003 100644 --- a/hpvm/projects/keras/frontend/promise_translator.py +++ b/hpvm/projects/keras/keras_frontend/promise_translator.py @@ -4,8 +4,8 @@ import random import numpy as np import sys from keras import backend as K -from frontend.utils import * -from frontend.quantize_utils import get_best_quant_range, dumpQuantizeRanges +from keras_frontend.utils import * +from keras_frontend.quantize_utils import get_best_quant_range, dumpQuantizeRanges class State: @@ -600,7 +600,7 @@ class PromiseRtTranslator: promise_layer_str = "void* " + output_var + " = tensorAdd(" + input_vars[0] promise_layer_str += ", " + input_vars[1] + "); \n" - print (promise_layer_str) + #print (promise_layer_str) self.program_str += promise_layer_str diff --git a/hpvm/projects/keras/frontend/quantize_utils.py b/hpvm/projects/keras/keras_frontend/quantize_utils.py similarity index 100% rename from hpvm/projects/keras/frontend/quantize_utils.py rename to hpvm/projects/keras/keras_frontend/quantize_utils.py diff --git a/hpvm/projects/keras/frontend/setup.py b/hpvm/projects/keras/keras_frontend/setup.py similarity index 100% rename from hpvm/projects/keras/frontend/setup.py rename to hpvm/projects/keras/keras_frontend/setup.py diff --git a/hpvm/projects/keras/frontend/utils.py b/hpvm/projects/keras/keras_frontend/utils.py similarity index 100% rename from hpvm/projects/keras/frontend/utils.py rename to hpvm/projects/keras/keras_frontend/utils.py diff --git a/hpvm/projects/keras/frontend/weight_utils.py b/hpvm/projects/keras/keras_frontend/weight_utils.py similarity index 100% rename from hpvm/projects/keras/frontend/weight_utils.py rename to hpvm/projects/keras/keras_frontend/weight_utils.py diff --git a/hpvm/projects/keras/setup.py b/hpvm/projects/keras/setup.py index 9da7193379..bdf1921406 100644 --- a/hpvm/projects/keras/setup.py +++ b/hpvm/projects/keras/setup.py @@ -2,11 +2,17 @@ from setuptools import setup setup( - name='frontend', - version='1.0', - description='ApproxHPVM frontend modules', + name='keras_frontend', + version='0.1', + description='ApproxHPVM Keras Frontend. Keras -> HPVM Translator', author='Hashim', author_email='hsharif3@illinois.edu', - packages=['frontend'], - install_requires=[], + packages=['keras_frontend'], + install_requires=[ + "torchvision==0.8.2", + "tensorflow==1.14", + "tensorflow-gpu==1.14", + "keras==2.1.6", + "scipy==1.1.0" + ], ) diff --git a/hpvm/projects/keras/src/Benchmark.py b/hpvm/projects/keras/src/Benchmark.py index aaa7bdacc4..b0df9d98d6 100644 --- a/hpvm/projects/keras/src/Benchmark.py +++ b/hpvm/projects/keras/src/Benchmark.py @@ -6,9 +6,9 @@ import shutil import subprocess from keras.utils.np_utils import to_categorical from keras.models import load_model -from frontend.approxhpvm_translator import translate_to_approxhpvm -from frontend.weight_utils import dumpCalibrationData -from frontend.weight_utils import reloadHPVMWeights +from keras_frontend.approxhpvm_translator import translate_to_approxhpvm +from keras_frontend.weight_utils import dumpCalibrationData +from keras_frontend.weight_utils import reloadHPVMWeights # Every CNN Benchmark must inherit from Benchmark class @@ -39,10 +39,10 @@ class Benchmark: # Compiles frontend generated sources - def compileSource(self, working_dir): + def compileSource(self, working_dir, src_name, binary_name): - src_file = os.getcwd() + "/" + working_dir + "/approxhpvm_src.cc" - target_binary = os.getcwd() + "/" + working_dir + "/HPVM_binary" + src_file = os.getcwd() + "/" + working_dir + "/" + src_name # approxhpvm_src.cc" + target_binary = os.getcwd() + "/" + working_dir + "/" + binary_name # HPVM_binary" approx_conf_file = "tuner_confs.txt" FNULL = open(os.devnull, 'w') @@ -135,7 +135,12 @@ class Benchmark: (argv[1] == "hpvm_reload")) # Do not redump HPVM weights if `hpvm_reload` used if len(argv) > 3 and argv[3] == "compile": - self.compileSource(working_dir) + self.compileSource(working_dir, "approxhpvm_src.cc", "HPVM_binary") + else: + self.printUsage() + + if len(argv) > 4 and argv[4] == "compile_tuner": + self.compileSource(working_dir, "approxhpvm_tuner_src.cc", "HPVM_tuner_binary") else: self.printUsage() @@ -144,8 +149,8 @@ class Benchmark: model.save_weights(self.keras_model_file) - elif len(argv) > 2: - self.printUsage() + #elif len(argv) > 2: + # self.printUsage() -- GitLab