Add an API in model_task_graph to create or use cached model resources.

PiperOrigin-RevId: 559174528
This commit is contained in:
MediaPipe Team 2023-08-22 11:32:30 -07:00 committed by Copybara-Service
parent bcb83302bf
commit 8c4b971c14
2 changed files with 29 additions and 0 deletions

View File

@ -186,6 +186,21 @@ absl::StatusOr<const ModelResources*> ModelTaskGraph::CreateModelResources(
return model_resources_cache_service.GetObject().GetModelResources(tag); return model_resources_cache_service.GetObject().GetModelResources(tag);
} }
absl::StatusOr<const ModelResources*> ModelTaskGraph::GetOrCreateModelResources(
SubgraphContext* sc, std::unique_ptr<proto::ExternalFile> external_file,
std::string tag_suffix) {
auto model_resources_cache_service = sc->Service(kModelResourcesCacheService);
if (model_resources_cache_service.IsAvailable()) {
std::string tag =
absl::StrCat(CreateModelResourcesTag(sc->OriginalNode()), tag_suffix);
if (model_resources_cache_service.GetObject().Exists(tag)) {
return model_resources_cache_service.GetObject().GetModelResources(tag);
}
}
return ModelTaskGraph::CreateModelResources(sc, std::move(external_file),
tag_suffix);
}
absl::StatusOr<const ModelAssetBundleResources*> absl::StatusOr<const ModelAssetBundleResources*>
ModelTaskGraph::CreateModelAssetBundleResources( ModelTaskGraph::CreateModelAssetBundleResources(
SubgraphContext* sc, std::unique_ptr<proto::ExternalFile> external_file, SubgraphContext* sc, std::unique_ptr<proto::ExternalFile> external_file,

View File

@ -87,6 +87,20 @@ class ModelTaskGraph : public Subgraph {
SubgraphContext* sc, std::unique_ptr<proto::ExternalFile> external_file, SubgraphContext* sc, std::unique_ptr<proto::ExternalFile> external_file,
std::string tag_suffix = ""); std::string tag_suffix = "");
template <typename Options>
absl::StatusOr<const ModelResources*> GetOrCreateModelResources(
SubgraphContext* sc, std::string tag_suffix = "") {
auto external_file = std::make_unique<proto::ExternalFile>();
external_file->Swap(sc->MutableOptions<Options>()
->mutable_base_options()
->mutable_model_asset());
return GetOrCreateModelResources(sc, std::move(external_file), tag_suffix);
}
absl::StatusOr<const ModelResources*> GetOrCreateModelResources(
SubgraphContext* sc, std::unique_ptr<proto::ExternalFile> external_file,
std::string tag_suffix = "");
// If the model resources graph service is available, creates a model asset // If the model resources graph service is available, creates a model asset
// bundle resources object from the subgraph context, and caches the created // bundle resources object from the subgraph context, and caches the created
// model asset bundle resources into the model resources graph service on // model asset bundle resources into the model resources graph service on