Spaces:
Paused
Paused
class ModelNotFoundError(Exception): | |
"""Error raised when a model cannot be found or accessed""" | |
def __init__(self, model_name: str, original_error: Exception = None): | |
self.model_name = model_name | |
self.original_error = original_error | |
message = ( | |
f"Could not find or access model: '{model_name}'\n\n" | |
f"This could be because:\n" | |
f"1. The model name is misspelled - double check the name\n" | |
f"2. The model requires authentication - you need to:\n" | |
f" - Log in to Hugging Face (huggingface.co)\n" | |
f" - Accept the model's terms of use on its page\n" | |
f" - Create an access token in your HF account settings\n" | |
f" - Set the token as an environment variable: export HUGGING_FACE_HUB_TOKEN=your_token\n\n" | |
f"Original error: {str(original_error)}" | |
) | |
super().__init__(message) | |
class ModelLoadError(Exception): | |
"""Error raised when a model fails to load""" | |
def __init__(self, model_name: str, load_type: str, original_error: Exception = None): | |
self.model_name = model_name | |
self.load_type = load_type | |
self.original_error = original_error | |
message = ( | |
f"Failed to load model: '{model_name}' using {load_type} precision\n\n" | |
f"Common reasons:\n" | |
f"1. Not enough GPU memory - This model requires more VRAM than available\n" | |
f" - Try using 8-bit quantization (load_in_8bit=True)\n" | |
f" - Try using 4-bit quantization (load_in_4bit=True)\n" | |
f" - Or use a smaller model\n" | |
f"2. Incorrect model parameters - Check the model card for correct loading parameters\n" | |
f"3. Corrupted model files - Try removing the model folder and downloading again\n\n" | |
f"Original error: {str(original_error)}" | |
) | |
super().__init__(message) | |
class InvalidConfigurationError(Exception): | |
"""Error raised when configuration is invalid""" | |
def __init__(self, param_name: str, current_value: any, expected_value: str, original_error: Exception = None): | |
self.param_name = param_name | |
self.current_value = current_value | |
self.expected_value = expected_value | |
self.original_error = original_error | |
message = ( | |
f"Invalid configuration parameter: '{param_name}'\n\n" | |
f"Current value: {current_value}\n" | |
f"Expected value: {expected_value}\n\n" | |
f"Please update your config.yaml file with the correct value\n" | |
f"Original error: {str(original_error)}" | |
) | |
super().__init__(message) | |
class GenerationError(Exception): | |
"""Error raised when text generation fails""" | |
def __init__(self, stage: str, original_error: Exception = None): | |
self.stage = stage | |
self.original_error = original_error | |
message = ( | |
f"Text generation failed during {stage}\n\n" | |
f"This could be because:\n" | |
f"1. The model ran out of memory during generation\n" | |
f" - Try reducing max_new_tokens\n" | |
f" - Try reducing the input text length\n" | |
f"2. The input prompt might be too complex or long\n" | |
f"3. The model might be in an inconsistent state\n" | |
f" - Try reinitializing the model\n\n" | |
f"Original error: {str(original_error)}" | |
) | |
super().__init__(message) | |
# Usage examples: | |
""" | |
# When model not found: | |
raise ModelNotFoundError("mistralai/Mistral-7B-v0.1", original_error=e) | |
# When model fails to load: | |
raise ModelLoadError("mistralai/Mistral-7B-v0.1", "8-bit quantization", original_error=e) | |
# When config is invalid: | |
raise InvalidConfigurationError( | |
"temperature", | |
2.5, | |
"a value between 0.0 and 2.0", | |
original_error=e | |
) | |
# When generation fails: | |
raise GenerationError("token generation", original_error=e) | |
""" |