Im Rahmen der Vertiefungsrichtung Maschinelles Lernen betreut inovex das Labor „Künstliche Intelligenz” für den Masterstudiengang Informatik an der Hochschule Karlsruhe. Hier bringen wir den Studierenden seit dem Wintersemester 2019/20 die praktische Umsetzung von Machine-Learning-Verfahren aus den Bereichen Computer Vision, Natural Language Processing sowie Reinforcement Learning näher.

Vor diesem Sommersemester war das Labor, wie andere Praktika und Vorlesungen, eine reine Präsenzveranstaltung. Neben Tradition hatte das auch praktische Gründe: Die Laborrechner sind mit GPUs ausgestattet, die das Training von Deep Learning Modellen ermöglichen.

Dieses Semester war einiges anders. Start des Labors war am 20. März 2020. Am 22. März traten die Kontaktbeschränkungen aufgrund des Coronavirus in Kraft. Es war aber schon vorher klar, dass wir nicht so wie üblich starten könnten. Zu diesem Zeitpunkt glaubten (oder hofften) wir noch, dass der Regelbetrieb ab Mitte April wieder aufgenommen würde. Wir standen vor der Wahl, die Inhalte zu kürzen oder – noch drastischer – das Labor ganz ausfallen zu lassen. Beides war für uns keine Option und so hielten wir das Labor kurzerhand remote ab. Dabei konnten wir den Studierenden ganz nebenbei auch noch unseren Arbeitsalltag bei inovex näher bringen, der auch schon vor Corona zu großen Teilen remote ablief. In diesem Artikel möchten wir von unseren Erfahrungen und Learnings mit Remote Teaching berichten.

AI Lab goes Remote Teaching

Natürlich war auch uns nicht von Anfang an klar, wie wir das Labor genau umsetzen sollten: Wie können wir die Studierenden effektiv betreuen? Wie können wir ihnen die Zusammenarbeit möglichst einfach machen? Können sie ohne Laborrechner überhaupt tiefe Netze trainieren? Ist der Umfang der Aufgaben dann noch gerechtfertigt?

In einer Notfall-Sitzung einigten wir uns schließlich darauf, das Labor wie ein agiles Projekt zu behandeln: Die Studierenden sollten agile Teams bilden und wir schlüpften in die Rolle der Scrum Master und Product Owner. Alle zwei Wochen fanden Sprintwechsel statt, in dem die Teams ihre Lösungen präsentierten und in einer gemeinsamen Retrospektive den vergangenen Sprint diskutierten. Im anschließenden Planning stellten wir die Aufgaben für die nächsten zwei Wochen und die dafür notwendige Theorie vor. In zusätzlichen Weeklies zwischen den Sprintwechseln zeigten die Teams ihren Fortschritt und diskutierten Blocker.

Zusätzlich dazu konnten die Studierenden uns über einen Slack-Workspace für das Labor erreichen, um abseits der wöchentlichen Treffen Fragen zu stellen. Jedes Team bekam außerdem noch einen eigenen (privaten) Kanal, um sich untereinander zu koordinieren. Aber wobei eigentlich? Wie sollten sie die Aufgaben bearbeiten?

Im Prinzip konnten sie sich das Docker-Setup auf ihren eigenen, statt den Laborrechnern installieren, aber wir konnten (und wollten) nicht alle Studierenden ohne ausreichend starke GPUs ausschließen. Die Lösung fanden wir mit Google Colaboratory (Colab), einer kostenlosen Cloud-Umgebung für Jupyter Notebooks. Colab war für uns besonders interessant, weil es gleichzeitiges (kollaboratives) Editieren eines Notebooks durch mehrere Benutzer ermöglicht und kostenlose GPU-/TPU-Zeit zur Verfügung stellt – wenn auch natürlich nicht ganz ohne Einschränkungen.

Colab schlägt also zwei Fliegen mit einer Klappe: Studierende werden zur Zusammenarbeit angeregt und in die Lage versetzt, tiefe Netze zu trainieren. Bereits im WS 19/20 hatten einige Studierende eigenständig auf Colab statt auf die Laborrechner gesetzt. Da unsere Aufgaben ohnehin in Notebooks verpackt waren, war die Portierung auf Colab relativ unkompliziert und wir konnten mit dem Labor in der ersten Vorlesungswoche beginnen – wie es auch vor der Corona-Situation geplant war.

