Beispiel-Workflow – Trainieren eines Bilderkennungsmodells mit Kubeflow und dem NetApp DataOps Toolkit
In diesem Abschnitt werden die Schritte beschrieben, die bei der Schulung und Bereitstellung eines Neuronalen Netzwerks zur Bilderkennung mit Kubeflow und dem NetApp DataOps Toolkit erforderlich sind. Dies soll als Beispiel dienen, um eine Trainingsaufgabe zu zeigen, die NetApp Storage integriert.
Voraussetzungen
Erstellen Sie eine Dockdatei mit den erforderlichen Konfigurationen für die Zug- und Testschritte innerhalb der Kubeflow-Pipeline.
Hier ist ein Beispiel für eine Dockerdatei -
FROM pytorch/pytorch:latest
RUN pip install torchvision numpy scikit-learn matplotlib tensorboard
WORKDIR /app
COPY . /app
COPY train_mnist.py /app/train_mnist.py
CMD ["python", "train_mnist.py"]
Installieren Sie je nach Ihren Anforderungen alle erforderlichen Bibliotheken und Pakete, die zum Ausführen des Programms erforderlich sind. Bevor Sie das Machine-Learning-Modell trainieren, wird davon ausgegangen, dass Sie bereits über eine funktionierende Kubeflow-Implementierung verfügen.
Trainieren Sie einen kleinen NN auf MNIST-Daten mit PyTorch- und Kubeflow-Pipelines
Wir verwenden das Beispiel eines kleinen neuronalen Netzwerks, das auf MNIST-Daten trainiert ist. Der MNIST-Datensatz besteht aus handschriftlichen Bildern von Ziffern von 0 bis 9. Die Bilder sind 28x28 Pixel groß. Der Datensatz ist in 60,000 Zug-Bilder und 10,000 Validierungsbilder unterteilt. Das für dieses Experiment verwendete Neuronale Netzwerk ist ein 2-schichtiges Feedforward-Netzwerk. Das Training wird mit Kubeflow Pipelines durchgeführt. Siehe Dokumentation "Hier" Finden Sie weitere Informationen. Unsere Kubeflow-Pipeline enthält das Docker-Image aus dem Abschnitt Voraussetzungen.
Visualisieren Sie Die Ergebnisse Mit Tensorboard
Sobald das Modell trainiert ist, können wir die Ergebnisse mit Tensorboard visualisieren. "Tensorboard" Ist als Funktion im Kubeflow Dashboard verfügbar. Sie können ein individuelles Tensorboard für Ihren Job erstellen. Ein Beispiel unten zeigt die Darstellung der Trainingsgenauigkeit vs. Anzahl der Epochen und Trainingsverluste vs Anzahl der Epochen.
Experimentieren Sie mit Hyperparametern mit Katib
"Katib" Ist ein Werkzeug innerhalb von Kubeflow, das verwendet werden kann, um mit den Modell-Hyperparametern zu experimentieren. Um ein Experiment zu erstellen, definieren Sie zunächst eine gewünschte Metrik/ein Ziel. Dies ist in der Regel die Prüfgenauigkeit. Nachdem die Metrik definiert wurde, wählen Sie Hyperparameter aus, mit denen Sie spielen möchten (Optimizer/Learning_Rate/Anzahl der Ebenen). Katib führt einen Hyperparameter-Sweep mit den benutzerdefinierten Werten durch, um die beste Kombination von Parametern zu finden, die die gewünschte Metrik erfüllen. Sie können diese Parameter in jedem Abschnitt der Benutzeroberfläche definieren. Alternativ können Sie eine YAML-Datei mit den erforderlichen Spezifikationen definieren. Unten ist eine Illustration eines Katib-Experiments -
Verwenden Sie NetApp-Snapshots, um Daten für die Rückverfolgbarkeit zu speichern
Während des Modelltrainings möchten wir eventuell eine Momentaufnahme des Trainingsdatensatzes zur Rückverfolgbarkeit speichern. Zu diesem Zweck können wir der Pipeline wie unten gezeigt einen Snapshot-Schritt hinzufügen. Zum Erstellen des Snapshots können wir den verwenden "NetApp DataOps Toolkit für Kubernetes".
Siehe "Beispiel für das NetApp DataOps Toolkit für Kubeflow" Finden Sie weitere Informationen.