Hervorragende Software und praktische Tutorials
So stellen Sie DeepSeek R1 auf AWS Bedrock bereit
DeepSeek hat die Welt überrascht und ist genauso beliebt wie ChatGPT, das im selben Jahr eingeführt wurde. Amazon Cloud unterstützte die DeepSeek-Bereitstellung erstmals. Hier zeigen wir Ihnen, wie Sie DeepSeek einsetzen.
AWS Bedrock Derzeit unterstütztBenutzerdefinierter ModellimportFunktion, aber ab Januar 2025 ist es nur noch kompatibel mit Lama-Architektur,Die Qwen-Architektur wird derzeit nicht unterstütztDaher beim Importieren DeepSeek R1 Dieser Satz von Destillationsmodellen,Die 32B-Version kann basierend auf der Qwen-Architektur nicht ausgewählt werden, die einzige verfügbare Llama-Version für 8B- und 70B-ParameterBei dieser Bereitstellung wird ausgewählt Version 70Bund verwenden Benutzerdefinierter Modellimport Funktion, vollständiger Modellimport und Bereitstellung auf Bedrock.
Wenn Sie noch kein Amazon Cloud-Konto haben, beantragen Sie zunächst eines.
Die Registrierung für Amazon Cloud ist ganz einfach. Rufen Sie zunächst die offizielle Amazon-Website über den unten stehenden Link auf.
- Klicken Sie hier, um die offizielle Website von AWS China zu besuchen
- Klicken Sie hier, um die offizielle Website von Amazon Web Services zu besuchen
Detailliertes Registrierungstutorial:Beantragen Sie 2025 kostenlos einen kostenlosen AWS EC2-Cloud-Server, Tutorial auf Nanny-Niveau!
Hinweis: Das folgende Tutorial stellt DeepSeek bereit. Hierfür ist eine Zahlung an Amazon Cloud erforderlich. Es handelt sich nicht um ein kostenloses Bereitstellungstutorial und ist nicht für Anfänger geeignet. Bitte beachten!
Laden Sie die DeepSeek R1-Modelldatei in einen S3-Bucket herunter
Beim Herunterladen eines DeepSeek R1-Modells müssen Sie sicherstellen, dass dessen Architektur den Anforderungen entspricht. Ab Januar 2025 unterstützt AWS Bedrock nur den Import von Modellen mit Architekturen wie Llama und unterstützt derzeit nicht die Qwen-Architektur. Wenn Sie die Qwen-7B-Version von DeepSeek R1 herunterladen, wird beim Starten eines Importvorgangs die folgende Fehlermeldung angezeigt:
„Amazon Bedrock unterstützt die Architektur (qwen2) des Modells, das Sie importieren, nicht. Versuchen Sie es erneut mit einer der folgenden unterstützten Architekturen: [llama, mistral, t5, mixtral, gpt_bigcode, mllama, poolside].“
Stellen Sie daher sicher, dass Sie die Modellarchitektur vor dem Importieren bestätigen, um Aufgabenfehler aufgrund von Architekturinkompatibilität zu vermeiden.
Erstellen Sie eine Cloud-Server-EC2-Instanz
Nehmen wir die Region us-west-2 (Oregon) als Beispiel: Erstellen Sie zunächst eine EC2-Instanz, wählen Sie das Modell t3.medium (2 vCPU / 4 GB Speicher) aus und installieren Sie die neueste Version von Amazon Linux 2023 als Betriebssystem.
Wählen Sie für die Speicherkonfiguration eine 200 GB große GP3-Festplatte und erhöhen Sie den EBS-Festplattendurchsatz von den standardmäßigen 125 MB/s auf 1000 MB/s, um die Upload- und Downloadgeschwindigkeit zu erhöhen. Stellen Sie außerdem sicher, dass die Instanz über einen externen Netzwerkzugriff verfügt, um nachfolgende Downloads benötigter Dateien und Software zu erleichtern.
Nachdem die Instanz erstellt wurde, installieren Sie die erforderlichen Softwarepakete auf EC2 für die spätere Konfiguration und Verwendung.
yum install python3-pip -y pip install huggingface_hub boto3
Schreiben Sie eine download.py-Datei mit folgendem Inhalt:
von huggingface_hub importiere Snapshot_Download Modell-ID = "deepseek-ai/DeepSeek-R1-Distill-Llama-70B" lokales Verzeichnis = Snapshot_Download (Repo-ID = Modell-ID, lokales Verzeichnis = "DeepSeek-R1-Distill-Llama-70B")
Führen Sie dann python3 download.py aus, um das Modell herunterzuladen. Der Download läuft.
Nach Abschluss des Downloads wird eine Reihe von Deepseek-Dateien auf dem EC2-Cloud-Server abgerufen. Basierend auf dem Llama 70b-Parametermodell beträgt die Dateigröße etwa 132 GB.
Erstellen Sie einen S3-Bucket auf AWS und laden Sie ihn hoch
Erstellen Sie einen S3-Bucket. Wählen Sie beim Erstellen des Buckets den Bucket-Typ „Allgemeiner Zweck“ aus. Die Region muss der EC2-Region entsprechen, z. B. befinden sich beide in der Region „us-west-2“ in Oregon. Behalten Sie die Standardwerte für die anderen Optionen bei. Dieser Bucket muss nicht öffentlich zugänglich sein.
Klicken Sie im S3-Menü der AWS-Konsole auf „Bucket erstellen“.
Wenn beim Erstellen eines Buckets kein öffentlicher Zugriff erforderlich ist, geben Sie den Bucket-Namen ein, belassen Sie die anderen Optionen bei den Standardeinstellungen und klicken Sie auf „Erstellen“.
Klicken Sie im Kontomenü oben rechts auf „Sicherheitsanmeldeinformationen“ und erstellen Sie in der Option „Zugriffsschlüssel“ einen Zugriffsschlüssel.
Nachdem Sie auf „Zugriffsschlüssel erstellen“ geklickt haben, erstellen Sie einen Zugriffsschlüssel für den Root-Benutzer.Wählen Sie aus, ob ein Zugriffsschlüssel erstellt werden soll.
Nach dem Klicken auf „Zugriffsschlüssel erstellen“ wurde der Root-Zugriffsschlüssel erfolgreich erstellt.
Dieser Schlüssel ist der Zugriffsschlüssel für das gesamte AWS. Geben Sie ihn aus Sicherheitsgründen nicht öffentlich bekannt.
Nachdem Sie den Bucket erstellt haben, müssen Sie die folgenden Dateien hochladen:
- Modellkonfigurationsdatei: config.json
- Tokenizer-Dateien: Es gibt insgesamt drei: tokenizer.json, tokenizer_config.json und tokenizer.mode
- Modellgewichtsdateien: Modellgewichtsdateien im vorherigen Schritt haben eine große Reihe von Dateien mit der Erweiterung .safetensors heruntergeladen
Diese Dateien liegen alle im im vorherigen Schritt heruntergeladenen Verzeichnis und müssen nicht zusätzlich hinzugefügt werden.
Bereiten Sie als Nächstes eine Upload-Datei mit dem Namen upload.py und dem folgenden Inhalt vor:
importiere boto3 importiere os s3_client = boto3.client('s3', region_name='us-west-2') bucket_name = 'bedrock-custom-model-import-123456789012' local_directory = 'DeepSeek-R1-Distill-Llama-70B' für Root, Verzeichnisse, Dateien in os.walk(local_directory): für Datei in Dateien: local_path = os.path.join(root, Datei) s3_key = os.path.relpath(local_path, local_directory) s3_client.upload_file(local_path, bucket_name, s3_key)
Ersetzen Sie den Bucket-Namen der obigen Datei durch den tatsächlichen Bucket-Namen, ersetzen Sie „Region“ durch die tatsächliche Region und stellen Sie sicher, dass das im vorherigen Schritt heruntergeladene Verzeichnis korrekt ist. Anschließend müssen Sie bestätigen, dass EC2 die Berechtigung zum Hochladen von Dateien nach S3 hat. Dies können Sie tun, indem Sie 1) den AWSCLI-Schlüssel auf dem lokalen Rechner konfigurieren oder 2) den Schlüssel nicht auf dem lokalen Rechner festlegen, sondern eine IAM-Rolle für EC2 einrichten und dieser die Berechtigung zum Schreiben in S3 hinzufügen.
Führen Sie nach der Konfiguration python3 upload.py zum Hochladen aus. Das 70B-Modell ist insgesamt etwa 132 GB groß und das Hochladen auf S3 dauert 5-10 Minuten.
Importieren von DeepSeek R1-Modellen in Bedrock
Schritt 1: Modellimport
Geben Sie den Bedrock-Dienst für den entsprechenden Bereich ein, bestätigen Sie, dass der Bereich korrekt ist, und klicken Sie auf das linke MenüImportierte Modelle
Klicken Sie dann auf dasModell importieren
Schaltfläche „Importieren“. Siehe Screenshot unten.

