diff --git a/tutorials/test3.ipynb b/tutorials/test3.ipynb index f2c01fd2ed..fada9c4635 100644 --- a/tutorials/test3.ipynb +++ b/tutorials/test3.ipynb @@ -23,8 +23,8 @@ " variable OMP_PATH to the location of the header before importing keopscore or pykeops,\n", " e.g. using os.environ: import os; os.environ['OMP_PATH'] = '/path/to/omp/header'\n", "[KeOps] Warning : Cuda libraries were not detected on the system or could not be loaded ; using cpu only mode\n", - "CPU times: user 2.14 s, sys: 917 ms, total: 3.06 s\n", - "Wall time: 5.79 s\n" + "CPU times: user 3.59 s, sys: 1.62 s, total: 5.21 s\n", + "Wall time: 18.6 s\n" ] } ], @@ -67,6 +67,21 @@ "id": "06d67fd6", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " Optimize acqf \n", + "\n", + "\n" + ] + }, { "name": "stderr", "output_type": "stream", @@ -79,88 +94,91 @@ "name": "stdout", "output_type": "stream", "text": [ - " 70166 function calls (67095 primitive calls) in 0.392 seconds\n", + " 70166 function calls (67095 primitive calls) in 0.649 seconds\n", "\n", " Ordered by: cumulative time\n", " List reduced from 672 to 67 due to restriction <0.1>\n", "\n", " ncalls tottime percall cumtime percall filename:lineno(function)\n", - " 1 0.000 0.000 0.392 0.392 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_minimize.py:53(minimize)\n", - " 1 0.000 0.000 0.392 0.392 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_lbfgsb_py.py:290(_minimize_lbfgsb)\n", - " 46 0.001 0.000 0.389 0.008 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:71(_compute_if_needed)\n", - " 24 0.000 0.000 0.389 0.016 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:293(_update_fun)\n", - " 23 0.000 0.000 0.389 0.017 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:16(wrapped)\n", - " 23 0.000 0.000 0.389 0.017 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:78(__call__)\n", - " 23 0.000 0.000 0.388 0.017 :1(f_and_grad)\n", - " 23 0.000 0.000 0.299 0.013 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:341(fun_and_grad)\n", - " 69/23 0.000 0.000 0.196 0.009 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1732(_wrapped_call_impl)\n", - " 69/23 0.000 0.000 0.196 0.009 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1740(_call_impl)\n", - " 23 0.000 0.000 0.196 0.009 /Users/saitcakmak/botorch/botorch/utils/transforms.py:340(decorated)\n", - " 23 0.000 0.000 0.196 0.009 /Users/saitcakmak/botorch/botorch/utils/transforms.py:278(decorated)\n", - " 23 0.000 0.000 0.196 0.009 /Users/saitcakmak/botorch/botorch/acquisition/monte_carlo.py:254(forward)\n", - " 46/23 0.001 0.000 0.190 0.008 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/__init__.py:358(grad)\n", - " 46/23 0.000 0.000 0.184 0.008 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/graph.py:816(_engine_run_backward)\n", - " 46/23 0.134 0.003 0.184 0.008 {method 'run_backward' of 'torch._C._EngineBase' objects}\n", - " 23 0.001 0.000 0.171 0.007 /Users/saitcakmak/botorch/botorch/acquisition/monte_carlo.py:277(_non_reduced_forward)\n", - " 23 0.001 0.000 0.152 0.007 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:450(_get_samples_and_objectives)\n", - " 1 0.000 0.000 0.092 0.092 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:203(_prepare_scalar_function)\n", - " 1 0.000 0.000 0.092 0.092 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:166(__init__)\n", - " 23 0.000 0.000 0.077 0.003 /Users/saitcakmak/botorch/botorch/models/gpytorch.py:407(posterior)\n", - " 23 0.001 0.000 0.067 0.003 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_gp.py:252(__call__)\n", - " 23 0.000 0.000 0.063 0.003 /Users/saitcakmak/botorch/botorch/acquisition/acquisition.py:128(get_posterior_samples)\n", - " 23 0.000 0.000 0.062 0.003 /Users/saitcakmak/botorch/botorch/sampling/normal.py:34(forward)\n", - " 23 0.001 0.000 0.061 0.003 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_prediction_strategies.py:308(exact_prediction)\n", - " 46/23 0.000 0.000 0.057 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/function.py:292(apply)\n", - " 46/23 0.001 0.000 0.057 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/functions/_matmul.py:33(backward)\n", - " 23 0.000 0.000 0.057 0.002 /Users/saitcakmak/botorch/botorch/posteriors/gpytorch.py:86(rsample_from_base_samples)\n", - " 23 0.009 0.000 0.056 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/distributions/multivariate_normal.py:198(rsample)\n", - " 23 0.017 0.001 0.056 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:339(_bilinear_derivative)\n", - " 161/138 0.000 0.000 0.050 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/utils/memoize.py:54(g)\n", - " 69/46 0.000 0.000 0.050 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:22(wrapped)\n", - " 23 0.000 0.000 0.048 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:408(to_dense)\n", - " 23 0.000 0.000 0.048 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:342(evaluate_kernel)\n", - " 69/46 0.000 0.000 0.047 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/module.py:30(__call__)\n", - " 46 0.000 0.000 0.046 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:459(__call__)\n", - " 23 0.000 0.000 0.044 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/rbf_kernel.py:68(forward)\n", - " 23 0.000 0.000 0.040 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:312(covar_dist)\n", - " 23 0.001 0.000 0.040 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:26(sq_dist)\n", - " 92/69 0.000 0.000 0.037 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:1817(matmul)\n", - " 69 0.035 0.001 0.035 0.001 {built-in method torch.matmul}\n", - " 69/46 0.000 0.000 0.035 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/function.py:559(apply)\n", - " 46 0.000 0.000 0.035 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/triangular_linear_operator.py:104(_matmul)\n", - " 69/46 0.001 0.000 0.034 0.001 {built-in method apply}\n", - " 23 0.034 0.001 0.034 0.001 {method 'clamp_min_' of 'torch._C.TensorBase' objects}\n", - " 69/46 0.000 0.000 0.034 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/functions/_matmul.py:9(forward)\n", - " 46 0.000 0.000 0.032 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/dense_linear_operator.py:61(_matmul)\n", - " 46 0.004 0.000 0.024 0.001 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:146(_inf_max_helper)\n", - " 23 0.000 0.000 0.020 0.001 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:318(fatmax)\n", - " 92/23 0.000 0.000 0.019 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/utils/memoize.py:54(g)\n", - " 23 0.000 0.000 0.019 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:2128(root_decomposition)\n", - " 23 0.000 0.000 0.017 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:1301(cholesky)\n", - " 23 0.000 0.000 0.017 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:500(_cholesky)\n", - " 23 0.001 0.000 0.015 0.001 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:349(_sample_forward)\n", - " 325 0.001 0.000 0.014 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1935(__setattr__)\n", - " 69 0.013 0.000 0.013 0.000 {method 'matmul' of 'torch._C.TensorBase' objects}\n", - " 23 0.001 0.000 0.011 0.000 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:515(_log_improvement)\n", - " 23 0.000 0.000 0.010 0.000 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:288(log_fatplus)\n", - " 92 0.009 0.000 0.009 0.000 {method 'contiguous' of 'torch._C.TensorBase' objects}\n", - " 23 0.000 0.000 0.009 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/utils/cholesky.py:50(psd_safe_cholesky)\n", - " 23 0.000 0.000 0.009 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/utils/cholesky.py:12(_psd_safe_cholesky)\n", - " 23 0.000 0.000 0.009 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/dense_linear_operator.py:70(_bilinear_derivative)\n", - " 23 0.005 0.000 0.009 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_prediction_strategies.py:365(exact_predictive_covar)\n", - " 23 0.001 0.000 0.008 0.000 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:297(fatplus)\n", - " 94 0.008 0.000 0.008 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:519(register_buffer)\n", - " 23 0.002 0.000 0.008 0.000 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:342(max_fun)\n", - " 23 0.001 0.000 0.007 0.000 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:311(_fatplus)\n", - "\n", - "\n", - "CPU times: user 1.04 s, sys: 981 ms, total: 2.02 s\n", - "Wall time: 397 ms\n" + " 1 0.000 0.000 0.649 0.649 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_minimize.py:53(minimize)\n", + " 1 0.000 0.000 0.649 0.649 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_lbfgsb_py.py:290(_minimize_lbfgsb)\n", + " 46 0.001 0.000 0.647 0.014 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:71(_compute_if_needed)\n", + " 24 0.000 0.000 0.646 0.027 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:293(_update_fun)\n", + " 23 0.000 0.000 0.646 0.028 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:16(wrapped)\n", + " 23 0.000 0.000 0.646 0.028 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:78(__call__)\n", + " 23 0.001 0.000 0.645 0.028 :3(f_and_grad)\n", + " 23 0.000 0.000 0.539 0.023 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:341(fun_and_grad)\n", + " 46/23 0.001 0.000 0.383 0.017 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/__init__.py:358(grad)\n", + " 46/23 0.000 0.000 0.373 0.016 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/graph.py:816(_engine_run_backward)\n", + " 46/23 0.304 0.007 0.373 0.016 {method 'run_backward' of 'torch._C._EngineBase' objects}\n", + " 69/23 0.000 0.000 0.260 0.011 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1732(_wrapped_call_impl)\n", + " 69/23 0.000 0.000 0.260 0.011 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1740(_call_impl)\n", + " 23 0.000 0.000 0.260 0.011 /Users/saitcakmak/botorch/botorch/utils/transforms.py:340(decorated)\n", + " 23 0.000 0.000 0.260 0.011 /Users/saitcakmak/botorch/botorch/utils/transforms.py:278(decorated)\n", + " 23 0.001 0.000 0.259 0.011 /Users/saitcakmak/botorch/botorch/acquisition/monte_carlo.py:254(forward)\n", + " 23 0.001 0.000 0.215 0.009 /Users/saitcakmak/botorch/botorch/acquisition/monte_carlo.py:277(_non_reduced_forward)\n", + " 23 0.001 0.000 0.181 0.008 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:450(_get_samples_and_objectives)\n", + " 23 0.000 0.000 0.114 0.005 /Users/saitcakmak/botorch/botorch/acquisition/acquisition.py:128(get_posterior_samples)\n", + " 23 0.000 0.000 0.113 0.005 /Users/saitcakmak/botorch/botorch/sampling/normal.py:34(forward)\n", + " 23 0.000 0.000 0.110 0.005 /Users/saitcakmak/botorch/botorch/posteriors/gpytorch.py:86(rsample_from_base_samples)\n", + " 1 0.000 0.000 0.110 0.110 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:203(_prepare_scalar_function)\n", + " 1 0.000 0.000 0.110 0.110 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:166(__init__)\n", + " 23 0.025 0.001 0.109 0.005 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/distributions/multivariate_normal.py:198(rsample)\n", + " 46/23 0.000 0.000 0.082 0.004 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/function.py:292(apply)\n", + " 46/23 0.001 0.000 0.082 0.004 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/functions/_matmul.py:33(backward)\n", + " 23 0.027 0.001 0.080 0.003 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:339(_bilinear_derivative)\n", + " 23 0.000 0.000 0.057 0.002 /Users/saitcakmak/botorch/botorch/models/gpytorch.py:407(posterior)\n", + " 23 0.001 0.000 0.047 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_gp.py:252(__call__)\n", + " 46 0.004 0.000 0.043 0.001 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:146(_inf_max_helper)\n", + " 92/69 0.000 0.000 0.041 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:1817(matmul)\n", + " 23 0.001 0.000 0.041 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_prediction_strategies.py:308(exact_prediction)\n", + " 69/46 0.000 0.000 0.038 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/function.py:559(apply)\n", + " 46 0.000 0.000 0.038 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/triangular_linear_operator.py:104(_matmul)\n", + " 69 0.037 0.001 0.037 0.001 {built-in method torch.matmul}\n", + " 69/46 0.001 0.000 0.037 0.001 {built-in method apply}\n", + " 23 0.000 0.000 0.037 0.002 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:318(fatmax)\n", + " 69/46 0.000 0.000 0.036 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/functions/_matmul.py:9(forward)\n", + " 92 0.036 0.000 0.036 0.000 {method 'contiguous' of 'torch._C.TensorBase' objects}\n", + " 46 0.000 0.000 0.034 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/dense_linear_operator.py:61(_matmul)\n", + " 23 0.001 0.000 0.031 0.001 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:349(_sample_forward)\n", + " 92/23 0.001 0.000 0.030 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/utils/memoize.py:54(g)\n", + " 23 0.000 0.000 0.030 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:2128(root_decomposition)\n", + " 23 0.000 0.000 0.028 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:1301(cholesky)\n", + " 161/138 0.000 0.000 0.027 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/utils/memoize.py:54(g)\n", + " 23 0.000 0.000 0.027 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:500(_cholesky)\n", + " 69/46 0.000 0.000 0.027 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:22(wrapped)\n", + " 23 0.000 0.000 0.026 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:408(to_dense)\n", + " 23 0.000 0.000 0.025 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:342(evaluate_kernel)\n", + " 69/46 0.000 0.000 0.024 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/module.py:30(__call__)\n", + " 46 0.000 0.000 0.022 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:459(__call__)\n", + " 23 0.000 0.000 0.021 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/rbf_kernel.py:68(forward)\n", + " 23 0.002 0.000 0.017 0.001 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:515(_log_improvement)\n", + " 23 0.002 0.000 0.017 0.001 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:342(max_fun)\n", + " 23 0.000 0.000 0.015 0.001 /Users/saitcakmak/botorch/botorch/utils/safe_math.py:288(log_fatplus)\n", + " 23 0.001 0.000 0.015 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/utils/cholesky.py:50(psd_safe_cholesky)\n", + " 207 0.014 0.000 0.014 0.000 {method 'sum' of 'torch._C.TensorBase' objects}\n", + " 69 0.014 0.000 0.014 0.000 {method 'matmul' of 'torch._C.TensorBase' objects}\n", + " 23 0.000 0.000 0.014 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/utils/cholesky.py:12(_psd_safe_cholesky)\n", + " 69 0.014 0.000 0.014 0.000 {method 'amax' of 'torch._C.TensorBase' objects}\n", + " 23 0.000 0.000 0.012 0.001 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:424(compute_best_f)\n", + " 23 0.000 0.000 0.012 0.001 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:489(_compute_best_feasible_objective)\n", + " 23 0.000 0.000 0.012 0.001 /Users/saitcakmak/botorch/botorch/acquisition/utils.py:92(compute_best_feasible_objective)\n", + " 46 0.001 0.000 0.011 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/__init__.py:88(_make_grads)\n", + " 23 0.000 0.000 0.011 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:312(covar_dist)\n", + " 325 0.001 0.000 0.011 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1935(__setattr__)\n", + " 23 0.001 0.000 0.011 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:26(sq_dist)\n", + "\n", + "\n", + "CPU times: user 777 ms, sys: 621 ms, total: 1.4 s\n", + "Wall time: 654 ms\n" ] } ], "source": [ "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n Optimize acqf \\n\\n\")\n", + "\n", "def f_and_grad(x):\n", " X_tensor = torch.from_numpy(x.reshape((16, 4, 2))).contiguous().requires_grad_(True)\n", " loss = acqf(X_tensor).sum()\n", @@ -193,13 +211,405 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 910 ms, sys: 775 ms, total: 1.69 s\n", - "Wall time: 294 ms\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " 20 reference evaluations of f_and_grad \n", + "\n", + "\n", + "CPU times: user 643 ms, sys: 512 ms, total: 1.16 s\n", + "Wall time: 393 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n 20 reference evaluations of f_and_grad \\n\\n\")\n", + "\n", + "X = np.random.random(128)\n", + "\n", + "with cProfile.Profile() as pr:\n", + " for _ in range(20):\n", + " f_and_grad(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "918f8323-7ee4-40c8-8105-cbead1a2c936", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " Optimize _get_samples_and_objectives \n", + "\n", + "\n", + " 60581 function calls (57872 primitive calls) in 0.253 seconds\n", + "\n", + " Ordered by: cumulative time\n", + " List reduced from 435 to 44 due to restriction <0.1>\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.000 0.000 0.253 0.253 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_minimize.py:53(minimize)\n", + " 1 0.000 0.000 0.253 0.253 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_lbfgsb_py.py:290(_minimize_lbfgsb)\n", + " 42 0.000 0.000 0.251 0.006 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:71(_compute_if_needed)\n", + " 22 0.000 0.000 0.251 0.011 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:293(_update_fun)\n", + " 21 0.000 0.000 0.251 0.012 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:16(wrapped)\n", + " 21 0.000 0.000 0.250 0.012 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:78(__call__)\n", + " 21 0.002 0.000 0.250 0.012 :3(f_and_grad)\n", + " 21 0.000 0.000 0.238 0.011 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:341(fun_and_grad)\n", + " 42/21 0.001 0.000 0.142 0.007 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/__init__.py:358(grad)\n", + " 42/21 0.000 0.000 0.141 0.007 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/graph.py:816(_engine_run_backward)\n", + " 42/21 0.094 0.002 0.141 0.007 {method 'run_backward' of 'torch._C._EngineBase' objects}\n", + " 21 0.001 0.000 0.099 0.005 /Users/saitcakmak/botorch/botorch/acquisition/logei.py:450(_get_samples_and_objectives)\n", + " 42/21 0.000 0.000 0.054 0.003 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/function.py:292(apply)\n", + " 42/21 0.001 0.000 0.054 0.003 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/functions/_matmul.py:33(backward)\n", + " 21 0.013 0.001 0.052 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:339(_bilinear_derivative)\n", + " 42 0.000 0.000 0.050 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1732(_wrapped_call_impl)\n", + " 42 0.000 0.000 0.050 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1740(_call_impl)\n", + " 21 0.000 0.000 0.050 0.002 /Users/saitcakmak/botorch/botorch/acquisition/acquisition.py:128(get_posterior_samples)\n", + " 21 0.000 0.000 0.050 0.002 /Users/saitcakmak/botorch/botorch/sampling/normal.py:34(forward)\n", + " 21 0.000 0.000 0.049 0.002 /Users/saitcakmak/botorch/botorch/posteriors/gpytorch.py:86(rsample_from_base_samples)\n", + " 21 0.008 0.000 0.048 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/distributions/multivariate_normal.py:198(rsample)\n", + " 21 0.000 0.000 0.040 0.002 /Users/saitcakmak/botorch/botorch/models/gpytorch.py:407(posterior)\n", + " 84/63 0.000 0.000 0.037 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:1817(matmul)\n", + " 63/42 0.000 0.000 0.034 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/function.py:559(apply)\n", + " 42 0.000 0.000 0.034 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/triangular_linear_operator.py:104(_matmul)\n", + " 63/42 0.001 0.000 0.034 0.001 {built-in method apply}\n", + " 63 0.034 0.001 0.034 0.001 {built-in method torch.matmul}\n", + " 63/42 0.000 0.000 0.033 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/functions/_matmul.py:9(forward)\n", + " 21 0.001 0.000 0.032 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_gp.py:252(__call__)\n", + " 42 0.000 0.000 0.031 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/dense_linear_operator.py:61(_matmul)\n", + " 21 0.001 0.000 0.027 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_prediction_strategies.py:308(exact_prediction)\n", + " 147/126 0.000 0.000 0.017 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/utils/memoize.py:54(g)\n", + " 63/42 0.000 0.000 0.017 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:22(wrapped)\n", + " 21 0.000 0.000 0.016 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:408(to_dense)\n", + " 21 0.000 0.000 0.016 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:342(evaluate_kernel)\n", + " 63/42 0.000 0.000 0.015 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/module.py:30(__call__)\n", + " 1 0.000 0.000 0.015 0.015 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:203(_prepare_scalar_function)\n", + " 1 0.000 0.000 0.015 0.015 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:166(__init__)\n", + " 84/21 0.000 0.000 0.015 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/utils/memoize.py:54(g)\n", + " 21 0.000 0.000 0.015 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:2128(root_decomposition)\n", + " 42 0.000 0.000 0.013 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:459(__call__)\n", + " 21 0.000 0.000 0.013 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:1301(cholesky)\n", + " 21 0.000 0.000 0.013 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/linear_operator/operators/_linear_operator.py:500(_cholesky)\n", + " 21 0.000 0.000 0.012 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/rbf_kernel.py:68(forward)\n", + "\n", + "\n", + "CPU times: user 648 ms, sys: 528 ms, total: 1.18 s\n", + "Wall time: 257 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n Optimize _get_samples_and_objectives \\n\\n\")\n", + "\n", + "def f_and_grad(x):\n", + " X_tensor = torch.from_numpy(x.reshape((16, 4, 2))).contiguous().requires_grad_(True)\n", + " loss = acqf._get_samples_and_objectives(X_tensor)[1].sum()\n", + " grad = torch.autograd.grad(loss, X_tensor)[0].reshape(-1).numpy(force=True)\n", + " return loss.item(), grad\n", + "\n", + "with cProfile.Profile() as pr:\n", + " res = minimize(\n", + " fun=f_and_grad,\n", + " x0=x0,\n", + " method=\"L-BFGS-B\",\n", + " jac=True,\n", + " bounds=bounds,\n", + " options={\"maxfun\": 20},\n", + " )\n", + "\n", + "sortby = SortKey.CUMULATIVE\n", + "ps = pstats.Stats(pr).sort_stats(sortby)\n", + "ps.print_stats(.1)\n", + "None" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "16a29715-123f-4a4f-afad-b701e910bef8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " 20 reference evaluations of f_and_grad \n", + "\n", + "\n", + "CPU times: user 656 ms, sys: 509 ms, total: 1.17 s\n", + "Wall time: 213 ms\n" ] } ], "source": [ "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n 20 reference evaluations of f_and_grad \\n\\n\")\n", + "\n", + "X = np.random.random(128)\n", + "\n", + "with cProfile.Profile() as pr:\n", + " for _ in range(20):\n", + " f_and_grad(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "04b82e4a-5ba9-46d5-85c8-7a82e45b71c1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " Optimize model.posterior.mean \n", + "\n", + "\n", + " 23207 function calls (22232 primitive calls) in 0.025 seconds\n", + "\n", + " Ordered by: cumulative time\n", + " List reduced from 341 to 34 due to restriction <0.1>\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.000 0.000 0.025 0.025 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_minimize.py:53(minimize)\n", + " 1 0.001 0.001 0.024 0.024 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_lbfgsb_py.py:290(_minimize_lbfgsb)\n", + " 30 0.000 0.000 0.023 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:71(_compute_if_needed)\n", + " 16 0.000 0.000 0.023 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:293(_update_fun)\n", + " 15 0.000 0.000 0.023 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:16(wrapped)\n", + " 15 0.000 0.000 0.023 0.002 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:78(__call__)\n", + " 15 0.000 0.000 0.022 0.001 :3(f_and_grad)\n", + " 15 0.000 0.000 0.020 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:341(fun_and_grad)\n", + " 15 0.000 0.000 0.017 0.001 /Users/saitcakmak/botorch/botorch/models/gpytorch.py:407(posterior)\n", + " 15 0.000 0.000 0.013 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_gp.py:252(__call__)\n", + " 15 0.000 0.000 0.009 0.001 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_prediction_strategies.py:308(exact_prediction)\n", + " 105/90 0.000 0.000 0.006 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/utils/memoize.py:54(g)\n", + " 45/30 0.000 0.000 0.006 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:22(wrapped)\n", + " 15 0.000 0.000 0.006 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:408(to_dense)\n", + " 45/30 0.000 0.000 0.006 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/module.py:30(__call__)\n", + " 15 0.000 0.000 0.006 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:342(evaluate_kernel)\n", + " 15 0.000 0.000 0.005 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/__init__.py:358(grad)\n", + " 15 0.000 0.000 0.005 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/graph.py:816(_engine_run_backward)\n", + " 15 0.005 0.000 0.005 0.000 {method 'run_backward' of 'torch._C._EngineBase' objects}\n", + " 30 0.000 0.000 0.004 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:459(__call__)\n", + " 15 0.000 0.000 0.004 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/rbf_kernel.py:68(forward)\n", + " 1 0.000 0.000 0.003 0.003 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:203(_prepare_scalar_function)\n", + " 1 0.000 0.000 0.003 0.003 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:166(__init__)\n", + " 15 0.000 0.000 0.003 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:312(covar_dist)\n", + " 15 0.001 0.000 0.002 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/kernels/kernel.py:26(sq_dist)\n", + " 180 0.000 0.000 0.002 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:1935(__setattr__)\n", + " 15 0.000 0.000 0.002 0.000 /Users/saitcakmak/botorch/botorch/models/transforms/outcome.py:372(untransform_posterior)\n", + " 15 0.000 0.000 0.002 0.000 /Users/saitcakmak/botorch/botorch/models/gp_regression.py:239(forward)\n", + " 15 0.001 0.000 0.002 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/models/exact_prediction_strategies.py:365(exact_predictive_covar)\n", + " 45 0.000 0.000 0.001 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/pyro/distributions/distribution.py:21(__call__)\n", + " 45 0.000 0.000 0.001 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/gpytorch/distributions/multivariate_normal.py:45(__init__)\n", + " 165 0.001 0.000 0.001 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/functional.py:79(broadcast_shapes)\n", + " 15 0.000 0.000 0.001 0.000 /Users/saitcakmak/botorch/botorch/models/model.py:248(eval)\n", + " 15 0.000 0.000 0.001 0.000 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/nn/modules/module.py:2849(eval)\n", + "\n", + "\n", + "CPU times: user 73.3 ms, sys: 56.6 ms, total: 130 ms\n", + "Wall time: 26.3 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n Optimize model.posterior.mean \\n\\n\")\n", + "\n", + "def f_and_grad(x):\n", + " X_tensor = torch.from_numpy(x.reshape((16, 4, 2))).contiguous().requires_grad_(True)\n", + " loss = model.posterior(X_tensor).mean.sum()\n", + " grad = torch.autograd.grad(loss, X_tensor)[0].reshape(-1).numpy(force=True)\n", + " return loss.item(), grad\n", + "\n", + "with cProfile.Profile() as pr:\n", + " res = minimize(\n", + " fun=f_and_grad,\n", + " x0=x0,\n", + " method=\"L-BFGS-B\",\n", + " jac=True,\n", + " bounds=bounds,\n", + " options={\"maxfun\": 20},\n", + " )\n", + "\n", + "sortby = SortKey.CUMULATIVE\n", + "ps = pstats.Stats(pr).sort_stats(sortby)\n", + "ps.print_stats(.1)\n", + "None" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "803f18ae-ca25-45c5-8bcc-249b2b2cff3d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " 20 reference evaluations of f_and_grad \n", + "\n", + "\n", + "CPU times: user 65.4 ms, sys: 51.4 ms, total: 117 ms\n", + "Wall time: 37.9 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n 20 reference evaluations of f_and_grad \\n\\n\")\n", + "\n", + "X = np.random.random(128)\n", + "\n", + "with cProfile.Profile() as pr:\n", + " for _ in range(20):\n", + " f_and_grad(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "99e0b3ff-9d8d-4ed4-b649-4c5476c39767", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " Optimize a simple root finding problem \n", + "\n", + "\n", + " 2983 function calls in 0.337 seconds\n", + "\n", + " Ordered by: cumulative time\n", + " List reduced from 136 to 14 due to restriction <0.1>\n", + "\n", + " ncalls tottime percall cumtime percall filename:lineno(function)\n", + " 1 0.000 0.000 0.337 0.337 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_minimize.py:53(minimize)\n", + " 1 0.000 0.000 0.336 0.336 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_lbfgsb_py.py:290(_minimize_lbfgsb)\n", + " 44 0.004 0.000 0.334 0.008 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:71(_compute_if_needed)\n", + " 23 0.000 0.000 0.334 0.015 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:293(_update_fun)\n", + " 22 0.000 0.000 0.334 0.015 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:16(wrapped)\n", + " 22 0.000 0.000 0.334 0.015 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:78(__call__)\n", + " 22 0.100 0.005 0.329 0.015 :5(f_and_grad)\n", + " 22 0.000 0.000 0.312 0.014 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:341(fun_and_grad)\n", + " 22 0.000 0.000 0.221 0.010 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/__init__.py:358(grad)\n", + " 22 0.000 0.000 0.220 0.010 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/torch/autograd/graph.py:816(_engine_run_backward)\n", + " 22 0.219 0.010 0.219 0.010 {method 'run_backward' of 'torch._C._EngineBase' objects}\n", + " 1 0.000 0.000 0.024 0.024 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_optimize.py:203(_prepare_scalar_function)\n", + " 1 0.000 0.000 0.024 0.024 /opt/anaconda3/envs/botorch/lib/python3.10/site-packages/scipy/optimize/_differentiable_functions.py:166(__init__)\n", + " 22 0.007 0.000 0.007 0.000 {method 'sum' of 'torch._C.TensorBase' objects}\n", + "\n", + "\n", + "CPU times: user 1.47 s, sys: 856 ms, total: 2.33 s\n", + "Wall time: 364 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n Optimize a simple root finding problem \\n\\n\")\n", + "\n", + "rand_tensor = torch.rand(128, 128, 128)\n", + "\n", + "def f_and_grad(x):\n", + " X_tensor = torch.from_numpy(x).contiguous().requires_grad_(True)\n", + " diff = rand_tensor - X_tensor\n", + " loss = (diff @ diff).sum()\n", + " grad = torch.autograd.grad(loss, X_tensor)[0].reshape(-1).numpy(force=True)\n", + " return loss.item(), grad\n", + "\n", + "with cProfile.Profile() as pr:\n", + " res = minimize(\n", + " fun=f_and_grad,\n", + " x0=x0,\n", + " method=\"L-BFGS-B\",\n", + " jac=True,\n", + " bounds=bounds,\n", + " options={\"maxfun\": 20},\n", + " )\n", + "\n", + "sortby = SortKey.CUMULATIVE\n", + "ps = pstats.Stats(pr).sort_stats(sortby)\n", + "ps.print_stats(.1)\n", + "None" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ff6f80d9-ffe8-4091-9d46-c3280e96b0dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " 20 reference evaluations of f_and_grad \n", + "\n", + "\n", + "CPU times: user 1.32 s, sys: 719 ms, total: 2.04 s\n", + "Wall time: 307 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "print(\"\\n\\n\\n\\n\\n\\n 20 reference evaluations of f_and_grad \\n\\n\")\n", + "\n", "X = np.random.random(128)\n", "\n", "with cProfile.Profile() as pr:\n",