load("//tensorflow:tensorflow.bzl", "get_compatible_with_portable") load("//tensorflow:tensorflow.bzl", "tf_cc_test") load("//tensorflow/lite:special_rules.bzl", "tflite_portable_test_suite") load( "//tensorflow/lite:build_def.bzl", "tflite_copts", ) package( default_visibility = [ "//visibility:public", ], licenses = ["notice"], ) exports_files(glob([ "testdata/*.bin", ])) cc_library( name = "reduced_precision_support", srcs = [], hdrs = [ "reduced_precision_support.h", ], compatible_with = get_compatible_with_portable(), deps = [ "//tensorflow/lite/kernels/internal:compatibility", ], ) tf_cc_test( name = "reduced_precision_support_test", srcs = ["reduced_precision_support_test.cc"], tags = [ "tflite_not_portable_android", "tflite_not_portable_ios", ], deps = [ ":reduced_precision_support", ":test_util", "//tensorflow/core/platform:platform_port", "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "//tensorflow/lite/testing:util", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "modify_model_interface", srcs = ["modify_model_interface.cc"], hdrs = ["modify_model_interface.h"], deps = [ ":model_utils", "//tensorflow/lite:framework", "//tensorflow/lite/c:common", "//tensorflow/lite/kernels/internal:compatibility", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/memory", "@flatbuffers", ], ) tf_cc_test( name = "modify_model_interface_test", srcs = ["modify_model_interface_test.cc"], tags = [ "tflite_not_portable_android", "tflite_not_portable_ios", ], deps = [ ":modify_model_interface", "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "@com_google_absl//absl/memory", "@com_google_googletest//:gtest_main", "@flatbuffers", ], ) cc_binary( name = "modify_model_interface_main", srcs = ["modify_model_interface_main.cc"], deps = [ ":modify_model_interface", ":quantize_model", ], ) cc_library( name = "quantization_wrapper_utils", srcs = ["quantization_wrapper_utils.cc"], hdrs = ["quantization_wrapper_utils.h"], deps = [ ":operator_property", "//tensorflow/lite:framework", "//tensorflow/lite/core/api", "//tensorflow/lite/schema:schema_fbs", "@flatbuffers", ], ) tf_cc_test( name = "quantization_wrapper_utils_test", srcs = ["quantization_wrapper_utils_test.cc"], tags = [ "tflite_not_portable_android", "tflite_not_portable_ios", ], deps = [ ":quantization_wrapper_utils", "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@flatbuffers", ], ) tf_cc_test( name = "quantization_wrapper_utils_custom_test", srcs = [ "quantization_wrapper_utils.cc", "quantization_wrapper_utils.h", "quantization_wrapper_utils_custom_test.cc", ], defines = [ "TFLITE_CUSTOM_LSTM", ], tags = [ "tflite_not_portable_android", "tflite_not_portable_ios", ], deps = [ ":operator_property", "//tensorflow/lite:framework", "//tensorflow/lite/core/api", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest_main", "@flatbuffers", ], ) cc_library( name = "quantization_wrapper", srcs = ["quantization_wrapper.cc"], hdrs = ["quantization_wrapper.h"], deps = [ ":quantization_wrapper_utils", "//tensorflow/lite:framework", "//tensorflow/lite/core/api", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/tools/optimize:quantize_model", "@flatbuffers", ], ) cc_library( name = "quantization_utils", srcs = ["quantization_utils.cc"], hdrs = ["quantization_utils.h"], compatible_with = get_compatible_with_portable(), deps = [ ":model_utils", "//tensorflow/lite:framework", "//tensorflow/lite:minimal_logging", "//tensorflow/lite/c:common", "//tensorflow/lite/core/api", "//tensorflow/lite/kernels/internal:cppmath", "//tensorflow/lite/kernels/internal:quantization_util", "//tensorflow/lite/kernels/internal:tensor_utils", "//tensorflow/lite/kernels/internal:types", "//tensorflow/lite/schema:schema_fbs", "//third_party/eigen3", "@com_google_absl//absl/memory", ], ) cc_library( name = "model_utils", srcs = ["model_utils.cc"], hdrs = ["model_utils.h"], compatible_with = get_compatible_with_portable(), deps = [ ":operator_property", "//tensorflow/lite:framework", "//tensorflow/lite/kernels/internal:tensor_utils", "//tensorflow/lite/kernels/internal:types", "//tensorflow/lite/schema:schema_conversion_utils", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", ], ) tf_cc_test( name = "model_utils_test", srcs = ["model_utils_test.cc"], tags = [ "tflite_not_portable_ios", ], deps = [ ":model_utils", ":test_util", "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "@com_google_googletest//:gtest_main", "@flatbuffers", ], ) cc_library( name = "operator_property", srcs = ["operator_property.cc"], hdrs = ["operator_property.h"], compatible_with = get_compatible_with_portable(), copts = tflite_copts(), deps = [ "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", ], ) tf_cc_test( name = "quantization_utils_test", srcs = ["quantization_utils_test.cc"], args = [ "--test_model_file=$(location //tensorflow/lite/tools/optimize:testdata/single_conv_weights_min_0_max_plus_10.bin)", ], data = [ ":testdata/single_conv_weights_min_0_max_plus_10.bin", ], tags = [ "tflite_not_portable_android", "tflite_not_portable_ios", ], deps = [ ":quantization_utils", ":test_util", "//tensorflow/core:framework_internal", "//tensorflow/core:lib", "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "//tensorflow/lite/testing:util", "//third_party/eigen3", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "quantize_weights", srcs = select({ "//tensorflow:ios": ["quantize_weights_portable.cc"], "//tensorflow:android": ["quantize_weights_portable.cc"], "//conditions:default": ["quantize_weights.cc"], }), hdrs = ["quantize_weights.h"], compatible_with = get_compatible_with_portable(), deps = [ ":quantization_utils", ":model_utils", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_set", "@flatbuffers", "//tensorflow/lite:framework", # TODO(suharshs): Move the relevant quantization utils to a non-internal location. "//tensorflow/lite/kernels/internal:tensor_utils", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "//tensorflow/core:tflite_portable_logging", ] + select({ "//tensorflow:android": [], "//tensorflow:ios": [], "//conditions:default": [ "//tensorflow/compiler/mlir/lite/quantization/lite:quantize_weights", ], }), ) tf_cc_test( name = "quantize_weights_test", srcs = ["quantize_weights_test.cc"], args = [ "--test_model_file=$(location //tensorflow/lite/tools/optimize:testdata/single_conv_weights_min_0_max_plus_10.bin)", ], data = [ "//tensorflow/lite/tools/optimize:testdata/custom_op.bin", "//tensorflow/lite/tools/optimize:testdata/quantized_with_gather.bin", "//tensorflow/lite/tools/optimize:testdata/single_conv_weights_min_0_max_plus_10.bin", "//tensorflow/lite/tools/optimize:testdata/weight_shared_between_convs.bin", ], tags = [ "tflite_not_portable_android", "tflite_not_portable_ios", ], deps = [ ":quantize_weights", ":test_util", "//tensorflow/core:framework_internal", "//tensorflow/core:lib", "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "test_util", testonly = 1, srcs = ["test_util.cc"], hdrs = ["test_util.h"], deps = [ "//tensorflow/lite:framework", "//tensorflow/lite/core/api", "@com_google_googletest//:gtest", "@flatbuffers", ], ) cc_library( name = "quantize_model", srcs = ["quantize_model.cc"], hdrs = ["quantize_model.h"], deps = [ ":model_utils", ":operator_property", ":quantization_utils", "//tensorflow/lite:framework", "//tensorflow/lite:util", "//tensorflow/lite/core/api", "//tensorflow/lite/kernels/internal:cppmath", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "@com_google_absl//absl/strings", "@flatbuffers", ], ) tf_cc_test( name = "quantize_model_test", srcs = ["quantize_model_test.cc"], args = [ "--test_model_file=$(location //tensorflow/lite/tools/optimize:testdata/single_conv_weights_min_0_max_plus_10.bin)", ], data = [ "//tensorflow/lite/tools/optimize:testdata/add_with_const_input.bin", "//tensorflow/lite/tools/optimize:testdata/argmax.bin", "//tensorflow/lite/tools/optimize:testdata/broadcast_to.bin", "//tensorflow/lite/tools/optimize:testdata/concat.bin", "//tensorflow/lite/tools/optimize:testdata/fc.bin", "//tensorflow/lite/tools/optimize:testdata/fc_qat.bin", "//tensorflow/lite/tools/optimize:testdata/gather_nd.bin", "//tensorflow/lite/tools/optimize:testdata/lstm_calibrated.bin", "//tensorflow/lite/tools/optimize:testdata/lstm_calibrated2.bin", "//tensorflow/lite/tools/optimize:testdata/lstm_quantized.bin", "//tensorflow/lite/tools/optimize:testdata/lstm_quantized2.bin", "//tensorflow/lite/tools/optimize:testdata/maximum.bin", "//tensorflow/lite/tools/optimize:testdata/minimum.bin", "//tensorflow/lite/tools/optimize:testdata/mixed.bin", "//tensorflow/lite/tools/optimize:testdata/mixed16x8.bin", "//tensorflow/lite/tools/optimize:testdata/multi_input_add_reshape.bin", "//tensorflow/lite/tools/optimize:testdata/pack.bin", "//tensorflow/lite/tools/optimize:testdata/resource_vars_calibrated.bin", "//tensorflow/lite/tools/optimize:testdata/single_avg_pool_min_minus_5_max_plus_5.bin", "//tensorflow/lite/tools/optimize:testdata/single_conv_no_bias.bin", "//tensorflow/lite/tools/optimize:testdata/single_conv_weights_min_0_max_plus_10.bin", "//tensorflow/lite/tools/optimize:testdata/single_conv_weights_min_minus_127_max_plus_127.bin", "//tensorflow/lite/tools/optimize:testdata/single_softmax_min_minus_5_max_plus_5.bin", "//tensorflow/lite/tools/optimize:testdata/split.bin", "//tensorflow/lite/tools/optimize:testdata/svdf_calibrated.bin", "//tensorflow/lite/tools/optimize:testdata/svdf_quantized.bin", "//tensorflow/lite/tools/optimize:testdata/transpose.bin", "//tensorflow/lite/tools/optimize:testdata/unidirectional_sequence_lstm_calibrated.bin", "//tensorflow/lite/tools/optimize:testdata/unidirectional_sequence_lstm_quantized.bin", "//tensorflow/lite/tools/optimize:testdata/unpack.bin", "//tensorflow/lite/tools/optimize:testdata/where.bin", ], tags = [ "tflite_not_portable_android", "tflite_not_portable_ios", ], deps = [ ":quantize_model", ":test_util", "//tensorflow/core:framework_internal", "//tensorflow/core:lib", "//tensorflow/lite:framework", "//tensorflow/lite/schema:schema_fbs", "//tensorflow/lite/schema:schema_utils", "//tensorflow/lite/testing:util", "@com_google_googletest//:gtest", "@flatbuffers", ], ) tflite_portable_test_suite()