-
Notifications
You must be signed in to change notification settings - Fork 649
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Enhanced] method of memory loading model #2029
base: main
Are you sure you want to change the base?
Conversation
Thanks for you contribution. While, the current apis already have the ability to load a model from memory like this: mmdeploy_model_t model;
std::ifstream ifs(model_path, std::ios::binary); // /path/to/zipmodel
ifs.seekg(0, std::ios::end);
auto size = ifs.tellg();
ifs.seekg(0, std::ios::beg);
std::string str(size, '\0');
ifs.read(str.data(), size);
mmdeploy_model_create(str.data(), size, &model);
int status{};
mmdeploy_classifier_t classifier{};
status = mmdeploy_classifier_create(model, device_name, 0, &classifier);
// or use mmdeploy_classifier_create_v2 I'm not sure if it's necessary to add these api. What is your option about this pr? @lvhan028 |
The current code already has the usage of "mmdeploy_classifier_create_by_path", and adding the corresponding "mmdeploy_classifier_create_by_buffer" can effectively reduce misunderstandings about the API during use and corresponding usage costs. After all, even if our staff are proficient in both Python/C++and various AI model usage scenarios, it took a long time to find "mmdeploy_model_create" in the code and master the usage of this API. |
@@ -32,7 +32,7 @@ option(MMDEPLOY_BUILD_SDK_CSHARP_API "build SDK C# API support" OFF) | |||
option(MMDEPLOY_BUILD_SDK_JAVA_API "build SDK JAVA API" OFF) | |||
option(MMDEPLOY_BUILD_EXAMPLES "build examples" OFF) | |||
option(MMDEPLOY_SPDLOG_EXTERNAL "use external spdlog" OFF) | |||
option(MMDEPLOY_ZIP_MODEL "support SDK model in zip format" OFF) | |||
option(MMDEPLOY_ZIP_MODEL "support SDK model in zip format" ON) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is recommended to keep MMDEPLOY_ZIP_MODEL
OFF
as the default value because not all of the users need it
@@ -40,6 +40,18 @@ int mmdeploy_classifier_create_by_path(const char* model_path, const char* devic | |||
return ec; | |||
} | |||
|
|||
int mmdeploy_classifier_create_by_buffer(const void* buffer, int size, const char* device_name, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't suggest creating another API. It's kinda redundant because mmdeploy_model_create
and mmdeploy_classifier_create
are enough to make up for it
Hi,
I understand your concern.
So, from the perspective of maintenance, I think it's not necessary to change the API. Instead, we can describe a procedure in the user guide about creating predictors from the buffer |
Hi @dhzgit, We'd like to express our appreciation for your valuable contributions to the mmdeploy. Your efforts have significantly aided in enhancing the project's quality. If you're on WeChat, we'd also love for you to join our community there. Just add our assistant using the WeChat ID: openmmlabwx. When sending the friend request, remember to include the remark "mmsig + Github ID". Thanks again for your awesome contribution, and we're excited to have you as part of our community! |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2029 +/- ##
==========================================
+ Coverage 49.44% 49.65% +0.21%
==========================================
Files 338 339 +1
Lines 12920 12985 +65
Branches 1897 1901 +4
==========================================
+ Hits 6388 6448 +60
- Misses 6088 6091 +3
- Partials 444 446 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
@irexyc could you please add a tutorial about loading mmdeploy SDK model from a buffer? |
Motivation
There is no way to load the model from memory, so it cannot be loaded from memory when the model is encrypted
Modification
Add methods to load models from memory