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
18 changes: 9 additions & 9 deletions GPU/GPUTracking/DataTypes/ORTRootSerializer.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ namespace o2::tpc

class ORTRootSerializer
{
public:
ORTRootSerializer() = default;
~ORTRootSerializer() = default;
public:
ORTRootSerializer() = default;
~ORTRootSerializer() = default;

void setOnnxModel(const char* onnxModel, uint32_t size);
const char* getONNXModel() const { return mModelBuffer.data(); }
uint32_t getONNXModelSize() const { return static_cast<uint32_t>(mModelBuffer.size()); }
void setOnnxModel(const char* onnxModel, uint32_t size);
const char* getONNXModel() const { return mModelBuffer.data(); }
uint32_t getONNXModelSize() const { return static_cast<uint32_t>(mModelBuffer.size()); }

private:
std::vector<char> mModelBuffer; ///< buffer for serialization
ClassDefNV(ORTRootSerializer, 1);
private:
std::vector<char> mModelBuffer; ///< buffer for serialization
ClassDefNV(ORTRootSerializer, 1);
};

} // namespace o2::tpc
Expand Down
72 changes: 36 additions & 36 deletions GPU/GPUTracking/utils/convert_onnx_to_root_serialized.C
Original file line number Diff line number Diff line change
Expand Up @@ -111,44 +111,44 @@ void rootToOnnx(std::string infile, std::string outfile, std::string key)
/// Upload the ONNX model to CCDB from an ONNX file
/// !!! Adjust the metadata, path and validity !!!
void uploadToCCDBFromONNX(std::string onnxFile,
const std::map<std::string, std::string>& metadata,
// { // some example metadata entries
// "nnCCDBLayerType": "FC",
// "nnCCDBWithMomentum": "0",
// "inputDType": "FP16",
// "nnCCDBInteractionRate": "500",
// "outputDType": "FP16",
// "nnCCDBEvalType": "regression_c1",
// "nnCCDBBeamType": "pp",
// "partName": "blob",
// "quality": "3"
// }
long tsMin /* = 1 */,
long tsMax /* = 4108971600000 */,
std::string ccdbPath /* = "Users/c/csonnabe/TPC/Clusterization" */,
std::string objname /* = "net_regression_r1.root" */,
std::string ccdbUrl /* = "http://alice-ccdb.cern.ch" */)
const std::map<std::string, std::string>& metadata,
// { // some example metadata entries
// "nnCCDBLayerType": "FC",
// "nnCCDBWithMomentum": "0",
// "inputDType": "FP16",
// "nnCCDBInteractionRate": "500",
// "outputDType": "FP16",
// "nnCCDBEvalType": "regression_c1",
// "nnCCDBBeamType": "pp",
// "partName": "blob",
// "quality": "3"
// }
long tsMin /* = 1 */,
long tsMax /* = 4108971600000 */,
std::string ccdbPath /* = "Users/c/csonnabe/TPC/Clusterization" */,
std::string objname /* = "net_regression_r1.root" */,
std::string ccdbUrl /* = "http://alice-ccdb.cern.ch" */)
{
readOnnxModelFromFile(onnxFile);

o2::ccdb::CcdbApi api;
api.init(ccdbUrl);

// build full CCDB path including filename
const std::string fullPath = ccdbPath;//.back() == '/' ? (ccdbPath + objname) : (ccdbPath + "/" + objname);
const std::string fullPath = ccdbPath; //.back() == '/' ? (ccdbPath + objname) : (ccdbPath + "/" + objname);

api.storeAsTFileAny(&serializer, fullPath, metadata, tsMin, tsMax);
}

