diff --git a/node-hub/dora-distil-whisper/dora_distil_whisper/main.py b/node-hub/dora-distil-whisper/dora_distil_whisper/main.py index e059fce9a..7f058ad3c 100644 --- a/node-hub/dora-distil-whisper/dora_distil_whisper/main.py +++ b/node-hub/dora-distil-whisper/dora_distil_whisper/main.py @@ -3,11 +3,21 @@ from dora import Node import pyarrow as pa import os +from pathlib import Path -MODEL_NAME_OR_PATH = os.getenv("MODEL_NAME_OR_PATH", "openai/whisper-large-v3-turbo") +DEFAULT_PATH = "openai/whisper-large-v3-turbo" TARGET_LANGUAGE = os.getenv("TARGET_LANGUAGE", "chinese") TRANSLATE = bool(os.getenv("TRANSLATE", "False")) + +MODEL_NAME_OR_PATH = os.getenv("MODEL_NAME_OR_PATH", DEFAULT_PATH) + +if bool(os.getenv("USE_MODELSCOPE_HUB")) is True: + from modelscope import snapshot_download + + if not Path(MODEL_NAME_OR_PATH).exists(): + MODEL_NAME_OR_PATH = snapshot_download(MODEL_NAME_OR_PATH) + device = "cuda:0" if torch.cuda.is_available() else "cpu" torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32 diff --git a/node-hub/dora-distil-whisper/pyproject.toml b/node-hub/dora-distil-whisper/pyproject.toml index 4506a2a34..a265bce1e 100644 --- a/node-hub/dora-distil-whisper/pyproject.toml +++ b/node-hub/dora-distil-whisper/pyproject.toml @@ -20,6 +20,7 @@ transformers = "^4.0.0" accelerate = "^0.29.2" torch = "^2.2.0" python = "^3.7" +modelscope = "^1.18.1" [tool.poetry.scripts] dora-distil-whisper = "dora_distil_whisper.main:main" diff --git a/node-hub/dora-opus/dora_opus/main.py b/node-hub/dora-opus/dora_opus/main.py index a30238e9a..e73d4ebbd 100644 --- a/node-hub/dora-opus/dora_opus/main.py +++ b/node-hub/dora-opus/dora_opus/main.py @@ -1,15 +1,26 @@ import os +from pathlib import Path from dora import Node import pyarrow as pa import numpy as np +from transformers import AutoTokenizer, AutoModelForSeq2SeqLM from_code = os.getenv("SOURCE_LANGUAGE", "zh") to_code = os.getenv("TARGET_LANGUAGE", "en") -MODEL_NAME_OR_PATH = os.getenv( - "MODEL_NAME_OR_PATH", f"Helsinki-NLP/opus-mt-{from_code}-{to_code}" -) +DEFAULT_PATH = f"Helsinki-NLP/opus-mt-{from_code}-{to_code}" -from transformers import AutoTokenizer, AutoModelForSeq2SeqLM + +MODEL_NAME_OR_PATH = os.getenv("MODEL_NAME_OR_PATH", DEFAULT_PATH) + +if bool(os.getenv("USE_MODELSCOPE_HUB")) is True: + from modelscope import snapshot_download + + if not Path(MODEL_NAME_OR_PATH).exists(): + MODEL_NAME_OR_PATH = snapshot_download(MODEL_NAME_OR_PATH) + +tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME_OR_PATH) + +model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME_OR_PATH) def cut_repetition(text, min_repeat_length=4, max_repeat_length=50): @@ -42,9 +53,6 @@ def cut_repetition(text, min_repeat_length=4, max_repeat_length=50): def main(): - tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME_OR_PATH) - - model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME_OR_PATH) node = Node() while True: event = node.next() diff --git a/node-hub/dora-opus/pyproject.toml b/node-hub/dora-opus/pyproject.toml index 8a948719d..c99fe5f6f 100644 --- a/node-hub/dora-opus/pyproject.toml +++ b/node-hub/dora-opus/pyproject.toml @@ -16,6 +16,7 @@ dora-rs = "^0.3.6" numpy = "< 2.0.0" python = "^3.7" transformers = "^4.45" +modelscope = "^1.18.1" [tool.poetry.scripts] dora-opus = "dora_opus.main:main" diff --git a/node-hub/dora-parler/dora_parler/main.py b/node-hub/dora-parler/dora_parler/main.py index b57a1f696..6547ac421 100644 --- a/node-hub/dora-parler/dora_parler/main.py +++ b/node-hub/dora-parler/dora_parler/main.py @@ -1,6 +1,7 @@ from threading import Thread from dora import Node - +import os +from pathlib import Path import numpy as np import torch import time @@ -18,16 +19,25 @@ device = "cuda:0" # if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu" torch_dtype = torch.float16 if device != "cpu" else torch.float32 -repo_id = "ylacombe/parler-tts-mini-jenny-30H" +DEFAULT_PATH = "ylacombe/parler-tts-mini-jenny-30H" + + +MODEL_NAME_OR_PATH = os.getenv("MODEL_NAME_OR_PATH", DEFAULT_PATH) + +if bool(os.getenv("USE_MODELSCOPE_HUB")) is True: + from modelscope import snapshot_download + + if not Path(MODEL_NAME_OR_PATH).exists(): + MODEL_NAME_OR_PATH = snapshot_download(MODEL_NAME_OR_PATH) model = ParlerTTSForConditionalGeneration.from_pretrained( - repo_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True + MODEL_NAME_OR_PATH, torch_dtype=torch_dtype, low_cpu_mem_usage=True ).to(device) model.generation_config.cache_implementation = "static" model.forward = torch.compile(model.forward, mode="default") -tokenizer = AutoTokenizer.from_pretrained(repo_id) -feature_extractor = AutoFeatureExtractor.from_pretrained(repo_id) +tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME_OR_PATH) +feature_extractor = AutoFeatureExtractor.from_pretrained(MODEL_NAME_OR_PATH) SAMPLE_RATE = feature_extractor.sampling_rate SEED = 42 @@ -59,6 +69,7 @@ def play_audio(audio_array): class InterruptStoppingCriteria(StoppingCriteria): def __init__(self): + super().__init__() self.stop_signal = False def __call__( diff --git a/node-hub/dora-parler/pyproject.toml b/node-hub/dora-parler/pyproject.toml index 3f1591cd6..9072bfa30 100644 --- a/node-hub/dora-parler/pyproject.toml +++ b/node-hub/dora-parler/pyproject.toml @@ -20,6 +20,7 @@ torchaudio = "^2.2.2" sentencepiece = "^0.1.99" python = "^3.7" pyaudio = "^0.2.14" +modelscope = "^1.18.1" [tool.poetry.scripts] diff --git a/node-hub/dora-qwenvl/dora_qwenvl/main.py b/node-hub/dora-qwenvl/dora_qwenvl/main.py index 7a2b61195..a9eb26974 100644 --- a/node-hub/dora-qwenvl/dora_qwenvl/main.py +++ b/node-hub/dora-qwenvl/dora_qwenvl/main.py @@ -12,7 +12,7 @@ MODEL_NAME_OR_PATH = os.getenv("MODEL_NAME_OR_PATH", DEFAULT_PATH) -if bool(os.getenv("MODELSCOPE")) is True: +if bool(os.getenv("USE_MODELSCOPE_HUB")) is True: from modelscope import snapshot_download if not Path(MODEL_NAME_OR_PATH).exists():