AWS Batch – Häufig gestellte Fragen

Allgemeine Informationen

AWS Batch ist eine Sammlung von Batch-Verwaltungsfunktionen für Entwickler, Wissenschaftler und Techniker, mit denen Hunderttausende von Batch-Verarbeitungsaufträgen auf AWS ausgeführt werden können. AWS Batch stellt dynamisch die optimale Menge und Art der Rechenressourcen (z. B. CPU- oder speicheroptimierte Rechenressourcen) basierend auf dem Volumen und den spezifischen Ressourcenanforderungen der übergebenen Batch-Aufträge bereit. AWS Batch erspart Ihnen die Installation und Verwaltung von Batch-Verarbeitungssoftware oder Serverclustern, sodass Sie sich ganz auf die Analyse der Ergebnisse und die Lösung von Problemen konzentrieren können. AWS Batch bereitet vor, plant und führt Ihre Batch-Computing-Workloads unter Verwendung von Amazon ECS, Amazon EKS und AWS Fargate mit einer Option zur Nutzung von Spot Instances aus.

Bei der Batch-Verarbeitung werden eine Reihe von Programmen ("Aufträgen") ohne manuelle Intervention auf einem oder mehreren Computern ausgeführt. Die Eingabeparameter werden durch Skripts, Befehlszeilenargumente, Steuerdateien oder JCL (Job Control Language) bereitgestellt. Ein Batch-Auftrag kann von der Ausführung vorangegangener Aufträge oder von der Verfügbarkeit bestimmter Eingaben abhängig sein, wodurch die Sequenzierung und zeitliche Planung bei mehreren Aufträgen besonders wichtig ist. Mit einer interaktiven Verarbeitung ist dies praktisch nicht vereinbar.

  • Die Batch-Verarbeitung kann die Auftragsverarbeitung auf Zeiten verlegen, zu denen mehr oder günstigere Kapazitäten zur Verfügung stehen.
  • Sie vermeidet den Leerlauf von Rechenressourcen, wie es bei häufigen manuellen Interventionen und Überwachungen oft der Fall ist.
  • Sie erhöht die Effizienz durch eine höhere Auslastung der Rechenressourcen.
  • Sie ermöglicht die Priorisierung von Aufträgen und damit die Abstimmung der Ressourcenzuweisungen an die Geschäftsziele.

Sie sollten Ihre Aufgaben auf Fargate ausführen, wenn AWS Batch die Bereitstellung von Computern übernehmen soll, die vollständig von der ECS-Infrastruktur abstrahiert sind. Sie sollten Ihre Aufgaben auf ECS ausführen, wenn Sie Zugriff auf bestimmte Instance-Konfigurationen (bestimmte Prozessoren, GPUs oder Architektur) oder für sehr große Workloads benötigen. Wenn Sie sich für Kubernetes als Container-Orchestrierungstechnologie entschieden haben, können Sie Ihre Batch-Workloads mithilfe der Batch-Integration mit EKS standardisieren.

Abhängig von Ihrem Anwendungsfall starten Fargate-Aufträge derzeit schneller, wenn es um die anfängliche Skalierung der Arbeit geht, da Sie nicht auf den Start von EC2-Instances oder Pods warten müssen. Bei größeren Workloads können EKS- oder ECS-Instances jedoch schneller sein, da Batch Instances und Container-Bilder wiederverwendet, um nachfolgende Aufgaben auszuführen.

Sie sollten Ihre Aufgaben auf Fargate ausführen, wenn AWS Batch die Bereitstellung von Computern übernehmen soll, die vollständig von der EC2-Infrastruktur abstrahiert sind. Sie sollten Ihre Aufgaben auf EC2 ausführen, wenn Sie Zugriff auf bestimmte Instance-Konfigurationen (bestimmte Prozessoren, GPUs oder Architektur) oder für sehr große Workloads benötigen.

