MCPcopy Create free account
hub / github.com/catboost/catboost / LoadQuantizedPool

Method LoadQuantizedPool

catboost/private/libs/quantized_pool/serialization.cpp:522–621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

520}
521
522void TFileQuantizedPoolLoader::LoadQuantizedPool(NCB::TLoadQuantizedPoolParameters params) {
523 CB_ENSURE_INTERNAL(
524 params.DatasetSubset.Range == NCB::TDatasetSubset().Range,
525 "Scheme quantized supports only default load subset range"
526 );
527
528 Pool.Blobs.push_back(params.LockMemory
529 ? TBlob::LockedFromFile(TString(PathWithScheme.Path))
530 : TBlob::FromFile(TString(PathWithScheme.Path)));
531
532 // TODO(yazevnul): optionally precharge pool
533
534 const TConstArrayRef<ui8> blob{
535 Pool.Blobs.back().AsUnsignedCharPtr(),
536 Pool.Blobs.back().Size()};
537
538 ValidatePoolPart(blob);
539
540 TPoolMetainfo poolMetainfo;
541 auto parseMetainfo = [&] (TConstArrayRef<ui8> bytes) {
542 const auto poolMetainfoParsed = poolMetainfo.ParseFromArray(bytes.data(), bytes.size());
543 CB_ENSURE(poolMetainfoParsed);
544 };
545 auto parseSchema = [&] (TConstArrayRef<ui8> bytes) {
546 const auto quantizationSchemaParsed = Pool.QuantizationSchema.ParseFromArray(bytes.data(), bytes.size());
547 CB_ENSURE(quantizationSchemaParsed);
548 };
549
550 TVector<TVector<NCB::TQuantizedPool::TChunkDescription>> stringColumnChunks;
551 THashMap<ui32, EColumn> stringColumnIndexToColumnType;
552
553 TVector<NCB::TQuantizedPool::TChunkDescription>* currentChunksPointer = nullptr;
554 auto parseColumn = [&] (ui32 columnIndex) -> bool {
555 CB_ENSURE(!Pool.ColumnIndexToLocalIndex.contains(columnIndex),
556 "Quantized pool should have unique column indices, but " <<
557 LabeledOutput(columnIndex) << " is repeated.");
558
559 const bool isFakeColumn = NCB::NQuantizationSchemaDetail::IsFakeIndex(columnIndex, poolMetainfo);
560 if (!isFakeColumn) {
561 if (!params.DatasetSubset.HasFeatures) {
562 auto pbColumnType = poolMetainfo.columnindextotype().at(columnIndex);
563 if (IsFactorColumn(IdlColumnTypeToEColumn(pbColumnType))) {
564 return false;
565 }
566 }
567
568 const auto localFeatureIndex = Pool.Chunks.size();
569 Pool.ColumnIndexToLocalIndex.emplace(columnIndex, localFeatureIndex);
570 Pool.Chunks.push_back({});
571 currentChunksPointer = &Pool.Chunks.back();
572 } else {
573 EColumn columnType;
574 if (columnIndex == poolMetainfo.GetStringDocIdFakeColumnIndex()) {
575 columnType = EColumn::SampleId;
576 } else if (columnIndex == poolMetainfo.GetStringGroupIdFakeColumnIndex()) {
577 columnType = EColumn::GroupId;
578 } else if (columnIndex == poolMetainfo.GetStringSubgroupIdFakeColumnIndex()){
579 columnType = EColumn::SubgroupId;

Callers 1

GetLoaderMethod · 0.80

Calls 15

TDatasetSubsetClass · 0.85
ValidatePoolPartFunction · 0.85
IsFakeIndexFunction · 0.85
IsFactorColumnFunction · 0.85
ParseQuantizedPoolFunction · 0.85
AsUnsignedCharPtrMethod · 0.80
ExtractQuantizedPoolMethod · 0.80
moveFunction · 0.50
push_backMethod · 0.45
backMethod · 0.45
SizeMethod · 0.45
ParseFromArrayMethod · 0.45

Tested by

no test coverage detected