Im ersten Schritt des Importassistenten geben Sie den Namen des importierten Modells ein. Hier verwenden wirDeepseek-R1-destilliert-70b
Das heißt, die Versionsnummer wird als Name verwendet. Die Optionen auf dieser Seite müssen nicht geändert werden. Scrollen Sie weiter nach unten. Der Screenshot sieht wie folgt aus.

Geben Sie im Abschnitt „Modellimporteinstellungen“ den Namen des Buckets ein, in den das Modell im vorherigen Schritt hochgeladen wurde. Das Python-Skript im vorherigen Schritt lädt die Modelldatei in das Stammverzeichnis des Buckets hoch, sodass Sie hier einfach den Bucket-Namen eingeben können. Wählen Sie unten den Speicherort der Servicerolle aus, der zum Importieren des Modells verwendet wurde.Erstellen und Verwenden einer neuen Servicerolle
Es ist nicht erforderlich, vorab manuell eine IAM-Rolle zu erstellen. Der Importmodell-Assistent erstellt automatisch eine. Scrollen Sie anschließend zum Ende der Seite und klicken Sie auf die Schaltfläche „Modell importieren“. Siehe Screenshot unten.

Nach dem Absenden erstellt der Assistent automatisch die für den Modellimport erforderliche IAM-Rolle. Der Browser kann die Seite derzeit nicht verlassen. Nach dem Erstellen der IAM-Rolle wird der Modellimport automatisch abgeschickt und in den Hintergrund verschoben. Der Browser kann die aktuelle Seite verlassen. Siehe Screenshot unten.

