RAMP Consulting Group runs parallel GPU training jobs, where each job can use one of several GPU configurations. Choose at most one configuration for each job so the total GPU allocation does not exceed the available budget and the total training value is maximized.
Return both the maximum total value and one optimal configuration for every job. Represent a selected configuration by its zero-based option index, or use -1 if the job is not scheduled. If multiple allocations have the same value, return any one of them.
Implement max_training_value(jobs, gpu_budget), where jobs is a list of jobs and each job is a list of (gpu_count, value) pairs. gpu_count and value are non-negative integers. Return a dictionary with value, the maximum total value, and allocation, a list of option indices with one entry per job.
def max_training_value(jobs, gpu_budget):