We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Serving gradio报错
![image](https://github.com/InternLM/lmdeploy/assets/6971044/d84724e1-e098-4ad7-9b02-bdc5e0bdeec0)

报错: no module named lmdeploy.serve.gradio

环境里已安装了lmdeploy 0.0.2 python包。

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `lmdeploy/version.py`
Content:
```
1 # Copyright (c) OpenMMLab. All rights reserved.
2 from typing import Tuple
3 
4 __version__ = '0.0.2'
5 short_version = __version__
6 
7 
8 def parse_version_info(version_str: str) -> Tuple:
9     """Parse version from a string.
10 
11     Args:
12         version_str (str): A string represents a version info.
13 
14     Returns:
15         tuple: A sequence of integer and string represents version.
16     """
17     _version_info = []
18     for x in version_str.split('.'):
19         if x.isdigit():
20             _version_info.append(int(x))
21         elif x.find('rc') != -1:
22             patch_version = x.split('rc')
23             _version_info.append(int(patch_version[0]))
24             _version_info.append(f'rc{patch_version[1]}')
25     return tuple(_version_info)
26 
27 
28 version_info = parse_version_info(__version__)
29 
30 __all__ = ['__version__', 'version_info', 'parse_version_info']
31
```
--- 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/lmdeploy/version.py b/lmdeploy/version.py
--- a/lmdeploy/version.py
+++ b/lmdeploy/version.py
@@ -1,7 +1,7 @@
 # Copyright (c) OpenMMLab. All rights reserved.
 from typing import Tuple
 
-__version__ = '0.0.2'
+__version__ = '0.0.3'
 short_version = __version__

{"golden_diff": "diff --git a/lmdeploy/version.py b/lmdeploy/version.py\n--- a/lmdeploy/version.py\n+++ b/lmdeploy/version.py\n@@ -1,7 +1,7 @@\n # Copyright (c) OpenMMLab. All rights reserved.\n from typing import Tuple\n \n-__version__ = '0.0.2'\n+__version__ = '0.0.3'\n short_version = __version__\n", "issue": "Serving gradio\u62a5\u9519\n![image](https://github.com/InternLM/lmdeploy/assets/6971044/d84724e1-e098-4ad7-9b02-bdc5e0bdeec0)\r\n\r\n\u62a5\u9519: no module named lmdeploy.serve.gradio\r\n\r\n\u73af\u5883\u91cc\u5df2\u5b89\u88c5\u4e86lmdeploy 0.0.2 python\u5305\u3002\n", "before_files": [{"content": "# Copyright (c) OpenMMLab. All rights reserved.\nfrom typing import Tuple\n\n__version__ = '0.0.2'\nshort_version = __version__\n\n\ndef parse_version_info(version_str: str) -> Tuple:\n    \"\"\"Parse version from a string.\n\n    Args:\n        version_str (str): A string represents a version info.\n\n    Returns:\n        tuple: A sequence of integer and string represents version.\n    \"\"\"\n    _version_info = []\n    for x in version_str.split('.'):\n        if x.isdigit():\n            _version_info.append(int(x))\n        elif x.find('rc') != -1:\n            patch_version = x.split('rc')\n            _version_info.append(int(patch_version[0]))\n            _version_info.append(f'rc{patch_version[1]}')\n    return tuple(_version_info)\n\n\nversion_info = parse_version_info(__version__)\n\n__all__ = ['__version__', 'version_info', 'parse_version_info']\n", "path": "lmdeploy/version.py"}], "after_files": [{"content": "# Copyright (c) OpenMMLab. All rights reserved.\nfrom typing import Tuple\n\n__version__ = '0.0.3'\nshort_version = __version__\n\n\ndef parse_version_info(version_str: str) -> Tuple:\n    \"\"\"Parse version from a string.\n\n    Args:\n        version_str (str): A string represents a version info.\n\n    Returns:\n        tuple: A sequence of integer and string represents version.\n    \"\"\"\n    _version_info = []\n    for x in version_str.split('.'):\n        if x.isdigit():\n            _version_info.append(int(x))\n        elif x.find('rc') != -1:\n            patch_version = x.split('rc')\n            _version_info.append(int(patch_version[0]))\n            _version_info.append(f'rc{patch_version[1]}')\n    return tuple(_version_info)\n\n\nversion_info = parse_version_info(__version__)\n\n__all__ = ['__version__', 'version_info', 'parse_version_info']\n", "path": "lmdeploy/version.py"}]}