We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
RBF Kernel Change Breaks Testing Code
The change to RBFKernel in 84fccd898c45c08279fb5c109e6e234f3a47588a may break something about our prediction code. 

I am not totally sure what the problem is yet, but I isolated this as the problem with `git bisect` and have a reasonable test case where results are significantly worse with the commit in compared to after a revert commit. 

It seems like the stability issues we encountered when making this change in the past don't come up in the unit tests, but do on some real datasets.

I can try to push my test case to a branch as well, although it relies on a UCI dataset.

@Balandat @gpleiss 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `gpytorch/kernels/rbf_kernel.py`
Content:
```
1 from __future__ import absolute_import
2 from __future__ import division
3 from __future__ import print_function
4 from __future__ import unicode_literals
5 
6 from .kernel import Kernel
7 
8 
9 class RBFKernel(Kernel):
10 
11     def __init__(
12         self,
13         ard_num_dims=None,
14         log_lengthscale_bounds=(-10000, 10000),
15         eps=1e-5,
16         active_dims=None,
17     ):
18         super(RBFKernel, self).__init__(
19             has_lengthscale=True,
20             ard_num_dims=ard_num_dims,
21             log_lengthscale_bounds=log_lengthscale_bounds,
22             active_dims=active_dims,
23         )
24         self.eps = eps
25 
26     def forward(self, x1, x2):
27         lengthscales = self.log_lengthscale.exp() + self.eps
28         diff = (x1.unsqueeze(2) - x2.unsqueeze(1)).div_(lengthscales)
29         return diff.pow_(2).sum(-1).mul_(-0.5).exp_()
30
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/gpytorch/kernels/rbf_kernel.py b/gpytorch/kernels/rbf_kernel.py
--- a/gpytorch/kernels/rbf_kernel.py
+++ b/gpytorch/kernels/rbf_kernel.py
@@ -3,6 +3,7 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
+import math
 from .kernel import Kernel
 
 
@@ -12,7 +13,7 @@
         self,
         ard_num_dims=None,
         log_lengthscale_bounds=(-10000, 10000),
-        eps=1e-5,
+        eps=1e-6,
         active_dims=None,
     ):
         super(RBFKernel, self).__init__(
@@ -24,6 +25,6 @@
         self.eps = eps
 
     def forward(self, x1, x2):
-        lengthscales = self.log_lengthscale.exp() + self.eps
+        lengthscales = self.log_lengthscale.exp().mul(math.sqrt(2)).clamp(self.eps, 1e5)
         diff = (x1.unsqueeze(2) - x2.unsqueeze(1)).div_(lengthscales)
-        return diff.pow_(2).sum(-1).mul_(-0.5).exp_()
+        return diff.pow_(2).sum(-1).mul_(-1).exp_()

{"golden_diff": "diff --git a/gpytorch/kernels/rbf_kernel.py b/gpytorch/kernels/rbf_kernel.py\n--- a/gpytorch/kernels/rbf_kernel.py\n+++ b/gpytorch/kernels/rbf_kernel.py\n@@ -3,6 +3,7 @@\n from __future__ import print_function\n from __future__ import unicode_literals\n \n+import math\n from .kernel import Kernel\n \n \n@@ -12,7 +13,7 @@\n         self,\n         ard_num_dims=None,\n         log_lengthscale_bounds=(-10000, 10000),\n-        eps=1e-5,\n+        eps=1e-6,\n         active_dims=None,\n     ):\n         super(RBFKernel, self).__init__(\n@@ -24,6 +25,6 @@\n         self.eps = eps\n \n     def forward(self, x1, x2):\n-        lengthscales = self.log_lengthscale.exp() + self.eps\n+        lengthscales = self.log_lengthscale.exp().mul(math.sqrt(2)).clamp(self.eps, 1e5)\n         diff = (x1.unsqueeze(2) - x2.unsqueeze(1)).div_(lengthscales)\n-        return diff.pow_(2).sum(-1).mul_(-0.5).exp_()\n+        return diff.pow_(2).sum(-1).mul_(-1).exp_()\n", "issue": "RBF Kernel Change Breaks Testing Code\nThe change to RBFKernel in 84fccd898c45c08279fb5c109e6e234f3a47588a may break something about our prediction code. \r\n\r\nI am not totally sure what the problem is yet, but I isolated this as the problem with `git bisect` and have a reasonable test case where results are significantly worse with the commit in compared to after a revert commit. \r\n\r\nIt seems like the stability issues we encountered when making this change in the past don't come up in the unit tests, but do on some real datasets.\r\n\r\nI can try to push my test case to a branch as well, although it relies on a UCI dataset.\r\n\r\n@Balandat @gpleiss \n", "before_files": [{"content": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\nfrom __future__ import unicode_literals\n\nfrom .kernel import Kernel\n\n\nclass RBFKernel(Kernel):\n\n    def __init__(\n        self,\n        ard_num_dims=None,\n        log_lengthscale_bounds=(-10000, 10000),\n        eps=1e-5,\n        active_dims=None,\n    ):\n        super(RBFKernel, self).__init__(\n            has_lengthscale=True,\n            ard_num_dims=ard_num_dims,\n            log_lengthscale_bounds=log_lengthscale_bounds,\n            active_dims=active_dims,\n        )\n        self.eps = eps\n\n    def forward(self, x1, x2):\n        lengthscales = self.log_lengthscale.exp() + self.eps\n        diff = (x1.unsqueeze(2) - x2.unsqueeze(1)).div_(lengthscales)\n        return diff.pow_(2).sum(-1).mul_(-0.5).exp_()\n", "path": "gpytorch/kernels/rbf_kernel.py"}], "after_files": [{"content": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\nfrom __future__ import unicode_literals\n\nimport math\nfrom .kernel import Kernel\n\n\nclass RBFKernel(Kernel):\n\n    def __init__(\n        self,\n        ard_num_dims=None,\n        log_lengthscale_bounds=(-10000, 10000),\n        eps=1e-6,\n        active_dims=None,\n    ):\n        super(RBFKernel, self).__init__(\n            has_lengthscale=True,\n            ard_num_dims=ard_num_dims,\n            log_lengthscale_bounds=log_lengthscale_bounds,\n            active_dims=active_dims,\n        )\n        self.eps = eps\n\n    def forward(self, x1, x2):\n        lengthscales = self.log_lengthscale.exp().mul(math.sqrt(2)).clamp(self.eps, 1e5)\n        diff = (x1.unsqueeze(2) - x2.unsqueeze(1)).div_(lengthscales)\n        return diff.pow_(2).sum(-1).mul_(-1).exp_()\n", "path": "gpytorch/kernels/rbf_kernel.py"}]}