Enhance Moondream compatibility, improve tokenizer import logic, and update requirements.txt.

This commit is contained in:
Zernel
2025-03-10 19:45:30 +08:00
parent c06d148ccb
commit 2a16cbd6c6
2 changed files with 40 additions and 10 deletions
+37 -8
View File
@@ -3,7 +3,18 @@
It is customized through the following project: https://github.com/Hangover3832/ComfyUI-Hangover-Moondream
"""
from transformers import AutoModelForCausalLM as AutoModel, CodeGenTokenizerFast as Tokenizer
from transformers import AutoModelForCausalLM as AutoModel
# Try to import multiple possible tokenizers to improve compatibility
try:
from transformers import CodeGenTokenizerFast as Tokenizer
except ImportError:
try:
from transformers import AutoTokenizer as Tokenizer
print("[Moondream] Use AutoTokenizer instead of CodeGenTokenizerFast")
except ImportError:
from transformers import PreTrainedTokenizerFast as Tokenizer
print("[Moondream] Use PreTrainedTokenizerFast instead of CodeGenTokenizerFast")
from PIL import Image
import torch
import gc
@@ -12,6 +23,8 @@ import codecs
import subprocess
import os
import requests
import sys
import traceback
def Run_git_status(repo:str) -> list[str]:
"""resturns a list of all model tag references for this huggingface repo"""
@@ -122,10 +135,24 @@ class Moondream:
trust_remote_code=True,
revision=model_revision
).to(dev)
self.tokenizer = Tokenizer.from_pretrained(model_name)
except RuntimeError:
raise ValueError(f"[Moondream] Please check if the tramsformer package fulfills the requirements. "
"Also note that older models might not work anymore with newer packages.")
try:
# Try to load the tokenizer
self.tokenizer = Tokenizer.from_pretrained(model_name)
except Exception as e:
# Try to load the tokenizer using AutoTokenizer if the default one fails
from transformers import AutoTokenizer
print(f"[Moondream] Failed to load tokenizer, trying to use AutoTokenizer... ({str(e)})")
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
except Exception as e:
import transformers
error_msg = f"[Moondream] Failed to load model. transformers version: {transformers.__version__}\nError details: {str(e)}"
print(error_msg)
traceback.print_exc()
raise ValueError(f"[Moondream] Please check if the transformers package meets the requirements. "
"Note: older models may no longer be compatible with newer versions of the package.\n"
f"Error details: {str(e)}")
print(f"[Moondream] model moondream2 revision '{model_revision}' loaded successfully")
self.device = device
@@ -145,8 +172,10 @@ class Moondream:
answer = self.model.answer_question(enc_image, p, self.tokenizer, temperature=temperature, do_sample=do_sample)
descr += f"{answer}{sep}"
descriptions += f"{descr[0:-len(sep)]}\n"
except RuntimeError:
raise ValueError(f"[Moondream] Please check if the tramsformer package fulfills the requirements. "
"Also note that older models might not work anymore with newer packages.")
except Exception as e:
error_msg = f"[Moondream] Model execution failed: {str(e)}"
print(error_msg)
traceback.print_exc()
raise ValueError(f"[Moondream] Model execution failed: {str(e)}")
return(descriptions[0:-1],)
+3 -2
View File
@@ -4,8 +4,9 @@ Requests
flash_attn
accelerate>=0.25.0
huggingface-hub
transformers>=4.44.0
transformers==4.44.0
einops>=0.7.0
torch>=2.1.2
torchvision>=0.16.2
pyvips>=2.1.16
pyvips-binary==8.16.0
pyvips==2.2.3