Der Kickoff-Termin mit allen Studierenden und Betreuer:innen wurde, wie alle weiteren Termine, online über Google Meet abgehalten. Fragen und Unklarheiten besprachen wir nach der Vorstellung des Ablaufs im Lean Coffee Format: In getrennten, zeitlich begrenzten Runden werden erst Fragen gesammelt, zusammengefasst, priorisiert und schließlich nach Priorität besprochen.

Dieses Format eignet sich für Remote-Termine mit mehreren Teilnehmer:innen besonders gut. Es senkt die Hemmschwelle eine Frage zu stellen und sorgt dafür, dass die Diskussion nicht von wenigen Teilnehmer:innen dominiert wird. Die erste Sammelrunde weckt Assoziationen und führt so zu mehr relevanten Themen (wie auch beim klassischen Brainstorming). Die gemeinsame Priorisierung stellt schließlich sicher, dass die wichtigsten Themen zuerst besprochen werden. Das frei verfügbare Tool für Retrospektiven Scrumlr leistete dabei wie immer hervorragende Dienste.

Was wir gelernt haben

Anfangs waren wir uns nicht sicher, wie gut dieser Plan in der Praxis funktionieren würde. Schließlich war er mit der heißen Nadel gestrickt und im März gab es dazu noch kaum Erfahrungsberichte. Rückblickend stellen wir aber fest: es hätte kaum besser laufen können. Wir hatten sogar das Gefühl, dass die Studierenden mehr gelernt haben als in den Semestern davor!

Lässt sich das Format auf andere Veranstaltungen übertragen? Sicher nicht uneingeschränkt, aber gerade Programmier-Praktika können von unseren Erfahrungen im Remote Teaching profitieren:

  1. Google Colab eignet sich sehr gut für das kollaborative und verteilte Bearbeiten von Aufgaben. Für Dozent:innen ist es einfach Feedback zu geben und bei Problemen zu helfen. Die unkomplizierte (und kostenlose) Nutzung von GPU- und TPU-Ressourcen ist ein netter Bonus.
  2. Die Studierenden waren engagierter bei der Sache – sicher nicht nur aus Mangel an alternativen Angeboten, sondern auch, weil sie sich ihre Zeit selbst einteilen konnten und nicht auf die Zeiten im Rechnerlabor angewiesen waren.
  3. In den getrennten Weeklies zwischen den Sprintwechseln wurden oft ähnliche Fragen gestellt. Im Verlauf des Praktikums sind wir deswegen dazu übergegangen, diese Fragen zunächst in einer gemeinsame Runde mit allen Studierenden zu klären, bevor wir die Gruppen einzeln betreut haben.
  4. Die meisten Redebeiträge kamen von wenigen Personen. Damit alle bei der Sache bleiben, sollten Teilnehmer:innen gezielt zur Teilnahme angeregt werden. Das gilt natürlich auch für klassische Präsenztermine, aber besonders für Remote-Veranstaltungen.
  5. Remote-Arbeit ist noch immer Neuland. Deswegen sollte es ausführliche Anleitung zur Benutzung der verwendeten Tools und Gesprächsformate geben. In unserem Fall etwa zum kollaborativen Arbeiten am gleichen Colab-Notebook und zur effizienten Nutzung von Slack. Die Studierenden sollten auch zu Dailies angehalten werden, wie sie in unseren Projekten üblich sind.
  6. Die Notebooks sollten an geeigneten Stellen Unit-Tests enthalten um Zwischenergebnisse zu validieren. Asynchrones Feedback von Dozent:innen bringt die Studierenden zu sehr aus dem Flow.

Was die Zukunft bringt

Mit der sich abzeichnenden zweiten Corona-Infektionswelle ist es absehbar, dass das Praktikum im kommende Wintersemester ebenfalls remote durchgeführt werden muss. Durch die Erfahrung im Sommersemester sind wir aber zuversichtlich, das Labor wieder anbieten zu können. Und selbst wenn wir doch wieder an die Hochschule dürfen, werden wir sicher das Eine oder Andere übernehmen – z.B. die Aufteilung in zweiwöchentliche Sprints, bei denen die Präsenztermine als Sprintwechsel bzw. als erweitertes Weekly genutzt werden und die Ermutigung zum asynchronen Arbeiten.