Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
saitcakmak committed Jan 10, 2025
1 parent 693cc18 commit d52ff23
Show file tree
Hide file tree
Showing 2 changed files with 221 additions and 163 deletions.
214 changes: 58 additions & 156 deletions tutorials/test2.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"id": "babee257",
"metadata": {
"execution": {
Expand All @@ -29,19 +29,11 @@
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 56.7 ms, sys: 23.8 ms, total: 80.6 ms\n",
"Wall time: 166 ms\n"
"[KeOps] Warning : omp.h header is not in the path, disabling OpenMP. To fix this, you can set the environment\n",
" 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"
]
},
{
"data": {
"text/plain": [
"'1.7.3'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
Expand Down Expand Up @@ -89,89 +81,13 @@
},
{
"cell_type": "code",
"execution_count": 7,
"id": "38a310d3",
"execution_count": null,
"id": "f6da14d3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 290123 function calls (267684 primitive calls) in 0.358 seconds\n",
"\n",
" Ordered by: cumulative time\n",
" List reduced from 503 to 50 due to restriction <0.1>\n",
"\n",
" ncalls tottime percall cumtime percall filename:lineno(function)\n",
" 1 0.000 0.000 0.358 0.358 /opt/anaconda3/lib/python3.9/site-packages/botorch/optim/optimize.py:415(optimize_acqf)\n",
" 1 0.000 0.000 0.358 0.358 /opt/anaconda3/lib/python3.9/site-packages/botorch/optim/optimize.py:547(_optimize_acqf)\n",
" 1 0.000 0.000 0.358 0.358 /opt/anaconda3/lib/python3.9/site-packages/botorch/optim/optimize.py:258(_optimize_acqf_batch)\n",
" 1 0.000 0.000 0.347 0.347 /opt/anaconda3/lib/python3.9/site-packages/botorch/optim/optimize.py:294(_optimize_batch_candidates)\n",
" 1 0.000 0.000 0.347 0.347 /opt/anaconda3/lib/python3.9/site-packages/botorch/generation/gen.py:43(gen_candidates_scipy)\n",
" 1 0.000 0.000 0.346 0.346 /opt/anaconda3/lib/python3.9/site-packages/botorch/optim/utils/timeout.py:17(minimize_with_timeout)\n",
" 1 0.000 0.000 0.346 0.346 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_minimize.py:45(minimize)\n",
" 1 0.003 0.003 0.345 0.345 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/lbfgsb.py:210(_minimize_lbfgsb)\n",
" 284 0.003 0.000 0.338 0.001 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/optimize.py:65(_compute_if_needed)\n",
" 142 0.000 0.000 0.338 0.002 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_differentiable_functions.py:264(fun_and_grad)\n",
" 143 0.000 0.000 0.337 0.002 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_differentiable_functions.py:231(_update_fun)\n",
" 142 0.000 0.000 0.337 0.002 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_differentiable_functions.py:136(update_fun)\n",
" 142 0.000 0.000 0.337 0.002 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/_differentiable_functions.py:129(fun_wrapped)\n",
" 142 0.000 0.000 0.337 0.002 /opt/anaconda3/lib/python3.9/site-packages/scipy/optimize/optimize.py:72(__call__)\n",
" 142 0.003 0.000 0.333 0.002 /opt/anaconda3/lib/python3.9/site-packages/botorch/generation/gen.py:175(f_np_wrapper)\n",
" 864/144 0.002 0.000 0.206 0.001 /opt/anaconda3/lib/python3.9/site-packages/torch/nn/modules/module.py:1494(_call_impl)\n",
" 144 0.000 0.000 0.205 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/utils/transforms.py:326(decorated)\n",
" 144 0.002 0.000 0.205 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/utils/transforms.py:266(decorated)\n",
" 144 0.004 0.000 0.200 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/acquisition/monte_carlo.py:325(forward)\n",
" 142 0.001 0.000 0.196 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/generation/gen.py:229(f)\n",
" 284/142 0.001 0.000 0.129 0.001 /opt/anaconda3/lib/python3.9/site-packages/torch/autograd/__init__.py:204(grad)\n",
" 284/142 0.098 0.000 0.127 0.001 {method 'run_backward' of 'torch._C._EngineBase' objects}\n",
" 144 0.001 0.000 0.114 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/models/gpytorch.py:340(posterior)\n",
" 144 0.003 0.000 0.094 0.001 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/models/exact_gp.py:251(__call__)\n",
" 144 0.002 0.000 0.065 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/models/exact_prediction_strategies.py:259(exact_prediction)\n",
" 144 0.000 0.000 0.055 0.000 /opt/anaconda3/lib/python3.9/site-packages/botorch/acquisition/acquisition.py:160(get_posterior_samples)\n",
" 144 0.000 0.000 0.053 0.000 /opt/anaconda3/lib/python3.9/site-packages/botorch/sampling/normal.py:34(forward)\n",
" 432/288 0.001 0.000 0.049 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/module.py:30(__call__)\n",
" 1008/864 0.001 0.000 0.048 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/utils/memoize.py:54(g)\n",
" 144 0.001 0.000 0.047 0.000 /opt/anaconda3/lib/python3.9/site-packages/botorch/posteriors/gpytorch.py:105(rsample_from_base_samples)\n",
" 432/288 0.001 0.000 0.045 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:22(wrapped)\n",
" 144 0.003 0.000 0.044 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/distributions/multivariate_normal.py:198(rsample)\n",
" 144 0.000 0.000 0.037 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:408(to_dense)\n",
" 288 0.001 0.000 0.036 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/kernels/kernel.py:453(__call__)\n",
" 144 0.001 0.000 0.036 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:342(evaluate_kernel)\n",
" 284/142 0.000 0.000 0.033 0.000 /opt/anaconda3/lib/python3.9/site-packages/torch/autograd/function.py:264(apply)\n",
" 284/142 0.002 0.000 0.033 0.000 /Users/saitcakmak/linear_operator/linear_operator/functions/_matmul.py:33(backward)\n",
" 144 0.001 0.000 0.031 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/kernels/scale_kernel.py:108(forward)\n",
" 142 0.004 0.000 0.028 0.000 /Users/saitcakmak/linear_operator/linear_operator/operators/_linear_operator.py:339(_bilinear_derivative)\n",
" 144 0.007 0.000 0.028 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/kernels/matern_kernel.py:86(forward)\n",
" 430/286 0.001 0.000 0.025 0.000 /Users/saitcakmak/linear_operator/linear_operator/operators/_linear_operator.py:1815(matmul)\n",
" 288 0.021 0.000 0.021 0.000 {method 'max' of 'torch._C._TensorBase' objects}\n",
" 288/144 0.001 0.000 0.020 0.000 /Users/saitcakmak/linear_operator/linear_operator/utils/memoize.py:54(g)\n",
" 430/286 0.001 0.000 0.019 0.000 /opt/anaconda3/lib/python3.9/site-packages/torch/autograd/function.py:501(apply)\n",
" 144 0.001 0.000 0.019 0.000 /Users/saitcakmak/linear_operator/linear_operator/operators/_linear_operator.py:2126(root_decomposition)\n",
" 430/286 0.003 0.000 0.018 0.000 {built-in method apply}\n",
" 144 0.001 0.000 0.017 0.000 /opt/anaconda3/lib/python3.9/site-packages/botorch/models/gp_regression.py:174(forward)\n",
" 286 0.000 0.000 0.017 0.000 /Users/saitcakmak/linear_operator/linear_operator/operators/triangular_linear_operator.py:104(_matmul)\n",
" 430/286 0.001 0.000 0.016 0.000 /Users/saitcakmak/linear_operator/linear_operator/functions/_matmul.py:9(forward)\n",
" 144 0.000 0.000 0.016 0.000 /Users/saitcakmak/linear_operator/linear_operator/operators/_linear_operator.py:1299(cholesky)\n",
"\n",
"\n",
"CPU times: user 342 ms, sys: 88.3 ms, total: 430 ms\n",
"Wall time: 369 ms\n"
]
},
{
"data": {
"text/plain": [
"'1.7.3'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"%%time\n",
"print(\"\\n\\n\\n\\n\\n\\n optimize_acqf \\n\\n\")\n",
"\n",
"acqf = qNoisyExpectedImprovement(model, train_X, cache_root=False)\n",
"\n",
Expand All @@ -195,7 +111,47 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": null,
"id": "240b33b4",
"metadata": {},
"outputs": [],
"source": [
"%%time\n",
"print(\"\\n\\n\\n\\n\\n\\n calling minimize directly \\n\\n\")\n",
"\n",
"\n",
"def f_and_grad(x):\n",
" X_tensor = torch.from_numpy(x.reshape((5, 5, 2))).contiguous().requires_grad_(True)\n",
" loss = acqf(X_tensor).sum()\n",
" grad = torch.autograd.grad(loss, X_tensor)[0].reshape(-1).numpy(force=True)\n",
" return loss.item(), grad\n",
"\n",
"bounds = Bounds(\n",
" lb=np.zeros(50),\n",
" ub=np.ones(50),\n",
" keep_feasible=True,\n",
")\n",
"x0 = np.random.random(50)\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",
" )\n",
"\n",
"sortby = SortKey.CUMULATIVE\n",
"ps = pstats.Stats(pr).sort_stats(sortby)\n",
"ps.print_stats(.1)\n",
"\n",
"scipy.__version__"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fb5c4839",
"metadata": {
"execution": {
Expand All @@ -213,73 +169,19 @@
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 192002 function calls (176502 primitive calls) in 0.382 seconds\n",
"\n",
" Ordered by: cumulative time\n",
" List reduced from 290 to 29 due to restriction <0.1>\n",
"\n",
" ncalls tottime percall cumtime percall filename:lineno(function)\n",
" 100 0.000 0.000 0.192 0.002 /opt/anaconda3/lib/python3.9/site-packages/torch/_tensor.py:428(backward)\n",
" 100 0.000 0.000 0.191 0.002 /opt/anaconda3/lib/python3.9/site-packages/torch/autograd/__init__.py:106(backward)\n",
" 200/100 0.141 0.001 0.190 0.002 {method 'run_backward' of 'torch._C._EngineBase' objects}\n",
" 600/100 0.002 0.000 0.188 0.002 /opt/anaconda3/lib/python3.9/site-packages/torch/nn/modules/module.py:1494(_call_impl)\n",
" 100 0.000 0.000 0.188 0.002 /opt/anaconda3/lib/python3.9/site-packages/botorch/utils/transforms.py:326(decorated)\n",
" 100 0.001 0.000 0.188 0.002 /opt/anaconda3/lib/python3.9/site-packages/botorch/utils/transforms.py:266(decorated)\n",
" 100 0.005 0.000 0.184 0.002 /opt/anaconda3/lib/python3.9/site-packages/botorch/acquisition/monte_carlo.py:325(forward)\n",
" 100 0.001 0.000 0.097 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/models/gpytorch.py:340(posterior)\n",
" 100 0.002 0.000 0.082 0.001 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/models/exact_gp.py:251(__call__)\n",
" 100 0.002 0.000 0.060 0.001 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/models/exact_prediction_strategies.py:259(exact_prediction)\n",
" 100 0.000 0.000 0.060 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/acquisition/acquisition.py:160(get_posterior_samples)\n",
" 100 0.000 0.000 0.059 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/sampling/normal.py:34(forward)\n",
" 200/100 0.000 0.000 0.056 0.001 /opt/anaconda3/lib/python3.9/site-packages/torch/autograd/function.py:264(apply)\n",
" 200/100 0.002 0.000 0.055 0.001 /Users/saitcakmak/linear_operator/linear_operator/functions/_matmul.py:33(backward)\n",
" 100 0.001 0.000 0.055 0.001 /opt/anaconda3/lib/python3.9/site-packages/botorch/posteriors/gpytorch.py:105(rsample_from_base_samples)\n",
" 100 0.007 0.000 0.053 0.001 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/distributions/multivariate_normal.py:198(rsample)\n",
" 100 0.013 0.000 0.052 0.001 /Users/saitcakmak/linear_operator/linear_operator/operators/_linear_operator.py:339(_bilinear_derivative)\n",
" 300/200 0.000 0.000 0.045 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/module.py:30(__call__)\n",
" 700/600 0.001 0.000 0.045 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/utils/memoize.py:54(g)\n",
" 300/200 0.001 0.000 0.042 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:22(wrapped)\n",
" 100 0.000 0.000 0.036 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:408(to_dense)\n",
" 100 0.001 0.000 0.035 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/lazy/lazy_evaluated_kernel_tensor.py:342(evaluate_kernel)\n",
" 200 0.001 0.000 0.035 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/kernels/kernel.py:453(__call__)\n",
" 100 0.001 0.000 0.031 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/kernels/scale_kernel.py:108(forward)\n",
" 300/200 0.001 0.000 0.030 0.000 /Users/saitcakmak/linear_operator/linear_operator/operators/_linear_operator.py:1815(matmul)\n",
" 100 0.005 0.000 0.028 0.000 /opt/anaconda3/lib/python3.9/site-packages/gpytorch/kernels/matern_kernel.py:86(forward)\n",
" 300/200 0.001 0.000 0.026 0.000 /opt/anaconda3/lib/python3.9/site-packages/torch/autograd/function.py:501(apply)\n",
" 300/200 0.002 0.000 0.025 0.000 {built-in method apply}\n",
" 200 0.000 0.000 0.025 0.000 /Users/saitcakmak/linear_operator/linear_operator/operators/triangular_linear_operator.py:104(_matmul)\n",
"\n",
"\n",
"CPU times: user 363 ms, sys: 171 ms, total: 534 ms\n",
"Wall time: 387 ms\n"
]
},
{
"data": {
"text/plain": [
"'1.7.3'"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"%%time\n",
"print(\"\\n\\n\\n\\n\\n\\n 100 acqf evaluations \\n\\n\")\n",
"\n",
"with cProfile.Profile() as pr:\n",
" for _ in range(100):\n",
" for _ in range(1):\n",
" test_X = torch.rand(20, 5, 2, requires_grad=True)\n",
" acqf(test_X).sum().backward()\n",
"\n",
"sortby = SortKey.CUMULATIVE\n",
"ps = pstats.Stats(pr).sort_stats(sortby)\n",
"ps.print_stats(.1)\n",
"# sortby = SortKey.CUMULATIVE\n",
"# ps = pstats.Stats(pr).sort_stats(sortby)\n",
"# ps.print_stats(.1)\n",
"\n",
"scipy.__version__"
]
Expand All @@ -302,7 +204,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
"version": "3.10.14"
},
"papermill": {
"default_parameters": {},
Expand Down
Loading

0 comments on commit d52ff23

Please sign in to comment.