| 218 | } |
| 219 | |
| 220 | TGpuTrainResult TrainModelImpl(const TTrainModelInternalOptions& internalOptions, |
| 221 | const NCatboostOptions::TCatBoostOptions& trainCatBoostOptions, |
| 222 | const NCatboostOptions::TOutputFilesOptions& outputOptions, |
| 223 | const TTrainingDataProvider& dataProvider, |
| 224 | const TTrainingDataProvider* testProvider, |
| 225 | const TFeatureEstimators& featureEstimators, |
| 226 | TBinarizedFeaturesManager& featuresManager, |
| 227 | ui32 approxDimension, |
| 228 | ITrainingCallbacks* trainingCallbacks, |
| 229 | NPar::ILocalExecutor* localExecutor, |
| 230 | TVector<TVector<double>>* testMultiApprox, // [dim][objectIdx] |
| 231 | TMetricsAndTimeLeftHistory* metricsAndTimeHistory, |
| 232 | const TMaybe<TCustomObjectiveDescriptor>& objectiveDescriptor, |
| 233 | const TMaybe<TCustomMetricDescriptor>& evalMetricDescriptor |
| 234 | ) { |
| 235 | auto& profiler = NCudaLib::GetCudaManager().GetProfiler(); |
| 236 | ConfigureCudaProfiler(trainCatBoostOptions.IsProfile, &profiler); |
| 237 | |
| 238 | TGpuAwareRandom random(trainCatBoostOptions.RandomSeed); |
| 239 | |
| 240 | TGpuTrainResult model; |
| 241 | |
| 242 | const auto optimizationImplementation = GetTrainerFactoryKey(trainCatBoostOptions); |
| 243 | |
| 244 | if (TGpuTrainerFactory::Has(optimizationImplementation)) { |
| 245 | THolder<IGpuTrainer> trainer(TGpuTrainerFactory::Construct(optimizationImplementation)); |
| 246 | model = trainer->TrainModel(featuresManager, |
| 247 | internalOptions, |
| 248 | trainCatBoostOptions, |
| 249 | outputOptions, |
| 250 | dataProvider, |
| 251 | testProvider, |
| 252 | featureEstimators, |
| 253 | objectiveDescriptor, |
| 254 | evalMetricDescriptor, |
| 255 | random, |
| 256 | approxDimension, |
| 257 | trainingCallbacks, |
| 258 | localExecutor, |
| 259 | testMultiApprox, |
| 260 | metricsAndTimeHistory); |
| 261 | } else { |
| 262 | ythrow TCatBoostException() << "Error: optimization scheme is not supported for GPU learning " << optimizationImplementation; |
| 263 | } |
| 264 | return model; |
| 265 | } |
| 266 | |
| 267 | void ModelBasedEvalImpl(const NCatboostOptions::TCatBoostOptions& trainCatBoostOptions, |
| 268 | const NCatboostOptions::TOutputFilesOptions& outputOptions, |
no test coverage detected