Nach etwa einer Minute wird die IAM-Rolle erstellt und die Webseite springt automatisch zur Oberfläche, auf der der Modellimportvorgang ausgeführt wird. Sie können die aktuelle Seite jetzt verlassen. Der gesamte Modellimportvorgang kann je nach Größe des importierten Modells 15 bis 30 Minuten oder sogar länger dauern. Siehe folgenden Screenshot.

Nach einer kurzen Wartezeit ist der Import erfolgreich. Siehe Screenshot unten.

Starten Sie als Nächstes den Test.
Schritt 2: Starten Sie den Test von der Bedrock-Konsole aus
Rufen Sie den Bedrock-Dienst auf und klicken Sie linksSpielplätze
Wählen Sie im Menü „Modus“ rechts im Dropdown-FeldEinzelne Eingabeaufforderung
Beachten Sie, dass Sie nach dem Importieren eines benutzerdefinierten Modells dieses nur in der Einzeleingabeaufforderung in der Bedrock-Konsole sehen können. Siehe Screenshot unten.

Als nächstes sehen Sie in der Liste der ModellanbieterBenutzerdefinierte und verwaltete Endpunkte
Unten sehen Sie das importierte Modell. Klicken Sie auf „Übernehmen“, um es zu verwenden. Siehe Screenshot unten.

