Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from
Oct 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading