Skip to content

Commit 72a3ee8

Browse files
committed
Update on "[llm] Add a generic text only LLM runner"
Introducing `text_llm_runner`. This can be used to run all text only decoder only LLM models supported by ExecuTorch. * Metadata is being read out from the .pte file and being used to construct the runner object. * examples/models/llama/runner.h[.cpp] only contains a simple wrapper around `text_llm_runner.h[.cpp]`. In next PRs I will move examples/models/phi-3-mini/runner to use the generic runner. Will look into QNN and MediaTek runners as well. Differential Revision: [D75910889](https://our.internmc.facebook.com/intern/diff/D75910889/) [ghstack-poisoned]
2 parents 208989b + a05c2e9 commit 72a3ee8

File tree

7 files changed

+29
-29
lines changed

7 files changed

+29
-29
lines changed

.ci/scripts/test_llama.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ cmake_build_llama_runner() {
169169
popd
170170
dir="examples/models/llama"
171171
retry cmake \
172+
-DBUILD_TESTING=OFF \
172173
-DCMAKE_INSTALL_PREFIX=cmake-out \
173174
-DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \
174175
-Bcmake-out/${dir} \

.ci/scripts/test_llava.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,10 @@ cmake_install_executorch_libraries_for_android() {
6464

6565

6666
LLAVA_COMMON_CMAKE_ARGS=" \
67+
-DBUILD_TESTING=OFF \
6768
-DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \
6869
-DCMAKE_INSTALL_PREFIX=${BUILD_DIR} \
69-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
70+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
7071
-DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \
7172
-DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \
7273
-DEXECUTORCH_BUILD_XNNPACK=ON"

examples/models/llama/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,6 @@ endif()
220220
target_include_directories(
221221
llama_main
222222
PUBLIC ${_common_include_directories}
223-
${EXECUTORCH_ROOT}/extension/llm/tokenizers/include
224223
)
225224
target_link_libraries(llama_main PUBLIC llama_runner ${link_libraries})
226225
target_compile_options(llama_main PUBLIC ${_common_compile_options})

examples/models/llama/runner/CMakeLists.txt

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,23 +52,18 @@ else()
5252
add_library(llama_runner SHARED ${_llama_runner__srcs})
5353
endif()
5454

55+
# For extension_llm_runner
56+
add_subdirectory(
57+
${EXECUTORCH_ROOT}/extension/llm/runner
58+
${CMAKE_CURRENT_BINARY_DIR}/../../../../extension/llm/runner
59+
)
60+
5561
set(llama_runner_deps executorch_core extension_data_loader extension_module
56-
extension_tensor extension_flat_tensor
62+
extension_tensor extension_flat_tensor extension_llm_runner
5763
)
5864

5965
target_link_libraries(llama_runner PUBLIC ${llama_runner_deps})
6066

61-
target_include_directories(
62-
llama_runner
63-
INTERFACE ${_common_include_directories}
64-
)
65-
66-
# Include tokenizers dependency
67-
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
68-
add_subdirectory(
69-
${EXECUTORCH_ROOT}/extension/llm/tokenizers
70-
${CMAKE_CURRENT_BINARY_DIR}/tokenizers
71-
)
7267
target_link_libraries(
7368
llama_runner PUBLIC tokenizers
7469
)

examples/models/llava/runner/CMakeLists.txt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ set(_common_include_directories ${EXECUTORCH_ROOT}/..)
2828
# build llava_runner library
2929
set(_llava_runner__srcs
3030
"${CMAKE_CURRENT_SOURCE_DIR}/llava_runner.cpp"
31-
"${EXECUTORCH_ROOT}/extension/llm/sampler/sampler.cpp"
32-
"${EXECUTORCH_ROOT}/extension/llm/tokenizers/src/llama2c_tokenizer.cpp"
3331
)
3432

3533
# extension llm runner lib
@@ -45,8 +43,3 @@ set(llava_runner_deps executorch_core extension_data_loader extension_llm_runner
4543
)
4644

4745
target_link_libraries(llava_runner PUBLIC ${llava_runner_deps})
48-
49-
target_include_directories(
50-
llava_runner INTERFACE ${_common_include_directories}
51-
${EXECUTORCH_ROOT}/extension/llm/tokenizers/include
52-
)

extension/llm/runner/CMakeLists.txt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,15 @@ target_include_directories(
4343

4444
add_library(extension_llm_runner STATIC ${_extension_llm_runner__srcs})
4545

46-
set(runner_deps executorch_core extension_module extension_tensor)
46+
# add tokenizers
47+
add_subdirectory(
48+
${EXECUTORCH_ROOT}/extension/llm/tokenizers
49+
${CMAKE_CURRENT_BINARY_DIR}/../../../extension/llm/tokenizers
50+
)
4751

48-
target_link_libraries(extension_llm_runner PUBLIC ${runner_deps})
52+
set(runner_deps executorch_core extension_module extension_tensor tokenizers)
4953

50-
target_include_directories(
51-
extension_llm_runner
52-
PUBLIC
53-
${EXECUTORCH_ROOT}/extension/llm/tokenizers/third-party/llama.cpp-unicode/include
54-
${EXECUTORCH_ROOT}/extension/llm/tokenizers/third-party/llama.cpp-unicode/src
55-
)
54+
target_link_libraries(extension_llm_runner PUBLIC ${runner_deps})
5655

5756
target_include_directories(
5857
extension_llm_runner INTERFACE ${_common_include_directories}

tools/cmake/cmake_deps.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,17 @@ deps = [
241241
"executorch_core",
242242
]
243243

244+
[targets.extension_tokenizers]
245+
buck_targets = [
246+
"//extension/llm/tokenizers:sentencepiece",
247+
"//extension/llm/tokenizers:tiktoken",
248+
"//extension/llm/tokenizers:hf_tokenizer",
249+
"//extension/llm/tokenizers:llama2c_tokenizer",
250+
]
251+
filters = [
252+
".cpp$",
253+
]
254+
244255
[targets.extension_llm_runner]
245256
buck_targets = [
246257
"//extension/llm/runner:runner_lib",
@@ -257,6 +268,7 @@ deps = [
257268
"extension_flat_tensor",
258269
"extension_runner_util",
259270
"extension_tensor",
271+
"extension_tokenizers",
260272
]
261273

262274
[targets.extension_tensor]

0 commit comments

Comments
 (0)