Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/Processor.md
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,10 @@ void* initialize(const char* model_entry, const char* model_config, int* state);
"ev_storage_type": 12,

# 多级存储路径, 如果设置了多级存储
"ev_storage_path": "/ssd/1/"
"ev_storage_path": "/ssd/1/",

# 多级存储中每级存储的大小
"ev_storage_size": [1024, 1024]
}
```
#### 模型路径配置
Expand Down
7 changes: 5 additions & 2 deletions serving/processor/framework/graph_optimizer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,8 @@ Status SavedModelOptimizer::RunNativeTFGraphPass() {
}

if (option_.st) {
TF_RETURN_IF_ERROR(RewriteEmbeddingVariableAttr(option_.st, option_.path));
TF_RETURN_IF_ERROR(RewriteEmbeddingVariableAttr(option_.st,
option_.path, option_.size));
}

// Add other passes here
Expand Down Expand Up @@ -2360,12 +2361,14 @@ Node* SavedModelOptimizer::UpdateRestoreShardNodeInputs(
}

Status SavedModelOptimizer::RewriteEmbeddingVariableAttr(
embedding::StorageType st, std::string path) {
embedding::StorageType st, const std::string& path,
const std::vector<int64>& storage_size) {
for (Node* node : graph_.nodes()) {
if (node->op_def().name() == "KvResourceImportV2" ||
node->op_def().name() == "InitializeKvVariableOp") {
node->AddAttr("storage_type", st);
node->AddAttr("storage_path", path);
node->AddAttr("storage_size", storage_size);

LOG(INFO) << "debug op: " << node->DebugString();
}
Expand Down
4 changes: 3 additions & 1 deletion serving/processor/framework/graph_optimizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ struct GraphOptimizerOption {
// multi tiered embedding
embedding::StorageType st = embedding::StorageType::INVALID;
std::string path;
std::vector<int64> size;
};

struct SrcInfo {
Expand Down Expand Up @@ -263,7 +264,8 @@ class SavedModelOptimizer : public GraphOptimizer {
std::unordered_map<std::string, std::vector<Node*>>& origin_import_nodes,
std::vector<Node*>& new_kv_import_nodes);

Status RewriteEmbeddingVariableAttr(embedding::StorageType st, std::string path);
Status RewriteEmbeddingVariableAttr(embedding::StorageType st, const std::string& path,
const std::vector<int64>& size);

Node* storage_pointer_node_ = nullptr;// storage placeholder node
Node* version_node_ = nullptr; // version placeholder node
Expand Down
6 changes: 6 additions & 0 deletions serving/processor/serving/model_config.cc
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,12 @@ Status ModelConfigFactory::Create(const char* model_config, ModelConfig** config
case embedding::StorageType::DRAM_SSDHASH:
(*config)->storage_type = embedding::StorageType::DRAM_SSDHASH;
(*config)->storage_path = json_config["ev_storage_path"].asString();
for (int i = 0; i < json_config["ev_storage_size"].size(); i++)
(*config)->storage_size.emplace_back(json_config["ev_storage_size"][i].asInt64());
if (json_config["ev_storage_size"].size() < 4) {
for (int i = json_config["ev_storage_size"].size(); i < 4; i++)
(*config)->storage_size.emplace_back(1024*1024*1024);
}
break;
default:
return Status(error::Code::INVALID_ARGUMENT,
Expand Down
1 change: 1 addition & 0 deletions serving/processor/serving/model_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ struct ModelConfig {
// EmbeddingVariable Config
embedding::StorageType storage_type = embedding::StorageType::INVALID;
std::string storage_path;
std::vector<int64> storage_size;
};

class ModelConfigFactory {
Expand Down
8 changes: 8 additions & 0 deletions serving/processor/serving/model_config_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ const std::string oss_config = " \
\"oss_access_id\" : \"test_id\", \
\"ev_storage_type\" : 12, \
\"ev_storage_path\" : \"123\", \
\"ev_storage_size\" : [1024, 1024], \
\"oss_access_key\" : \"test_key\" \
}";

Expand All @@ -244,6 +245,12 @@ const std::string oss_config = " \
ModelConfigFactory::Create(oss_config.c_str(), &config).ok());
EXPECT_EQ(12, config->storage_type);
EXPECT_EQ("123", config->storage_path);
for (int i = 0; i < 2; i++) {
EXPECT_EQ(1024, config->storage_size[i]);
}
for (int i = 2; i < 4; i++) {
EXPECT_EQ(1024*1024*1024, config->storage_size[i]);
}
}

TEST_F(ModelConfigTest, ShouldFailureWhenConfigEmbeddingConfig) {
Expand All @@ -266,6 +273,7 @@ const std::string oss_config = " \
\"oss_access_id\" : \"test_id\", \
\"ev_storage_type\" : 14, \
\"ev_storage_path\" : \"123\", \
\"ev_storage_size\" : [1024, 1024, 1024, 1024], \
\"oss_access_key\" : \"test_key\" \
}";

Expand Down
1 change: 1 addition & 0 deletions serving/processor/serving/model_instance.cc
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ Status LocalSessionInstance::Init(ModelConfig* config,

option.st = config->storage_type;
option.path = config->storage_path;
option.size = config->storage_size;

optimizer_ = new SavedModelOptimizer(config->signature_name,
&meta_graph_def_, option);
Expand Down