Skip to content

Commit

Permalink
[Misc] Print stack trace using logger.exception (vllm-project#9461)
Browse files Browse the repository at this point in the history
Signed-off-by: Maxime Fournioux <[email protected]>
  • Loading branch information
DarkLight1337 authored and mfournioux committed Nov 20, 2024
1 parent 49034c0 commit aa78558
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 30 deletions.
6 changes: 3 additions & 3 deletions vllm/entrypoints/openai/serving_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ async def chat_completion_stream_generator(
else:
tool_parsers = [None] * num_choices
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))
yield f"data: {data}\n\n"
yield "data: [DONE]\n\n"
Expand Down Expand Up @@ -600,7 +600,7 @@ async def chat_completion_stream_generator(

except ValueError as e:
# 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))
yield f"data: {data}\n\n"
# Send the final done message after all response.n are finished
Expand Down Expand Up @@ -687,7 +687,7 @@ async def chat_completion_full_generator(
try:
tool_parser = self.tool_parser(tokenizer)
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))

tool_call_info = tool_parser.extract_tool_calls(
Expand Down
10 changes: 5 additions & 5 deletions vllm/entrypoints/openai/tool_parsers/hermes_tool_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ def extract_tool_calls(
tool_calls=tool_calls,
content=content if content else None)

except Exception as e:
logger.error("Error in extracting tool call from response %s",
e)
except Exception:
logger.exception(
"Error in extracting tool call from response.")
return ExtractedToolCallInformation(tools_called=False,
tool_calls=[],
content=model_output)
Expand Down Expand Up @@ -333,6 +333,6 @@ def extract_tool_calls_streaming(

return delta

except Exception as e:
logger.error("Error trying to handle streaming tool call: %s", e)
except Exception:
logger.exception("Error trying to handle streaming tool call.")
return None # do not stream a delta. skip this token ID.
4 changes: 2 additions & 2 deletions vllm/entrypoints/openai/tool_parsers/internlm2_tool_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,8 @@ def extract_tool_calls_streaming(
tool_call_arr["arguments"] = self.get_argments(tool_call_arr)
self.prev_tool_call_arr = [tool_call_arr]
return delta
except Exception as e:
logger.error("Error trying to handle streaming tool call: %s", e)
except Exception:
logger.exception("Error trying to handle streaming tool call.")
logger.debug(
"Skipping chunk as a result of tool streaming extraction "
"error")
Expand Down
9 changes: 4 additions & 5 deletions vllm/entrypoints/openai/tool_parsers/llama_tool_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,8 @@ def extract_tool_calls(
content=None)
return ret

except Exception as e:
logger.error("Error in extracting tool call from response: %s", e)
print("ERROR", e)
except Exception:
logger.exception("Error in extracting tool call from response.")
# return information to just treat the tool call as regular JSON
return ExtractedToolCallInformation(tools_called=False,
tool_calls=[],
Expand Down Expand Up @@ -269,8 +268,8 @@ def extract_tool_calls_streaming(
self.prev_tool_call_arr = tool_call_arr
return delta

except Exception as e:
logger.error("Error trying to handle streaming tool call: %s", e)
except Exception:
logger.exception("Error trying to handle streaming tool call.")
logger.debug(
"Skipping chunk as a result of tool streaming extraction "
"error")
Expand Down
8 changes: 4 additions & 4 deletions vllm/entrypoints/openai/tool_parsers/mistral_tool_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ def extract_tool_calls(
tool_calls=tool_calls,
content=content if len(content) > 0 else None)

except Exception as e:
logger.error("Error in extracting tool call from response: %s", e)
except Exception:
logger.exception("Error in extracting tool call from response.")
# return information to just treat the tool call as regular JSON
return ExtractedToolCallInformation(tools_called=False,
tool_calls=[],
Expand Down Expand Up @@ -298,8 +298,8 @@ def extract_tool_calls_streaming(
self.prev_tool_call_arr = tool_call_arr
return delta

except Exception as e:
logger.error("Error trying to handle streaming tool call: %s", e)
except Exception:
logger.exception("Error trying to handle streaming tool call.")
logger.debug(
"Skipping chunk as a result of tool streaming extraction "
"error")
Expand Down
8 changes: 3 additions & 5 deletions vllm/executor/multiproc_worker_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import os
import sys
import threading
import traceback
import uuid
from dataclasses import dataclass
from multiprocessing import Queue
Expand Down Expand Up @@ -227,10 +226,9 @@ def _run_worker_process(
except KeyboardInterrupt:
break
except BaseException as e:
tb = traceback.format_exc()
logger.error(
"Exception in worker %s while processing method %s: %s, %s",
process_name, method, e, tb)
logger.exception(
"Exception in worker %s while processing method %s.",
process_name, method)
exception = e
result_queue.put(
Result(task_id=task_id, value=output, exception=exception))
Expand Down
4 changes: 2 additions & 2 deletions vllm/model_executor/model_loader/weight_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -499,8 +499,8 @@ def kv_cache_scales_loader(
logger.error("File or directory '%s' not found.", filename)
except json.JSONDecodeError:
logger.error("Error decoding JSON in file '%s'.", filename)
except Exception as e:
logger.error("An error occurred while reading '%s': %s", filename, e)
except Exception:
logger.exception("An error occurred while reading '%s'.", filename)
# 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
# which ultimately defaults to 1.0 scales
Expand Down
7 changes: 3 additions & 4 deletions vllm/platforms/cuda.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,9 @@ def is_full_nvlink(cls, physical_device_ids: List[int]) -> bool:
pynvml.NVML_P2P_CAPS_INDEX_NVLINK)
if p2p_status != pynvml.NVML_P2P_STATUS_OK:
return False
except pynvml.NVMLError as error:
logger.error(
except pynvml.NVMLError:
logger.exception(
"NVLink detection failed. This is normal if your"
" machine has no NVLink equipped.",
exc_info=error)
" machine has no NVLink equipped.")
return False
return True

0 comments on commit aa78558

Please sign in to comment.