/// Upload the ONNX model to CCDB from a ROOT file
/// !!! Adjust the metadata, path and validity !!!
void uploadToCCDBFromROOT(std::string rootFile,
const std::map<std::string, std::string>& metadata,
long tsMin /* = 1 */,
long tsMax /* = 4108971600000 */,
std::string ccdbPath /* = "Users/c/csonnabe/TPC/Clusterization" */,
std::string objname /* = "net_regression_r1.root" */,
std::string ccdbUrl /* = "http://alice-ccdb.cern.ch" */)
const std::map<std::string, std::string>& metadata,
long tsMin /* = 1 */,
long tsMax /* = 4108971600000 */,
std::string ccdbPath /* = "Users/c/csonnabe/TPC/Clusterization" */,
std::string objname /* = "net_regression_r1.root" */,
std::string ccdbUrl /* = "http://alice-ccdb.cern.ch" */)
{
// read ROOT file, extract ORTRootSerializer object and upload via storeAsTFileAny
TFile inRootFile(rootFile.c_str());
Expand All @@ -170,23 +170,23 @@ void uploadToCCDBFromROOT(std::string rootFile,
api.init(ccdbUrl);

// build full CCDB path including filename
const std::string fullPath = ccdbPath;//.back() == '/' ? (ccdbPath + objname) : (ccdbPath + "/" + objname);
const std::string fullPath = ccdbPath; //.back() == '/' ? (ccdbPath + objname) : (ccdbPath + "/" + objname);

api.storeAsTFileAny(&serializer, fullPath, metadata, tsMin, tsMax);

inRootFile.Close();
}

void convert_onnx_to_root_serialized(const std::string& onnxFile,
const std::string& rootFile,
int mode = 0,
int ccdbUpload = 0,
const std::string& metadataStr = "nnCCDBLayerType=FC/nnCCDBWithMomentum=0/inputDType=FP16/nnCCDBInteractionRate=500/outputDType=FP16/nnCCDBEvalType=regression_c1/nnCCDBBeamType=pp/partName=blob/quality=3",
long tsMin = 1,
long tsMax = 4108971600000,
std::string ccdbPath = "Users/c/csonnabe/TPC/Clusterization",
std::string objname = "net_regression_r1.root",
std::string ccdbUrl = "http://alice-ccdb.cern.ch")
const std::string& rootFile,
int mode = 0,
int ccdbUpload = 0,
const std::string& metadataStr = "nnCCDBLayerType=FC/nnCCDBWithMomentum=0/inputDType=FP16/nnCCDBInteractionRate=500/outputDType=FP16/nnCCDBEvalType=regression_c1/nnCCDBBeamType=pp/partName=blob/quality=3",
long tsMin = 1,
long tsMax = 4108971600000,
std::string ccdbPath = "Users/c/csonnabe/TPC/Clusterization",
std::string objname = "net_regression_r1.root",
std::string ccdbUrl = "http://alice-ccdb.cern.ch")
{
// parse metadataStr of the form key=value/key2=value2/...
std::map<std::string, std::string> metadata;
Expand All @@ -206,12 +206,12 @@ void convert_onnx_to_root_serialized(const std::string& onnxFile,
start = sep + 1;
}

if (ccdbUpload == 0){
if (ccdbUpload == 0) {
if (mode == 0)
onnxToRoot(onnxFile, rootFile, o2::ccdb::CcdbApi::CCDBOBJECT_ENTRY);
else if (mode == 1)
rootToOnnx(rootFile, onnxFile, o2::ccdb::CcdbApi::CCDBOBJECT_ENTRY);
} else if (ccdbUpload == 1){
} else if (ccdbUpload == 1) {
if (mode == 0)
uploadToCCDBFromROOT(rootFile, metadata, tsMin, tsMax, ccdbPath, objname, ccdbUrl);
else if (mode == 1)
Expand Down
6 changes: 3 additions & 3 deletions GPU/Workflow/src/GPUWorkflowSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1278,11 +1278,11 @@ Inputs GPURecoWorkflowSpec::inputs()
printSettings(metadata);
}

if(mSpecConfig.nnEvalMode[0] == "c1") {
if (mSpecConfig.nnEvalMode[0] == "c1") {
metadata["nnCCDBEvalType"] = "classification_c1";
convert_map_to_metadata(metadata, ccdb_metadata);
inputs.emplace_back("nn_classification_c1", gDataOriginTPC, "NNCLUSTERIZER_C1", 0, Lifetime::Condition, ccdbParamSpec(nnClusterizerSettings.nnCCDBPath + "/" + metadata["nnCCDBEvalType"], ccdb_metadata, 0));
} else if(mSpecConfig.nnEvalMode[0] == "c2") {
} else if (mSpecConfig.nnEvalMode[0] == "c2") {
metadata["nnCCDBLayerType"] = nnClusterizerSettings.nnCCDBRegressionLayerType;
metadata["nnCCDBEvalType"] = "classification_c2";
convert_map_to_metadata(metadata, ccdb_metadata);
Expand All @@ -1294,7 +1294,7 @@ Inputs GPURecoWorkflowSpec::inputs()
convert_map_to_metadata(metadata, ccdb_metadata);
inputs.emplace_back("nn_regression_c1", gDataOriginTPC, "NNCLUSTERIZER_R1", 0, Lifetime::Condition, ccdbParamSpec(nnClusterizerSettings.nnCCDBPath + "/" + metadata["nnCCDBEvalType"], ccdb_metadata, 0));

if(mSpecConfig.nnEvalMode[1] == "r2") {
if (mSpecConfig.nnEvalMode[1] == "r2") {
metadata["nnCCDBEvalType"] = "regression_c2";
convert_map_to_metadata(metadata, ccdb_metadata);
inputs.emplace_back("nn_regression_c2", gDataOriginTPC, "NNCLUSTERIZER_R2", 0, Lifetime::Condition, ccdbParamSpec(nnClusterizerSettings.nnCCDBPath + "/" + metadata["nnCCDBEvalType"], ccdb_metadata, 0));
Expand Down
2 changes: 1 addition & 1 deletion GPU/Workflow/src/GPUWorkflowTPC.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ void GPURecoWorkflowSpec::finaliseCCDBTPC(ConcreteDataMatcher& matcher, void* ob
} else if (matcher == ConcreteDataMatcher(gDataOriginTPC, "NNCLUSTERIZER_C2", 0)) {
mConfig->configCalib.nnClusterizerNetworks[0] = static_cast<o2::tpc::ORTRootSerializer*>(obj);
LOG(info) << "(NN CLUS) " << (mConfig->configCalib.nnClusterizerNetworks[0])->getONNXModelSize() << " bytes loaded for NN clusterizer: classification_c2";
} else if(matcher == ConcreteDataMatcher(gDataOriginTPC, "NNCLUSTERIZER_R1", 0)){
} else if (matcher == ConcreteDataMatcher(gDataOriginTPC, "NNCLUSTERIZER_R1", 0)) {
mConfig->configCalib.nnClusterizerNetworks[1] = static_cast<o2::tpc::ORTRootSerializer*>(obj);
LOG(info) << "(NN CLUS) " << (mConfig->configCalib.nnClusterizerNetworks[1])->getONNXModelSize() << " bytes loaded for NN clusterizer: regression_c1";
} else if (matcher == ConcreteDataMatcher(gDataOriginTPC, "NNCLUSTERIZER_R2", 0)) {
Expand Down