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

This commit is contained in:
Cyrus Leung
2024-10-17 21:55:48 +08:00
committed by GitHub
parent e312e52b44
commit 390be74649
8 changed files with 26 additions and 30 deletions

View File

@@ -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(

View File

@@ -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.

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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))

View File

@@ -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

View File

@@ -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