Es ist zu beachten, dass ein benutzerdefiniertes Modell nach dem Import in Bedrock nicht tatsächlich gestartet wird. Daher wird es beim ersten Aufruf in den GPU-Ressourcenpool geladen. Dieser Vorgang erfordert einen Kaltstart von mehreren zehn Sekunden. Nach dem Start des Modells können nachfolgende Aufrufe direkt und ohne Verzögerung ausgeführt werden. Wird das Modell nicht innerhalb von fünf Minuten aufgerufen, werden die belegten GPU-Ressourcen freigegeben, und beim erneuten Aufruf tritt das Kaltstartproblem auf.
Rufen Sie das importierte benutzerdefinierte Modell auf den Playgrounds der Konsole auf. Das Eingabeaufforderungswort hat eine bestimmte Schreibweise und muss im folgenden Format eingegeben werden.
<|begin▁of▁sentence|><|User|> Welches Modell sind Sie|Assistent|>
Nach der Eingabe sehen Sie oben auf der Seite ein rotes Eingabefeld, das anzeigt, dass die Modellinferenz noch nicht fertig istDas Modell ist nicht bereit für die Inferenz
Warten Sie einige Sekunden und senden Sie die Abfrage erneut, um sicherzustellen, dass das Modell normal ausgeführt wird. Siehe folgenden Screenshot.
Kommen wir nun zu einem komplexeren Beispiel, das zum Nachdenken anregt. Geben Sie die folgende Eingabeaufforderung ein und senden Sie sie ab. Der Screenshot sieht wie folgt aus.
<|begin▁of▁sentence|><|User|>Gegeben seien die folgenden Finanzdaten: - Der Umsatz von Unternehmen A stieg von $10M auf $15M im Jahr 2023 - Die Betriebskosten stiegen um 20% - Die anfänglichen Betriebskosten betrugen $7M Berechnen Sie die Betriebsmarge des Unternehmens für 2023. Bitte begründen Sie dies Schritt für Schritt und geben Sie Ihre endgültige Antwort in \\boxed{} ein.<|Assistant|>

Es ist ersichtlich, dass das Modell die Argumentation sehr gut vervollständigt.

Der folgende API-Aufruf wird ausgeführt.
Schritt 3: Starten Sie den Test über die Bedrock-API
Bevor Sie die Bedrock-API aufrufen, müssen Sie die Modell-ID abrufen. Die Modell-ID (die ARN-Zeichenfolge) finden Sie am folgenden Speicherort. Siehe folgenden Screenshot.

