diff --git a/extension/llm/batching/BUCK b/extension/llm/batching/BUCK new file mode 100644 index 00000000000..1e8cc179228 --- /dev/null +++ b/extension/llm/batching/BUCK @@ -0,0 +1,8 @@ +# Any targets that should be shared between fbcode and xplat must be defined in +# targets.bzl. This file can contain xplat-only targets. + +load(":targets.bzl", "define_common_targets") + +oncall("executorch") + +define_common_targets() diff --git a/extension/llm/batching/targets.bzl b/extension/llm/batching/targets.bzl new file mode 100644 index 00000000000..ec5c6ad0818 --- /dev/null +++ b/extension/llm/batching/targets.bzl @@ -0,0 +1,54 @@ +load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime") + +def define_common_targets(): + """Mirrors the extension_llm_batching CMake targets. + + `batching` is the scheduler, the executor seam and the runner, free of + ExecuTorch runtime types. `module_executor` implements the seam against a + program and a KV cache. + """ + runtime.cxx_library( + name = "batching", + srcs = [ + "metrics.cpp", + "runner.cpp", + ], + exported_headers = [ + "decode_first_scheduler.h", + "executor.h", + "metrics.h", + "prefix_cache.h", + "runner.h", + "scheduler.h", + "types.h", + ], + visibility = ["PUBLIC"], + exported_deps = [ + "//executorch/runtime/platform:compiler", + ], + ) + + runtime.cxx_library( + name = "module_executor", + srcs = [ + "module_executor.cpp", + ], + exported_headers = [ + "module_executor.h", + ], + visibility = ["PUBLIC"], + exported_deps = [ + ":batching", + "//executorch/extension/llm/cache:kv_cache", + "//executorch/extension/llm/runner:stats", + "//executorch/extension/module:module", + "//executorch/runtime/core:core", + ], + deps = [ + "//executorch/extension/llm/sampler:sampler", + "//executorch/extension/tensor:tensor", + "//executorch/runtime/backend:interface", + "//executorch/runtime/core/exec_aten/util:scalar_type_util", + "//executorch/runtime/platform:platform", + ], + ) diff --git a/extension/llm/batching/test/BUCK b/extension/llm/batching/test/BUCK new file mode 100644 index 00000000000..1e8cc179228 --- /dev/null +++ b/extension/llm/batching/test/BUCK @@ -0,0 +1,8 @@ +# Any targets that should be shared between fbcode and xplat must be defined in +# targets.bzl. This file can contain xplat-only targets. + +load(":targets.bzl", "define_common_targets") + +oncall("executorch") + +define_common_targets() diff --git a/extension/llm/batching/test/targets.bzl b/extension/llm/batching/test/targets.bzl new file mode 100644 index 00000000000..fbab7d5326d --- /dev/null +++ b/extension/llm/batching/test/targets.bzl @@ -0,0 +1,18 @@ +load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime") + +def define_common_targets(): + """Mirrors extension_llm_batching_test in CMakeLists.txt.""" + runtime.cxx_test( + name = "test", + srcs = [ + "prefix_cache_test.cpp", + "runner_test.cpp", + "scheduler_test.cpp", + ], + headers = [ + "fake_executor.h", + ], + deps = [ + "//executorch/extension/llm/batching:batching", + ], + )