SeaWolf-AI's picture
Upload full LiteRT-LM codebase
5f923cd verified
# Copyright 2025 The ODML Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# [Google-internal load of `cc_library`]
# [Google-internal load of `cc_test`]
package(
default_hdrs_check = "strict",
default_visibility = [
"//visibility:public",
],
)
licenses(["notice"])
# In most case, pick the engine implementation with
# //runtime/core:engine_impl_selected.
#
package_group(
name = "engine_impl_users",
packages = [
# for ":engine_impl_selected".
"//runtime/engine",
# for e2e tests.
"//runtime/e2e_tests/...",
"//c/...",
"//python/...",
# for SpeechProcessor
# for AI Edge Hub
],
)
ENGINE_IMPL_COMMON_DEPS = [
":session_factory",
"@com_google_absl//absl/base:no_destructor",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:absl_check",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/time",
"@litert//litert/cc:litert_macros",
"//runtime/components:model_resources",
"//runtime/components:tokenizer",
"//runtime/engine:engine_factory",
"//runtime/engine:engine_interface",
"//runtime/engine:engine_settings",
"//runtime/engine:io_types",
"//runtime/executor:audio_executor",
"//runtime/executor:audio_executor_settings",
"//runtime/executor:audio_litert_compiled_model_executor",
"//runtime/executor:audio_executor_utils",
"//runtime/executor:executor_settings_base",
"//runtime/executor:litert_compiled_model_executor_utils",
"//runtime/executor:llm_executor",
"//runtime/executor:llm_executor_settings",
"//runtime/executor:llm_litert_compiled_model_executor",
"//runtime/executor:magic_number_configs_helper",
"//runtime/executor:vision_executor",
"//runtime/executor:vision_litert_compiled_model_executor",
"//runtime/framework:threadpool",
"//runtime/proto:llm_metadata_cc_proto",
"//runtime/proto:sampler_params_cc_proto",
"//runtime/executor:llm_litert_compiled_model_executor_factory",
"//runtime/util:file_format_util",
"//runtime/util:litert_status_util",
] + select({
"@litert//litert:litert_link_capi_so": [
"@litert//litert/cc:litert_api_with_dynamic_runtime",
],
"//conditions:default": [
"@litert//litert/cc:litert_environment",
],
})
cc_library(
name = "engine_impl",
srcs = ["engine_impl.cc"],
visibility = [":engine_impl_users"],
deps = ENGINE_IMPL_COMMON_DEPS + [
"//runtime/components:default_static_gpu_samplers",
"//runtime/executor:default_static_gpu_accelerator",
] + select({
"//conditions:default": [],
}),
alwayslink = 1,
)
cc_library(
name = "engine_impl_cpu_only",
srcs = ["engine_impl.cc"],
deps = ENGINE_IMPL_COMMON_DEPS,
alwayslink = 1,
)
cc_test(
name = "engine_impl_test",
srcs = ["engine_impl_test.cc"],
# The LiteRT GPU path is not ready yet. Only test the CPU path.
args = ["--gunit_filter=-EngineTest.CreateEngineGPU*"],
data = ["//runtime/testdata"],
tags = ["requires-mac-inputs:hard"], # Required for running on Forge on Mac.
deps = [
":engine_impl", # buildcleaner: keep
"@com_google_googletest//:gtest_main",
"@com_google_absl//absl/cleanup",
"@com_google_absl//absl/log:absl_check",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"//runtime/engine:engine_factory",
"//runtime/engine:engine_interface",
"//runtime/engine:engine_settings",
"//runtime/engine:io_types",
"//runtime/executor:executor_settings_base",
"//runtime/executor:llm_executor_settings",
"//runtime/proto:sampler_params_cc_proto",
"//runtime/util:scoped_file",
"//runtime/util:test_utils",
],
)
cc_library(
name = "pipeline",
srcs = ["pipeline.cc"],
hdrs = ["pipeline.h"],
deps = [
":tasks",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/types:span",
"//runtime/components:sampler",
"//runtime/components:scoring_cpu_util",
"//runtime/components:stop_token_detector",
"//runtime/components:token_id_util",
"//runtime/components:tokenizer",
"//runtime/components:top_p_cpu_sampler",
"//runtime/components/constrained_decoding:constraint",
"//runtime/engine:io_types",
"//runtime/executor:executor_settings_base",
"//runtime/executor:llm_executor",
"//runtime/executor:llm_executor_io_types",
"//runtime/proto:sampler_params_cc_proto",
"//runtime/util:convert_tensor_buffer",
"//runtime/util:litert_status_util",
] + select({
"@litert//litert:litert_link_capi_so": [
"@litert//litert/cc:litert_api_with_dynamic_runtime",
],
"//conditions:default": [
"@litert//litert/cc:litert_macros",
"@litert//litert/cc:litert_tensor_buffer",
],
}),
)
cc_test(
name = "pipeline_test",
srcs = ["pipeline_test.cc"],
data = ["//runtime/components/testdata"],
deps = [
":pipeline",
"@com_google_googletest//:gtest_main",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/time",
"//runtime/components:sentencepiece_tokenizer",
"//runtime/components:stop_token_detector",
"//runtime/components:tokenizer",
"//runtime/components:top_p_cpu_sampler",
"//runtime/components/constrained_decoding:fake_constraint",
"//runtime/engine:io_types",
"//runtime/executor:fake_llm_executor",
"//runtime/executor:llm_executor_io_types",
"//runtime/framework:threadpool",
"//runtime/util:convert_tensor_buffer",
"//runtime/util:litert_status_util",
"//runtime/util:test_utils",
],
)
cc_library(
name = "session_basic",
srcs = ["session_basic.cc"],
hdrs = ["session_basic.h"],
deps = [
":pipeline",
":session_utils",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:span",
"@litert//litert/cc:litert_layout",
"@litert//litert/cc:litert_macros",
"@litert//litert/cc:litert_tensor_buffer_types",
"//runtime/components:sampler",
"//runtime/components:sampler_factory",
"//runtime/components:stop_token_detector",
"//runtime/components:tokenizer",
"//runtime/components/constrained_decoding:constraint",
"//runtime/engine:engine_interface",
"//runtime/engine:engine_settings",
"//runtime/engine:io_types",
"//runtime/executor:audio_executor",
"//runtime/executor:executor_settings_base",
"//runtime/executor:llm_executor",
"//runtime/executor:llm_executor_io_types",
"//runtime/executor:vision_executor",
"//runtime/framework:threadpool",
"//runtime/proto:llm_model_type_cc_proto",
"//runtime/proto:sampler_params_cc_proto",
"//runtime/util:convert_tensor_buffer",
"//runtime/util:executor_data_util",
"//runtime/util:litert_status_util",
"//runtime/util:model_type_utils",
"//runtime/util:tensor_buffer_util",
] + select({
"@litert//litert:litert_link_capi_so": [
"@litert//litert/cc:litert_api_with_dynamic_runtime",
],
"//conditions:default": [
"@litert//litert/cc:litert_model",
"@litert//litert/cc:litert_tensor_buffer",
],
}),
)
cc_test(
name = "session_basic_test",
srcs = ["session_basic_test.cc"],
data = [
"//runtime/components/testdata",
"//runtime/testdata",
],
tags = ["requires-mac-inputs:hard"], # Required for running on Forge on Mac.
deps = [
":session_basic",
"@com_google_googletest//:gtest_main",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/time",
"@litert//litert/cc:litert_tensor_buffer",
"@litert//litert/test:matchers",
"//runtime/components:sentencepiece_tokenizer",
"//runtime/components:tokenizer",
"//runtime/components/constrained_decoding:fake_constraint",
"//runtime/engine:engine_settings",
"//runtime/engine:io_types",
"//runtime/executor:audio_executor_settings",
"//runtime/executor:audio_litert_compiled_model_executor",
"//runtime/executor:executor_settings_base",
"//runtime/executor:fake_llm_executor",
"//runtime/executor:llm_executor_io_types",
"//runtime/framework:threadpool",
"//runtime/util:convert_tensor_buffer",
"//runtime/util:litert_status_util",
"//runtime/util:scoped_file",
"//runtime/util:tensor_buffer_util",
"//runtime/util:test_utils",
] + select({
"@litert//litert:litert_link_capi_so": [
"@litert//litert/cc:litert_api_with_dynamic_runtime",
],
"//conditions:default": [
"@litert//litert/cc:litert_environment",
],
}),
)
cc_library(
name = "session_factory",
srcs = ["session_factory.cc"],
hdrs = ["session_factory.h"],
deps = [
":session_basic",
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/status:statusor",
"//runtime/components:tokenizer",
"//runtime/engine:engine_interface",
"//runtime/engine:engine_settings",
"//runtime/engine:io_types",
"//runtime/executor:audio_executor",
"//runtime/executor:llm_executor",
"//runtime/executor:vision_executor",
"//runtime/framework:threadpool",
"//runtime/proto:sampler_params_cc_proto",
"//runtime/util:litert_status_util",
],
)
cc_test(
name = "session_factory_test",
srcs = ["session_factory_test.cc"],
deps = [
":session_factory",
"@com_google_googletest//:gtest_main",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:string_view",
"//runtime/components:tokenizer",
"//runtime/engine:engine_settings",
"//runtime/executor:executor_settings_base",
"//runtime/executor:fake_llm_executor",
"//runtime/framework:threadpool",
"//runtime/util:test_utils",
],
)
cc_library(
name = "session_utils",
srcs = ["session_utils.cc"],
hdrs = ["session_utils.h"],
deps = [
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@litert//litert/cc/internal:litert_detail",
"//runtime/components:tokenizer",
"//runtime/engine:engine_settings",
"//runtime/engine:io_types",
"//runtime/util:litert_status_util",
],
)
cc_test(
name = "session_utils_test",
srcs = ["session_utils_test.cc"],
data = [
"//runtime/components/testdata",
],
deps = [
":session_utils",
"@com_google_googletest//:gtest_main",
"@com_google_absl//absl/container:flat_hash_map",
"@com_google_absl//absl/memory",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:string_view",
"@litert//litert/test:matchers",
"//runtime/components:sentencepiece_tokenizer",
"//runtime/components:tokenizer",
"//runtime/engine:engine_settings",
"//runtime/engine:io_types",
"//runtime/proto:sampler_params_cc",
"//runtime/util:convert_tensor_buffer",
"//runtime/util:litert_status_util",
"//runtime/util:tensor_buffer_util",
"//runtime/util:test_utils",
] + select({
"@litert//litert:litert_link_capi_so": [
"@litert//litert/cc:litert_api_with_dynamic_runtime",
],
"//conditions:default": [
"@litert//litert/cc:litert_tensor_buffer",
],
}),
)
cc_library(
name = "tasks",
srcs = ["tasks.cc"],
hdrs = ["tasks.h"],
deps = [
"@com_google_absl//absl/base:nullability",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/log:absl_log",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
"//runtime/components:sampler",
"//runtime/components:scoring_cpu_util",
"//runtime/components:stop_token_detector",
"//runtime/components:tokenizer",
"//runtime/components/constrained_decoding:constrained_decoder",
"//runtime/components/constrained_decoding:constraint",
"//runtime/engine:io_types",
"//runtime/executor:llm_executor",
"//runtime/executor:llm_executor_io_types",
"//runtime/executor:llm_executor_settings",
"//runtime/executor:llm_litert_compiled_model_executor",
"//runtime/proto:sampler_params_cc",
"//runtime/util:convert_tensor_buffer",
"//runtime/util:litert_status_util",
"@litert//tflite/types:half",
] + select({
"@litert//litert:litert_link_capi_so": [
"@litert//litert/cc:litert_api_with_dynamic_runtime",
],
"//conditions:default": [
"@litert//litert/cc:litert_element_type",
"@litert//litert/cc:litert_macros",
"@litert//litert/cc:litert_tensor_buffer",
],
}),
)
cc_test(
name = "tasks_test",
srcs = ["tasks_test.cc"],
data = ["//runtime/components/testdata"],
deps = [
":tasks",
"@com_google_googletest//:gtest_main",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/time",
"//runtime/components:sentencepiece_tokenizer",
"//runtime/components:stop_token_detector",
"//runtime/components:tokenizer",
"//runtime/components:top_p_cpu_sampler",
"//runtime/components/constrained_decoding:fake_constraint",
"//runtime/engine:io_types",
"//runtime/executor:fake_llm_executor",
"//runtime/executor:llm_executor_io_types",
"//runtime/framework:threadpool",
"//runtime/util:convert_tensor_buffer",
"//runtime/util:litert_status_util",
"//runtime/util:test_utils",
],
)