Die KI, die weiß, wann der Schatten kommt
Die KI, die weiß, wann der Schatten kommt
Nicht nur wir lechzen dieser Tage nach Sonne: Auch Betreiber von Photovoltaikanlagen fiebern jedem Lichtstrahl entgegen. Zusätzlich wollen sie die produktiven Stunden ihrer Systeme auch planen können. Um diesen Wunsch zu erfüllen hat der Wiener Software-Entwickler LuxActive das weltweit erste KI-Tool zur Schattenvorhersage entwickelt: CloudShadingAI sagt Schattenbewegungen mit einer Genauigkeit von bis zu 95 Prozent vorher. Technisch unterstützt wurde das Projekt vom österreichischen Kompetenzzentrum für Supercomputing; die finanzielle Förderung erfolgte über die Österreichische Forschungsförderungsgesellschaft (FFG).
Bettina Benesch
Erneuerbare Energien sind immer nur so gut wie die Energien, mit denen sie arbeiten, und Betreiber von Photovoltaik-Anlagen wollen sicherstellen, dass diese Anlagen auch an Orten stehen, an denen sich erneuerbare Energie besonders effizient gewinnen lässt. Wer weiß, wo und wann Schatten zu erwarten sind, tut sich mit der Planung leichter. Nun gibt es mit CloudShadingAI ein solches Planungstool. Trainiert wurde es vom Wiener IT-Unternehmen LuxActive in Partnerschaft mit MetGIS, einem Spin-off der Universität Wien, das globale Präzisions-Wettervorhersagen erstellt. Zur Verfügung stehen Prognosen für Wolkenschatten und Terrainschatten (z. B. von Bergen).
Das Tool basiert auf Daten zu Form und Höhe der Erdoberfläche (sogenannte Terraindaten), Satelliten-Wolkendaten und meteorologischen Wetterdaten, und ist bereits voll einsatzfähig. Schon jetzt können die Terrainschatten unter https://shadow.swisdata.eu kostenlos für drei Tage in die Zukunft und Vergangenheit eingesehen werden. Die Wolkenschattenprognosen stehen Unternehmen gegen Gebühr zur Verfügung.

CloudShadingAI kann Schatten für einen Zeitraum von 15 Minuten bis sechs Stunden vorhersagen. Für Prognosen bis vier Stunden in der Zukunft ist die Genauigkeit bereits sehr hoch – je weiter der Blick in die Zukunft reicht, desto schwieriger wird es, da Wolken von Natur aus unberechenbar sind. Dennoch ist die Genauigkeit von CloudShading AI signifikant: Auf ein Jahr hochgerechnet liegt sie bei 83 Prozent, der Durchschnitt für ein Monat (Januar 2023) beträgt 95 Prozent.
Rechenzeit dank EuroCC Austria um rund 93 Prozent reduziert
EuroCC Austria, das österreichische Kompetenzzentrum für Supercomputing, hat LuxActive mit Beratung und Zugang zu High-Performance Computing (HPC) unterstützt. Das Team trainierte mehrere KI-Modelle auf dem italienischen Supercomputer Leonardo, einem der leistungsfähigsten Rechner weltweit. EuroCC half beim Onboarding auf das HPC-System und stand während des Projekts mit Expertise und Tutorials bereit.
Durch die Arbeit am Supercomputer konnte das Team von LuxActive die Rechenzeit deutlich reduzieren: Das Training aller 67 KI-Modelle dauerte rund 24 Stunden. Am lokalen Rechner wäre der Prozess zwei Wochen gelaufen. Leonardo holte für das Team also eine Reduktion von 93 Prozent heraus. Das Modell ist aktuell in Betrieb, läuft auf der eigenen Hardware von LuxActive und liefert Vorhersagen in nur fünf bis 15 Minuten.
“
Der enorme Vorteil von Leonardo ist, dass man nicht nur einen einzigen Trainingsjob starten kann, sondern mehrere parallel auf jeweils einer eigenen GPU laufen. Das wäre bei uns lokal gar nicht möglich gewesen.
„
Der Vorteil eines Hochleistungsrechners ist der Rechenplatz, auf dem sich wunderbar experimentieren lässt – vergleichbar mit einem Fußballfeld, auf dem mehrere Mannschaften gleichzeitig trainieren und testen, welche Kombinationen am effizientesten sind. So lässt sich auf einem HPC-System im großen Stil experimentieren: „Der enorme Vorteil von Leonardo ist, dass man nicht nur einen einzigen Trainingsjob starten kann, sondern mehrere parallel auf jeweils einer eigenen GPU laufen“, sagt LuxActive-Developer Fabian Frauenberger. „Das wäre bei uns lokal gar nicht möglich gewesen. Wir hätten einen Run nach dem anderen laufen lassen müssen. Bei Leonardo waren es mehrere, wir konnten also viel schneller experimentieren und auch viel rascher zu guten Ergebnisse kommen.“

