Skip to content

Commit 02793ff

Browse files
ai-edge-botcopybara-github
authored andcommitted
Internal change
LiteRT-LM-PiperOrigin-RevId: 859298975
1 parent 83c6992 commit 02793ff

File tree

6 files changed

+49
-40
lines changed

6 files changed

+49
-40
lines changed

c/BUILD

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ cc_library(
5151
"@litert//litert/c/internal:litert_logging",
5252
"//runtime/conversation",
5353
"//runtime/conversation:io_types",
54-
"//runtime/engine:engine_impl_selected",
54+
"//runtime/core:engine_impl",
55+
"//runtime/engine:engine_factory",
5556
"//runtime/engine:engine_interface",
5657
"//runtime/engine:engine_settings",
5758
"//runtime/engine:io_types",

c/engine.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "runtime/conversation/conversation.h"
3333
#include "runtime/conversation/io_types.h"
3434
#include "runtime/engine/engine.h"
35+
#include "runtime/engine/engine_factory.h"
3536
#include "runtime/engine/engine_settings.h"
3637
#include "runtime/engine/io_types.h"
3738
#include "runtime/executor/executor_settings_base.h"
@@ -92,6 +93,7 @@ CreateConversationCallback(LiteRtLmStreamCallback callback, void* user_data) {
9293
using ::litert::lm::Conversation;
9394
using ::litert::lm::ConversationConfig;
9495
using ::litert::lm::Engine;
96+
using ::litert::lm::EngineFactory;
9597
using ::litert::lm::EngineSettings;
9698
using ::litert::lm::InputText;
9799
using ::litert::lm::JsonMessage;
@@ -329,7 +331,10 @@ LiteRtLmEngine* litert_lm_engine_create(
329331
return nullptr;
330332
}
331333

332-
auto engine = Engine::CreateEngine(*settings->settings);
334+
absl::StatusOr<std::unique_ptr<Engine>> engine;
335+
engine = EngineFactory::CreateDefault(*settings->settings);
336+
337+
333338
if (!engine.ok()) {
334339
ABSL_LOG(ERROR) << "Failed to create engine: " << engine.status();
335340
return nullptr;
@@ -339,6 +344,7 @@ LiteRtLmEngine* litert_lm_engine_create(
339344
c_engine->engine = *std::move(engine);
340345
return c_engine;
341346
}
347+
342348
void litert_lm_engine_delete(LiteRtLmEngine* engine) { delete engine; }
343349

344350
LiteRtLmSession* litert_lm_engine_create_session(

runtime/core/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ package_group(
3535
"//third_party/odml/litert_lm/js/packages/core/src/cpp",
3636
# for e2e tests.
3737
"//runtime/e2e_tests/...",
38+
"//third_party/odml/litert_lm/c/...",
39+
"//c/...",
3840
],
3941
)
4042

runtime/core/engine_advanced_legacy_impl.cc

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@
5454

5555
namespace litert::lm {
5656

57-
absl::StatusOr<std::unique_ptr<Engine>> CreateEngineAdvancedLegacy(
58-
EngineSettings engine_settings);
59-
6057
namespace {
6158

59+
absl::StatusOr<std::unique_ptr<Engine>> CreateEngineAdvancedLegacy(
60+
EngineSettings engine_settings, absl::string_view input_prompt_as_hint);
61+
6262
namespace oi = ::odml::infra;
6363

6464
class EngineAdvancedLegacyImpl : public Engine {
@@ -74,7 +74,8 @@ class EngineAdvancedLegacyImpl : public Engine {
7474

7575
private:
7676
friend absl::StatusOr<std::unique_ptr<Engine>>
77-
litert::lm::CreateEngineAdvancedLegacy(EngineSettings engine_settings);
77+
CreateEngineAdvancedLegacy(EngineSettings engine_settings,
78+
absl::string_view input_prompt_as_hint);
7879

7980
explicit EngineAdvancedLegacyImpl(
8081
EngineSettings engine_settings,
@@ -177,18 +178,10 @@ const EngineSettings& EngineAdvancedLegacyImpl::GetEngineSettings() const {
177178
return engine_settings_;
178179
}
179180

180-
} // namespace
181-
182-
// Method to create Engine.
183-
absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
184-
EngineSettings settings, absl::string_view input_prompt_as_hint) {
185-
return CreateEngineAdvancedLegacy(std::move(settings));
186-
}
187-
188-
// Method to create Engine.
181+
// The factory for Advanced Legacy TfLite.
189182
absl::StatusOr<std::unique_ptr<Engine>> CreateEngineAdvancedLegacy(
190-
EngineSettings engine_settings) {
191-
ABSL_LOG(INFO) << "Constructing legacy EngineImpl...";
183+
EngineSettings engine_settings, absl::string_view input_prompt_as_hint) {
184+
ABSL_LOG(INFO) << "Constructing advanced legacy EngineImpl...";
192185
std::optional<BenchmarkInfo> benchmark_info;
193186
if (engine_settings.IsBenchmarkEnabled()) {
194187
benchmark_info = std::make_optional<BenchmarkInfo>(
@@ -237,8 +230,8 @@ absl::StatusOr<std::unique_ptr<Engine>> CreateEngineAdvancedLegacy(
237230
}
238231
// Update and load the parameters from the model file and convert the tokens
239232
// to ids.
240-
RETURN_IF_ERROR(
241-
engine_settings.MaybeUpdateAndValidate(*tokenizer, &llm_metadata));
233+
RETURN_IF_ERROR(engine_settings.MaybeUpdateAndValidate(
234+
*tokenizer, &llm_metadata, input_prompt_as_hint));
242235

243236
ASSIGN_OR_RETURN(auto executor,
244237
BuildExecutor(*model_resources, engine_settings));
@@ -301,11 +294,15 @@ absl::StatusOr<std::unique_ptr<Engine>> CreateEngineAdvancedLegacy(
301294
return llm_impl;
302295
};
303296

297+
} // namespace
298+
304299
LITERT_LM_REGISTER_ENGINE(EngineFactory::EngineType::kAdvancedLegacyTfLite,
305-
[](EngineSettings settings,
306-
absl::string_view input_prompt_as_hint) {
307-
return Engine::CreateEngine(std::move(settings),
308-
input_prompt_as_hint);
309-
});
300+
CreateEngineAdvancedLegacy);
301+
302+
// Method to create Engine.
303+
absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
304+
EngineSettings settings, absl::string_view input_prompt_as_hint) {
305+
return CreateEngineAdvancedLegacy(std::move(settings), input_prompt_as_hint);
306+
}
310307

311308
} // namespace litert::lm

runtime/core/engine_impl.cc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ absl::StatusOr<Environment&> GetEnvironment(
136136
return **kEnvironment;
137137
}
138138

139-
} // namespace
140-
141139
class EngineImpl : public Engine {
142140
public:
143141
~EngineImpl() override {
@@ -224,8 +222,7 @@ class EngineImpl : public Engine {
224222
std::unique_ptr<ThreadPool> worker_thread_pool_;
225223
};
226224

227-
// Method to create Engine.
228-
absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
225+
absl::StatusOr<std::unique_ptr<Engine>> CreateEngineCompiled(
229226
EngineSettings engine_settings, absl::string_view input_prompt_as_hint) {
230227
std::optional<BenchmarkInfo> benchmark_info =
231228
engine_settings.IsBenchmarkEnabled()
@@ -329,12 +326,15 @@ absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
329326

330327
return llm_impl;
331328
};
329+
} // namespace
332330

333331
LITERT_LM_REGISTER_ENGINE(EngineFactory::EngineType::kLiteRTCompiledModel,
334-
[](EngineSettings settings,
335-
absl::string_view input_prompt_as_hint) {
336-
return Engine::CreateEngine(std::move(settings),
337-
input_prompt_as_hint);
338-
});
332+
CreateEngineCompiled);
333+
334+
// Method to create Engine.
335+
absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
336+
EngineSettings engine_settings, absl::string_view input_prompt_as_hint) {
337+
return CreateEngineCompiled(std::move(engine_settings), input_prompt_as_hint);
338+
}
339339

340340
} // namespace litert::lm

runtime/core/engine_legacy_impl.cc

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ absl::StatusOr<Environment&> GetEnvironment() {
132132
}
133133
} // namespace
134134

135+
namespace {
135136
class EngineImpl : public Engine {
136137
public:
137138
~EngineImpl() override {
@@ -231,8 +232,7 @@ class EngineImpl : public Engine {
231232
std::unique_ptr<ThreadPool> worker_thread_pool_;
232233
};
233234

234-
// Method to create Engine.
235-
absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
235+
absl::StatusOr<std::unique_ptr<Engine>> CreateEngineLegacy(
236236
EngineSettings engine_settings, absl::string_view input_prompt_as_hint) {
237237
ABSL_LOG(INFO) << "Constructing legacy EngineImpl...";
238238
std::optional<BenchmarkInfo> benchmark_info;
@@ -369,12 +369,15 @@ absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
369369
std::move(benchmark_info), std::move(worker_thread_pool));
370370
return llm_impl;
371371
};
372+
} // namespace
372373

373374
LITERT_LM_REGISTER_ENGINE(EngineFactory::EngineType::kLegacyTfLite,
374-
[](EngineSettings settings,
375-
absl::string_view input_prompt_as_hint) {
376-
return Engine::CreateEngine(std::move(settings),
377-
input_prompt_as_hint);
378-
});
375+
CreateEngineLegacy);
376+
377+
// Method to create Engine.
378+
absl::StatusOr<std::unique_ptr<Engine>> Engine::CreateEngine(
379+
EngineSettings engine_settings, absl::string_view input_prompt_as_hint) {
380+
return CreateEngineLegacy(std::move(engine_settings), input_prompt_as_hint);
381+
}
379382

380383
} // namespace litert::lm

0 commit comments

Comments
 (0)