262 lines
9.5 KiB
Python
262 lines
9.5 KiB
Python
load("@xla//third_party/rules_python/python:py_library.bzl", "py_library")
|
|
load("@xla//xla/tsl/platform:build_config_root.bzl", "if_pywrap")
|
|
load("//tensorflow:tensorflow.default.bzl", "tf_python_pybind_extension")
|
|
load("//tensorflow/core/platform:rules_cc.bzl", "cc_library")
|
|
|
|
licenses(["notice"])
|
|
|
|
package(
|
|
# copybara:uncomment default_applicable_licenses = ["//tensorflow:LICENSE"],
|
|
default_visibility = [
|
|
":friends",
|
|
"//tensorflow:__pkg__",
|
|
],
|
|
)
|
|
|
|
package_group(
|
|
name = "friends",
|
|
packages = [
|
|
"//learning/brain/mobile/lite/tooling/model_analyzer/...",
|
|
"//learning/brain/mobile/lite/tools/analyzer/...",
|
|
"//tensorflow/lite/python/...",
|
|
"//tensorflow/lite/python/converter/...",
|
|
"//tensorflow/lite/toco/...",
|
|
"//third_party/odml/litert/litert/...",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "tf_tfl_flatbuffer_helpers",
|
|
srcs = ["tf_tfl_flatbuffer_helpers.cc"],
|
|
hdrs = ["tf_tfl_flatbuffer_helpers.h"],
|
|
deps = [
|
|
"//tensorflow/compiler/mlir/lite:common",
|
|
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:tensorflow_lite",
|
|
"//tensorflow/compiler/mlir/lite:tf_to_tfl_flatbuffer",
|
|
"//tensorflow/compiler/mlir/lite:types_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
|
|
"//tensorflow/compiler/mlir/lite/tools/optimize:reduced_precision_metadata",
|
|
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
|
|
"//tensorflow/compiler/mlir/tensorflow:tensorflow_ops",
|
|
"//tensorflow/core:core_cpu_base",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"@com_google_absl//absl/log",
|
|
"@com_google_absl//absl/status",
|
|
"@com_google_absl//absl/status:statusor",
|
|
"@llvm-project//mlir:IR",
|
|
"@llvm-project//mlir:Support",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "graphdef_to_tfl_flatbuffer",
|
|
srcs = ["graphdef_to_tfl_flatbuffer.cc"],
|
|
hdrs = [
|
|
"graphdef_to_tfl_flatbuffer.h",
|
|
],
|
|
deps = [
|
|
":tf_tfl_flatbuffer_helpers",
|
|
"//tensorflow/compiler/mlir/lite:common",
|
|
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:types_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
|
|
"//tensorflow/compiler/mlir/tensorflow:mlir_roundtrip_flags",
|
|
"//tensorflow/compiler/mlir/tensorflow/translate/tools:parsers",
|
|
"//tensorflow/compiler/mlir/tf2xla/api/v2:graph_to_tf_executor",
|
|
"//tensorflow/core:core_cpu_base",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"@com_google_absl//absl/status",
|
|
"@llvm-project//mlir:IR",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "saved_model_to_tfl_flatbuffer",
|
|
srcs = ["saved_model_to_tfl_flatbuffer.cc"],
|
|
hdrs = [
|
|
"saved_model_to_tfl_flatbuffer.h",
|
|
],
|
|
deps = [
|
|
":tf_tfl_flatbuffer_helpers",
|
|
"//tensorflow/compiler/mlir/lite:common",
|
|
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:tensorflow_lite",
|
|
"//tensorflow/compiler/mlir/lite:tf_to_tfl_flatbuffer",
|
|
"//tensorflow/compiler/mlir/lite:types_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
|
|
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
|
|
"//tensorflow/compiler/mlir/tensorflow:mlir_roundtrip_flags",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"@com_google_absl//absl/status",
|
|
"@com_google_absl//absl/types:span",
|
|
"@llvm-project//llvm:Support",
|
|
"@llvm-project//mlir:FuncDialect",
|
|
"@llvm-project//mlir:IR",
|
|
"@llvm-project//mlir:Support",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "jax_to_tfl_flatbuffer",
|
|
srcs = ["jax_to_tfl_flatbuffer.cc"],
|
|
hdrs = [
|
|
"jax_to_tfl_flatbuffer.h",
|
|
],
|
|
deps = [
|
|
":tf_tfl_flatbuffer_helpers",
|
|
"//tensorflow/compiler/mlir/lite:common",
|
|
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:tensorflow_lite",
|
|
"//tensorflow/compiler/mlir/lite:types_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite/quantization/common/quantization_lib:quantization_config",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"@com_google_absl//absl/log",
|
|
"@com_google_absl//absl/status",
|
|
"@com_google_absl//absl/strings",
|
|
"@com_google_absl//absl/utility",
|
|
"@llvm-project//llvm:Support",
|
|
"@llvm-project//mlir:FuncDialect",
|
|
"@llvm-project//mlir:IR",
|
|
"@llvm-project//mlir:Support",
|
|
"@xla//xla/hlo/parser:hlo_parser",
|
|
"@xla//xla/hlo/translate:stablehlo",
|
|
"@xla//xla/service:hlo_proto_cc",
|
|
],
|
|
)
|
|
|
|
# Smaller version of flatbuffer_translate which only converts flatbuffer to MLIR.
|
|
cc_library(
|
|
name = "flatbuffer_to_mlir",
|
|
srcs = [
|
|
"flatbuffer_to_mlir.cc",
|
|
],
|
|
hdrs = [
|
|
"flatbuffer_to_mlir.h",
|
|
],
|
|
deps = [
|
|
"//tensorflow/compiler/mlir/lite:flatbuffer_import",
|
|
"@com_google_absl//absl/strings:string_view",
|
|
"@llvm-project//llvm:Support",
|
|
"@llvm-project//mlir:IR",
|
|
"@llvm-project//mlir:Support",
|
|
"@llvm-project//mlir:TranslateLib",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "wrap_converter",
|
|
srcs = [
|
|
"wrap_converter.py",
|
|
],
|
|
strict_deps = True,
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":_pywrap_converter_api",
|
|
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib_py",
|
|
"//tensorflow/python:pywrap_tensorflow",
|
|
] + if_pywrap(
|
|
if_true = [] + select({
|
|
"//conditions:default": [],
|
|
# This reqirement is for LiteRT only as tensorflow/compiler/mlirt/lite is
|
|
# duplicated in LiteRT/tflite/converter.
|
|
"//tensorflow:disable_tf_lite_py": [
|
|
"//tensorflow/lite/python:pywrap_tflite",
|
|
],
|
|
}),
|
|
),
|
|
)
|
|
|
|
config_setting(
|
|
name = "tflite_convert_with_select_tf_ops",
|
|
define_values = {"tflite_convert_with_select_tf_ops": "true"},
|
|
visibility = ["//visibility:private"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "converter_python_api_hdrs",
|
|
srcs = [
|
|
"converter_python_api.h",
|
|
],
|
|
visibility = ["//visibility:private"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "converter_python_api",
|
|
srcs = ["converter_python_api.cc"],
|
|
hdrs = ["converter_python_api.h"],
|
|
features = ["-parse_headers"],
|
|
visibility = [
|
|
"//visibility:public",
|
|
],
|
|
deps = [
|
|
":flatbuffer_to_mlir",
|
|
":graphdef_to_tfl_flatbuffer",
|
|
":jax_to_tfl_flatbuffer",
|
|
":saved_model_to_tfl_flatbuffer",
|
|
"//tensorflow/c:kernels",
|
|
"//tensorflow/c:tf_status_headers",
|
|
"//tensorflow/compiler/mlir/lite:converter_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:model_flags_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite:types_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite/core:absl_error_model_builder",
|
|
"//tensorflow/compiler/mlir/lite/debug:debug_options_proto_cc",
|
|
"//tensorflow/compiler/mlir/lite/metrics:error_collector",
|
|
"//tensorflow/compiler/mlir/lite/python/interpreter_wrapper:python_error_reporter",
|
|
"//tensorflow/compiler/mlir/lite/python/interpreter_wrapper:python_utils",
|
|
"//tensorflow/compiler/mlir/lite/quantization/lite:quantize_model",
|
|
"//tensorflow/compiler/mlir/lite/schema:schema_fbs",
|
|
"//tensorflow/compiler/mlir/lite/sparsity:sparsify_model",
|
|
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
|
|
"//tensorflow/core:framework",
|
|
"//tensorflow/core:lib",
|
|
"//tensorflow/core:protos_all_cc",
|
|
"@com_google_absl//absl/container:flat_hash_set",
|
|
"@com_google_absl//absl/log",
|
|
"@com_google_absl//absl/status",
|
|
"@com_google_absl//absl/strings:string_view",
|
|
"@com_google_protobuf//:protobuf",
|
|
"@com_google_protobuf//:protobuf_headers",
|
|
"@flatbuffers//:runtime_cc",
|
|
"@xla//third_party/python_runtime:headers", # build_cleaner: keep; DNR: b/35864863
|
|
"@xla//xla/tsl/platform:status",
|
|
] + select({
|
|
# This is required when running `tflite_convert` from `bazel`.
|
|
# It requires to link with TensorFlow Ops to get the op definitions.
|
|
":tflite_convert_with_select_tf_ops": [
|
|
"//tensorflow/core:ops",
|
|
],
|
|
"//conditions:default": [],
|
|
}),
|
|
alwayslink = True,
|
|
)
|
|
|
|
tf_python_pybind_extension(
|
|
name = "_pywrap_converter_api",
|
|
srcs = [
|
|
"converter_python_api_wrapper.cc",
|
|
],
|
|
hdrs = [":converter_python_api_hdrs"],
|
|
enable_stub_generation = True,
|
|
pytype_srcs = [
|
|
"_pywrap_converter_api.pyi",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
"//tensorflow/compiler/mlir/quantization/tensorflow/python:py_function_lib",
|
|
"//tensorflow/python/lib/core:pybind11_lib",
|
|
"@pybind11",
|
|
"@xla//third_party/python_runtime:headers",
|
|
] + if_pywrap([":converter_python_api"]),
|
|
)
|