Deepseek R1 auf Azure Machine Learning datenschutzkonform und privat deployen

OpenAI hat sich mit seinen fortschrittlichen Chatbots, die menschenähnliche Konversationen ermöglichen, einen Namen gemacht. Heute wollen wir die Architektur hinter dieser beeindruckenden Technologie beleuchten. Keine Sorge, wir halten es einfach…

28 Jan.. 2025 | AI, Azure, Blog

Inhaltsverzeichnis

Warum ist dieses Thema für deutsche Kunden relevant?

Für Unternehmen in Deutschland und der EU sind Datenschutz (Data Protection) und Sicherheit (Security) entscheidend. Durch das Deployment der DeepSeek-R1 Modelle auf der Azure AI Platform behalten Sie die volle Kontrolle über Ihre Daten und können sicherstellen, dass alle Datenverarbeitungen innerhalb der EU stattfinden. Dies ist besonders wichtig für öffentliche Einrichtungen, Behörden und Unternehmen, die strenge Datenschutzanforderungen erfüllen müssen. Die Azure AI Foundry bietet die nötigen Features und Lösungen für eine sichere Implementierung.

DeepSeek-R1

Verwendete Tools

Für das Deployment von DeepSeek-R1 als sicheren Service für Ihre Anwendungen (Applications) verwenden wir:

  • vLLM: Ein leistungsstarker und speichereffizienter Inferenz-Engine für große Sprachmodelle.
  • Managed Online Endpoints in Azure Machine Learning: Eine skalierbare und sichere Lösung für Echtzeit-Inferenzen.

Was ist vLLM?

vLLM ist ein hochoptimierter Inferenz-Engine für große Sprachmodelle (LLMs). Es nutzt fortschrittliche Speicherverwaltungstechniken wie PagedAttention, um die Effizienz und Geschwindigkeit der Modellinferenz zu maximieren. Dies macht vLLM zu einer idealen Wahl für das Deployment von LLMs in produktiven Umgebungen.

Was sind Managed Online Endpoints?

Managed Online Endpoints in Azure AI bieten eine vollständig verwaltete Lösung für das Deployment von Machine-Learning-Modellen. Sie übernehmen das Skalieren, Sichern und Überwachen der Modelle, sodass Sie sich auf die Anwendungsentwicklung konzentrieren können.

Schritt-für-Schritt-Anleitung: Deepseek R1 auf Azure deployen

Schritt 1: Erstellen einer benutzerdefinierten Umgebung für vLLM auf AzureML

Zuerst erstellen wir ein Dockerfile, um die Umgebung für unser Modell zu definieren. Wir verwenden den Basis-Container von vLLM, der alle notwendigen Abhängigkeiten enthält:

dockerfile
Copy
FROM vllm/vllm-openai:latest
ENV MODEL_NAME deepseek-ai/DeepSeek-R1-Distill-Llama-8B
ENTRYPOINT python3 -m vllm.entrypoints.openai.api_server --model $MODEL_NAME $VLLM_ARGS

Mit diesem Dockerfile können wir den Modellnamen flexibel über eine Umgebungsvariable festlegen. Als nächstes melden wir uns bei unserem Azure Machine Learning Workspace an:

bash
Copy
az account set --subscription <Abonnement-ID>
az configure --defaults workspace=<Azure Machine Learning Workspace-Name> group=<Ressourcengruppe>

Dann erstellen wir eine environment.yml-Datei, um die Umgebungseinstellungen zu spezifizieren:

yaml
Copy
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: r1
build:
  path: .
  dockerfile_path: Dockerfile

Und bauen die Umgebung:

bash
Copy
az ml environment create -f environment.yml

Schritt 2: Deployment des AzureML Managed Online Endpoints

Jetzt erstellen wir eine endpoint.yml-Datei, um den Managed Online Endpoint zu definieren:

yaml
Copy
$schema: https://azuremlsdk2.blob.core.windows.net/latest/managedOnlineEndpoint.schema.json
name: r1-prod
auth_mode: key

Und erstellen den Endpoint:

bash
Copy
az ml online-endpoint create -f endpoint.yml

Für das Deployment benötigen wir die Adresse des Docker-Images, die wir in AzureML Studio unter Umgebungen -> r1 finden.