© Fabian Frauenberger, LuxActive
Interview
Die Tücken des Erstmaligen
Unsere Autorin Bettina Benesch sprach mit Fabian Frauenberger, einem der Entwickler von CloudShadingAI, über die Herausforderungen, Rückschläge und Erfolge bei der Arbeit am Projekt.
Lieber Fabian, in Success Storys wie dieser liest man oft von dem, was gut geklappt hat. Aber das Spannende sind doch auch die Herausforderungen und wie sie gemeistert wurden. Was fällt dir dazu ein?
Herausforderungen gab es einige. Um unser Modell zu entwickeln, haben wir unter anderem mit Terraindaten eines Anbieters gearbeitet, die die Höhe aller Dinge der Erdoberfläche angeben, und zwar bezogen auf den Meeresspiegel. Du erhältst Längen- und Breitengrade, und dazu die Höhe der Objekte.
Lustigerweise war bei manchen Seen die Höhe falsch kodiert – etwa um zehn bis 20 Meter höher als die Umgebung, was dazu geführt hat, dass manche Seen einen Schatten auf einen Berg geworfen haben. Das kommt daher, dass du für Wasser diesen falschen Wert hast, es aber andere Objekte in der Umgebung gibt, die unter diesem Wert liegen. Dann nimmt der Algorithmus an, dass da ein Schatten geworfen wird. Wir haben daraufhin einen anderen Datensatz verwendet und das Problem war gelöst.
Was waren eure Herausforderungen bei den Wolkenvorhersagen?
Unser Hauptproblem waren die Bewegungsvektoren, die wir brauchen, um zu wissen, in welche Richtung die Wolken ziehen. Diese Vektoren sind der Kern von CloudShadingAI, und sie müssen präzise berechnet werden. Unser erster Ansatz im Training der KI war, dem Modell nur Wetterdaten und Bilder zu geben und das Modell dann direkt das neue Bild ausgeben zu lassen. Es sollte also selbst die Bewegungsvektoren implizit anwenden. Das hat gar nicht funktioniert. Das Einzige, was herauskam, war „Hier ist immer eine Wolke“ oder „Hier ist nie eine Wolke“, was natürlich nicht der Realität entspricht.
“
Unser Hauptproblem waren die Bewegungsvektoren, die wir brauchen, um zu wissen, in welche Richtung die Wolken ziehen. Zwei Versuche haben nicht geklappt. Schließlich haben wir es mit einem eigenen Ansatz versucht und einzelne Pixel im aktuellen Bild mit ähnlichen Pixeln im zukünftigen Bild verglichen. Dieser Ansatz war erfolgreich.
„
Dann haben wir geschaut, was Andere nutzen, um Bewegungsvektoren zu berechnen. Wir sind auf Optical-Flow-Algorithmen gestoßen, bei denen ein Input- und ein Output-Bild geliefert werden und das Modell den Weg dazwischen berechnet. Das hat auch nicht funktioniert.
Schließlich haben wir es mit einem eigenen Ansatz versucht und einzelne Pixel im aktuellen Bild mit ähnlichen Pixeln im zukünftigen Bild verglichen (basierend auf der Umgebung der Pixel). Dazu haben wir die Winddaten genommen, um den Bereich einzugrenzen, in dem nach ähnlichen Pixeln gesucht wird. Das nennt man Targeting. So muss das Modell nicht überall suchen, sondern nur dort, wohin der Wind die Wolke geweht hat. Anschließend haben wir nur noch unter diesen Kandidaten das beste visuelle Match gesucht. Der Begriff dazu ist Scoring: Welcher Pixel passt von Position und Umgebung am besten zum Ausgangspixel? Dieser Ansatz war erfolgreich und wir waren sehr froh, als das dann endlich geklappt hat.

