[Misc] Print stack trace using logger.exception (#9461)
This commit is contained in:
@@ -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):
|
|||||||
|
|
||||||
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):
|
|||||||
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):
|
|||||||
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):
|
|||||||
|
|
||||||
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):
|
|||||||
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):
|
|||||||
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):
|
|||||||
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):
|
|||||||
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):
|
|||||||
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
|
|||||||
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(
|
|||||||
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(
|
|||||||
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):
|
|||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user