Skip to content

Commit d6365ae

Browse files
Songhao Jiafacebook-github-bot
authored andcommitted
put bundled program under executorch/sdk (#1014)
Summary: This stack aims to restructure bundledprogram codebase. The target structure should be like D49605947. This diff moves bundled program codebase from executorch/ to executorch/sdk/ Reviewed By: tarun292 Differential Revision: D50422728
1 parent 7cd009e commit d6365ae

File tree

29 files changed

+121
-119
lines changed

29 files changed

+121
-119
lines changed

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ __pycache__/
88
build/lib/
99
exir/_serialize/scalar_type.fbs
1010
exir/_serialize/program.fbs
11-
bundled_program/serialize/bundled_program_schema.fbs
12-
bundled_program/serialize/scalar_type.fbs
11+
sdk/bundled_program/serialize/bundled_program_schema.fbs
12+
sdk/bundled_program/serialize/scalar_type.fbs
1313

1414
# Any exported models and profiling outputs
1515
*.pte

backends/apple/mps/test/test_mps.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,6 @@
2525
TestMPS,
2626
)
2727

28-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
29-
from executorch.bundled_program.core import create_bundled_program
30-
from executorch.bundled_program.serialize import (
31-
serialize_from_bundled_program_to_flatbuffer,
32-
)
33-
3428
from executorch.exir import ExirExportedProgram
3529
from executorch.exir.backend.backend_api import to_backend
3630
from executorch.exir.tests.models import (
@@ -44,6 +38,12 @@
4438
Repeat,
4539
)
4640

41+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
42+
from executorch.sdk.bundled_program.core import create_bundled_program
43+
from executorch.sdk.bundled_program.serialize import (
44+
serialize_from_bundled_program_to_flatbuffer,
45+
)
46+
4747

4848
class MODEL_TYPE(Enum):
4949
EXIR_DEFAULT_MODEL = 0

backends/apple/mps/test/test_mps_utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212

1313
import torch
1414
from executorch.backends.apple.mps.mps_preprocess import MPSBackend
15-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
16-
from executorch.bundled_program.core import create_bundled_program
17-
from executorch.bundled_program.serialize import (
18-
serialize_from_bundled_program_to_flatbuffer,
19-
)
2015
from executorch.exir import ExecutorchProgram, ExirExportedProgram
2116
from executorch.exir.backend.backend_api import to_backend, validation_disabled
2217

2318
from executorch.exir.print_program import print_program
19+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
20+
from executorch.sdk.bundled_program.core import create_bundled_program
21+
from executorch.sdk.bundled_program.serialize import (
22+
serialize_from_bundled_program_to_flatbuffer,
23+
)
2424

2525
# Config for Capturing the weights, will be moved in the future
2626
_CAPTURE_CONFIG = exir.CaptureConfig(enable_aot=True, _unlift=True)

backends/xnnpack/test/TARGETS

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ python_unittest(
2121
"//executorch/backends/xnnpack:xnnpack_preprocess",
2222
"//executorch/backends/xnnpack/partition:xnnpack_partitioner",
2323
"//executorch/backends/xnnpack/utils:xnnpack_utils",
24-
"//executorch/bundled_program:config",
25-
"//executorch/bundled_program:core",
26-
"//executorch/bundled_program/serialize:lib",
2724
"//executorch/exir:lib",
2825
"//executorch/exir/backend:backend_api",
2926
"//executorch/exir/passes:spec_prop_pass",
3027
"//executorch/extension/pybindings:portable_lib", # @manual
3128
"//executorch/extension/pytree:pylib",
29+
"//executorch/sdk/bundled_program:config",
30+
"//executorch/sdk/bundled_program:core",
31+
"//executorch/sdk/bundled_program/serialize:lib",
3232
],
3333
)
3434

@@ -49,15 +49,15 @@ python_unittest(
4949
"//executorch/backends/xnnpack:xnnpack_preprocess",
5050
"//executorch/backends/xnnpack/partition:xnnpack_partitioner",
5151
"//executorch/backends/xnnpack/utils:xnnpack_utils",
52-
"//executorch/bundled_program:config",
53-
"//executorch/bundled_program:core",
54-
"//executorch/bundled_program/serialize:lib",
5552
"//executorch/exir:lib",
5653
"//executorch/exir/backend:backend_api",
5754
"//executorch/exir/dialects:lib",
5855
"//executorch/exir/passes:spec_prop_pass",
5956
"//executorch/extension/pybindings:portable_lib", # @manual
6057
"//executorch/extension/pytree:pylib",
58+
"//executorch/sdk/bundled_program:config",
59+
"//executorch/sdk/bundled_program:core",
60+
"//executorch/sdk/bundled_program/serialize:lib",
6161
],
6262
)
6363

@@ -78,14 +78,14 @@ python_unittest(
7878
"//executorch/backends/xnnpack:xnnpack_preprocess",
7979
"//executorch/backends/xnnpack/partition:xnnpack_partitioner",
8080
"//executorch/backends/xnnpack/utils:xnnpack_utils",
81-
"//executorch/bundled_program:config",
82-
"//executorch/bundled_program:core",
83-
"//executorch/bundled_program/serialize:lib",
8481
"//executorch/exir:lib",
8582
"//executorch/exir/backend:backend_api",
8683
"//executorch/exir/passes:spec_prop_pass",
8784
"//executorch/extension/pybindings:portable_lib", # @manual
8885
"//executorch/extension/pytree:pylib",
86+
"//executorch/sdk/bundled_program:config",
87+
"//executorch/sdk/bundled_program:core",
88+
"//executorch/sdk/bundled_program/serialize:lib",
8989
"//pytorch/vision:torchvision",
9090
],
9191
)

backends/xnnpack/test/test_xnnpack_utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,6 @@
2525

2626
# import the xnnpack backend implementation
2727
from executorch.backends.xnnpack.xnnpack_preprocess import XnnpackBackend
28-
29-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
30-
from executorch.bundled_program.core import create_bundled_program
31-
from executorch.bundled_program.serialize import (
32-
serialize_from_bundled_program_to_flatbuffer,
33-
)
3428
from executorch.exir import ExecutorchProgram, ExirExportedProgram
3529
from executorch.exir.backend.backend_api import to_backend, validation_disabled
3630

@@ -41,6 +35,12 @@
4135
)
4236
from executorch.extension.pytree import tree_flatten
4337