Bereiten Sie als Nächstes den folgenden Python-Code vor:
importiere boto3 importiere json Client = boto3.client('bedrock-runtime', region_name='us-west-2') model_id = 'arn:aws:bedrock:us-west-2:133129065110:imported-model/otk6ql88yk9i' prompt = "Welches Modell sind Sie?" Antwort = Client.invoke_model( modelId=model_id, body=json.dumps({'prompt': prompt}), accept='application/json', contentType='application/json' ) Ergebnis = json.loads(Antwort['body'].read().decode('utf-8')) drucken(Ergebnis)
Wenn das Modell gerade durch Aufruf der Bedrock-Konsole gestartet wurde, gibt es beim Ausführen dieses Python-Programms keine Kaltstartzeit, und das Modell kann sofort aufgerufen werden. Die nach dem Ausführen zurückgegebenen Ergebnisse lauten wie folgt:
{'Generation': '? \n\n
\n\n \n\nHallo! Ich bin DeepSeek-R1, ein intelligenter Assistent der chinesischen Firma DeepSeek. Bei Fragen helfe ich Ihnen gerne weiter. ', 'generation_token_count': 52, 'stop_reason': 'stop', 'prompt_token_count': 4}
Von diesem Custom-Modell läuft es einwandfrei.
Wenn Sie den Code an den Kaltstart eines benutzerdefinierten Modells anpassen möchten, können Sie eine Ausnahmebehandlung hinzufügen. Der Code nach Erhöhung der Anzahl der Wiederholungsversuche und der Ausnahmebehandlung lautet wie folgt:
importiere boto3, importiere json aus botocore.config, importiere Konfiguration, Konfiguration = Konfiguration (Wiederholungen = {'total_max_attempts': 10, 'mode': 'standard'}) Client = boto3.client ('bedrock-runtime', Regionsname = 'us-west-2', Konfiguration = Konfiguration) Modell-ID = 'arn:aws:bedrock:us-west-2:133129065110:imported-model/otk6ql88yk9i' Eingabeaufforderung = "Welches Modell sind Sie?" Versuchen Sie: Antwort = Client.invoke_model(modelId=model_id, body=json.dumps({'prompt': prompt}), accept='application/json', contentType='application/json') Ergebnis = json.loads(Antwort['body'].read().decode('utf-8')) Drucken(Ergebnis) außer Ausnahme als e: Drucken(e) Drucken(e.__repr__())
Bedrock-Import benutzerdefiniertes Modell Nutzungsszenario Gebühr Beschreibung
Bedrock berechnet den Import benutzerdefinierter Modelle basierend auf den für die Ausführung des Modells nach dem Import verwendeten Rechenressourcen und nicht auf Basis der Eingabe- und Ausgabetoken. Die folgende Preisliste finden Sie auf der offiziellen AWS-Website. Siehe Screenshot unten.

Modelllagergebühr
Laut der offiziellen Einführung belegt ein importiertes 8b-Modell 2 benutzerdefinierte Modelleinheiten. Wird ein 70b-Parametermodell importiert, belegt es 8 benutzerdefinierte Modelleinheiten.Deepseek-R1-destilliert-70b
Beispielsweise belegt das Modell 8 Custom Model Units, daher beträgt die Lagergebühr$1.95 * 8 = $15.6
Einen Monat.
Rechenressourcengebühr für eine einzelne Replik
Die Berechnungszeit für den Import eines benutzerdefinierten Modells beträgt 5 Minuten. Erfolgt nach 5 Minuten kein Modellaufruf, werden die Rechenressourcen automatisch freigegeben. Beim nächsten Aufruf des Modells erfolgt eine Kaltstart-Ladezeit. Beispielsweise fallen beim Import des Modells keine Kosten für den Importvorgang an. Das Modell wurde nicht aufgerufen. Für diesen Monat fallen Speichergebühren an, die Berechnungszeit jedoch nicht. Der erste Aufruf des Modells erfolgte am nächsten Morgen nach dem Import um 10:00 Uhr. Zu diesem Zeitpunkt, von 10:00 bis 10:05 Uhr, wird das Fünf-Minuten-Fenster entsprechend der Nutzung von 8 benutzerdefinierten Modelleinheiten berechnet. Wie im obigen Screenshot ersichtlich, beträgt die Gebühr$0,0785 pro Minute pro Modul * 8 Module * 5 Minuten = $3,14
Dies sind die Kosten für die Ausführung dieses Modells in einem Fünf-Minuten-Fenster.
Das erste Fünf-Minuten-Fenster endet um 10:05 Uhr, und das Modell läuft noch fünf Minuten weiter. Erfolgt im zweiten Fünf-Minuten-Fenster kein Modellaufruf, gibt das Modell um 10:10 Uhr Ressourcen frei, und es fallen insgesamt zwei Fünf-Minuten-Fenstergebühren an. Wird das Modell im zweiten Fünf-Minuten-Fenster erneut aufgerufen, beispielsweise um 10:07 Uhr, wird das zweite Fünf-Minuten-Abrechnungsfenster aufgezeichnet, und ab 10:10 Uhr beginnen drei Fünf-Minuten-Abrechnungsfenster. Unter der Annahme, dass im dritten Fünf-Minuten-Fenster von 10:10 bis 10:15 Uhr kein Benutzerzugriff erfolgt, werden insgesamt drei Fünf-Minuten-Fenster ausgeführt, und die Gesamtgebühr beträgt$3.14 * 3 = $9.42
Wenn Sie den Anruf weiterhin nutzen, wird Ihnen gemäß dieser Logik weiterhin das 5-Minuten-Fenster in Rechnung gestellt.
Nach einer Weile sieht man, dass das 70b-Modell 8 Recheneinheiten, insgesamt 4 5-Minuten-Zyklen und insgesamt 20 Minuten verbraucht. Diese Kosten sind nach etwa 24 Stunden in der Rechnung dieses AWS-Kontos ersichtlich. Siehe Screenshot unten.

Daraus können wir ersehen, dass wenn wir importierenDeepseek-R1-destilliert-70b
Nachdem das Modell einen ganzen Monat lang rund um die Uhr läuft, betragen die Gesamtkosten$0,0785 pro Modul pro Minute * 8 Module * 60 Minuten * 24 Stunden * 30 Tage = $27129,6(Gebühr für einen Monat).
Dies liegt daran, dass ein 70B-Parametermodell Hunderte von GB Videospeicher verbraucht und auf Hardware mit 8 GPU-Karten ausgeführt werden muss. Wenn daher den ganzen Tag über API-Aufrufe stattfinden, sind die Kosten relativ hoch.
Elastische Skalierung und Mehrfachreplikation auf Basis von Bedrock
Das obige Beispiel zeigt die Ausführung eines Replikats nach dem Import des Modells. Das Starten eines Replikats belegt 8 benutzerdefinierte Modelleinheiten. Für die Token-Ein-/Ausgabe von 8 benutzerdefinierten Modelleinheiten fallen derzeit keine zusätzlichen Kosten an. Der Durchsatz beim Starten eines Replikats ist jedoch nicht unbegrenzt. Der maximale Durchsatz und die gleichzeitige Ausführung jedes Replikats des Modells hängen vom jeweiligen Modell ab und werden automatisch beim Importieren eines Modells mit einer bestimmten Parametergröße ermittelt. Bedrock startet standardmäßig ein Replikat. Für Anrufe mit hohem Datenverkehr bietet Bedrock automatische Skalierungsfunktionen. Wenn der Durchsatz die Hardwareressourcen eines Replikats voll ausschöpft, wird er automatisch auf das zweite und dritte Replikat erweitert. Das Starten eines neuen Replikats belegt natürlich 8 weitere benutzerdefinierte Modelleinheiten und wird minutengenau abgerechnet. Das Standardkontingent eines AWS-Kontos beträgt derzeit 3. Das bedeutet, dass nach dem Hinzufügen des benutzerdefinierten Modells mit gleichzeitiger Ausführung nur maximal drei Replikate möglich sind. Wenn Sie mehr benötigen, eröffnen Sie bitte einen Supportfall, um eine Limiterhöhung zu beantragen.
Bezüglich der Kosten und der Auswahl der Modellparametergröße
Da das DeepSeek-Modell über die Fähigkeit zum Denken verfügt, zeigt die 8B-Modellversion in vielen Szenarien gute Ergebnisse. Daher wird in diesem Artikel hauptsächlich die 70B-Parameterversion eingesetzt, um den gesamten Bedrock-Betriebsprozess zu demonstrieren. Im tatsächlichen Geschäftseinsatz kann das 8B-Parametermodell ausprobiert werden, um das beste Verhältnis zwischen Kosten und Nutzen zu erzielen.
Offizielle AWS China-Website:https://www.amazonaws.cn/