Schließlich erstellen wir eine deployment.yml-Datei, um die Deployment-Einstellungen zu konfigurieren:

yaml
Copy
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: current
endpoint_name: r1-prod
environment_variables:
  MODEL_NAME: deepseek-ai/DeepSeek-R1-Distill-Llama-8B
  VLLM_ARGS: "--max-num-seqs 16 --enforce-eager" # optionale Argumente für vLLM
environment:
  image: xxxxxx.azurecr.io/azureml/azureml_xxxxxxxx # Docker-Image-Adresse hier einfügen
  inference_config:
    liveness_route:
      port: 8000
      path: /health
    readiness_route:
      port: 8000
      path: /health
    scoring_route:
      port: 8000
      path: /
instance_type: Standard_NC24ads_A100_v4
instance_count: 1
request_settings:
    max_concurrent_requests_per_instance: 1
    request_timeout_ms: 10000
liveness_probe:
  initial_delay: 10
  period: 10
  timeout: 2
  success_threshold: 1
  failure_threshold: 30
readiness_probe:
  initial_delay: 120 # Warten Sie 120s, bevor wir mit dem Prüfen beginnen
  period: 10
  timeout: 2
  success_threshold: 1
  failure_threshold: 30

Und deployen das Modell:

bash
Copy
az ml online-deployment create -f deployment.yml --all-traffic

Schritt 3: Testen des Deployments

Nach dem Deployment können wir den Endpoint testen. Zuerst holen wir uns die Scoring-URI und die API-Schlüssel:

bash
Copy
az ml online-endpoint show -n r1-prod
az ml online-endpoint get-credentials -n r1-prod

Dann testen wir den Endpoint mit einem Python-Snippet:

python
Copy
import requests

url = "https://r1-prod.polandcentral.inference.ml.azure.com/v1/completions"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer xxxxxxxxxxxx"
}
data = {
    "model": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
    "messages": [
        {
            "role": "user",
            "content": "Was ist besser, Sommer oder Winter?"
        },
    ],
    'max_tokens': 750,
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

Die Antwort zeigt, dass das Modell korrekt arbeitet:

json
Copy
{
   "id":"chatcmpl-ccf51218-30a0-4200-bfa4-5d90ac1fdd98",
   "object":"chat.completion",
   "created":1738058980,
   "model":"deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
   "choices":[
      {
         "index":0,
         "message":{
            "role":"assistant",
            "content":"<think>\nHmm, der Benutzer fragt, ob Sommer oder Winter besser ist. Ich muss verschiedene Aspekte berücksichtigen...\n</think>\n\nDie Debatte zwischen Sommer und Winter ist subjektiv und hängt von persönlichen Vorlieben ab..."
         }
      }
   ]
}

Autoscaling für Deepseek R1

Mit Autoscaling können Sie die Anzahl der Instanzen dynamisch anpassen, um Lastspitzen effizient zu bewältigen. Azure Machine Learning bietet hierfür eine nahtlose Integration mit Azure Monitor. Weitere Details finden Sie in der offiziellen Dokumentation.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie Sie Deepseek R1 auf Azure Machine Learning deployen können, um eine DSGVO-konforme und private Umgebung für Echtzeit-Inferenzen zu schaffen. Dies ist besonders für deutsche Kunden relevant, die strenge Datenschutzanforderungen erfüllen müssen.

Durch die Nutzung von vLLM und Managed Online Endpoints können Sie Deepseek R1 effizient und skalierbar in einer Azure-Region Ihrer Wahl betreiben – sei es in der EU oder weltweit.

___________

Disclaimer und Credits: Dieser Blogartikel wurde für unsere deutschen Leser und Kunden optimiert. Den originalen Blogartikel finden Sie hier: Deploying Deepseek R1 on Azure Machine Learning.

Microsoft Fabric. Bilder Blogtemplate Whitepaper

Claude Code im Unternehmen

  • Praxis-Guide für IT-Leiter – mit konkreten Einblicken zu Kosten, Sicherheit und Rollout von Claude Code im Unternehmen.

Beratungsgespräch

Sichern Sie sich Ihre kostenfreie Erstberatung

Analyse Ihres individuellen Cloud- oder KI-Bedarfs
Erste Empfehlungen zu Umsetzungsstrategien
Transparente Einblicke in unsere Methoden, Technologien & Referenzen