38+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
39+
from executorch.sdk.bundled_program.core import create_bundled_program
40+
from executorch.sdk.bundled_program.serialize import (
41+
serialize_from_bundled_program_to_flatbuffer,
42+
)
43+
4444
from torch.ao.quantization import ( # @manual
4545
default_per_channel_symmetric_qnnpack_qconfig,
4646
PlaceholderObserver,

docs/source/sdk-bundled-io.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Since each model may have multiple inference methods, we need to generate `List[
4444

4545
### Step 3: Generate `BundledProgram`
4646

47-
We provide `create_bundled_program` API under `executorch/bundled_program/core.py` to generate `BundledProgram` by bundling the emitted ExecuTorch program with the `List[MethodTestSuite]`:
47+
We provide `create_bundled_program` API under `executorch/sdk/bundled_program/core.py` to generate `BundledProgram` by bundling the emitted ExecuTorch program with the `List[MethodTestSuite]`:
4848

4949
:::{dropdown} `BundledProgram`
5050

@@ -61,7 +61,7 @@ We provide `create_bundled_program` API under `executorch/bundled_program/core.p
6161

6262
### Step 4: Serialize `BundledProgram` to Flatbuffer.
6363

64-
To serialize `BundledProgram` to make runtime APIs use it, we provide two APIs, both under `executorch/bundled_program/serialize/__init__.py`.
64+
To serialize `BundledProgram` to make runtime APIs use it, we provide two APIs, both under `executorch/sdk/bundled_program/serialize/__init__.py`.
6565

6666
:::{dropdown} Serialize and Deserialize
6767

@@ -86,9 +86,9 @@ Here is a flow highlighting how to generate a `BundledProgram` given a PyTorch m
8686

8787
import torch
8888

89-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
90-
from executorch.bundled_program.core import create_bundled_program
91-
from executorch.bundled_program.serialize import (
89+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
90+
from executorch.sdk.bundled_program.core import create_bundled_program
91+
from executorch.sdk.bundled_program.serialize import (
9292
serialize_from_bundled_program_to_flatbuffer,
9393
)
9494

@@ -195,7 +195,7 @@ with open(save_path, "wb") as f:
195195
We can also regenerate `BundledProgram` from flatbuffer file if needed:
196196

197197
```python
198-
from executorch.bundled_program.serialize import deserialize_from_flatbuffer_to_bundled_program
198+
from executorch.sdk.bundled_program.serialize import deserialize_from_flatbuffer_to_bundled_program
199199
save_path = "bundled_program.bpte"
200200
with open(save_path, "rb") as f:
201201
serialized_bundled_program = f.read()
@@ -324,8 +324,8 @@ Here's the example of the dtype of test input not meet model's requirement:
324324
```python
325325
import torch
326326
327-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
328-
from executorch.bundled_program.core import create_bundled_program
327+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
328+
from executorch.sdk.bundled_program.core import create_bundled_program
329329
330330
from executorch.exir import to_edge
331331
from torch.export import export
@@ -411,7 +411,7 @@ Cell In[1], line 72
411411
68 ]
412412
70 # Step 3: Generate BundledProgram
413413
---> 72 bundled_program = create_bundled_program(program, method_test_suites)
414-
File /executorch/bundled_program/core.py:276, in create_bundled_program(program, method_test_suites)
414+
File /executorch/sdk/bundled_program/core.py:276, in create_bundled_program(program, method_test_suites)
415415
264 """Create bp_schema.BundledProgram by bundling the given program and method_test_suites together.
416416
265
417417
266 Args:
@@ -422,7 +422,7 @@ File /executorch/bundled_program/core.py:276, in create_bundled_program(program,
422422
--> 276 assert_valid_bundle(program, method_test_suites)
423423
278 bundled_method_test_suites: List[bp_schema.BundledMethodTestSuite] = []
424424
280 # Emit data and metadata of bundled tensor
425-
File /executorch/bundled_program/core.py:219, in assert_valid_bundle(program, method_test_suites)
425+
File /executorch/sdk/bundled_program/core.py:219, in assert_valid_bundle(program, method_test_suites)
426426
215 # type of tensor input should match execution plan
427427
216 if type(cur_plan_test_inputs[j]) == torch.Tensor:
428428
217 # pyre-fixme[16]: Undefined attribute [16]: Item `bool` of `typing.Union[bool, float, int, torch._tensor.Tensor]`
@@ -459,8 +459,8 @@ Another common error would be the method name in any `MethodTestSuite` does not
459459
```python
460460
import torch
461461

462-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
463-
from executorch.bundled_program.core import create_bundled_program
462+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
463+
from executorch.sdk.bundled_program.core import create_bundled_program
464464

465465
from executorch.exir import to_edge
466466
from torch.export import export
@@ -543,7 +543,7 @@ Cell In[3], line 73
543543
70 method_test_suites[0].method_name = "MISSING_METHOD_NAME"
544544
72 # Generate BundledProgram
545545
---> 73 bundled_program = create_bundled_program(program, method_test_suites)
546-
File /executorch/bundled_program/core.py:276, in create_bundled_program(program, method_test_suites)
546+
File /executorch/sdk/bundled_program/core.py:276, in create_bundled_program(program, method_test_suites)
547547
264 """Create bp_schema.BundledProgram by bundling the given program and method_test_suites together.
548548
265
549549
266 Args:
@@ -554,7 +554,7 @@ File /executorch/bundled_program/core.py:276, in create_bundled_program(program,
554554
--> 276 assert_valid_bundle(program, method_test_suites)
555555
278 bundled_method_test_suites: List[bp_schema.BundledMethodTestSuite] = []
556556
280 # Emit data and metadata of bundled tensor
557-
File /executorch/bundled_program/core.py:141, in assert_valid_bundle(program, method_test_suites)
557+
File /executorch/sdk/bundled_program/core.py:141, in assert_valid_bundle(program, method_test_suites)
558558
138 method_name_of_program = {e.name for e in program.execution_plan}
559559
139 method_name_of_test_suites = {t.method_name for t in method_test_suites}
560560
--> 141 assert method_name_of_test_suites.issubset(

docs/source/tutorials_source/sdk-integration-tutorial.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,13 @@ def forward(self, x):
130130

131131
import torch
132132

133-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
134-
from executorch.bundled_program.core import create_bundled_program
135-
from executorch.bundled_program.serialize import (
133+
from executorch.exir import to_edge
134+
135+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
136+
from executorch.sdk.bundled_program.core import create_bundled_program
137+
from executorch.sdk.bundled_program.serialize import (
136138
serialize_from_bundled_program_to_flatbuffer,
137139
)
138-
139-
from executorch.exir import to_edge
140140
from torch.export import export
141141

142142
# Step 1: ExecuTorch Program Export

examples/apple/mps/scripts/mps_example.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
import torch._export as export
1414
from executorch import exir
1515
from executorch.backends.apple.mps.mps_preprocess import MPSBackend
16-
from executorch.bundled_program.config import MethodTestCase, MethodTestSuite
17-
from executorch.bundled_program.core import create_bundled_program
18-
from executorch.bundled_program.serialize import (
19-
serialize_from_bundled_program_to_flatbuffer,
20-
)
2116

2217
from executorch.exir.backend.backend_api import to_backend
18+
from executorch.sdk.bundled_program.config import MethodTestCase, MethodTestSuite
19+
from executorch.sdk.bundled_program.core import create_bundled_program
20+
from executorch.sdk.bundled_program.serialize import (
21+
serialize_from_bundled_program_to_flatbuffer,
22+
)
2323

2424
from ....models import MODEL_NAME_TO_MODEL
2525
from ....models.model_factory import EagerModelFactory

examples/sdk/scripts/export_bundled_program.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
from typing import List
1212

1313
import torch
14-
from executorch.bundled_program.config import (
14+
from executorch.exir.schema import Program
15+
from executorch.sdk.bundled_program.config import (
1516
MethodInputType,
1617
MethodTestCase,
1718
MethodTestSuite,
1819
)
19-
from executorch.bundled_program.core import create_bundled_program
20-
from executorch.bundled_program.serialize import (
20+
from executorch.sdk.bundled_program.core import create_bundled_program
21+
from executorch.sdk.bundled_program.serialize import (
2122
serialize_from_bundled_program_to_flatbuffer,
2223
)
23-
from executorch.exir.schema import Program
2424

2525
from ...models import MODEL_NAME_TO_MODEL
2626
from ...models.model_factory import EagerModelFactory

exir/_serialize/TARGETS

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ cpp_python_extension(
1414
"//executorch/backends/fb/qnnpack/...",
1515
"//executorch/backends/vulkan/...",
1616
"//executorch/backends/xnnpack/...",
17-
"//executorch/bundled_program/...",
17+
"//executorch/sdk/bundled_program/...",
1818
"//executorch/sdk/etdump/...",
1919
],
2020
deps = [
@@ -43,9 +43,6 @@ runtime.python_library(
4343
# Please ask before changing this.
4444
visibility = [
4545
"//executorch/backends/...",
46-
"//executorch/bundled_program:core",
47-
"//executorch/bundled_program/serialize:lib",
48-
"//executorch/bundled_program/tests/...",
4946
"//executorch/codegen/...",
5047
"//executorch/examples/async_exec:emit_program_lib",
5148
"//executorch/exir/...",
@@ -54,6 +51,9 @@ runtime.python_library(
5451
"//executorch/extension/pybindings/test:test",
5552
"//executorch/extension/pybindings/test:test-library",
5653
"//executorch/profiler/...",
54+
"//executorch/sdk/bundled_program:core",
55+
"//executorch/sdk/bundled_program/serialize:lib",
56+
"//executorch/sdk/bundled_program/tests/...",
5757
"//executorch/sdk/experimental/...",
5858
"//executorch/test/...",
5959
"@EXECUTORCH_CLIENTS",

pytest.ini

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ addopts =
99
# don't suppress warnings, but don't shove them all to the end either
1010
-p no:warnings
1111
# explicitly list out tests that are running successfully in oss
12-
# bundled_program/
13-
bundled_program/tests/test_bundle_data.py
14-
bundled_program/tests/test_config.py
15-
bundled_program/tests/test_serialize.py
12+
# sdk/
13+
sdk/bundled_program/tests/test_bundle_data.py
14+
sdk/bundled_program/tests/test_config.py
15+
sdk/bundled_program/tests/test_serialize.py
1616
# exir
1717
exir/backend/test/test_graph_partition.py
1818
exir/backend/test/test_backends_nested.py

schema/targets.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ def define_common_targets():
6161
runtime.export_file(
6262
name = INPUT_BUNDLED,
6363
visibility = [
64-
"//executorch/bundled_program/serialize/...",
64+
"//executorch/sdk/bundled_program/serialize/...",
6565
],
6666
)
6767
runtime.export_file(
6868
name = INPUT_SCALAR_TYPE,
6969
visibility = [
70-
"//executorch/bundled_program/serialize/...",
70+
"//executorch/sdk/bundled_program/serialize/...",
7171
"//executorch/exir/_serialize/...",
7272
"//executorch/sdk/etdump/...",
7373
],
@@ -110,7 +110,7 @@ def define_common_targets():
110110
name = BUNDLED_LIBRARY_NAME,
111111
srcs = [],
112112
visibility = [
113-
"//executorch/bundled_program/...",
113+
"//executorch/sdk/bundled_program/...",
114114
"//executorch/extension/pybindings/...",
115115
"//executorch/examples/bundled_executor_runner/...",
116116
"//executorch/util/...", # bundled_program_verification
File renamed without changes.
File renamed without changes.

bundled_program/core.py renamed to sdk/bundled_program/core.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,18 @@
88
import typing
99
from typing import Dict, List, Sequence, Type
1010

11-
import executorch.bundled_program.schema as bp_schema
1211
import executorch.exir.schema as core_schema
1312

13+
import executorch.sdk.bundled_program.schema as bp_schema
14+
1415
import torch
1516
import torch.fx
16-
from executorch.bundled_program.config import ConfigValue, MethodTestSuite
17-
18-
from executorch.bundled_program.version import BUNDLED_PROGRAM_SCHEMA_VERSION
1917
from executorch.exir._serialize import _serialize_pte_binary
2018

2119
from executorch.exir.tensor import get_scalar_type, scalar_type_enum, TensorSpec
20+
from executorch.sdk.bundled_program.config import ConfigValue, MethodTestSuite
21+
22+
from executorch.sdk.bundled_program.version import BUNDLED_PROGRAM_SCHEMA_VERSION
2223

2324
# pyre-ignore
2425
supported_program_type_table: Dict[Type[core_schema.KernelTypes], ConfigValue] = {
File renamed without changes.

0 commit comments

Comments
 (0)