© Fabian Frauenberger, LuxActive
Wie lange hat es ungefähr gedauert, bis ihr das richtige Rezept für die Bewegungsvektoren hattet?
Wir waren zu viert und haben drei bis vier Monate lang daran gearbeitet. Also sehr lange.
Gab es noch weitere Hürden?
Ja, die Höhe der Wolken war auch ein Thema. Wir konnten sie aus den uns zur Verfügung stehenden Daten nur schätzen. Dazu muss ich etwas ausholen: Man kann sich ein Wolkenbild nicht wie ein Bild vorstellen von einem Wattebausch, sondern es sind Daten, in denen die Wolkenhöhe codiert ist. Über Europa haben wir ein 1.200 x 1.200 Pixelfeld und ein Pixel entspricht 0,03 Grad Länge bzw. Breiten. Für jeden Pixel erhalten wir die Info: Hier ist eine Wolke mit dieser oder jener Höhe.
“
Das Problem ist: Wir haben nur den höchsten Punkt der Wolke, wir wissen nicht, wie tief sie ist. Das kann nicht gemessen werden. Also muss man es irgendwie anders herausfinden.
„
Warum ist die Höhe relevant?
Eine höhere Wolke wirft ihren Schatten weiter als eine niedrige. Das Problem ist: Wir haben nur den höchsten Punkt der Wolke, wir wissen nicht, wie tief sie ist. Das kann nicht gemessen werden. Also muss man es irgendwie anders herausfinden. Wir haben es zuerst mit meteorologischen Daten probiert, weil wir davon ausgegangen sind, dass, wenn die Luftfeuchtigkeit in einem Bereich hoch ist, es auch eine Wolke geben wird. Das hat aber nicht zugetroffen. Ein Ansatz war, das mittels KI zu bestimmen, aber da haben uns die Daten gefehlt, denn dafür hätten wir Bodendaten gebraucht, die es nicht in ausreichender Menge gab. Das werden wir uns vielleicht in zukünftigen Projekten noch einmal anschauen.
Um die Wolkenhöhe schließlich zu bestimmen, haben wir eine Grundhöhe von 200 Metern für jede Wolke angenommen und uns die Umgebung der Wolke genauer angesehen. Wenn wir zum Beispiel eine Wolke auf 1.300 km haben und direkt daneben eine auf 1.150 km, dann gehen wir davon aus, dass die Wolke, die weiter unten liegt, sich auch weiter nach unten erstrecken wird.
Und damit waren die Herausforderungen dann gemeistert?
Nein, es gab noch ein paar andere. Zum Beispiel hatten wir Probleme mit dem Integer von Pytorch. Auch die Winddaten waren zu einem Zeitpunkt ein Thema, da sie in Meter pro Sekunde angegeben waren und wir sie in Pixel umwandeln mussten. Und gleich zu Beginn wurde uns klar, dass sich gewisse Daten durch die Erdkrümmung verändern und wir die Krümmung miteinbeziehen müssen. Denn durch sie verschieben sich zum Beispiel weit entfernte Wolken optisch nach unten, was dazu führt, dass der berechnete Schatten am falschen Ort landet.
Die Terrain-Schattenberechnung haben wir auf der GPU gelöst, weil man dort viele Berechnungen parallel laufen lassen kann. Aber auch da hat uns die Grafikkarte überrascht: Sie hat Sinus- und Cosinus-Werte nur angenähert berechnet, was zu komischen Artefakten in den Schatten geführt hat, die wir dann erst mühsam korrigieren mussten. Aber im Vergleich zu dem Problem mit den Bewegungsvektoren waren das alles Peanuts.
“
Es gab noch ein paar andere Herausforderungen. Zum Beispiel hatten wir Probleme mit dem Integer von Pytorch. Und gleich zu Beginn wurde uns klar, dass sich gewisse Daten durch die Erdkrümmung verändern und wir die Krümmung miteinbeziehen müssen.
„
Gab es in dem Projekt einen Tag, an dem alles funktioniert hat?
Ja, als wir den Endbericht geschrieben haben (lacht). Nein, im Ernst: Es gab schon Tage, an denen es einfach mal gut gelaufen ist.
Was war dein größter Erfolgsmoment?
Der größte Moment war natürlich, als mal alles gut gelaufen ist, wir alle Fehler gefunden hatten für die Terrain Shadows und auch die Bewegungsvektoren für die Wolkenschatten gut aussahen. Das war der größte Erfolgsmoment, als wir das endlich abschließen konnten.
Technische Daten zum Projekt
Zur Person

Fabian Frauenberger ist Entwickler im Bereich Data Science. Er implementierte für LuxActive und SWISDATA verschiede Machine-Learning-Lösungen wie Algorithmen, Metriken oder Datenaufbereitungsmethoden, die vorwiegend in Forschungs- und Entwicklungsprojekten Anwendung finden.
Über LuxActive
LuxActive wurde 2016 von Dr. Marian Lux gegründet und besteht aus einem Team von Expert:innen, die sich auf sektorübergreifende Softwarelösungen und -entwicklung spezialisiert haben. Durch zahlreiche nationale und internationale Forschungs- und Entwicklungsprojekte – oftmals in koordinierender Rolle – entstanden vielseitige Plattformen und API-Services im Bereich Künstliche Intelligenz. Ursprünglich im Tourismussektor verankert, hat das Unternehmen seinen Fokus heute erfolgreich auf zahlreiche weitere Branchen ausgeweitet.