Azure ML Endpoint fällt mit hfvalidationError auch nach der Verwendung von Pathlib.Path fehlPython

Python-Programme
Anonymous
 Azure ML Endpoint fällt mit hfvalidationError auch nach der Verwendung von Pathlib.Path fehl

Post by Anonymous »

Ich versuche, ein fein abgestimmter Mistral-7b-Modell für einen Online-Endpunkt von Azure ML bereitzustellen. Die Bereitstellung schlägt während der Init () -Phase des Scoring-Skripts wiederholt mit einem Huggingface_Hub.Eror.hfvalidationError fehl. Auch nachdem das Standardfix für dieses Problem angewendet wurde. Versuch < /strong>: Verwenden von String -Pfaden
Mein erstes Scoring -Skript verwendet os.path.join, um Stringpfade zu den Modellen zu erstellen. < /P>

Code: Select all

# This version used os.path.join and failed
import os
from transformers import AutoTokenizer, AutoModelForCausalLM, GPTQConfig
# ... other imports

def init():
model_dir = os.environ.get('AZUREML_MODEL_DIR')
adapter_model_path_str = os.path.join(model_dir, 'mistral-finetuned-website-v1')

# This line failed
tokenizer = AutoTokenizer.from_pretrained(adapter_model_path_str, local_files_only=True)
# ... rest of the loading logic
< /code>
Dies erzeugte den folgenden Fehler, was darauf hindeutet, dass die lokale Pfadzeichenfolge als Hub -Repository -ID falsch interpretiert wurde.huggingface_hub.errors.HFValidationError: Repo id must be in the form 'repo_name' or 'namespace/repo_name': '/var/azureml-app/azureml-models/mistral-package/1/mistral-finetuned-website-v1'.
< /code>
[b] Zweiter Versuch < /strong>: Verwenden von Pathlib.Path
Basierend auf dem anfänglichen Fehler besteht die Standardempfehlung darin, Pathlib.Path zu verwenden, um den lokalen Pfad für die Transformers -Bibliothek eindeutig zu machen. Ich habe mein Skript entsprechend aktualisiert.import os
import torch
import json
from pathlib import Path
from transformers import AutoTokenizer, AutoModelForCausalLM, GPTQConfig
from peft import PeftModel
from sentence_transformers import SentenceTransformer, util

# FALLBACK_MESSAGE and KNOWN_TOPICS are defined here...

def init():
global model, tokenizer, embedding_model, known_topics_embeddings
try:
model_dir = Path(os.environ.get('AZUREML_MODEL_DIR'))

base_model_path = model_dir / 'mistral-7b-combined-model'
adapter_model_path = model_dir / 'mistral-finetuned-website-v1'
embedding_model_path = model_dir / 'all-MiniLM-L6-v2'

quantization_config = GPTQConfig(bits=4, use_exllama=False)

print(f"Loading tokenizer from: {adapter_model_path}")
# This line is still failing
tokenizer = AutoTokenizer.from_pretrained(adapter_model_path, local_files_only=True)

print(f"Loading base model from: {base_model_path}")
base_model = AutoModelForCausalLM.from_pretrained(
base_model_path,
device_map="cpu",
quantization_config=quantization_config,
local_files_only=True
)

print(f"Loading fine-tuned PEFT adapter from: {adapter_model_path}")
model = PeftModel.from_pretrained(base_model, adapter_model_path)

print("Merging base model and adapter...")
model = model.merge_and_unload()
model.eval()

print("Loading SentenceTransformer model...")
embedding_model = SentenceTransformer(str(embedding_model_path))

print("Computing embeddings for known topics...")
known_topics_embeddings = embedding_model.encode(KNOWN_TOPICS, convert_to_tensor=True)

print("All models and embeddings loaded successfully.")
except Exception as e:
print(f"Error during initialization: {e}")
raise

def run(raw_data):
# (Full run function logic is included here)
pass
Das Problem [/b]: Trotz dieser Änderung ist die Bereitstellung erneut mit dem gleichen Fehler und Traceback fehlgeschlagen. Das Pathlib -Objekt wird immer noch als Zeichenfolge für die Repository -Validierung behandelt. < /P>
2025-09-12 04:37:12,668 I [73] azmlinfsrv.print - Loading tokenizer from: /var/azureml-app/azureml-models/mistral-package/1/mistral-finetuned-website-v1
2025-09-12 04:37:12,668 I [73] azmlinfsrv.print - Error during initialization: Repo id must be in the form 'repo_name' or 'namespace/repo_name': '/var/azureml-app/azureml-models/mistral-package/1/mistral-finetuned-website-v1'. Use `repo_type` argument if needed.
2025-09-12 04:37:12,668 E [73] azmlinfsrv - User's init function failed
...
Traceback (most recent call last):
File "/azureml-envs/.../site-packages/huggingface_hub/utils/_validators.py", line 154, in validate_repo_id
raise HFValidationError(
huggingface_hub.errors.HFValidationError: Repo id must be in the form 'repo_name' or 'namespace/repo_name': '/var/azureml-app/azureml-models/mistral-package/1/mistral-finetuned-website-v1'.
...
< /code>
Umgebung und Abhängigkeiten < /strong>:
Dies ist mein Conda.yml. Ich ziele auf eine CPU-Bereitstellung. Daher haben GPU-basierte Lösungen für diese Aufgabe keinen Umfang. < /P>
channels:
- conda-forge
- pytorch
- defaults
dependencies:
- python=3.10
- pip=23.3.1
- pytorch=2.0.1
- torchvision=0.15.2
- torchaudio=2.0.2
- cpuonly
- scikit-learn
- scipy
- pip:
- accelerate==0.21.0
- auto-gptq
- azureml-inference-server-http==1.5.0
- huggingface-hub
- peft==0.5.0
- sentence-transformers==2.6.1
- transformers>=4.34.0
# ... other packages
< /code>
Die Protokolle aus der fehlgeschlagenen Bereitstellung zeigen jedoch, dass die installierte Umgebung GPU -Pakete und eine andere Pytorch -Version enthält. < /p>
...
torch==2.8.0
nvidia-cublas-cu12==12.8.4.1
nvidia-cuda-cupti-cu12==12.8.90
nvidia-cuda-nvrtc-cu12==12.8.93
nvidia-cuda-runtime-cu12==12.8.90
nvidia-cudnn-cu12==9.10.2.21
transformers==4.56.1
... (full list)
< /code>
Diese Diskrepanz zwischen meiner angeforderten CPUonly-Umgebung und der tatsächlichen GPU-zentrierten Umgebung scheint eine potenzielle Grundursache für die Instabilität zu sein. Gibt es ein bekanntes Problem in bestimmten Transformatoren/Huggingface-Hub-Versionen oder Azure-ML-Umgebungen, in denen diese Standardfixe nicht funktioniert? Könnte der Konflikt zwischen einem angeforderten CPUonly-Build und dem Vorhandensein von Nvidia-* -Paketen zu einer zugrunde liegenden Instabilität führen, die sich als dieses hfvalidationerror manifestiert? < /Li>
[*] Was ist der empfohlene nächste Schritt, um dies zu debuggen? Sollte ich mich darauf konzentrieren, eine echte CPU-Umgebung zu erzwingen, oder gibt es eine andere Möglichkeit, die lokalen Modelle zu laden, die robuster sein könnten?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post