Abhängig von Ihrem Anwendungsfall können Ihre Aufgaben mit EC2 oder Fargate schneller gestartet werden. Fargate-Aufgaben werden im Falle eines anfänglichen Scale-Outs der Arbeit schneller gestartet, da nicht auf den Start der EC2-Instance gewartet werden muss. Bei größeren Workloads können EC2-Instances jedoch schneller sein, da Batch Instances und Container-Bilder wiederverwendet, um nachfolgende Aufgaben auszuführen.

Ja. Sie können Fargate-CEs so einstellen, dass sie eine maximale vCPU haben. Dies ist die Gesamtmenge an vCPU aller Aufgaben, die derzeit in diesem CE ausgeführt werden. Wenn Ihre vCPU-Anzahl die maximale vCPU in einem CE erreicht, beginnt Batch mit der Planung von Aufgaben auf dem nächsten Fargate CE, um sie an die Warteschlange anzuhängen, falls vorhanden. Dies ist nützlich, wenn Sie beispielsweise ein Fargate CE auf eine bestimmte Geschäftsanforderung festlegen und dann den Rest Ihrer Workload auf Fargate Spot ausführen möchten.

Wenn Sie als erstes ein Fargate Spot CE festlegen, gefolgt von einem Fargate CE, wird Batch nur dann in Fargate übertragen, wenn die von Ihren Aufgaben verwendete vCPU größer als die maximale vCPU für dieses CE ist. Für den Fall, dass Fargate Spot zurückgefordert wird, wird die maximale vCPU nicht erreicht und Batch fordert im nachfolgenden CE keine Fargate-Ressourcen an, um Ihre Aufgaben auszuführen.

Das Verbinden einer AWS Batch-Aufgabenwarteschlange mit Fargate/Fargate Spot CE und einem EC2 oder Spot CE ist nicht zulässig.

Gründe für die Verwendung von AWS Batch

AWS Batch übernimmt für Sie die Auftragsausführung und die Verwaltung der Rechenressourcen. Anstatt sich um die Einrichtung und Verwaltung der Infrastruktur zu kümmern, können Sie sich ganz auf die Anwendungsentwicklung und die Analyse der Ergebnisse konzentrieren. Wenn Sie planen, Batch-Arbeitslasten auf AWS auszuführen oder dorthin zu verlegen, sollten Sie AWS Batch verwenden.

AWS Batch ist für die Batch-Verarbeitung sowie für Anwendungen optimiert, deren Umfang durch die Parallelausführung mehrerer Aufträge zunehmen kann. Hervorragend geeignet für die Batch-Verarbeitung sind beispielsweise Anwendungen wie Deep Learning, Genomik-Analysen, finanzmathematische Risikomodelle, Monte Carlo-Simulationen, Animationsberechnungen, Medien-Transcoding, Bildverarbeitung und Konstruktionssimulationen.

Aufträge mit mehreren Containern

Sie sollten das Feature für Aufträge mit mehreren Containern verwenden, wenn Sie Ihren AWS-Batch-Workload als eine Reihe von logisch unterschiedlichen Elementen modellieren möchten, z. B. die Simulationsumgebung und das zu testende System (SUT), die Hauptanwendung oder den Telemetrie-Sidecar (Beiwagen). Die Verwendung dieses Features vereinfacht Ihre Abläufe, erleichtert die Einhaltung bewährter Architekturmethoden und ermöglicht es Ihnen, die Simulationen auf die Multi-Container-Architektur Ihres Produktionssystems von Systemen abzustimmen. Ganz gleich, ob Sie separate Container für Ihre SUTs und Ihre Simulationsumgebung ausführen oder einen zusätzlichen Sidecar hinzufügen müssen, Sie müssen nicht mehr alle Workload-Elemente in einem monolithischen Container zusammenfassen und ihn nach jeder Codeänderung neu erstellen. Dadurch können Sie DevOps vereinfachen, Container klein und schnell herunterladbar halten und die Parallelisierung der Arbeit erleichtern.

AWS Batch unterstützt die Ausführung mehrerer Container in allen Auftragstypen, einschließlich regulärer Einzelknotenjobs, Array-Aufträgen und Mehrknoten-Parallelaufträgen (MNP).

Aufträge mit mehreren Containern können in allen AWS-Batch-Datenverarbeitungsumgebungen ausgeführt werden, einschließlich Amazon ECS, Amazon EC2, AWS Fargate und Amazon EKS.

Funktionen

AWS Batch verwaltet Datenverarbeitungsumgebungen und Auftragswarteschlangen, sodass Sie problemlos Tausende von Aufträgen jeder Größenordnung mit Amazon ECS, Amazon EKS und AWS Fargate ausführen können, wobei Sie zwischen Spot- und On-Demand-Ressourcen wählen können. Sie brauchen Ihre Batch-Aufträge nur zu definieren und in eine Warteschlange einzureichen. Danach entscheidet AWS Batch, wo die Aufträge ausgeführt werden, wobei es bei Bedarf die hinzugezogenen AWS-Kapazitäten erweitern kann. AWS Batch überwacht den Fortschritt Ihrer Aufgaben. Nicht mehr benötigte Kapazitäten entfernt AWS Batch sofort. Darüber hinaus ermöglicht AWS Batch die Einreichung von Aufträgen als Teil einer Pipeline oder eines Workflows. Auf diese Weise können Sie beim Einreichen Abhängigkeiten zwischen Aufträgen definieren.

AWS Batch unterstützt alle Aufträge, die als Docker-Container ausgeführt werden können. Mit den Aufträgen werden auch deren Arbeitsspeicheranforderungen sowie die erforderliche Anzahl an vCPUs angegeben.  

Eine AWS-Batch-Rechenressource ist eine EC2-Instance oder AWS-Fargate-Rechenressource.

Eine AWS Batch-Rechenumgebung ist eine Sammlung von Rechenressourcen für die Ausführung von Aufträgen. AWS Batch unterstützt zwei Arten von Rechenumgebungen: verwaltete Rechenumgebungen, die von AWS bereitgestellt und verwaltet werden, und nicht verwaltete Rechenumgebungen, die vom Kunden verwaltet werden. Nicht verwaltete Datenverarbeitungsumgebungen stellen einen Mechanismus bereit, durch den spezielle Ressourcen wie dedizierte Hosts, größere Speicherkonfigurationen und Amazon EFS genutzt werden können.

Eine Auftragsdefinition spezifiziert den auszuführenden Auftrag, die Parameter, die Umgebungsvariablen, die Rechenanforderungen sowie weitere Informationen zur Optimierung der Auftragsausführung. Auftragsdefinitionen werden vor der Einreichung eines Auftrags definiert und können mit anderen Personen ausgetauscht werden.

Zur Ausführung von Aufträgen in Containern bedient sich AWS Batch der Funktionalität von Amazon ECS. Deswegen muss der ECS-Agent auf den Rechenressourcen in Ihren AWS Batch-Rechenumgebungen installiert sein. In verwalteten Rechenumgebungen ist der ECS-Agent vorinstalliert.

AWS-Batch-Rechenumgebungen können aus EC2-Spot-Instances bestehen. Beim Erstellen einer Managed-Computing-Umgebung, geben Sie einfach an, dass Sie EC2-Spot-Instances verwenden möchten, und geben Sie einen Prozentsatz der On-Demand-Preise an, den Sie zu zahlen bereit sind. Den Rest übernimmt AWS Batch. Auch nicht verwaltete Datenverarbeitungsumgebungen können von Ihnen gestartete Spot Instances enthalten – einschließlich der von der EC2-Spot-Flotte gestarteten Instances.

Preise

Für die Nutzung von AWS Batch fallen keine zusätzlichen Gebühren an. Sie zahlen nur für die AWS-Ressourcen (z. B. EC2-Instances oder AWS Fargate), die Sie zum Speichern und Ausführen Ihrer Batch-Aufträge erstellen.

GPU-Planung

Ja. Neben den aktuellen Eingabevariablen vCPU und Speicher können Sie Batch verwenden, um in der Auftragsdefinition die Anzahl und den Typ der Accelerators festzulegen, die Ihre Aufträge benötigen. AWS Batch skaliert für Ihre Aufträge geeignete Instances basierend auf den benötigten Accelerators und isoliert diese entsprechend den Anforderungen jedes Auftrags, damit nur geeignete Container darauf Zugriff haben.

Durch die Verwendung von Accelerators mit Batch können Sie Ihre Auftrage gemäß ihren Accelerator-Bedürfnissen dynamisch planen und bereitstellen. Batch stellt sicher, dass für Ihre Aufträge die geeignete Anzahl an Accelerators reserviert wird. Batch skaliert Ihre EC2 Accelerated Instances automatisch nach oben und wieder nach unten, wenn Sie fertig sind. So können Sie sich voll auf Ihre Anwendungen konzentrieren. Batch ist nativ in den EC2 Spot integriert, was bedeutet, dass Ihre beschleunigten Aufgaben bei Verwendung beschleunigter Instances eine Einsparung von bis zu 90 % erzielen können.

Sie können derzeit GPUs für P und G beschleunigte Instances verwenden.

Sie können Anzahl und Typ der Accelerators in der Auftragsdefinition festlegen. Sie geben den Accelerator durch Beschreibung des Accelerator-Typs (z. B. GPU – aktuell der einzige unterstützte Accelerator) und der erforderlichen Anzahl dieses Typs für Ihren Auftrag an. Der Accelerator-Typ muss auf einem der Instance-Typen vorhanden sein, die in Ihren Rechenumgebungen festgelegt sind. Wenn Ihr Auftrag zum Beispiel 2 GPUs benötigt, müssen Sie außerdem eine P-Instance in Ihrer Rechenumgebung angeben.

Von der API:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

Wie die vCPU- und Speicheranforderungen können Sie Anzahl und Typ der Accelerators beim Senden des Auftrags überschreiben.

Aktuell vermeidet es Batch wenn möglich, Aufträge mit Accelerated Instances zu planen, die keine Beschleunigung benötigen. Dadurch sollen Fälle vermieden werden, bei denen lang laufende Aufträge die Accelerated Instance belegen, ohne vom Accelerator zu profitieren, wodurch die Kosten steigen würden. In Verbindung mit Spot-Preisen, wenn Accelerated Instances zulässige Typen sind, kann es in seltenen Fällen vorkommen, dass Batch eine Accelerated Instance als günstigste Möglichkeit zur Ausführung eines Auftrags ansieht, unabhängig davon, ob der Accelerator benötigt wird.

Wenn Sie einen Auftrag an eine Rechenumgebung senden, in der Batch nur Accelerated Instances starten kann, führt Batch die Aufträge auf diesen Instances aus, auch wenn kein Accelerator benötigt wird.

Ab sofort werden Instances vom Typ P standardmäßig mit der ECS GPU-optimierten AMI ausgeführt. Diese AMI enthält die benötigten Bibliotheken und Laufzeiten, um GPU-basierte Anwendungen auszuführen. Beim Erstellen einer Rechenumgebung können Sie bei Bedarf immer auf eine benutzerdefinierte AMI verweisen.

Erste Schritte

Lesen Sie das Handbuch Erste Schritte in unserer Dokumentation, das Ihnen den Einstieg erleichtert.

Für den Einstieg müssen Sie keine eigenen Rechenressourcen starten. Die Web-Konsole von AWS Batch leitet Sie durch die Erstellung Ihrer ersten Rechenumgebung und Auftragswarteschlange, so dass Sie Ihren ersten Auftrag in wenigen Minuten einreichen können. Die in Ihrer Rechenumgebung verfügbaren Ressourcen erweitern sich mit dem Hinzukommen weiterer ausführbarer Aufträge und verringern sich, wenn die Anzahl der ausführbaren Aufträge sinkt.