Enhance Moondream compatibility, improve tokenizer import logic, and update requirements.txt.
This commit is contained in:
+37
-8
@@ -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
@@ -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
|
||||
Reference in New Issue
Block a user