Unverified Commit 390be746 authored by Cyrus Leung's avatar Cyrus Leung Committed by GitHub
Browse files

[Misc] Print stack trace using `logger.exception` (#9461)

parent e312e52b
...@@ -324,7 +324,7 @@ class OpenAIServingChat(OpenAIServing): ...@@ -324,7 +324,7 @@ class OpenAIServingChat(OpenAIServing):
else: else:
tool_parsers = [None] * num_choices tool_parsers = [None] * num_choices
except RuntimeError as e: except RuntimeError as e:
logger.error("Error in tool parser creation: %s", e) logger.exception("Error in tool parser creation.")
data = self.create_streaming_error_response(str(e)) data = self.create_streaming_error_response(str(e))
yield f"data: {data}\n\n" yield f"data: {data}\n\n"
yield "data: [DONE]\n\n" yield "data: [DONE]\n\n"
...@@ -600,7 +600,7 @@ class OpenAIServingChat(OpenAIServing): ...@@ -600,7 +600,7 @@ class OpenAIServingChat(OpenAIServing):
except ValueError as e: except ValueError as e:
# TODO: Use a vllm-specific Validation Error # TODO: Use a vllm-specific Validation Error
logger.error("error in chat completion stream generator: %s", e) logger.exception("Error in chat completion stream generator.")
data = self.create_streaming_error_response(str(e)) data = self.create_streaming_error_response(str(e))
yield f"data: {data}\n\n" yield f"data: {data}\n\n"
# Send the final done message after all response.n are finished # Send the final done message after all response.n are finished
...@@ -687,7 +687,7 @@ class OpenAIServingChat(OpenAIServing): ...@@ -687,7 +687,7 @@ class OpenAIServingChat(OpenAIServing):
try: try:
tool_parser = self.tool_parser(tokenizer) tool_parser = self.tool_parser(tokenizer)
except RuntimeError as e: except RuntimeError as e:
logger.error("Error in tool parser creation: %s", e) logger.exception("Error in tool parser creation.")
return self.create_error_response(str(e)) return self.create_error_response(str(e))
tool_call_info = tool_parser.extract_tool_calls( tool_call_info = tool_parser.extract_tool_calls(
......
...@@ -103,9 +103,9 @@ class Hermes2ProToolParser(ToolParser): ...@@ -103,9 +103,9 @@ class Hermes2ProToolParser(ToolParser):
tool_calls=tool_calls, tool_calls=tool_calls,
content=content if content else None) content=content if content else None)
except Exception as e: except Exception:
logger.error("Error in extracting tool call from response %s", logger.exception(
e) "Error in extracting tool call from response.")
return ExtractedToolCallInformation(tools_called=False, return ExtractedToolCallInformation(tools_called=False,
tool_calls=[], tool_calls=[],
content=model_output) content=model_output)
...@@ -333,6 +333,6 @@ class Hermes2ProToolParser(ToolParser): ...@@ -333,6 +333,6 @@ class Hermes2ProToolParser(ToolParser):
return delta return delta
except Exception as e: except Exception:
logger.error("Error trying to handle streaming tool call: %s", e) logger.exception("Error trying to handle streaming tool call.")
return None # do not stream a delta. skip this token ID. return None # do not stream a delta. skip this token ID.
...@@ -166,8 +166,8 @@ class Internlm2ToolParser(ToolParser): ...@@ -166,8 +166,8 @@ class Internlm2ToolParser(ToolParser):
tool_call_arr["arguments"] = self.get_argments(tool_call_arr) tool_call_arr["arguments"] = self.get_argments(tool_call_arr)
self.prev_tool_call_arr = [tool_call_arr] self.prev_tool_call_arr = [tool_call_arr]
return delta return delta
except Exception as e: except Exception:
logger.error("Error trying to handle streaming tool call: %s", e) logger.exception("Error trying to handle streaming tool call.")
logger.debug( logger.debug(
"Skipping chunk as a result of tool streaming extraction " "Skipping chunk as a result of tool streaming extraction "
"error") "error")
......
...@@ -112,9 +112,8 @@ class Llama3JsonToolParser(ToolParser): ...@@ -112,9 +112,8 @@ class Llama3JsonToolParser(ToolParser):
content=None) content=None)
return ret return ret
except Exception as e: except Exception:
logger.error("Error in extracting tool call from response: %s", e) logger.exception("Error in extracting tool call from response.")
print("ERROR", e)
# return information to just treat the tool call as regular JSON # return information to just treat the tool call as regular JSON
return ExtractedToolCallInformation(tools_called=False, return ExtractedToolCallInformation(tools_called=False,
tool_calls=[], tool_calls=[],
...@@ -269,8 +268,8 @@ class Llama3JsonToolParser(ToolParser): ...@@ -269,8 +268,8 @@ class Llama3JsonToolParser(ToolParser):
self.prev_tool_call_arr = tool_call_arr self.prev_tool_call_arr = tool_call_arr
return delta return delta
except Exception as e: except Exception:
logger.error("Error trying to handle streaming tool call: %s", e) logger.exception("Error trying to handle streaming tool call.")
logger.debug( logger.debug(
"Skipping chunk as a result of tool streaming extraction " "Skipping chunk as a result of tool streaming extraction "
"error") "error")
......
...@@ -111,8 +111,8 @@ class MistralToolParser(ToolParser): ...@@ -111,8 +111,8 @@ class MistralToolParser(ToolParser):
tool_calls=tool_calls, tool_calls=tool_calls,
content=content if len(content) > 0 else None) content=content if len(content) > 0 else None)
except Exception as e: except Exception:
logger.error("Error in extracting tool call from response: %s", e) logger.exception("Error in extracting tool call from response.")
# return information to just treat the tool call as regular JSON # return information to just treat the tool call as regular JSON
return ExtractedToolCallInformation(tools_called=False, return ExtractedToolCallInformation(tools_called=False,
tool_calls=[], tool_calls=[],
...@@ -298,8 +298,8 @@ class MistralToolParser(ToolParser): ...@@ -298,8 +298,8 @@ class MistralToolParser(ToolParser):
self.prev_tool_call_arr = tool_call_arr self.prev_tool_call_arr = tool_call_arr
return delta return delta
except Exception as e: except Exception:
logger.error("Error trying to handle streaming tool call: %s", e) logger.exception("Error trying to handle streaming tool call.")
logger.debug( logger.debug(
"Skipping chunk as a result of tool streaming extraction " "Skipping chunk as a result of tool streaming extraction "
"error") "error")
......
...@@ -3,7 +3,6 @@ import multiprocessing ...@@ -3,7 +3,6 @@ import multiprocessing
import os import os
import sys import sys
import threading import threading
import traceback
import uuid import uuid
from dataclasses import dataclass from dataclasses import dataclass
from multiprocessing import Queue from multiprocessing import Queue
...@@ -227,10 +226,9 @@ def _run_worker_process( ...@@ -227,10 +226,9 @@ def _run_worker_process(
except KeyboardInterrupt: except KeyboardInterrupt:
break break
except BaseException as e: except BaseException as e:
tb = traceback.format_exc() logger.exception(
logger.error( "Exception in worker %s while processing method %s.",
"Exception in worker %s while processing method %s: %s, %s", process_name, method)
process_name, method, e, tb)
exception = e exception = e
result_queue.put( result_queue.put(
Result(task_id=task_id, value=output, exception=exception)) Result(task_id=task_id, value=output, exception=exception))
......
...@@ -499,8 +499,8 @@ def kv_cache_scales_loader( ...@@ -499,8 +499,8 @@ def kv_cache_scales_loader(
logger.error("File or directory '%s' not found.", filename) logger.error("File or directory '%s' not found.", filename)
except json.JSONDecodeError: except json.JSONDecodeError:
logger.error("Error decoding JSON in file '%s'.", filename) logger.error("Error decoding JSON in file '%s'.", filename)
except Exception as e: except Exception:
logger.error("An error occurred while reading '%s': %s", filename, e) logger.exception("An error occurred while reading '%s'.", filename)
# This section is reached if and only if any of the excepts are hit # This section is reached if and only if any of the excepts are hit
# Return an empty iterable (list) => no KV cache scales are loaded # Return an empty iterable (list) => no KV cache scales are loaded
# which ultimately defaults to 1.0 scales # which ultimately defaults to 1.0 scales
......
...@@ -137,10 +137,9 @@ class CudaPlatform(Platform): ...@@ -137,10 +137,9 @@ class CudaPlatform(Platform):
pynvml.NVML_P2P_CAPS_INDEX_NVLINK) pynvml.NVML_P2P_CAPS_INDEX_NVLINK)
if p2p_status != pynvml.NVML_P2P_STATUS_OK: if p2p_status != pynvml.NVML_P2P_STATUS_OK:
return False return False
except pynvml.NVMLError as error: except pynvml.NVMLError:
logger.error( logger.exception(
"NVLink detection failed. This is normal if your" "NVLink detection failed. This is normal if your"
" machine has no NVLink equipped.", " machine has no NVLink equipped.")
exc_info=error)
return False return False
return True return True
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment