Zephyrnet-Logo

Trainieren Sie mit Amazon SageMaker | selbstüberwachte Vision-Transformatoren für Overhead-Bilder Amazon Web Services

Datum:

Dies ist ein Gast-Blogbeitrag, der gemeinsam mit Ben Veasey, Jeremy Anderson, Jordan Knight und June Li von Travelers verfasst wurde.

Satelliten- und Luftbilder bieten Einblicke in ein breites Spektrum von Problemen, darunter Präzisionslandwirtschaft, Risikobewertung von Versicherungen, Stadtentwicklung und Katastrophenhilfe. Das Trainieren von Modellen für maschinelles Lernen (ML) zur Interpretation dieser Daten wird jedoch durch kostspielige und zeitaufwändige menschliche Annotationsbemühungen behindert. Eine Möglichkeit, diese Herausforderung zu meistern, ist durch selbstüberwachtes Lernen (SSL). Durch das Training großer Mengen unbeschrifteter Bilddaten lernen selbstüberwachte Modelle Bilddarstellungen, die auf nachgelagerte Aufgaben wie Bildklassifizierung oder -segmentierung übertragen werden können. Dieser Ansatz erzeugt Bilddarstellungen, die sich gut auf unsichtbare Daten übertragen lassen, und reduziert die Menge an gekennzeichneten Daten, die zum Erstellen leistungsfähiger nachgelagerter Modelle erforderlich ist.

In diesem Beitrag zeigen wir, wie man selbstüberwachte Vision-Transformatoren für Overhead-Bilder trainiert Amazon Sage Maker. Reisende arbeiteten mit dem Amazon Machine Learning Solutions Lab (heute bekannt als) zusammen Zentrum für generative KI-Innovation), um dieses Framework zu entwickeln, um Anwendungsfälle für Luftbildmodelle zu unterstützen und zu verbessern. Unsere Lösung basiert auf dem DINO Algorithmus und verwendet die SageMaker verteilte parallele Datenbibliothek (SMDDP), um die Daten auf mehrere GPU-Instanzen aufzuteilen. Nach Abschluss des Vortrainings können die DINO-Bilddarstellungen auf eine Vielzahl nachgelagerter Aufgaben übertragen werden. Diese Initiative führte zu einer verbesserten Modellleistung im Bereich Travelers Data & Analytics.

Lösungsübersicht

Der zweistufige Prozess für das Vortraining von Vision Transformern und deren Übertragung auf überwachte nachgelagerte Aufgaben ist im folgenden Diagramm dargestellt.

In den folgenden Abschnitten stellen wir anhand von Satellitenbildern eine exemplarische Vorgehensweise für die Lösung vor BigEarthNet-S2-Datensatz. Wir bauen auf dem im bereitgestellten Code auf DINO-Repository.

Voraussetzungen:

Bevor Sie beginnen, benötigen Sie Zugriff auf a SageMaker-Notebook-Instanz und ein Amazon Simple Storage-Service (Amazon S3) Eimer.

Bereiten Sie den BigEarthNet-S2-Datensatz vor

BigEarthNet-S2 ist ein Benchmark-Archiv, das 590,325 multispektrale Bilder enthält, die vom Sentinel-2-Satelliten gesammelt wurden. Die Bilder dokumentieren die Landbedeckung oder physische Oberflächenmerkmale von zehn europäischen Ländern zwischen Juni 2017 und Mai 2018. Die Arten der Landbedeckung in jedem Bild, wie zum Beispiel Weiden oder Wälder, werden anhand von 19 Beschriftungen kommentiert. Im Folgenden finden Sie einige RGB-Beispielbilder und deren Beschriftungen.

Der erste Schritt in unserem Arbeitsablauf besteht darin, den BigEarthNet-S2-Datensatz für das DINO-Training und die Evaluierung vorzubereiten. Wir beginnen mit dem Herunterladen des Datensatzes vom Terminal unserer SageMaker-Notebook-Instanz:

wget https://bigearth.net/downloads/BigEarthNet-S2-v1.0.tar.gz
tar -xvf BigEarthNet-S2-v1.0.tar.gz

Der Datensatz hat eine Größe von ca. 109 GB. Jedes Bild wird in einem eigenen Ordner gespeichert und enthält 12 Spektralkanäle. Drei Bänder mit einer räumlichen Auflösung von 60 m (60 Meter Pixelhöhe/Breite) dienen zur Identifizierung von Aerosolen (B01), Wasserdampf (B09) und Wolken (B10). Zur Identifizierung der Vegetation (B20, B05, B06, B07A) und zur Unterscheidung zwischen Schnee, Eis und Wolken (B8, B11) werden sechs Bänder mit einer räumlichen Auflösung von 12 m verwendet. Drei Bänder mit einer räumlichen Auflösung von 10 m helfen bei der Erfassung von sichtbarem und nahinfrarotem Licht (B02, B03, B04, B8/B8A). Darüber hinaus enthält jeder Ordner eine JSON-Datei mit den Bildmetadaten. Eine detaillierte Beschreibung der Daten finden Sie im BigEarthNet-Leitfaden.

Um während des DINO-Trainings statistische Analysen der Daten durchzuführen und Bilder zu laden, verarbeiten wir die einzelnen Metadatendateien in einer gemeinsamen Geopandas-Parquet-Datei. Dies kann mit BigEarthNet Common und dem BigEarthNet GDF Builder erfolgen Hilfspakete:

python -m bigearthnet_gdf_builder.builder build-recommended-s2-parquet BigEarthNet-v1.0/

Die resultierende Metadatendatei enthält den empfohlenen Bildsatz, der 71,042 Bilder ausschließt, die vollständig von saisonalem Schnee, Wolken und Wolkenschatten bedeckt sind. Es enthält außerdem Informationen zu Aufnahmedatum, Ort, Landbedeckung sowie Zug-, Validierungs- und Testaufteilung für jedes Bild.

Wir speichern die BigEarthNet-S2-Bilder und Metadatendatei in einem S3-Bucket. Da wir während des DINO-Trainings Echtfarbenbilder verwenden, laden wir nur die Bänder Rot (B04), Grün (B03) und Blau (B02) hoch:

aws s3 cp final_ben_s2.parquet s3://bigearthnet-s2-dataset/metadata/
aws s3 cp BigEarthNet-v1.0/ s3://bigearthnet-s2-dataset/data_rgb/ --recursive --exclude "*" --include "_B02.tif" --include "_B03.tif" --include "_B04.tif"

Der Datensatz ist ca. 48 GB groß und hat folgenden Aufbau:

bigearthnet-s2-dataset/ Amazon S3 bucket
├── metadata/
│ └── final_ben_s2.parquet └── dataset_rgb/ ├── S2A_MSIL2A_20170613T101031_0_45/ │ └── S2A_MSIL2A_20170613T101031_0_45_B02.tif Blue channel │ └── S2A_MSIL2A_20170613T101031_0_45_B03.tif Green channel │ └── S2A_MSIL2A_20170613T101031_0_45_B04.tif Red channel

Trainieren Sie DINO-Modelle mit SageMaker

Nachdem unser Datensatz nun auf Amazon S3 hochgeladen wurde, beginnen wir mit dem Training von DINO-Modellen auf BigEarthNet-S2. Wie in der folgenden Abbildung dargestellt, übergibt der DINO-Algorithmus verschiedene globale und lokale Ausschnitte eines Eingabebildes an Schüler- und Lehrernetzwerke. Dem Schülernetzwerk wird beigebracht, durch Minimierung des Kreuzentropieverlusts mit der Ausgabe des Lehrernetzwerks übereinzustimmen. Die Schüler- und Lehrergewichte sind durch einen exponentiellen gleitenden Durchschnitt (EMA) verbunden.

Wir nehmen zwei Änderungen am ursprünglichen DINO-Code vor. Zuerst erstellen wir eine benutzerdefinierte PyTorch-Datensatzklasse, um die BigEarthNet-S2-Bilder zu laden. Der Code wurde ursprünglich für die Verarbeitung von ImageNet-Daten geschrieben und erwartet, dass Bilder nach Klassen gespeichert werden. BigEarthNet-S2 ist jedoch ein Datensatz mit mehreren Etiketten, bei dem sich jedes Bild in einem eigenen Unterordner befindet. Unsere Datensatzklasse lädt jedes Bild mithilfe des in den Metadaten gespeicherten Dateipfads:

import pandas as pd
import rasterio
from PIL import Image
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms, utils OPTICAL_MAX_VALUE = 2000 LAND_COVER_LABELS = [ "Urban fabric", "Industrial or commercial units", "Arable land", "Permanent crops", "Pastures", "Complex cultivation patterns", "Land principally occupied by agriculture, with significant areas of natural vegetation", "Agro-forestry areas", "Broad-leaved forest", "Coniferous forest", "Mixed forest", "Natural grassland and sparsely vegetated areas", "Moors, heathland and sclerophyllous vegetation", "Transitional woodland, shrub", "Beaches, dunes, sands", "Inland wetlands", "Coastal wetlands", "Inland waters", "Marine waters",
] class BigEarthNetDataset(Dataset): """ PyTorch dataset class that loads the BigEarthNet-S2 images from a metadata file. Args: metadata_file: path to metadata file data_dir: directory where BigEarthNet-S2 data is located split: train, validation, or test split transform: transformations applied to the input image """ def __init__(self, metadata_file, data_dir, split="train", transform=None): # image file paths from metadata metadata = pd.read_parquet(metadata_file) self.metadata_split = metadata[metadata["original_split"] == split] self.data_dir = data_dir self.patch_names = self.metadata_split["name"].tolist() # one-hot-encode land cover labels multiclass_labels = self.metadata_split.new_labels.tolist() self.labels = self.get_multi_onehot_labels(multiclass_labels) # transforms self.transform = transform def __len__(self): """Return length of dataset.""" return len(self.metadata_split) def __getitem__(self, index): """Returns the image and label for a given index.""" patch_name = self.patch_names[index] file_path = os.path.join(self.data_dir, patch_name) # generate RGB image r_channel = rasterio.open(os.path.join(file_path, patch_name + "_B04.tif")).read(1) g_channel = rasterio.open(os.path.join(file_path, patch_name + "_B03.tif")).read(1) b_channel = rasterio.open(os.path.join(file_path, patch_name + "_B02.tif")).read(1) image = np.stack([r_channel, g_channel, b_channel], axis=2) image = image / OPTICAL_MAX_VALUE * 255 image = np.clip(image, 0, 225).astype(np.uint8) # apply image transforms image = Image.fromarray(image, mode="RGB") if self.transform is not None: image = self.transform(image) # load label label = self.labels[index] return image, label def get_multi_onehot_labels(self, multiclass_labels): """Convert BEN-19 labels to one-hot encoded vector.""" targets = torch.zeros([len(multiclass_labels), len(LAND_COVER_LABELS)]) for index, img_labels in enumerate(multiclass_labels): for label in img_labels: index_hot = LAND_COVER_LABELS.index(label) targets[index, index_hot] = 1. return targets

Diese Datensatzklasse wird aufgerufen main_dino.py während dem Training. Obwohl der Code eine Funktion zur One-Hot-Codierung der Landbedeckungsbeschriftungen enthält, werden diese Beschriftungen vom DINO-Algorithmus nicht verwendet.

Die zweite Änderung, die wir am DINO-Code vornehmen, besteht darin, Unterstützung für SMDDP hinzuzufügen. Wir fügen den folgenden Code hinzu init_distributed_mode Funktion in der util.py Datei:

init_distributed_mode function in the util.py file: def init_distributed_mode(args): if json.loads( os.environ.get('SM_FRAMEWORK_PARAMS', '{}')) .get('sagemaker_distributed_dataparallel_enabled', False) ): # launch training with SMDDP dist.init_process_group(backend='smddp') args.word_size = dist.get_world_size() args.gpu = int(os.environ['LOCAL_RANK'])

Mit diesen Anpassungen sind wir bereit, DINO-Modelle auf BigEarthNet-S2 mit SageMaker zu trainieren. Um auf mehreren GPUs oder Instanzen zu trainieren, erstellen wir eine SageMaker PyTorch Estimator das das DINO-Trainingsskript, die Bild- und Metadatendateipfade und die Trainingshyperparameter aufnimmt:

import time
from sagemaker.pytorch import PyTorch # output bucket where final model artifacts are uploaded DINO_OUTPUT_BUCKET = 'dino-models' # paths on training instance sm_metadata_path = '/opt/ml/input/data/metadata' sm_data_path = '/opt/ml/input/data/train' sm_output_path = '/opt/ml/output/data' sm_checkpoint_path = '/opt/ml/checkpoints' # training job name
dino_base_job_name = f'dino-model-{int(time.time())}' # create SageMaker Estimator
estimator = PyTorch( base_job_name=dino_base_job_name, source_dir='path/to/aerial_featurizer', entry_point='main_dino.py', role=role, framework_version="1.12", py_version="py38", instance_count=1, instance_type="ml.p3.16xlarge", distribution = {'smdistributed':{'dataparallel':{'enabled': True}}}, volume_size=100, sagemaker_session=sagemaker_session, hyperparameters = { # hyperparameters passed to entry point script 'arch': 'vit_small', 'patch_size': 16, 'metadata_dir': sm_metadata_path, 'data_dir': sm_data_path, 'output_dir': sm_output_path, 'checkpoint_dir': sm_checkpoint_path, 'epochs': 100, 'saveckp_freq': 20, }, max_run=24*60*60, checkpoint_local_path = sm_checkpoint_path, checkpoint_s3_uri =f's3://{DINO_OUTPUT_BUCKET}/checkpoints/{base_job_name}', debugger_hook_config=False, )

Dieser Code gibt an, dass wir ein kleines Vision-Transformer-Modell (21 Millionen Parameter) mit einer Patchgröße von 16 für 100 Epochen trainieren. Es empfiehlt sich, ein neues zu erstellen checkpoint_s3_uri für jeden Trainingsjob, um die anfängliche Datendownloadzeit zu verkürzen. Da wir SMDDP verwenden, müssen wir auf einer ml.p3.16xlarge-, ml.p3dn.24xlarge- oder ml.p4d.24xlarge-Instanz trainieren. Dies liegt daran, dass SMDDP nur für die größten Multi-GPU-Instanzen aktiviert ist. Um auf kleineren Instanztypen ohne SMDDP zu trainieren, müssen Sie das entfernen distribution und debugger_hook_config Argumente des Schätzers.

Nachdem wir den SageMaker PyTorch Estimator erstellt haben, starten wir den Trainingsjob, indem wir den aufrufen fit Methode. Wir geben die Eingabetrainingsdaten mithilfe der Amazon S3-URIs für die BigEarthNet-S2-Metadaten und Bilder an:

# call fit to begin training
estimator.fit( inputs={ 'metadata': 's3://bigearthnet-s2-dataset/metadata/', 'train': 's3://bigearthnet-s2-dataset/data_rgb/', }, wait=False
)

SageMaker startet die Instanz, kopiert das Trainingsskript und die Abhängigkeiten und beginnt mit dem DINO-Training. Mit den folgenden Befehlen können wir den Fortschritt des Trainingsjobs von unserem Jupyter-Notebook aus überwachen:

# monitor training
training_job_name = estimator.latest_training_job.name attached_estimator = PyTorch.attach(training_job_name)
attached_estimator.logs()

Wir können auch Instanzmetriken überwachen und Protokolldateien auf der SageMaker-Konsole unten anzeigen Ausbildungsjobs. In den folgenden Abbildungen stellen wir die GPU-Auslastung und die Verlustfunktion für ein DINO-Modell dar, das auf einer ml.p3.16xlarge-Instanz mit einer Stapelgröße von 128 trainiert wurde.

Während des Trainings beträgt die GPU-Auslastung 83 % der ml.p3.16xlarge-Kapazität (8 NVIDIA Tesla V100-GPUs) und die VRAM-Auslastung 85 %. Die Verlustfunktion nimmt mit jeder Epoche stetig ab, was darauf hindeutet, dass die Ergebnisse der Schüler- und Lehrernetzwerke immer ähnlicher werden. Insgesamt dauert die Schulung etwa 11 Stunden.

Übertragen Sie das Gelernte auf nachgelagerte Aufgaben

Unser trainiertes DINO-Modell kann auf nachgelagerte Aufgaben wie Bildklassifizierung oder Segmentierung übertragen werden. In diesem Abschnitt verwenden wir die vorab trainierten DINO-Funktionen, um die Landbedeckungsklassen für Bilder im BigEarthNet-S2-Datensatz vorherzusagen. Wie im folgenden Diagramm dargestellt, trainieren wir einen linearen Multi-Label-Klassifikator auf der Grundlage eingefrorener DINO-Merkmale. In diesem Beispiel ist das Eingabebild mit Acker- und Weidelandbedeckungen verknüpft.

Der größte Teil des Codes für den linearen Klassifikator ist bereits im ursprünglichen DINO-Repository vorhanden. Wir nehmen einige Anpassungen für unsere spezifische Aufgabe vor. Nach wie vor verwenden wir den benutzerdefinierten BigEarthNet-Datensatz, um Bilder während des Trainings und der Auswertung zu laden. Die Beschriftungen für die Bilder sind One-Hot-codiert als 19-dimensionale Binärvektoren. Wir benutzen das binäre Kreuzentropie für die Verlustfunktion und berechnen Sie die durchschnittliche Präzision um die Leistung des Modells zu bewerten.

Um den Klassifikator zu trainieren, erstellen wir einen SageMaker PyTorch Estimator, der das Trainingsskript ausführt. eval_linear.py. Die Trainingshyperparameter umfassen die Details der DINO-Modellarchitektur und den Dateipfad für den Modellprüfpunkt:

# output bucket where final model artifacts are uploaded CLASSIFIER_OUTPUT_BUCKET = 'land-cover-classification' # DINO checkpoint name checkpoint = 'checkpoint.pth' # paths on training instance sm_dino_path = f'/opt/ml/input/data/dino_checkpoint' sm_dino_checkpoint = f'{sm_dino_path}/{checkpoint}' # training job name
classifier_base_job_name = f'linear-classifier-{int(time.time())}' # create Estimator estimator = PyTorch( base_job_name=classifier_base_job_name, source_dir='path/to/aerial_featurizer', entry_point = 'eval_linear.py', role=role, framework_version='1.12', py_version='py38', instance_count=1, instance_type='ml.p3.2xlarge', sagemaker_session=sagemaker_session, hyperparameters = { # hyperparameters passed to entry point script 'arch': 'vit_small', 'pretrained_weights': sm_dino_checkpoint, 'epochs': 50, 'data_dir': sm_data_path, 'metadata_dir': sm_metadata_path, 'output_dir': sm_checkpoint_path, 'num_labels': 19, }, max_run=1*60*60, checkpoint_local_path = sm_checkpoint_path, checkpoint_s3_uri =f's3://{CLASSIFIER_OUTPUT_BUCKET}/checkpoints/{base_job_name}',
)

Wir starten den Trainingsjob mit dem fit Methode, die die Amazon S3-Standorte der BigEarthNet-S2-Metadaten und Trainingsbilder sowie den DINO-Modellprüfpunkt bereitstellt:

# call fit to begin training
estimator.fit( inputs={ 'metadata': 's3://bigearthnet-s2-dataset/metadata/', 'dataset': 's3://bigearthnet-s2-dataset/data_rgb/', 'dino_checkpoint': f's3://bigearthnet-s2-dataset/dino-models/checkpoints/{dino_base_job_name}', }, wait=False
)

Wenn das Training abgeschlossen ist, können wir mithilfe des BigEarthNet-S2-Testsatzes eine Inferenz durchführen SageMaker-Batch-Transformation or SageMaker-Verarbeitung. In der folgenden Tabelle vergleichen wir die durchschnittliche Präzision des linearen Modells auf Testsatzbildern unter Verwendung zweier verschiedener DINO-Bilddarstellungen. Das erste Modell, ViT-S/16 (ImageNet), ist der kleine Vision Transformer Checkpoint, der im DINO-Repository enthalten ist und mit nach vorne gerichteten Bildern im ImageNet-Datensatz vorab trainiert wurde. Das zweite Modell, ViT-S/16 (BigEarthNet-S2), ist das Modell, das wir durch Vortraining auf Overhead-Bildern erstellt haben.

Modell Durchschnittliche Genauigkeit
ViT-S/16 (ImageNet) 0.685
ViT-S/16 (BigEarthNet-S2) 0.732

Wir stellen fest, dass sich das auf BigEarthNet-S2 vorab trainierte DINO-Modell besser auf die Landbedeckungsklassifizierungsaufgabe übertragen lässt als das auf ImageNet vorab trainierte DINO-Modell, was zu einer Steigerung der durchschnittlichen Präzision um 6.7 % führt.

Aufräumen

Nach Abschluss der DINO-Schulung und des Transferlernens können wir unsere Ressourcen bereinigen, um Gebühren zu vermeiden. Wir Stoppen oder löschen Sie unsere Notebook-Instanz und Entfernen Sie unerwünschte Daten oder Modellartefakte von Amazon S3.

Zusammenfassung

In diesem Beitrag wurde gezeigt, wie man DINO-Modelle mit SageMaker auf Overhead-Bildern trainiert. Wir haben SageMaker PyTorch Estimators und SMDDP verwendet, um Darstellungen von BigEarthNet-S2-Bildern zu generieren, ohne dass explizite Beschriftungen erforderlich sind. Anschließend übertrugen wir die DINO-Merkmale auf eine nachgelagerte Bildklassifizierungsaufgabe, bei der die Landbedeckungsklasse der BigEarthNet-S2-Bilder vorhergesagt wurde. Für diese Aufgabe führte das Vortraining mit Satellitenbildern zu einer Steigerung der durchschnittlichen Präzision um 6.7 % im Vergleich zum Vortraining mit ImageNet.

Sie können diese Lösung als Vorlage für das Training von DINO-Modellen anhand umfangreicher, unbeschrifteter Luft- und Satellitenbilddatensätze verwenden. Um mehr über DINO und das Erstellen von Modellen auf SageMaker zu erfahren, sehen Sie sich die folgenden Ressourcen an:


Über die Autoren

Ben Veasey ist Senior Associate Data Scientist bei Travelers und arbeitet im AI & Automation Accelerator-Team. Mit einem tiefen Verständnis innovativer KI-Technologien, einschließlich Computer Vision, Verarbeitung natürlicher Sprache und generativer KI, setzt sich Ben dafür ein, die Einführung dieser Technologien zu beschleunigen, um Geschäftsprozesse zu optimieren und die Effizienz bei Travelers zu steigern.

Jeremy Anderson ist Director und Data Scientist bei Travelers im AI & Automation Accelerator-Team. Sein Interesse gilt der Lösung von Geschäftsproblemen mit den neuesten KI- und Deep-Learning-Techniken, darunter große Sprachmodelle, grundlegende Bildmodelle und generative KI. Vor seiner Tätigkeit bei Travelers erwarb Jeremy einen Doktortitel in Molekularer Biophysik an der Johns Hopkins University und studierte außerdem evolutionäre Biochemie. Außerhalb der Arbeit kann man ihn beim Laufen, bei der Holzbearbeitung oder beim Umgestalten seines Gartens antreffen.

Jordan Ritter ist Senior Data Scientist und arbeitet für Reisende in der Abteilung Business Insurance Analytics & Research. Seine Leidenschaft gilt der Lösung anspruchsvoller realer Computer-Vision-Probleme und der Erforschung neuer, hochmoderner Methoden dafür. Sein besonderes Interesse gilt den sozialen Auswirkungen von ML-Modellen und der Frage, wie wir Modellierungsprozesse weiter verbessern können, um ML-Lösungen zu entwickeln, die für alle gleich sind. Jordan schloss sein Studium am MIT mit einem Master in Business Analytics ab. In seiner Freizeit findet man ihn entweder beim Klettern, beim Wandern oder bei der Weiterentwicklung seiner eher rudimentären Kochkünste.

Juni Li ist Datenwissenschaftlerin im Team für künstliche Intelligenz von Travelers' Business Insurance, wo sie die Arbeit im KI-Bildportfolio leitet und koordiniert. Ihre Leidenschaft liegt in der Implementierung innovativer KI-Lösungen, die den Geschäftspartnern und Stakeholdern einen erheblichen Mehrwert bieten. Ihre Arbeit war maßgeblich daran beteiligt, komplexe geschäftliche Herausforderungen durch den Einsatz modernster KI-Technologien in Chancen umzuwandeln.

Surav Bhabesh ist Senior Applied Scientist bei den AWS Titan Labs, wo er die Fähigkeiten und Funktionen des Foundational Model (FM) entwickelt. Sein Spezialgebiet ist die Verarbeitung natürlicher Sprache (NLP) und seine Leidenschaft gilt dem Deep Learning. Außerhalb der Arbeit liest er gerne Bücher und reist gerne.

Laura Kulowski ist angewandte Wissenschaftlerin im Generative AI Innovation Center von Amazon, wo sie eng mit Kunden zusammenarbeitet, um generative KI-Lösungen zu entwickeln. In ihrer Freizeit erkundet Laura gerne neue Orte mit dem Fahrrad.

Andreas Ang ist Senior Machine Learning Engineer bei AWS. Er unterstützt nicht nur Kunden bei der Entwicklung von KI/ML-Lösungen, sondern betreibt auch gerne Wassersport, Squash und schaut sich Reise- und Food-Vlogs an.

Mehdi Noori ist Applied Science Manager am Generative AI Innovation Center. Mit einer Leidenschaft für die Verbindung von Technologie und Innovation unterstützt er AWS-Kunden dabei, das Potenzial generativer KI auszuschöpfen, potenzielle Herausforderungen in Chancen für schnelle Experimente und Innovationen umzuwandeln, indem er sich auf skalierbare, messbare und wirkungsvolle Anwendungen fortschrittlicher KI-Technologien konzentriert und den Weg rationalisiert zur Produktion.

spot_img

Neueste Intelligenz

spot_img