WEBVTT

00:00:00.000 --> 00:00:06.540
<v Dominik>Hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast, heute Episode 67, wir reden über Data Science.

00:00:07.140 --> 00:00:09.940
<v Dominik>Hallo Dominik und herzlich willkommen.

00:00:10.440 --> 00:00:10.840
<v Dominik>Hi Mira.

00:00:11.100 --> 00:00:11.740
<v Dominik>Mira, hallo.

00:00:12.080 --> 00:00:12.840
<v Dominik>Schön, dass du da bist.

00:00:14.940 --> 00:00:19.660
<v Dominik>Normalerweise fangen wir immer mit News an, da hat doch gesagt, haben wir heute gar nicht so viele und die letzten sind auch gar nicht so lange her.

00:00:20.300 --> 00:00:21.320
<v Dominik>Wir reden über Data Science.

00:00:21.740 --> 00:00:29.060
<v Dominik>Wir wollten glaube ich nochmal ganz von vorne anfangen, weil wir noch nicht so viele Data Science-Folgen hatten oder uns vorgenommen hatten, noch einige mehr davon aufzunehmen, als wir bis jetzt haben.

00:00:29.060 --> 00:00:31.040
<v Dominik>Und mit Python macht man ja recht viel Data Science.

00:00:31.500 --> 00:00:36.140
<v Dominik>Vielleicht erzählst du aber erstmal was über dich und stellst dich kurz vor und dann sprechen wir über das Thema.

00:00:36.920 --> 00:00:39.560
<v Mira>Ja, gerne. Also praktischerweise bin ich Data Scientist.

00:00:40.120 --> 00:00:42.300
<v Mira>Das heißt, wir haben heute bestimmt eine Menge zu besprechen.

00:00:42.780 --> 00:00:47.860
<v Mira>Ich bin auch seit einem Jahr Geschäftsführerin zusammen mit einem Kollegen in unserer Beratung.

00:00:48.060 --> 00:00:55.080
<v Mira>Ich habe dort angefangen direkt nach dem Studium, bin da seit einigen Jahren und inzwischen bin ich dann mit an die Spitze gerückt.

00:00:55.720 --> 00:01:01.160
<v Mira>Ursprünglich habe ich aber Psychologie studiert und so richtig weg davon bin ich auch gar nicht.

00:01:01.160 --> 00:01:04.560
<v Mira>Man muss auch sagen, dass man in der Psychologie schon auch Fehler haben, Analyse und Statistik macht.

00:01:04.640 --> 00:01:06.260
<v Mira>Und da hat es mir noch nicht gereicht.

00:01:06.880 --> 00:01:12.420
<v Mira>Deswegen habe ich dann noch einen Statistik-Master drangehängt und bin dann so in der Statistik-Beratung damals gelandet.

00:01:12.520 --> 00:01:14.140
<v Mira>Da hieß es noch mehr Statistik.

00:01:15.140 --> 00:01:21.500
<v Mira>Inzwischen würden wir natürlich sagen, wir machen Data Science oder aktuell sagt man wahrscheinlich am besten noch AI,

00:01:21.660 --> 00:01:23.460
<v Mira>damit halt auch wirklich klar ist, was eigentlich gemeint ist.

00:01:23.800 --> 00:01:25.620
<v Mira>so erinnert sich die Begriffe ein bisschen und ist natürlich

00:01:25.620 --> 00:01:27.560
<v Mira>über die Zeit auch total viel dazugekommen,

00:01:27.660 --> 00:01:29.600
<v Mira>Machine Learning, was ja

00:01:29.600 --> 00:01:31.420
<v Mira>vor einigen Jahren eben noch nicht so

00:01:31.420 --> 00:01:33.580
<v Mira>da war. Vor einigen Jahren haben wir noch

00:01:33.580 --> 00:01:35.860
<v Mira>ganz viel mit R gemacht, am Anfang,

00:01:36.020 --> 00:01:37.480
<v Mira>inzwischen ist eigentlich fast alles

00:01:37.480 --> 00:01:39.800
<v Mira>in Python, bis auch so ein paar einzelne

00:01:39.800 --> 00:01:41.340
<v Mira>Projekte, vor allem im Forschungsbereich,

00:01:41.480 --> 00:01:43.300
<v Mira>da sind die Leute ein bisschen mehr mit R unterwegs.

00:01:44.360 --> 00:01:45.600
<v Mira>Und ja, ich kann gerne

00:01:45.600 --> 00:01:47.700
<v Mira>auch ganz kurz was über mein Unternehmen sagen,

00:01:47.800 --> 00:01:49.540
<v Mira>wir sind eine Data Science Beratung,

00:01:49.640 --> 00:01:51.840
<v Mira>haben also sehr viele wechselnde Projekte,

00:01:52.000 --> 00:01:53.000
<v Mira>sind 17 Leute,

00:01:53.000 --> 00:01:54.480
<v Mira>in Berlin. Das heißt,

00:01:55.140 --> 00:01:56.800
<v Mira>zum Hörertreffen wird es dann wahrscheinlich auch

00:01:56.800 --> 00:01:58.860
<v Mira>nichts für mich, weil es ein bisschen zu weit ist,

00:01:58.900 --> 00:01:59.940
<v Mira>um mal kurz vorbeizukommen.

00:02:00.300 --> 00:02:02.860
<v Dominik>Und die Deutsche Bahn hatte ich letztes Wochenende wieder von Berlin hierher.

00:02:02.920 --> 00:02:04.000
<v Dominik>Das war wieder hervorragend.

00:02:05.540 --> 00:02:06.780
<v Mira>Ja, sollte man sich einfach

00:02:06.780 --> 00:02:08.580
<v Mira>ein paar gute Podcasts vorher mitnehmen.

00:02:09.340 --> 00:02:10.340
<v Mira>Wir haben ja noch ein paar.

00:02:10.540 --> 00:02:11.840
<v Dominik>Vielleicht habt ihr noch nicht alle gehört.

00:02:13.460 --> 00:02:14.740
<v Mira>Ja, da kann man

00:02:14.740 --> 00:02:16.440
<v Mira>dann schon noch ein bisschen länger Bahn fahren.

00:02:18.220 --> 00:02:18.720
<v Mira>Ja, und

00:02:18.720 --> 00:02:20.620
<v Mira>aktuell bin ich

00:02:20.620 --> 00:02:22.440
<v Mira>witzigerweise, also ich habe

00:02:22.440 --> 00:02:24.520
<v Mira>erst viel Data Science gemacht, bin dann immer mehr

00:02:24.520 --> 00:02:26.460
<v Mira>auch in die Projektleitung gegangen und da

00:02:26.460 --> 00:02:28.080
<v Mira>passt es dann ja auch wieder mit der Psychologie

00:02:28.080 --> 00:02:30.820
<v Mira>und jetzt bin ich aber witzigerweise

00:02:30.820 --> 00:02:32.360
<v Mira>so ein bisschen back to the roots, bin im

00:02:32.360 --> 00:02:34.620
<v Mira>Kundenprojekt drin, so Body Leasing mäßig

00:02:34.620 --> 00:02:36.460
<v Mira>dort mit im Team und

00:02:36.460 --> 00:02:38.340
<v Mira>bin dann klassisch als Data Scientist im Team

00:02:38.340 --> 00:02:40.140
<v Mira>drin und das macht mir auch ganz großen Spaß.

00:02:41.320 --> 00:02:42.340
<v Mira>Wir haben teilweise länger

00:02:42.340 --> 00:02:44.460
<v Mira>laufende Projekte, aber auch manchmal Einzelprojekte,

00:02:44.520 --> 00:02:46.560
<v Mira>die nur ein paar Monate sind und das ist natürlich auch total spannend,

00:02:46.660 --> 00:02:48.720
<v Mira>weil man dann sehr viel Abwechslung

00:02:48.720 --> 00:02:50.240
<v Mira>hat und in verschiedene Themen

00:02:50.240 --> 00:02:52.420
<v Mira>reinkommt und

00:02:52.420 --> 00:02:57.340
<v Mira>Und wir haben auch einen Podcast, das ist der Grund, warum ich jetzt hier sitze und ihr mich kennt.

00:02:58.260 --> 00:03:01.740
<v Mira>Ein Unternehmenspodcast, in dem ich manchmal, aber auch noch immer zuhören bin,

00:03:01.800 --> 00:03:06.360
<v Mira>wo wir ganz viele Themen rund um Data Science besprechen, den Data Science Deep Dive.

00:03:06.500 --> 00:03:07.300
<v Dominik>Genau, das war sehr spannend.

00:03:07.320 --> 00:03:08.680
<v Dominik>Ja, habe ich auch schon reingehört, fand ich sehr gut.

00:03:08.860 --> 00:03:09.860
<v Dominik>Ja, gut.

00:03:10.460 --> 00:03:12.020
<v Dominik>Also, was ist denn eigentlich Data Science?

00:03:12.860 --> 00:03:18.080
<v Mira>Ja, also ganz geschwollen ausgedrückt, wir wollen Erkenntnisse aus Daten gewinnen.

00:03:18.080 --> 00:03:21.080
<v Mira>Das ist jetzt auch irgendwie ziemlich allgemein, aber es geht darum, dass man Dinge versteht,

00:03:21.680 --> 00:03:26.100
<v Mira>dass man auch Dinge vorher sagt und dass man teilweise sogar Entscheidungen dann trifft,

00:03:26.520 --> 00:03:30.300
<v Mira>entweder noch manuell oder sogar automatisiert auf Basis von Daten.

00:03:31.220 --> 00:03:36.000
<v Mira>Oder anders gesagt, man will halt aus großen und oft komplexen Datensätzen Muster erkennen,

00:03:36.000 --> 00:03:40.140
<v Mira>die man jetzt mit bloßem Auge überhaupt nicht erkennen könnte, nur erkennt, wenn man eine Analyse macht.

00:03:40.260 --> 00:03:45.340
<v Dominik>Also tatsächlich Statistik im weiteren Sinne, wie man das halt dann in der Psychologie oder in der Geometrie oder so.

00:03:45.440 --> 00:03:52.120
<v Mira>Auf jeden Fall, ja, ein Teil ist ja auch so, manche sagen, Statistik oder Machine Learning, das überschneidet sich aber an ganz vielen Stellen.

00:03:53.140 --> 00:03:54.620
<v Dominik>Ja, klar.

00:03:54.920 --> 00:03:58.740
<v Mira>Man sagt ja auch oft, man braucht so drei Bereiche. Das eine ist die fachliche Expertise.

00:03:58.740 --> 00:04:08.360
<v Mira>Also ich kenne mich zum Beispiel aus mit, ja, einfach mit dem Bereich, in dem ich gerade was mache, zum Beispiel Umweltdaten oder Verkaufsdaten, Online-Shopping, was auch immer.

00:04:08.760 --> 00:04:15.420
<v Mira>Das zweite sind methodische Kenntnisse. Da sind wir halt bei dem Thema Statistik, Machine Learning, haben Leute natürlich auch unterschiedliche Schwerpunkte.

00:04:15.440 --> 00:04:19.080
<v Mira>Also manche sind mehr mit Bilddaten unterwegs, mit Text, mit tabularen Daten.

00:04:19.260 --> 00:04:20.360
<v Mira>Da bin ich vor allem unterwegs.

00:04:20.780 --> 00:04:24.620
<v Mira>Und das Dritte ist, dass man natürlich auch Coding-Kenntnisse braucht.

00:04:24.860 --> 00:04:29.940
<v Mira>Also das, was aus der Informatik kommt, damit man seine Analysen irgendwie programmieren kann.

00:04:30.480 --> 00:04:34.600
<v Mira>Es ist natürlich irgendwie auch fast zu viel verlangt, das alles gleichzeitig zu können.

00:04:34.600 --> 00:04:38.980
<v Mira>Also, dass ich super gut coden kann, dass ich auch noch super gut in Statistiken und Maschinen bin

00:04:38.980 --> 00:04:44.280
<v Mira>und dann gleichzeitig noch in dem Fachbereich so lange unterwegs bin, dass ich mich da wahnsinnig gut auskenne.

00:04:44.880 --> 00:04:52.920
<v Mira>Ist ja doch ziemlich viel, das schafft man vielleicht nach ein paar Jahren, aber deswegen sind wir auch meistens in Teams unterwegs oder wir als Beratung.

00:04:52.980 --> 00:05:05.980
<v Mira>Wir sind natürlich daran gewöhnt, dass wir uns schnell in neue Themen reinfinden, trotzdem brauchen wir in einem neuen Projekt natürlich ganz viel Kommunikation mit unseren KundInnen, die uns auch ihre Fachexpertise dann mitgeben, wenn wir dann vor allem die methodischen Kenntnisse und das Coding mitbringen.

00:05:06.040 --> 00:05:12.640
<v Dominik>Das finde ich auch immer am schwierigsten mit Kunden, also die Domain-Knowledge dann zu haben oder jemanden zu haben, mit dem man darüber reden kann.

00:05:12.680 --> 00:05:13.720
<v Jochen>Gemeinsame Sprache zu finden.

00:05:13.720 --> 00:05:24.200
<v Dominik>Genau, auf dem Level, dass man halt versteht, was man gegenseitig voneinander will oder was man bereitstellen kann oder wie lange das dauert und Sachen, die man auf der einen Seite für einfach hält, sind auf der anderen Seite vielleicht ein bisschen schwieriger.

00:05:24.520 --> 00:05:30.660
<v Jochen>Aber ihr seid dann auch meistens tatsächlich, du hast es eben schon angesprochen, Body Leasing, also quasi in den Teams selber unterwegs.

00:05:32.300 --> 00:05:32.700
<v Jochen>Unterschiedlich.

00:05:32.700 --> 00:05:40.780
<v Jochen>Achso, oder ihr setzt auch Projekte komplett um für Kunden als Team sozusagen und gebt dann ein Produkt an den Kunden oder so.

00:05:41.780 --> 00:05:45.500
<v Jochen>Ja, sehr, sehr unterschiedlich.

00:05:45.660 --> 00:05:50.180
<v Mira>Also wir sind für einen langjährigen Kunden sind wir eigentlich fast so wie eine zweite Data Science Abteilung.

00:05:50.260 --> 00:05:54.100
<v Mira>Wir haben auch selbst eine Data Science Abteilung, aber die Aufgaben sind dann so verteilt.

00:05:54.760 --> 00:05:58.500
<v Mira>Und da machen wir auch den kompletten Betrieb und die Wartung mit.

00:05:58.500 --> 00:06:15.920
<v Mira>Also wir machen nicht nur die reine Data Science, sondern auch alles, was im DevOps-Bereich anfällt. Ich bin aber mehr im Data Science-Bereich unterwegs. Und wir haben eben ja auch zunehmend das Thema Body Leasing. Das war früher irgendwie kaum, weil früher hatten viele Unternehmen auch selbst keine Data Science-Abteilung.

00:06:15.920 --> 00:06:35.620
<v Mira>Und da gab es eine Zeit, da waren die halt alle irgendwie ganz verzweifelt und waren dann total froh, dass es jemand für sie macht. Und inzwischen ist es eher so, dass die Unternehmen, die groß sind und die überhaupt von der Kultur her in Richtung datenbasiertes Unternehmen gehen, die haben jetzt eine Data Science Abteilung, aber die haben dann halt hier und da mal Lücken und finden niemanden und nehmen uns dann dann dazu.

00:06:38.280 --> 00:06:56.340
<v Dominik>Wenn du jetzt Methoden angesprochen hast, was würdest du denn sagen, wie ist das denn in der Praxis? Habt ihr da viel mit sophisticated Methoden noch zu tun, die ihr jetzt aus der Uni oder so noch kennt? Oder ist das meistens dann schon einfaches Zeugs, weil einfach die Datenprobleme andere sind, als jetzt gute Methoden auszusuchen?

00:06:56.920 --> 00:07:16.000
<v Mira>Es ist tatsächlich oft ziemlich anspruchsvoll. Ich glaube, das sind aber auch so die Projekte, die wir uns rauspicken oder für die wir dann auch weiter empfohlen werden. Wir haben zum Beispiel was im Sportwettenbereich und da kann man sich ja vorstellen, wenn man mal überlegt, wie sag ich eigentlich vorher, wie viele Tore von diesen beiden Mannschaften in diesem Spiel fallen und wie viel in der ersten und zweiten Halbzeit und so.

00:07:16.000 --> 00:07:21.620
<v Mira>Es wird schon ganz schön kompliziert und da haben dann die Leute mit Statistical Code auch ganz schön Spaß.

00:07:22.840 --> 00:07:27.220
<v Mira>Manchmal sind die Sachen halt noch ein bisschen simpler, aber oft wird es dann doch irgendwie schon ein bisschen komplexer.

00:07:27.800 --> 00:07:30.400
<v Mira>Wir sind aber auch tatsächlich darauf spezialisiert.

00:07:30.560 --> 00:07:36.060
<v Mira>Also es gibt ja auch ganz viele Sachen, wo vielleicht auch erstmal eine gute Visualisierung ausreicht.

00:07:36.600 --> 00:07:43.080
<v Mira>Visualisierung machen wir natürlich auch mit, aber ein Projekt, wo es nur um Dashboard mit Visualisierung geht, landet seltener bei uns.

00:07:45.020 --> 00:08:02.840
<v Dominik>Ja, wie kommt man denn eigentlich zur Data Science? Du hast gesagt, du hast Psychologie studiert und dann fandst du Statistik spannend. Ich habe vorher auch Wirtschaftslehre studiert und da fand ich auch Statistik eigentlich spannend. Es hat bei mir noch ein bisschen Umweg gebraucht, aber ich glaube auch da hätte man direkt den Weg Richtung Data Science finden können.

00:08:03.400 --> 00:08:25.460
<v Mira>Ja, auf jeden Fall. Also das ist auch so ein typischer Hintergrund. Ich habe ja in dem Statistikmaß, da waren viele, die vorher Mathe gemacht haben, aber auch viele mit ganz anderen Hintergründen, viel Wirtschaftswissenschaften. Ich habe auch KollegInnen mit Soziologie-Hintergrund oder Physik. Ich glaube, das ist sogar so ein bisschen ein Klassiker, dass die Physiker sich irgendwie dann in die Statistik- und Machine Learning-Welt verirren.

00:08:26.260 --> 00:08:40.280
<v Mira>Und wir haben noch gar nicht so lang, haben wir auch jemanden mit Informatik-Hintergrund. Das klingt irgendwie witzig, aber tatsächlich habe ich vorher nur Leute, also der ist jetzt schon, ich glaube schon drei Jahre bei uns, aber ja, vorher hatten wir nur Leute mit einem anderen Hintergrund.

00:08:40.280 --> 00:08:50.760
<v Mira>Und ich glaube, es ist aber ein bisschen schwieriger geworden, quer einzusteigen, weil es inzwischen ja sehr viele tatsächlich Data Science Studiengänge gibt oder Informatik mit ganz starkem Machine Learning Schwerpunkt.

00:08:50.760 --> 00:09:01.520
<v Mira>Und wenn man dann sagt, ja, ich habe BWL studiert und ich finde Statistik gut und habe ein paar Kurse gemacht, dann konkurriert man halt inzwischen mit Leuten, die da leider dann schon viel, viel mehr mitbringen.

00:09:01.640 --> 00:09:03.180
<v Mira>Also ich glaube, das ist schon schwieriger geworden.

00:09:04.220 --> 00:09:06.260
<v Dominik>Ja, aber der BWL ist ja auch nicht VWL zum Beispiel.

00:09:07.180 --> 00:09:12.960
<v Mira>Ja, ich weiß. Aber es ist ja auch ein Fach, wo man ja doch, je nachdem, wie man sich da orientiert, viel Statistik machen kann.

00:09:12.960 --> 00:09:20.080
<v Dominik>Ja, also Ökonometrie kann man schon tief reingehen, glaube ich da. Es ist halt die Frage, wie gut man dann in das Programmieren reinkommt und in das, was man da an Methoden noch so mitbringt.

00:09:20.980 --> 00:09:36.240
<v Jochen>Ja, aber das ist auf jeden Fall eine interessante Geschichte. Das habe ich auf jeden Fall, auf jeden Fall in den Data Science Projekten, in denen ich so unterwegs war, halt auch irgendwie immer wieder gesehen, dass halt oft die Leute, also ich weiß nicht, wie das bei euch ist, ob ihr, weil normalerweise Softwareentwicklungsgeschichten, die ich so mache,

00:09:36.460 --> 00:09:38.300
<v Jochen>Da habe ich dann halt eben mit Abteilungen

00:09:38.300 --> 00:09:40.140
<v Jochen>zu tun, die halt irgendwie Softwareentwicklung machen

00:09:40.140 --> 00:09:41.720
<v Jochen>oder so, aber bei den Data Science-Geschichten

00:09:41.720 --> 00:09:44.240
<v Jochen>ist es immer sowas wie Business Intelligence

00:09:44.240 --> 00:09:45.940
<v Jochen>oder so. Und das sind andere Leute,

00:09:46.060 --> 00:09:47.720
<v Jochen>das sind ein bisschen so, die sind so ähnlich,

00:09:48.080 --> 00:09:50.220
<v Jochen>also das sind oft irgendwie Leute, die was Naturwissenschaftliches

00:09:50.220 --> 00:09:52.120
<v Jochen>studiert haben oder so, dann da promoviert haben.

00:09:52.880 --> 00:09:53.660
<v Jochen>Genau, ganz oft

00:09:53.660 --> 00:09:55.180
<v Jochen>aus der Ecke eher.

00:09:55.940 --> 00:09:57.060
<v Jochen>Und die eher so, ja,

00:09:58.320 --> 00:09:59.540
<v Jochen>Analysten

00:09:59.540 --> 00:10:02.200
<v Jochen>Dinge tun, oft viel

00:10:02.200 --> 00:10:03.140
<v Jochen>SQL schreiben und so.

00:10:03.660 --> 00:10:05.180
<v Jochen>Und das ist irgendwie ein bisschen anders

00:10:05.180 --> 00:10:06.460
<v Jochen>als bei den Softwareentwicklern.

00:10:06.560 --> 00:10:08.640
<v Jochen>Und die haben auch meistens oft so ein bisschen so,

00:10:08.920 --> 00:10:10.060
<v Jochen>ja, Produkte entwickeln oder so,

00:10:10.120 --> 00:10:11.260
<v Jochen>ist jetzt eigentlich nicht so unser Ding.

00:10:11.980 --> 00:10:14.340
<v Jochen>Genau, und das ist irgendwie eine etwas andere Welt.

00:10:14.500 --> 00:10:15.380
<v Jochen>Also da gibt es oft eine Trennung

00:10:15.380 --> 00:10:18.900
<v Jochen>zwischen Softwareentwicklung und eben in diesem ganzen...

00:10:18.900 --> 00:10:20.360
<v Dominik>Und da wolltest du ja auch noch mal was zu sagen,

00:10:20.460 --> 00:10:21.200
<v Dominik>wie du das so findest,

00:10:21.260 --> 00:10:22.760
<v Dominik>mit so Softwareentwicklern zusammenzuarbeiten.

00:10:23.660 --> 00:10:24.500
<v Mira>Aber vielleicht noch erst dazu,

00:10:24.580 --> 00:10:26.300
<v Mira>ich glaube, wir sind da irgendwie so dazwischen,

00:10:26.400 --> 00:10:29.400
<v Mira>weil wir eben ja schon Datenprodukte bauen wollen.

00:10:29.400 --> 00:10:32.520
<v Mira>Also es gibt auch mal ein POC oder irgendwie so eine einzelne Analyse,

00:10:32.640 --> 00:10:34.220
<v Mira>wo wir dann sagen, so und das sind die Ergebnisse

00:10:34.220 --> 00:10:36.740
<v Mira>und hier sind die Zusammenhänge, aber normalerweise

00:10:36.740 --> 00:10:38.260
<v Mira>sind das dann schon, also

00:10:38.260 --> 00:10:39.680
<v Mira>schreiben wir auch Software,

00:10:40.360 --> 00:10:42.280
<v Mira>aber wir schreiben Software, die was mit Daten macht.

00:10:43.200 --> 00:10:44.300
<v Mira>Also dann

00:10:44.300 --> 00:10:45.640
<v Mira>sind zwei Sachen zusammen

00:10:45.640 --> 00:10:49.220
<v Mira>und BI-Abteilungen

00:10:49.220 --> 00:10:50.640
<v Mira>sind, glaube ich, auch noch mal mehr,

00:10:51.340 --> 00:10:52.740
<v Mira>ja, die sind halt besonders gut darin,

00:10:52.780 --> 00:10:54.640
<v Mira>dann auch ganz viel visuell

00:10:54.640 --> 00:10:56.620
<v Mira>zu analysieren und fokussieren

00:10:56.620 --> 00:10:57.720
<v Mira>sich sehr stark darauf.

00:10:58.360 --> 00:10:59.700
<v Mira>Und ich glaube, die sind auch noch mal so ein bisschen,

00:11:00.340 --> 00:11:02.040
<v Mira>vielleicht noch ein bisschen weniger nerdig,

00:11:02.720 --> 00:11:03.960
<v Mira>hätte ich jetzt so gedacht.

00:11:04.220 --> 00:11:05.140
<v Mira>so Mitte.

00:11:06.520 --> 00:11:07.980
<v Dominik>Das klingt, als wäre es kein Kompliment.

00:11:08.780 --> 00:11:09.840
<v Jochen>Ich weiß nicht, ich dachte eben, ne.

00:11:11.200 --> 00:11:12.780
<v Jochen>Das ist das, ohne Wertung zu sagen.

00:11:14.740 --> 00:11:15.820
<v Jochen>Oh, ja.

00:11:16.540 --> 00:11:18.540
<v Mira>Ja, aber, was du eben

00:11:18.540 --> 00:11:20.000
<v Mira>gefragt hattest, so,

00:11:20.580 --> 00:11:22.540
<v Mira>das ist auch jetzt ganz spannend, ich bin jetzt im

00:11:22.540 --> 00:11:24.180
<v Mira>Team, wo eigentlich relativ klar

00:11:24.180 --> 00:11:26.300
<v Mira>zugeordnet ist, wer ist Data Scientist und wer

00:11:26.300 --> 00:11:27.860
<v Mira>ist Software Engineer

00:11:27.860 --> 00:11:30.340
<v Mira>und natürlich arbeiten wir alle an dem

00:11:30.340 --> 00:11:31.720
<v Mira>Code, aber

00:11:31.720 --> 00:11:34.140
<v Mira>es gibt

00:11:34.140 --> 00:11:35.900
<v Mira>irgendwie so ein paar Klischees oder so Dinge,

00:11:35.960 --> 00:11:37.840
<v Mira>die man vielleicht beobachtet, wenn

00:11:37.840 --> 00:11:39.800
<v Mira>jemand, der vor allem einen

00:11:39.800 --> 00:11:41.960
<v Mira>Softwareentwicklungshintergrund hat, jetzt zum ersten

00:11:41.960 --> 00:11:43.860
<v Mira>Mal versucht, Daten zu analysieren

00:11:43.860 --> 00:11:45.040
<v Mira>und Data Science zu machen.

00:11:45.740 --> 00:11:47.700
<v Mira>Wir haben auch mal ein Projekt übernommen, wo

00:11:47.700 --> 00:11:49.000
<v Mira>wir entsprechenden Code

00:11:49.000 --> 00:11:52.100
<v Mira>dann, tatsächlich sollte man ja refactoren

00:11:52.100 --> 00:11:53.720
<v Mira>und wir haben auch viel refactored, aber da haben wir

00:11:53.720 --> 00:11:54.900
<v Mira>einen Teil wirklich neu geschrieben.

00:11:57.380 --> 00:11:57.820
<v Mira>Und

00:11:57.820 --> 00:11:58.640
<v Mira>das, also

00:11:58.640 --> 00:12:01.500
<v Mira>am Coding-Stil hat man schon gesehen, dass der einfach

00:12:01.500 --> 00:12:03.560
<v Mira>gar nicht wusste, dass man mit Datensätzen

00:12:03.560 --> 00:12:05.360
<v Mira>Sachen machen kann. Der hat halt immer ganz

00:12:05.360 --> 00:12:07.700
<v Mira>viel gedubt über Zeilen und Spalten

00:12:07.700 --> 00:12:09.220
<v Mira>und so, weil er halt einfach diese ganzen

00:12:09.220 --> 00:12:11.480
<v Mira>Sachen nicht kannte, die man mit Datensätzen

00:12:11.480 --> 00:12:12.960
<v Mira>machen kann, vor allem mit Pandas.

00:12:13.640 --> 00:12:15.780
<v Mira>Und was sonst auch, wenn man zusammenarbeitet

00:12:15.780 --> 00:12:17.020
<v Mira>halt oft passiert, ist,

00:12:17.640 --> 00:12:19.400
<v Mira>dass jemand, der nicht viel mit Daten gearbeitet

00:12:19.400 --> 00:12:21.480
<v Mira>hat, die Ergebnisse halt so nimmt, wie sie

00:12:21.480 --> 00:12:23.460
<v Mira>sind und da irgendwie ganz unkritisch ist

00:12:23.460 --> 00:12:25.320
<v Mira>und gar nicht sieht, wenn

00:12:25.320 --> 00:12:27.300
<v Mira>irgendwelche Zahlen ganz komisch aussehen.

00:12:27.820 --> 00:12:29.520
<v Mira>Und manchmal ist ja vielleicht

00:12:29.520 --> 00:12:31.480
<v Mira>der Code gar nicht falsch, aber

00:12:31.480 --> 00:12:34.020
<v Mira>irgendwo ein Denkfehler drin, also der Code

00:12:34.020 --> 00:12:35.880
<v Mira>macht, was er soll, nur das, was er soll, ist halt vielleicht

00:12:35.880 --> 00:12:38.120
<v Mira>gar nicht so korrekt oder man hat

00:12:38.120 --> 00:12:40.080
<v Mira>ein Missverständnis zu den Daten, man hat

00:12:40.080 --> 00:12:41.560
<v Mira>irgendeine Annahme, aber in Wirklichkeit

00:12:41.560 --> 00:12:43.020
<v Mira>ist es ein bisschen anders

00:12:43.020 --> 00:12:46.660
<v Mira>und das ist was, was

00:12:46.660 --> 00:12:47.980
<v Mira>dann, glaube ich, schwer fällt, also ich glaube,

00:12:48.060 --> 00:12:50.060
<v Mira>das fällt einem als Data Scientist auch schon

00:12:50.060 --> 00:12:51.460
<v Mira>manchmal schwer, so richtig dieses

00:12:51.460 --> 00:12:53.420
<v Mira>Business Understanding aufzubauen,

00:12:53.940 --> 00:12:55.800
<v Mira>aber ja, also

00:12:55.800 --> 00:12:57.820
<v Mira>wenn man so reine Softwareentwicklung macht, ist es, glaube ich,

00:12:57.940 --> 00:12:59.900
<v Mira>nochmal schwieriger, in den Daten drin zu sein

00:12:59.900 --> 00:13:01.580
<v Mira>und die zu interpretieren und zu sagen, Moment mal,

00:13:01.700 --> 00:13:03.180
<v Mira>also die Kurve sieht auch echt komisch aus.

00:13:04.220 --> 00:13:05.840
<v Mira>Aber also eigentlich mag ich es

00:13:05.840 --> 00:13:07.960
<v Mira>total gerne, wenn das Team gemischt ist,

00:13:08.080 --> 00:13:08.380
<v Mira>weil

00:13:08.380 --> 00:13:11.640
<v Mira>auch nicht alle Data Scientists so richtig

00:13:11.640 --> 00:13:13.780
<v Mira>auf guten Code achten. Also es ist

00:13:13.780 --> 00:13:15.900
<v Mira>uns sehr wichtig und wenn jemand

00:13:15.900 --> 00:13:17.600
<v Mira>halt noch nicht so gut programmieren kann

00:13:17.600 --> 00:13:19.720
<v Mira>und aus dem Stream kommt und bald einsteigt, dann ist

00:13:19.720 --> 00:13:21.860
<v Mira>das das, was die Person dann lernt, so wie ich damals.

00:13:23.860 --> 00:13:25.700
<v Mira>Aber ich glaube, das ist auch nicht überall so

00:13:25.700 --> 00:13:27.640
<v Mira>verbreitet, weil manche haben dann eher einen Schwerpunkt auf

00:13:27.640 --> 00:13:29.640
<v Mira>so Datenanalysen, sind viel Notebooks unterwegs

00:13:29.640 --> 00:13:31.440
<v Mira>und wenn sie dann fertig sind, dann wird das Notebook

00:13:31.440 --> 00:13:33.620
<v Mira>in irgendeinen Job eingebunden und das ist

00:13:33.620 --> 00:13:35.240
<v Mira>dann die Automatisierung und das

00:13:35.240 --> 00:13:37.540
<v Mira>kann manchmal funktionieren, aber oft ist

00:13:37.540 --> 00:13:38.380
<v Mira>es auch ziemlich wackelig.

00:13:41.040 --> 00:13:41.400
<v Jochen>Ja,

00:13:41.580 --> 00:13:43.060
<v Jochen>interessant. Also da ist auf jeden Fall

00:13:43.060 --> 00:13:44.380
<v Jochen>oft so ein bisschen

00:13:44.380 --> 00:13:47.000
<v Jochen>ein Graben zwischen den

00:13:47.000 --> 00:13:49.460
<v Jochen>Welten. Also wenn ich

00:13:49.460 --> 00:13:51.320
<v Dominik>das immer sehe, was so Data Scientists schreiben,

00:13:51.580 --> 00:13:52.860
<v Dominik>dann stag ich immer die Hände über dem Kopf.

00:13:53.000 --> 00:13:54.780
<v Dominik>Es gibt natürlich Unterschiede,

00:13:54.920 --> 00:13:57.340
<v Dominik>aber das ist immer so im Vergleich eher

00:13:57.340 --> 00:13:58.780
<v Dominik>anders

00:13:58.780 --> 00:14:00.840
<v Dominik>als ich das machen würde wahrscheinlich.

00:14:01.620 --> 00:14:03.360
<v Dominik>Also man schreibt als Data Science oft so die ganzen Prozesse

00:14:03.360 --> 00:14:05.400
<v Dominik>untereinander und muss erst mal lernen,

00:14:05.400 --> 00:14:06.760
<v Dominik>die Methoden zu definieren und so, ja.

00:14:07.400 --> 00:14:09.080
<v Mira>Und warum soll man denn, also wenn man

00:14:09.080 --> 00:14:11.400
<v Mira>das nur einmal macht, warum soll man denn eine Funktion schreiben?

00:14:11.660 --> 00:14:13.360
<v Mira>Und man kann es ja Zeit für Zeit ausführen

00:14:13.360 --> 00:14:15.420
<v Mira>und die Funktion braucht man ja nur, wenn man

00:14:15.420 --> 00:14:16.340
<v Mira>zweimal dasselbe macht.

00:14:17.260 --> 00:14:19.320
<v Mira>So ist dann, glaube ich, manchmal die Denkweise, wenn man

00:14:19.320 --> 00:14:21.580
<v Mira>eben mehr aus der Analyse kommt

00:14:21.580 --> 00:14:22.800
<v Mira>und da so quer einsteigt.

00:14:23.420 --> 00:14:25.600
<v Mira>Ich finde das immer einfach, wenn Leute schon promoviert

00:14:25.600 --> 00:14:27.020
<v Mira>haben und das ist, die haben

00:14:27.020 --> 00:14:29.560
<v Mira>total krasse Sachen gemacht, aber können dann halt

00:14:29.560 --> 00:14:31.540
<v Mira>auch keinen guten Code schreiben, weil es für die

00:14:31.540 --> 00:14:33.460
<v Mira>Doktorarbeit eben ganz andere Anforderungen hat.

00:14:34.140 --> 00:14:35.400
<v Jochen>Ja, da ist auch oft, also

00:14:35.400 --> 00:14:37.520
<v Jochen>gerade Physiker, die sind

00:14:37.520 --> 00:14:39.180
<v Jochen>da ja oft eher so verdorben, die haben dann irgendwie

00:14:39.180 --> 00:14:40.820
<v Jochen>Vortragen geschrieben oder sowas.

00:14:41.620 --> 00:14:43.560
<v Jochen>Oder C++, ist auch nicht

00:14:43.560 --> 00:14:45.620
<v Jochen>viel besser. Und dann, ja genau,

00:14:45.700 --> 00:14:47.380
<v Jochen>bringen sie da so schlechte Gewohnheiten mit.

00:14:48.040 --> 00:14:49.540
<v Jochen>Das ist natürlich ja oft

00:14:49.540 --> 00:14:51.300
<v Jochen>irgendwie so ein bisschen, ja, aber

00:14:51.300 --> 00:14:53.460
<v Jochen>ja, ja. Aber das ist auch so ein bisschen, man lernt

00:14:53.460 --> 00:14:55.360
<v Jochen>das ja auch nirgendwo, außer wenn man jetzt irgendwie

00:14:55.360 --> 00:14:57.480
<v Jochen>quasi bei einer Firma anfängt, die das halt

00:14:57.480 --> 00:14:59.420
<v Jochen>auch irgendwie täglich macht oder so. Bei den meisten

00:14:59.420 --> 00:15:01.160
<v Jochen>Firmen gibt es ja da gar keine Kultur und

00:15:01.160 --> 00:15:03.440
<v Jochen>ja, also es ist irgendwie

00:15:03.440 --> 00:15:05.240
<v Jochen>ja, es ist irgendwie, also dieses

00:15:05.240 --> 00:15:07.440
<v Jochen>Handwerkszeug ist ein Problem oft, das denke

00:15:07.440 --> 00:15:09.180
<v Dominik>ich auch. Was nervt dich denn an Leuten, die

00:15:09.180 --> 00:15:11.540
<v Dominik>Softwareentwicklung gemacht haben und jetzt Data Scientist

00:15:11.540 --> 00:15:13.200
<v Jochen>sind? Ja, das ist auch interessant.

00:15:13.540 --> 00:15:15.440
<v Mira>Also ja, also die Sachen, die ich gerade

00:15:15.440 --> 00:15:17.100
<v Mira>genannt habe, also es ist oft so,

00:15:17.420 --> 00:15:19.580
<v Mira>die Ergebnisse so unkritisch beurteilt werden,

00:15:19.720 --> 00:15:21.440
<v Mira>dass man eigentlich nur guckt, ob der Code richtig

00:15:21.440 --> 00:15:23.340
<v Mira>läuft und das

00:15:23.340 --> 00:15:24.720
<v Mira>macht, was man implementieren wollte.

00:15:25.360 --> 00:15:33.740
<v Mira>Und dass eben, ja, man dann nicht unbedingt erkennt, dass die Ergebnisse eigentlich unplausibel sind, zum Beispiel, dass das Modell viel zu gut ist und da muss irgendwo was falsch sein.

00:15:33.820 --> 00:15:36.960
<v Dominik>Die Kirchturmspitze ist 245 Meter im Minus.

00:15:37.780 --> 00:15:37.960
<v Mira>Bitte?

00:15:38.440 --> 00:15:45.080
<v Dominik>Du könntest erst mal die Kirchturmspitze ausrechnen, dass die Höhe dann 245 im Minus ist. Und wenn man das dann einfach so übernimmt und daran glaubt.

00:15:45.080 --> 00:16:03.160
<v Mira>Ja, genau. Das ist natürlich ein gutes Beispiel. Und manchmal habe ich auch den Eindruck, dass dann wiederum, wenn man sehr stolz auf seine Software-Entwicklungskills ist, dass dann auch unnötig komplizierte Patterns auf irgendwelche Sachen geworfen werden und das dann auch wieder so pragmatisch ist und sehr schwer wartbar.

00:16:04.020 --> 00:16:16.720
<v Jochen>Ja klar, weil die Leute, die das dann letztlich irgendwie ja benutzen müssen, müssen das ja auch lesen und verstehen können und so. Und wenn man dann irgendwas in einem Elfenbeinturm baut, dann war das vielleicht auch einfach am Ziel vorbei.

00:16:17.160 --> 00:16:20.200
<v Dominik>Wenn man auch neue Pattern gelernt hat, muss man die auch erstmal überall anwenden, ja.

00:16:20.280 --> 00:16:21.500
<v Dominik>Ja klar, das sollte ich auch machen.

00:16:24.300 --> 00:16:29.140
<v Mira>Ja, aber grundsätzlich macht mir das eigentlich total Spaß, mit Mitarbeiterentwicklern zusammenzuarbeiten.

00:16:30.200 --> 00:16:41.960
<v Dominik>Du hast gesagt, er visualisiert Sachen zwar nicht so oft, nicht so gerne, aber er macht das. Wie denn? Also ich kenne irgendwie so eine coole Seite, die wollte ich irgendwie nochmal senden, das ist irgendwie datatowiss.com oder sowas. Die benutze ich immer, wenn ich nicht weiß.

00:16:41.960 --> 00:16:42.920
<v Mira>Das sagen sie so gerne.

00:16:45.480 --> 00:16:47.400
<v Mira>Aber man macht es sich die ganze Zeit.

00:16:47.600 --> 00:16:50.000
<v Mira>Aber es ist an verschiedenen Stellen eigentlich total wichtig.

00:16:50.220 --> 00:16:52.420
<v Mira>Also zuerst mal, wenn man die Daten reinbekommt,

00:16:52.980 --> 00:16:55.720
<v Mira>dann sind wir jetzt eigentlich schon so mitten im typischen Ablauf.

00:16:55.860 --> 00:16:57.340
<v Mira>Aber ich kann da, da wollen wir zwar noch drüber sprechen,

00:16:57.420 --> 00:16:58.420
<v Mira>aber ich kann da gerne mal vorgreifen.

00:16:58.520 --> 00:17:00.220
<v Mira>Also wenn die Daten reinkommen und man gucken will,

00:17:00.300 --> 00:17:03.780
<v Mira>ob die sinnvoll sind, wenn man die Daten kennenlernen will,

00:17:03.880 --> 00:17:05.060
<v Mira>Zusammenhänge prüfen und so,

00:17:05.120 --> 00:17:07.240
<v Mira>dann ist natürlich Visualisierung einfach das Allerbeste.

00:17:07.240 --> 00:17:11.500
<v Mira>Klar ist auch ganz nett, so Mittelwerte und Ausgleichsabmessungen

00:17:11.500 --> 00:17:12.660
<v Mira>Minimum zu sich anzugucken.

00:17:13.320 --> 00:17:15.360
<v Mira>Zum Beispiel, ob der kleinste Kirchturm auch wirklich

00:17:15.360 --> 00:17:17.540
<v Mira>größer als 0 Meter ist. Aber es macht natürlich

00:17:17.540 --> 00:17:19.380
<v Mira>auch total Sinn, sich da die Verteilung mal zu

00:17:19.380 --> 00:17:21.480
<v Mira>plotten und Zusammenhänge. Und das sind auch die Sachen,

00:17:21.580 --> 00:17:23.780
<v Mira>die wir dann oft mit unseren Kunden wiederum anschauen

00:17:23.780 --> 00:17:25.540
<v Mira>und sagen, guck mal hier, die Verteilung, macht die Sinn?

00:17:26.400 --> 00:17:27.440
<v Mira>Und merken dann vielleicht, dass

00:17:27.440 --> 00:17:29.500
<v Mira>da irgendwas in den Daten unsauber ist, was

00:17:29.500 --> 00:17:31.380
<v Mira>halt oft vorkommt, womit man dann aber

00:17:31.380 --> 00:17:33.220
<v Mira>irgendwie umgehen muss. Und

00:17:33.220 --> 00:17:35.500
<v Mira>natürlich auch dann später, wenn wir

00:17:35.500 --> 00:17:37.520
<v Mira>zum Beispiel ein Modell gebaut haben und

00:17:37.520 --> 00:17:39.440
<v Mira>die Ergebnisse untersuchen wollen, wie

00:17:39.440 --> 00:17:41.320
<v Mira>sind unsere Prognosen verteilt, welche

00:17:41.320 --> 00:17:43.420
<v Mira>Zusammenhänge hat das Modell gefunden, auch da

00:17:43.420 --> 00:17:44.980
<v Mira>ist dann natürlich die Visualisierung total

00:17:44.980 --> 00:17:47.580
<v Mira>wichtig und sinnvoll

00:17:47.580 --> 00:17:48.640
<v Mira>oder das einfach,

00:17:49.500 --> 00:17:51.400
<v Mira>man kann es einfach viel, viel, viel schneller erfassen,

00:17:51.540 --> 00:17:53.560
<v Mira>als wenn man das irgendwie alles versucht

00:17:53.560 --> 00:17:55.240
<v Mira>in Tabellen zu vermitteln.

00:17:55.840 --> 00:17:57.440
<v Dominik>Wie visualisiert ihr denn am liebsten?

00:17:59.240 --> 00:17:59.720
<v Mira>Ja,

00:17:59.800 --> 00:18:01.360
<v Mira>es ist irgendwie ganz witzig,

00:18:01.500 --> 00:18:02.720
<v Mira>weil ich in

00:18:02.720 --> 00:18:05.340
<v Mira>Python noch nie so richtig,

00:18:05.960 --> 00:18:07.500
<v Mira>ja gut, so ein bisschen habe ich auch in Python,

00:18:07.680 --> 00:18:10.340
<v Mira>wir haben früher sehr viel

00:18:10.340 --> 00:18:11.620
<v Mira>als doch, da waren auch weniger

00:18:11.620 --> 00:18:14.200
<v Mira>mit Dashboards und so weiter, da war es auch noch so, dass wir

00:18:14.200 --> 00:18:16.220
<v Mira>so einen Datendump bekommen haben und haben damit dann was

00:18:16.220 --> 00:18:18.120
<v Mira>gemacht und da waren wir noch in R unterwegs und haben

00:18:18.120 --> 00:18:19.820
<v Mira>für ggplot2 benutzt

00:18:19.820 --> 00:18:21.620
<v Mira>und

00:18:21.620 --> 00:18:24.400
<v Mira>inzwischen sind wir dann meistens

00:18:24.400 --> 00:18:26.200
<v Mira>in einem Dashboard-System

00:18:26.200 --> 00:18:28.200
<v Mira>unterwegs, das halt beim Kunden

00:18:28.200 --> 00:18:30.060
<v Mira>einfach genutzt wird, sodass wir dann

00:18:30.060 --> 00:18:32.120
<v Mira>in dem Tool, was der

00:18:32.120 --> 00:18:34.020
<v Mira>benutzt, das implementieren,

00:18:34.260 --> 00:18:36.340
<v Mira>weil das jetzt in AWS oder Azure oder was

00:18:36.340 --> 00:18:37.800
<v Mira>auch immer nutzen und wir machen dann da

00:18:37.800 --> 00:18:40.400
<v Mira>das, was da in dem System gewünscht ist.

00:18:41.260 --> 00:18:42.240
<v Mira>Wir haben auch

00:18:42.240 --> 00:18:44.420
<v Mira>ein paar Dashboards mal gebaut in

00:18:44.420 --> 00:18:46.400
<v Mira>ähm, wie heißt das denn jetzt noch?

00:18:47.460 --> 00:18:48.220
<v Mira>Ich hab den Namen lange vergessen.

00:18:48.220 --> 00:18:49.740
<v Mira>Not Lead Dash oder Detail.

00:18:50.060 --> 00:18:52.260
<v Mira>ReDash, genau. ReDash ist ein Open Source

00:18:52.260 --> 00:18:54.140
<v Mira>Tool. Das

00:18:54.140 --> 00:18:56.380
<v Mira>benutzen wir dann auch ganz gerne. Da kann man

00:18:56.380 --> 00:18:58.260
<v Mira>dann auch gerade praktischerweise noch Alarme dazu

00:18:58.260 --> 00:18:59.900
<v Mira>definieren, um seine Daten zu überwachen.

00:19:00.680 --> 00:19:01.960
<v Mira>Das nutzen wir auch sehr gerne.

00:19:02.920 --> 00:19:03.140
<v Dominik>Okay.

00:19:04.240 --> 00:19:05.980
<v Dominik>Und wie läuft denn so ein

00:19:05.980 --> 00:19:08.240
<v Dominik>Prozess bei euch ab? Ihr habt jetzt irgendwie

00:19:08.240 --> 00:19:10.000
<v Dominik>Daten, ich glaube, du wolltest auch nochmal drauf eingehen.

00:19:10.600 --> 00:19:12.420
<v Dominik>Ja, gerne. Und so einen Auftrag und dann?

00:19:13.360 --> 00:19:14.220
<v Mira>Also klar, manchmal

00:19:14.220 --> 00:19:16.100
<v Mira>steigen wir auch mittendrin ein, aber ich fange jetzt

00:19:16.100 --> 00:19:18.140
<v Mira>trotzdem mal vorne an, oft sind wir auch vorne

00:19:18.140 --> 00:19:20.280
<v Mira>dabei. Das ist jetzt vor allem aus meiner

00:19:20.280 --> 00:19:22.280
<v Mira>Sicht als Beraterin, das fühlt sich natürlich ein bisschen

00:19:22.280 --> 00:19:24.340
<v Mira>anders an, wenn man im Unternehmen als Data Science

00:19:24.340 --> 00:19:26.280
<v Mira>die ganze Zeit ist, aber für mich als

00:19:26.280 --> 00:19:28.200
<v Mira>Beraterin sind das so

00:19:28.200 --> 00:19:30.220
<v Mira>ja eigentlich so sieben Schritte. Erstmal

00:19:30.220 --> 00:19:32.200
<v Mira>das Problemverständnis, dann die

00:19:32.200 --> 00:19:34.320
<v Mira>Daten einzusammeln

00:19:34.320 --> 00:19:36.460
<v Mira>und zu verstehen, dann Datenaufbereitung,

00:19:36.560 --> 00:19:38.200
<v Mira>dann kommt die Modellierung. Man merkt schon, es ist nur

00:19:38.200 --> 00:19:40.300
<v Mira>ein Schritt, diese Modellierung. Oft denkt man, das ist zu viel,

00:19:40.380 --> 00:19:41.540
<v Mira>aber es ist nur ein kleiner Schritt.

00:19:42.180 --> 00:19:44.160
<v Mira>Dann die Evaluation des Modells

00:19:44.160 --> 00:19:46.140
<v Mira>und dann gehört eigentlich dazu

00:19:46.140 --> 00:19:48.100
<v Mira>ja auch noch eine Automatisierung und

00:19:48.100 --> 00:19:49.980
<v Mira>Monitoring und Wartung, wobei die letzten

00:19:49.980 --> 00:19:51.700
<v Mira>zwei Schritte natürlich vom Aufwand her nochmal

00:19:51.700 --> 00:19:53.840
<v Mira>einen sehr, sehr großen Teil einnehmen.

00:19:54.460 --> 00:19:56.120
<v Mira>Das ist auch jetzt angelehnt

00:19:56.120 --> 00:19:58.060
<v Mira>an den CRISP-DM, wenn man das

00:19:58.060 --> 00:19:59.880
<v Mira>was sagt. Das ist der Cross-Industry

00:19:59.880 --> 00:20:01.960
<v Mira>Standard Process for Data Mining.

00:20:02.300 --> 00:20:03.880
<v Mira>Data Mining klingt so ein bisschen angestaubt.

00:20:03.960 --> 00:20:10.000
<v Mira>Aber man könnte es halt einfach Datenprojekte nennen.

00:20:12.020 --> 00:20:21.080
<v Mira>Und ja, am Anfang ist es bei uns dann tatsächlich auch so, dass KundInnen zu uns kommen und schon was haben, was sie brauchen.

00:20:21.760 --> 00:20:24.540
<v Mira>Das geht dann auch in die richtige Richtung.

00:20:24.700 --> 00:20:31.500
<v Mira>Manchmal macht es aber trotzdem Sinn, sich das nochmal genauer anzuschauen und zu verstehen, warum sie das brauchen und was sie wirklich brauchen.

00:20:32.480 --> 00:20:34.860
<v Mira>Und vielleicht ist es dann doch so ein bisschen anders.

00:20:36.000 --> 00:20:38.800
<v Mira>Und ich meine, zu diesem Thema kann man ganze Workshops,

00:20:38.880 --> 00:20:39.780
<v Mira>mehrtägige Workshops machen.

00:20:39.840 --> 00:20:41.580
<v Mira>Es gibt ganze Unternehmen, die nichts anderes machen,

00:20:41.740 --> 00:20:43.820
<v Mira>als Use Cases zu identifizieren und zu prüfen.

00:20:44.560 --> 00:20:46.960
<v Mira>Das können wir auch ein Stück weit mitmachen,

00:20:47.040 --> 00:20:48.040
<v Mira>aber das ist nicht unser Schwerpunkt.

00:20:48.220 --> 00:20:49.840
<v Mira>Also ist es meistens dann schon eher so,

00:20:50.000 --> 00:20:51.280
<v Mira>dass da schon Ideen da sind.

00:20:51.380 --> 00:20:53.300
<v Mira>Wir aber das auch alles nochmal so ein bisschen challengen

00:20:53.300 --> 00:20:57.580
<v Mira>und einen Kick-Off haben, wo wir mit dem Kunden sprechen,

00:20:57.680 --> 00:20:59.020
<v Mira>um das Geschäftsmodell zu verstehen,

00:20:59.020 --> 00:21:03.960
<v Mira>um genau zu verstehen, wer das eigentlich nutzen wird, was die genau machen wollen.

00:21:04.380 --> 00:21:08.120
<v Mira>Es ist natürlich total wichtig, dass wir eben prüfen, was brauchen die wirklich genau

00:21:08.120 --> 00:21:11.140
<v Mira>und brauchen die zum Beispiel vielleicht was in Echtzeit, dann ist es natürlich ganz anders,

00:21:11.260 --> 00:21:14.540
<v Mira>als wenn das ausreicht, dass man jeden Morgen einmal aktuelle Werte berechnet.

00:21:15.260 --> 00:21:19.120
<v Mira>Und wer sitzt da und wo benutzen die das genau?

00:21:19.260 --> 00:21:26.680
<v Mira>Ist das irgendwo an einem Counter oder ist es am Telefon oder ist es irgendwo, wo es kein gutes Internet gibt und so.

00:21:26.680 --> 00:21:29.240
<v Mira>Und all das muss man natürlich wissen, um auch rauszufinden, was die brauchen.

00:21:31.060 --> 00:21:34.100
<v Mira>Und dann ist der nächste Schritt, sich zu überlegen, wie können wir das machen

00:21:34.100 --> 00:21:35.760
<v Mira>und haben wir eigentlich auch die passenden Daten?

00:21:36.660 --> 00:21:38.960
<v Mira>Und dann haben wir vielleicht die notwendigen Daten

00:21:38.960 --> 00:21:41.380
<v Mira>und ein paar andere Sachen sind vielleicht nicht ganz so notwendig,

00:21:41.440 --> 00:21:42.560
<v Mira>man kann trotzdem anfangen.

00:21:43.760 --> 00:21:48.560
<v Mira>Ja, das ist der erste Schritt und den sollte man sich unterschätzen.

00:21:48.900 --> 00:21:49.680
<v Dominik>Besorgt ihr die dann auch?

00:21:49.800 --> 00:21:52.040
<v Dominik>Also baut ihr irgendwo neue Sensoren ein oder sowas

00:21:52.040 --> 00:21:54.300
<v Dominik>und kümmert euch darum, dass sie in irgendwelchen Datenbanken landen,

00:21:54.340 --> 00:21:56.280
<v Dominik>die ihr dann zur Auswertung mit benutzt?

00:21:56.400 --> 00:21:59.720
<v Dominik>Oder geht ihr davon aus, dass das Business alles mit besorgt?

00:22:00.240 --> 00:22:02.540
<v Mira>Es ist normalerweise so, dass die Daten schon da sind.

00:22:02.700 --> 00:22:08.000
<v Mira>Und dadurch, dass wir ja auch eher komplexe Fragestellungen beantworten,

00:22:08.340 --> 00:22:10.020
<v Mira>sind das in der Regel halt auch Kunden,

00:22:10.200 --> 00:22:12.000
<v Mira>die schon mit den Daten irgendwas gemacht haben.

00:22:12.120 --> 00:22:15.040
<v Mira>Natürlich kennen die nicht jede Datenquelle von vorn bis hinten auswendig

00:22:15.040 --> 00:22:16.420
<v Mira>und man findet immer noch Überraschungen.

00:22:17.040 --> 00:22:20.040
<v Mira>Aber das ist dann normalerweise nicht so, dass sie sagen,

00:22:20.260 --> 00:22:22.260
<v Mira>wir wollen hier dieses super komplexe Modell,

00:22:22.340 --> 00:22:24.260
<v Mira>aber wir haben noch gar keine Daten, wir müssen die erstmal sammeln.

00:22:24.860 --> 00:22:27.780
<v Mira>Normalerweise sind die da schon relativ weit oben

00:22:27.780 --> 00:22:29.300
<v Mira>auf der datenreifen Skala.

00:22:30.100 --> 00:22:31.880
<v Mira>Und selbst wenn nicht, sind die Daten meistens schon da,

00:22:31.980 --> 00:22:35.080
<v Mira>weil ganz viele Daten ja einfach automatisch mitgesammelt werden.

00:22:35.140 --> 00:22:37.340
<v Mira>Zum Beispiel im Online-Shop hat man natürlich jede Menge Daten

00:22:37.340 --> 00:22:38.840
<v Mira>über vergangene Bestellungen und so weiter.

00:22:39.160 --> 00:22:40.800
<v Mira>Also die Daten sind eigentlich immer schon da.

00:22:41.360 --> 00:22:44.520
<v Mira>Die Frage ist nur, sind die Daten da, die man braucht?

00:22:44.600 --> 00:22:45.440
<v Mira>Und wenn sie nicht da sind,

00:22:45.500 --> 00:22:47.520
<v Mira>dann ist das erstmal noch ein weiter Weg normalerweise.

00:22:47.760 --> 00:22:49.860
<v Mira>Vielleicht ist mal ein richtiges Data Warehouse da

00:22:49.860 --> 00:22:51.620
<v Mira>oder man kann die nochmal zusammenführen.

00:22:52.500 --> 00:22:57.240
<v Mira>dann ist es noch ein weiterer Bit, bis wir da tatsächlich loslegen können.

00:22:58.360 --> 00:23:01.460
<v Dominik>Wie würdest du denn so ein neues Unternehmen strukturieren,

00:23:02.020 --> 00:23:06.400
<v Dominik>wenn du darauf achten würdest, dass du ordentliche Daten irgendwann brauchst?

00:23:06.540 --> 00:23:09.620
<v Dominik>Würdest du direkt hingehen und das alles vom Scratch implementieren,

00:23:10.200 --> 00:23:11.960
<v Dominik>mit dem, was du am besten hältst,

00:23:11.960 --> 00:23:16.040
<v Dominik>oder würdest du das erstmal egal, das wachsen lassen und dann irgendwie zusammenflanschen?

00:23:16.740 --> 00:23:21.100
<v Mira>Also ich glaube, das kommt darauf an, wie sehr das Geschäftsmodell von Daten abhängt.

00:23:21.240 --> 00:23:24.020
<v Mira>Also wenn das ein Unternehmen ist, das irgendwelche Gegenstände produziert,

00:23:24.120 --> 00:23:27.860
<v Mira>dann denke ich, ist es nicht ganz so wichtig, dass man ganz viele Daten sammelt.

00:23:28.180 --> 00:23:31.160
<v Mira>Da kann man sich erst mal darauf konzentrieren und dann nach und nach einsteigen.

00:23:31.260 --> 00:23:34.540
<v Mira>Aber es gibt ja auch Geschäftsmodelle, die eigentlich nur so gut funktionieren,

00:23:34.540 --> 00:23:40.580
<v Mira>weil mit Daten gearbeitet wird und dann muss es wahrscheinlich von Anfang an auch berücksichtigt werden.

00:23:40.660 --> 00:23:41.900
<v Mira>Ich habe ja noch nie ein Unternehmen gegründet.

00:23:41.980 --> 00:23:44.620
<v Mira>Ich bin ja geschickt erst eingestiegen, als das Unternehmen schon da war.

00:23:45.700 --> 00:23:49.020
<v Mira>Aber ich vermute, wenn man sowas wie Amazon oder so,

00:23:49.080 --> 00:23:50.860
<v Mira>Da wurde ja von Anfang an wahrscheinlich mitgedacht,

00:23:51.000 --> 00:23:53.020
<v Mira>was man da mit Daten machen kann.

00:23:53.080 --> 00:23:54.320
<v Mira>Oder zumindest relativ früh dann.

00:23:55.440 --> 00:23:56.700
<v Dominik>Und was für Technologien benutzt ihr so?

00:23:56.800 --> 00:23:58.480
<v Dominik>Mit Python für diese einzelnen Schritte?

00:24:00.580 --> 00:24:03.220
<v Mira>Ja, also wir sind natürlich ganz viel mit Pandas unterwegs.

00:24:03.780 --> 00:24:07.420
<v Mira>Von der Datenaufbereitung über die Modellierung.

00:24:07.500 --> 00:24:09.420
<v Mira>Da kommt dann auch sowas wie Scikit-Learn dazu

00:24:09.420 --> 00:24:11.400
<v Mira>oder TensorFlow, Keras, PyTrips.

00:24:11.560 --> 00:24:13.000
<v Mira>Eigentlich so die Klassiker.

00:24:14.040 --> 00:24:15.380
<v Mira>Pandas ist ein interessantes Thema,

00:24:15.720 --> 00:24:18.620
<v Mira>weil Pandas, also wer schon mal mit Pandas

00:24:18.620 --> 00:24:19.940
<v Mira>und größeren Daten gearbeitet hat,

00:24:20.020 --> 00:24:21.040
<v Mira>denkt sich jetzt, um Himmels Willen,

00:24:21.120 --> 00:24:21.920
<v Mira>ich will es nicht mehr hören,

00:24:22.000 --> 00:24:24.900
<v Mira>weil Pandas halt sehr, sehr viel Arbeitsspeicher braucht,

00:24:24.960 --> 00:24:26.240
<v Mira>wenn die Datensätze größer sind.

00:24:26.640 --> 00:24:28.400
<v Mira>Es ist aber natürlich zu Prototypen

00:24:28.400 --> 00:24:30.880
<v Mira>oder generell für kleine Datensätze total super,

00:24:31.020 --> 00:24:32.040
<v Mira>weil es ganz, ganz viel kann

00:24:32.040 --> 00:24:34.060
<v Mira>und weil man auch ganz viel im Netz findet.

00:24:34.600 --> 00:24:37.560
<v Mira>Also genau, wenn die Daten aber größer werden,

00:24:37.960 --> 00:24:40.260
<v Mira>dann hat man natürlich das Arbeitsspeicherproblem

00:24:40.260 --> 00:24:42.440
<v Mira>und dann ist der Klassiker natürlich,

00:24:42.520 --> 00:24:45.100
<v Mira>auf Spark, PySpark umzusteigen,

00:24:45.820 --> 00:24:51.300
<v Mira>Was auch jetzt in letzter Zeit ganz, das ist natürlich toll, weil es ganz verteilt ist.

00:24:51.820 --> 00:24:55.280
<v Mira>Wobei es nicht unbedingt schnell ist, aber es kann halt eben mit großen Datensätzen umgehen.

00:24:55.380 --> 00:25:01.460
<v Mira>Und man hat erstmal dieses Arbeitsspeicherproblem gelöst, was man eben mit Pandas irgendwann eigentlich gar nicht mehr lösen kann.

00:25:02.340 --> 00:25:04.400
<v Mira>Und dann gibt es jetzt natürlich noch seit...

00:25:04.400 --> 00:25:11.660
<v Jochen>Aber ich meine, eine Erfahrung, die ich oft mache, ist, dass man die, bei vielen so kategorialen Variablen oder so,

00:25:11.700 --> 00:25:13.740
<v Jochen>die kann man dann halt auf irgendwie ein kleineres,

00:25:14.340 --> 00:25:15.800
<v Jochen>äh, einen kleineren Datentyp irgendwie

00:25:15.800 --> 00:25:17.760
<v Jochen>runter, äh, komprimieren oder

00:25:17.760 --> 00:25:18.620
<v Jochen>halt oft hat man dann halt

00:25:18.640 --> 00:25:20.800
<v Jochen>halt irgendwie für viele, oder wenn man jetzt nur

00:25:20.800 --> 00:25:22.840
<v Jochen>Flex hat, irgendwie ja oder nein

00:25:22.840 --> 00:25:24.620
<v Jochen>oder so, wenn man da nur ein Bit nimmt, ist halt

00:25:24.620 --> 00:25:26.480
<v Jochen>sehr viel weniger, als wenn man da irgendwie ein volles

00:25:26.480 --> 00:25:27.680
<v Jochen>Integer oder so für nimmt.

00:25:29.540 --> 00:25:30.660
<v Jochen>Oft hilft das

00:25:30.660 --> 00:25:32.020
<v Jochen>dann schon, aber ja, stimmt.

00:25:32.020 --> 00:25:34.520
<v Mira>Aber manchmal, wenn man die Daten einliest, dann

00:25:34.520 --> 00:25:36.620
<v Mira>je nachdem kann man das, glaube ich, gar nicht unbedingt

00:25:36.620 --> 00:25:38.320
<v Mira>spezifizieren am Anfang und dann sind die

00:25:38.320 --> 00:25:38.940
<v Mira>einfach groß.

00:25:40.340 --> 00:25:41.460
<v Mira>Oder auch selbst wenn, also ich meine,

00:25:41.580 --> 00:25:44.720
<v Mira>so mehrere Jahre stündliche Verkaufsdaten

00:25:44.720 --> 00:25:46.880
<v Mira>von ganz vielen Artikeln aus ganz vielen Filialen

00:25:46.880 --> 00:25:47.620
<v Mira>aus mehreren Ländern.

00:25:48.640 --> 00:25:52.580
<v Mira>Dann wird es irgendwie schwierig

00:25:52.580 --> 00:25:54.260
<v Mira>und dann ist das Verteidige schon gut.

00:25:54.660 --> 00:25:56.300
<v Mira>Und dann gibt es halt noch Polars,

00:25:56.420 --> 00:25:59.600
<v Mira>womit man dann auch oft schneller ist

00:25:59.600 --> 00:26:01.740
<v Mira>und halt auch weniger Arbeitsspeicher braucht.

00:26:02.600 --> 00:26:03.300
<v Dominik>Also wenn du das nicht kennst,

00:26:03.340 --> 00:26:05.640
<v Dominik>Polars ist ein Rust-nachgeschrieben-Tag-gleichen-API,

00:26:05.680 --> 00:26:06.560
<v Dominik>so ein bisschen wie Pandas.

00:26:06.840 --> 00:26:09.960
<v Jochen>Ja, es hat eine sehr viel saubere, also kleinere,

00:26:10.100 --> 00:26:11.400
<v Jochen>es hat weniger Funktionen,

00:26:11.420 --> 00:26:14.100
<v Jochen>aber es ist halt auch ein bisschen konsistenter,

00:26:14.100 --> 00:26:16.160
<v Jochen>weil Pandas ist halt auch irgendwie sehr stark

00:26:16.160 --> 00:26:18.160
<v Jochen>so historisch gewachsen

00:26:18.160 --> 00:26:20.080
<v Jochen>und man wusste noch nicht genau, wo man hin will und dann

00:26:20.080 --> 00:26:22.200
<v Jochen>teilweise inkonsistent und ja.

00:26:23.340 --> 00:26:24.380
<v Jochen>Ja, Pandas

00:26:24.380 --> 00:26:26.160
<v Jochen>ist halt, ja. Wie das halt so ist.

00:26:26.560 --> 00:26:27.400
<v Jochen>Genau, wie das halt so ist.

00:26:28.180 --> 00:26:30.200
<v Mira>Ich habe noch gar nicht so viel mit Polars gearbeitet.

00:26:30.760 --> 00:26:32.440
<v Mira>Ich weiß gar nicht, ob die eigentlich schon

00:26:32.440 --> 00:26:34.660
<v Mira>das Ziel haben, da die meisten Funktionen

00:26:34.660 --> 00:26:36.680
<v Mira>aus Pandas auch zu implementieren

00:26:36.680 --> 00:26:38.540
<v Mira>oder ob die vielleicht sogar sagen, es soll schlanker bleiben.

00:26:38.620 --> 00:26:40.120
<v Jochen>Genau, ich meine,

00:26:40.340 --> 00:26:42.700
<v Jochen>absichtlich wollen sie nicht komplett

00:26:42.700 --> 00:26:44.680
<v Jochen>irgendwie alles machen, was Pandas

00:26:44.680 --> 00:26:46.320
<v Jochen>halt kann, sondern ja

00:26:46.320 --> 00:26:48.460
<v Jochen>quasi bei den Basisgeschichten so

00:26:48.460 --> 00:26:50.440
<v Jochen>schnell sein, dass man halt daraus alles

00:26:50.440 --> 00:26:52.360
<v Jochen>bauen kann, aber dann halt nicht so

00:26:52.360 --> 00:26:53.420
<v Jochen>eine Spezialsyntax dafür hat.

00:26:54.660 --> 00:26:56.120
<v Jochen>Benutzt ihr auch dann zwischendurch noch

00:26:56.120 --> 00:26:57.180
<v Dominik>Pure NumPy oder?

00:26:58.080 --> 00:26:59.560
<v Mira>Ja, immer mal so für kleine Sachen,

00:27:00.560 --> 00:27:01.780
<v Mira>wo es gerade Sinn macht.

00:27:03.160 --> 00:27:04.560
<v Mira>Oft ist man

00:27:04.560 --> 00:27:06.140
<v Mira>mit Datensätzen unterwegs und dann

00:27:06.140 --> 00:27:08.240
<v Mira>passiert es halt meistens ein paar anders.

00:27:09.780 --> 00:27:10.620
<v Dominik>Vielleicht hast du

00:27:10.620 --> 00:27:12.360
<v Dominik>eben gesagt, man muss erst mal wissen, was ein Datensatz

00:27:12.360 --> 00:27:14.080
<v Dominik>ist, bevor man jetzt drüber redet. Du meinst jetzt irgendwie,

00:27:14.140 --> 00:27:19.000
<v Dominik>Du hast eine Maske auf, mit der du guckst oder was ist ein Datensatz in Pandas?

00:27:20.940 --> 00:27:22.360
<v Mira>Ist das jetzt eine Wissensfrage?

00:27:24.620 --> 00:27:27.100
<v Dominik>Ja doch, du müsst ja vielleicht schon erklären, wie das funktioniert.

00:27:27.860 --> 00:27:42.420
<v Mira>Ja, um die Daten anzugucken, würde ich, na gut, es ist irgendwie schön, wenn man einmal so ein bisschen den Head anzeigt, also die ersten paar Zeilen und sieht, was da eigentlich so grundsätzlich, was das für Spalten sind, welche Namen die haben und welche Zahlen da so ungefähr drinstehen.

00:27:42.420 --> 00:28:00.220
<v Mira>Und dann würde ich aber relativ schnell in eine deskriptive Analyse gehen und mir beispielsweise von jeder Spalte dann Summary Statistics, also Minimum, Maximum, Mittelwert, Median, vielleicht Quantile anschauen oder eben auch Verteilungen plotten, sodass man das sieht oder Kategorien anzeigen, je nachdem, was das so ist.

00:28:01.100 --> 00:28:13.720
<v Mira>Sonst, ja, die ganze Tabelle, also man hat natürlich eine Tabelle als Pandas DataFrame, die könnte man theoretisch ja auch irgendwie als CSV speichern oder als Excel und da angucken. Das ist auch ganz praktisch, um sich die mal anzugucken, wenn die Daten klein genug sind.

00:28:13.720 --> 00:28:31.540
<v Mira>Manchmal ist es sogar wirklich ganz nett, um mal einfache Analysen zu machen, zum Ausprobieren, um gespürt zu bekommen. Aber es ist dann eher so ein manueller Schritt und um wirklich Insights zu haben und die Daten zu verstehen, muss man dann, wenn der Datensatz groß genug ist, natürlich in die Summary-Statistics gehen.

00:28:32.140 --> 00:28:47.580
<v Mira>Und es ist auch oft, also selbst wenn man jetzt nach dieser ersten Datenanalyse aufhören würde, ist es oft an sich schon ganz interessant und oft haben unsere KundInnen ja genau diese Analyse auch noch nicht gemacht und lernen dabei auch noch was Neues.

00:28:48.140 --> 00:29:09.380
<v Mira>Einmal hatten wir aber sogar auch den Fall, dass wir, ja, dass sie dann gemerkt haben, dass da irgendwo ein Fehler im Data Warehouse ist und da war irgendwie so ein riesiger Strukturbruch, der da eigentlich gar nicht sein sollte und dann haben sie sich erstmal nochmal ein paar Monate zurückgezogen und haben das alles repariert und danach konnten wir das Projekt dann tatsächlich machen, aber das wussten sie vorher nicht und haben es dann gesehen durch unsere Datenvalidierung, dass da irgendwo ein Problem ist beim Zusammenführen.

00:29:10.240 --> 00:29:30.860
<v Dominik>Ja, spannend. Also manchmal sagen sie mir das. Ich habe einmal den Fall gehabt, dann waren die ganze Zeit irgendwelche so Irregularitäten irgendwie in so einem Datenflur, die da gar nicht hingehörten. Man hat irgendwie was bewundert, was ist denn das? Und irgendwann ist jemand auf die Decke gekommen, ist dann zum Förderbank gegangen, hat in die Decke geguckt und da war oben ein Fenster auf. Und dann war dann die Temperatur immer anders, weil dann das Fenster aufgelassen worden ist und so. Das war spannend, ja.

00:29:33.300 --> 00:29:41.960
<v Mira>Gut ist natürlich auch, wenn man dann sieht, ah ja, hier gehen die Sales hoch, da war unsere riesige Werbekampagne und das macht alles Sinn und das ist natürlich auch schön, wenn es einfach funktioniert und man das in den Daten sieht.

00:29:42.720 --> 00:29:44.840
<v Jochen>Ja, auf jeden Fall.

00:29:46.160 --> 00:29:47.360
<v Jochen>Was mich noch interessieren würde,

00:29:47.620 --> 00:29:49.260
<v Jochen>wenn ihr tatsächlich so

00:29:49.260 --> 00:29:51.100
<v Jochen>Produkte baut

00:29:51.100 --> 00:29:53.480
<v Jochen>mit Modellen drin

00:29:53.480 --> 00:29:54.920
<v Jochen>und so und die vielleicht

00:29:54.920 --> 00:29:56.900
<v Jochen>Echtzeit irgendwas, wie begleitet ihr eigentlich

00:29:56.900 --> 00:29:58.320
<v Jochen>eure Modelle dann

00:29:58.320 --> 00:30:00.960
<v Jochen>oder habt ihr da Präferenzen oder

00:30:00.960 --> 00:30:03.000
<v Jochen>weil das ist immer so ein bisschen,

00:30:03.100 --> 00:30:04.560
<v Jochen>das machen Leute unterschiedlich und

00:30:04.560 --> 00:30:06.840
<v Jochen>ich weiß nicht, ob es da jetzt irgendwie so

00:30:06.840 --> 00:30:08.760
<v Jochen>ein Standardding gibt, was man machen kann, aber

00:30:08.760 --> 00:30:10.880
<v Jochen>ja, das ist auf jeden Fall immer irgendwie

00:30:10.880 --> 00:30:11.800
<v Jochen>nicht so ganz einfach gewesen.

00:30:12.720 --> 00:30:16.680
<v Mira>Also grundsätzlich gilt da natürlich, wir machen das, was die Kunden wollen.

00:30:16.940 --> 00:30:17.260
<v Mira>Ja, klar.

00:30:17.660 --> 00:30:20.900
<v Mira>Aber tatsächlich, wir sind ja dann oft in der Infrastruktur von den Kunden unterwegs,

00:30:20.900 --> 00:30:23.280
<v Mira>aber nicht immer, weil manche, zum Beispiel hatten wir ein Projekt,

00:30:23.400 --> 00:30:26.300
<v Mira>da darf ich zum Glück auch drüber reden, darf man ja nicht bei jedem Kunden,

00:30:26.320 --> 00:30:28.900
<v Mira>das war für die Berliner Senatsverwaltung, eine Luftschadstoffprognose,

00:30:29.760 --> 00:30:31.960
<v Mira>also die läuft auch noch, aber das machen wir jetzt nur noch Wartung,

00:30:32.040 --> 00:30:33.060
<v Mira>das ist soweit beschlossen.

00:30:33.560 --> 00:30:36.820
<v Mira>Und die haben keine Vorgaben gemacht zur Infrastruktur,

00:30:36.980 --> 00:30:39.720
<v Mira>die haben halt kein ABS oder Azure und da konnten wir es halt so machen,

00:30:39.820 --> 00:30:41.680
<v Mira>wie wir wollten und ich gucke mir gerade

00:30:41.680 --> 00:30:44.220
<v Mira>nebenbei in unseren Blogartikel

00:30:44.220 --> 00:30:45.500
<v Mira>rein dazu, weil

00:30:45.500 --> 00:30:47.940
<v Mira>da kann ich mich alles nochmal

00:30:47.940 --> 00:30:50.020
<v Mira>wieder nachgucken, wie wir es gemacht haben.

00:30:51.060 --> 00:30:51.920
<v Mira>Da haben wir,

00:30:52.620 --> 00:30:53.960
<v Mira>konnten wir ganz

00:30:53.960 --> 00:30:55.940
<v Mira>frei entscheiden, was wir haben wollen

00:30:55.940 --> 00:30:57.760
<v Mira>und haben dann

00:30:57.760 --> 00:30:59.980
<v Mira>mit Kubernetes

00:30:59.980 --> 00:31:01.680
<v Mira>gearbeitet, das ist auch alles

00:31:01.680 --> 00:31:03.840
<v Mira>schön selbst aufgesetzt und da laufen

00:31:03.840 --> 00:31:05.600
<v Mira>dann automatisierte Jobs drin

00:31:05.600 --> 00:31:08.100
<v Mira>und wir haben,

00:31:08.580 --> 00:31:09.660
<v Mira>na gut, das ist jetzt weniger mit

00:31:09.660 --> 00:31:11.140
<v Mira>Deployment zu tun haben. Wir haben da dann

00:31:11.140 --> 00:31:13.560
<v Mira>eine Clickhouse-Datenbank, die ist ganz cool für

00:31:13.560 --> 00:31:15.700
<v Mira>große Datenmengen und

00:31:15.700 --> 00:31:17.100
<v Mira>haben dann

00:31:17.100 --> 00:31:19.560
<v Mira>Docker-Container, in denen unsere Prozesse

00:31:19.560 --> 00:31:21.480
<v Mira>dann laufen. Da haben wir auch

00:31:21.480 --> 00:31:23.600
<v Mira>Releash benutzt, wie ich erwähnt habe. Das benutzen wir

00:31:23.600 --> 00:31:25.460
<v Mira>dann auch für die Alerts, um zu gucken, sind

00:31:25.460 --> 00:31:27.520
<v Mira>alle Input-Daten da, sind alle Prognosen

00:31:27.520 --> 00:31:29.600
<v Mira>so erstellt worden, wie wir wollen, sind so viele

00:31:29.600 --> 00:31:31.420
<v Mira>Prognosen in der Tabelle, wie wir erwarten

00:31:31.420 --> 00:31:32.760
<v Mira>würden und so weiter.

00:31:33.400 --> 00:31:34.920
<v Mira>Und in dem Projekt ist tatsächlich

00:31:34.920 --> 00:31:37.480
<v Mira>nur, im Hintern haben wir Releash für die

00:31:37.480 --> 00:31:39.380
<v Mira>Visualisierung benutzt, nach außen gehen,

00:31:39.480 --> 00:31:41.520
<v Mira>die Daten tatsächlich, unsere Prognosen

00:31:41.520 --> 00:31:43.180
<v Mira>gehen einfach über eine Rest-API raus

00:31:43.180 --> 00:31:45.500
<v Mira>und werden dann im Tool

00:31:45.500 --> 00:31:47.460
<v Mira>visualisiert, dass diese Natsverwaltung schon hatte

00:31:47.460 --> 00:31:49.740
<v Mira>oder die API ist frei verfügbar,

00:31:49.800 --> 00:31:51.600
<v Mira>könnte auch jeder abrufen, haben auch schon ein paar andere

00:31:51.600 --> 00:31:53.340
<v Mira>dann mal gemacht. Genau, mit

00:31:53.340 --> 00:31:55.560
<v Mira>Kubernetes ist es natürlich immer ganz schön, ansonsten

00:31:56.120 --> 00:31:57.540
<v Mira>bei einigen

00:31:57.540 --> 00:31:59.460
<v Mira>Kunden läuft dann viel mit den

00:31:59.460 --> 00:32:01.440
<v Mira>Diensten von AWS. Jetzt bei dem

00:32:01.440 --> 00:32:03.520
<v Mira>Kunden, wo ich bin, sind wir im

00:32:03.520 --> 00:32:05.640
<v Mira>Azure-Universum, wobei

00:32:05.640 --> 00:32:07.640
<v Mira>ich da mit dem Deployment nichts zu tun

00:32:07.640 --> 00:32:09.620
<v Mira>habe, weil das machen dann halt andere.

00:32:10.180 --> 00:32:11.400
<v Mira>Deshalb bin ich auch immer nur so am Rande

00:32:11.400 --> 00:32:13.580
<v Mira>natürlich dabei, also kann irgendwie in die

00:32:13.580 --> 00:32:15.360
<v Mira>Kubernetes-Codes mal reingucken, aber ich

00:32:15.360 --> 00:32:17.220
<v Mira>kann die nicht,

00:32:17.480 --> 00:32:19.080
<v Mira>kann das nicht aufsetzen oder

00:32:19.080 --> 00:32:21.300
<v Mira>mache dann nicht die Deployments.

00:32:21.820 --> 00:32:23.480
<v Jochen>Ja, was mich da mal, oder das Problem,

00:32:23.620 --> 00:32:25.080
<v Jochen>das ich da mal hatte, ist halt,

00:32:25.480 --> 00:32:27.600
<v Jochen>dass wenn jetzt Leute quasi in Notebooks

00:32:27.600 --> 00:32:29.580
<v Jochen>irgendwas modellieren oder so, wie kriegen sie denn dann,

00:32:29.920 --> 00:32:31.500
<v Jochen>wenn sie jetzt rauskriegen, ah, wenn ich dieses

00:32:31.500 --> 00:32:33.600
<v Jochen>Modell so parametrisiere oder so,

00:32:34.140 --> 00:32:35.500
<v Jochen>oder, ja, man hat dann normalerweise

00:32:35.500 --> 00:32:37.500
<v Jochen>eine ganze Pipeline von Datenkomponenten,

00:32:37.640 --> 00:32:39.600
<v Jochen>rein, dann werden sie irgendwie transformiert und

00:32:39.600 --> 00:32:41.360
<v Jochen>dann hat man halt hinterher irgendwie

00:32:41.360 --> 00:32:42.200
<v Jochen>Predictions oder so.

00:32:43.460 --> 00:32:44.880
<v Jochen>Wie kriege ich das Ding denn jetzt

00:32:44.880 --> 00:32:47.380
<v Jochen>quasi in das Produktionssystem

00:32:47.380 --> 00:32:49.440
<v Jochen>integriert? Und das,

00:32:49.640 --> 00:32:51.620
<v Jochen>was wir dann gemacht hatten, war halt

00:32:51.620 --> 00:32:53.440
<v Jochen>quasi aus dem

00:32:53.440 --> 00:32:54.180
<v Jochen>Notebook direkt

00:32:54.180 --> 00:32:57.260
<v Jochen>sozusagen ein Konterpaket zu bauen,

00:32:57.360 --> 00:32:59.280
<v Jochen>das hochzuladen, in Django

00:32:59.280 --> 00:33:01.140
<v Jochen>Filefield zu speichern und dann auch über eine

00:33:01.140 --> 00:33:02.880
<v Jochen>JSON-API dann die Ergebnisse wieder zurückzugeben.

00:33:03.600 --> 00:33:05.300
<v Jochen>Aber das fühlte sich so ein bisschen

00:33:05.300 --> 00:33:07.180
<v Jochen>falsch an oder so auf jeden Fall nach

00:33:07.180 --> 00:33:09.220
<v Jochen>gibt es da nicht irgendeine einfache Möglichkeit, wie man

00:33:09.220 --> 00:33:11.220
<v Jochen>das machen kann? Ich weiß nicht, ob es einfacher

00:33:11.220 --> 00:33:13.180
<v Mira>ist, aber wir sind auch

00:33:13.180 --> 00:33:15.480
<v Mira>ganz wenig eigentlich nur in Jupyter-Notebooks

00:33:15.480 --> 00:33:16.060
<v Mira>unterwegs,

00:33:16.440 --> 00:33:19.220
<v Mira>sondern ja, entweder, wenn

00:33:19.220 --> 00:33:21.140
<v Mira>wir was schnell visualisieren wollen, geht das tatsächlich

00:33:21.140 --> 00:33:23.120
<v Mira>ja mit so einem Tool wie Redash auch schneller, als wenn man

00:33:23.120 --> 00:33:23.600
<v Mira>dann anfängt,

00:33:23.920 --> 00:33:27.280
<v Mira>mal Plot-Lib-Code zu schreiben.

00:33:28.280 --> 00:33:29.460
<v Mira>Dann ist Clicky-Bunty

00:33:29.460 --> 00:33:31.180
<v Mira>manchmal gar nicht so blöd und schlecht,

00:33:31.280 --> 00:33:31.660
<v Mira>wie es klingt.

00:33:32.920 --> 00:33:34.980
<v Mira>Und dann, wenn wir dann die

00:33:34.980 --> 00:33:36.860
<v Mira>Code-Free-Modellierung haben, dann ist es halt wirklich

00:33:36.860 --> 00:33:39.960
<v Mira>das ist ein Python-Paket,

00:33:40.060 --> 00:33:42.060
<v Mira>wir haben das dann

00:33:42.060 --> 00:33:44.180
<v Mira>automatisieren das dann meistens

00:33:44.180 --> 00:33:46.020
<v Mira>so, dass jedes Mal beim Push

00:33:46.020 --> 00:33:46.980
<v Mira>in den Main-Branch,

00:33:47.700 --> 00:33:50.220
<v Mira>wenn die Versionsnummer sich geändert hat,

00:33:50.280 --> 00:33:51.920
<v Mira>wird das dann, wie bei Jenkins

00:33:51.920 --> 00:33:54.060
<v Mira>wird ein Job getriggert, der dann

00:33:54.060 --> 00:33:55.800
<v Mira>das Paket baut und in unser

00:33:55.800 --> 00:33:57.500
<v Mira>Repository hochlädt, das dann

00:33:57.500 --> 00:33:59.900
<v Mira>normalerweise nur intern verfügbar ist und

00:33:59.900 --> 00:34:01.920
<v Mira>dann können wir, ob das dann

00:34:01.920 --> 00:34:03.920
<v Mira>automatisch deployed wird oder wir das irgendwie manuell machen,

00:34:04.000 --> 00:34:05.460
<v Mira>können wir uns dann halt überlegen.

00:34:06.120 --> 00:34:08.180
<v Dominik>Ja, aber dann brauchen wir einfach runtergeladen

00:34:08.180 --> 00:34:10.020
<v Dominik>auf den Pott. Ja, aber dann brauchen ja

00:34:10.020 --> 00:34:12.000
<v Jochen>die Leute, die quasi modellieren, Zugriff

00:34:12.000 --> 00:34:13.600
<v Jochen>auf das Produktionssystem

00:34:13.600 --> 00:34:15.160
<v Jochen>quasi oder können halt,

00:34:15.980 --> 00:34:17.820
<v Jochen>es muss halt dann, die müssen den Code verändern, die müssen

00:34:17.820 --> 00:34:19.260
<v Jochen>committen können. Ja.

00:34:20.200 --> 00:34:21.860
<v Mira>Also die committen von

00:34:21.860 --> 00:34:22.700
<v Mira>morgens bis abends.

00:34:24.140 --> 00:34:25.480
<v Mira>Also das ist tatsächlich

00:34:25.480 --> 00:34:27.720
<v Mira>bei uns überhaupt nicht so, dass da irgendwie

00:34:27.720 --> 00:34:29.900
<v Mira>jemand sitzt, der nur in einem Notebook prototypt.

00:34:30.600 --> 00:34:31.760
<v Mira>Gar nicht. Also

00:34:31.760 --> 00:34:33.880
<v Mira>wenn das Projekt losgeht, dann

00:34:33.880 --> 00:34:35.900
<v Mira>muss man als erstes ein Repo anlegen, weil sonst

00:34:35.900 --> 00:34:36.880
<v Mira>kann man hier gar nichts machen.

00:34:38.880 --> 00:34:39.280
<v Mira>Ja.

00:34:40.200 --> 00:34:41.900
<v Mira>Und vielleicht startet man dann irgendwie mit ein paar

00:34:41.900 --> 00:34:43.980
<v Mira>Skripten, die dann später ordentlich

00:34:43.980 --> 00:34:45.800
<v Mira>in ein Paket überführt werden und

00:34:45.800 --> 00:34:47.860
<v Mira>in Funktionen und Klassen verpackt. Das kann

00:34:47.860 --> 00:34:49.120
<v Mira>schon sein, aber grundsätzlich

00:34:49.120 --> 00:34:51.240
<v Mira>ist es halt

00:34:51.240 --> 00:34:53.620
<v Mira>eine Software und

00:34:53.620 --> 00:34:55.900
<v Mira>sind auch oft in größeren Projekten mehrere Pakete.

00:34:56.020 --> 00:34:56.700
<v Mira>Zum Beispiel in dem

00:34:56.700 --> 00:34:59.600
<v Mira>Projekt für die Senatsverwaltung sind das dann,

00:34:59.780 --> 00:35:01.820
<v Mira>wir haben da sehr viele verschiedene Datenquellen, zum Beispiel

00:35:01.820 --> 00:35:03.780
<v Mira>Verkehrsdaten, Wetterdaten und so

00:35:03.780 --> 00:35:05.700
<v Mira>und dann haben wir für jede Datenquelle ein

00:35:05.700 --> 00:35:07.960
<v Mira>Paket, das nur dafür da ist, diese Datenquelle

00:35:07.960 --> 00:35:09.700
<v Mira>einzulegen und zu formatieren, die Datenbank

00:35:09.700 --> 00:35:11.860
<v Mira>zu schreiben. Das heißt, der Handshake ist dann über die Datenbank,

00:35:11.980 --> 00:35:13.620
<v Mira>dann kommt irgendwann das nächste Paket,

00:35:13.720 --> 00:35:15.640
<v Mira>das liest sich die Daten dann und macht dann die

00:35:15.640 --> 00:35:17.900
<v Mira>Modellierung. Und dann gibt es nochmal ein Paket,

00:35:17.980 --> 00:35:19.800
<v Mira>das halt irgendwelche Daten

00:35:19.800 --> 00:35:21.880
<v Mira>weiter aufbereitet und dann gibt es ein Paket mit der API.

00:35:22.600 --> 00:35:23.620
<v Dominik>Und wenn

00:35:23.620 --> 00:35:25.380
<v Dominik>ihr ein Modell daraus gebaut habt, irgendwie mit

00:35:25.380 --> 00:35:27.000
<v Dominik>Torch oder sowas, was macht ihr dann?

00:35:27.720 --> 00:35:28.800
<v Dominik>Wo legt ihr das dann hin?

00:35:29.820 --> 00:35:31.380
<v Mira>Ja, wenn das dann in dem Fall

00:35:31.380 --> 00:35:32.820
<v Mira>tatsächlich...

00:35:32.820 --> 00:36:00.060
<v Mira>Ich verliere gerade. Also tatsächlich, im Kundenprojekt benutzen wir MLflow und ich weiß nicht, ob, also ich hatte das vorher tatsächlich noch nicht benutzt, wo wir die Objekte dann abgelegt. Ich glaube, es gibt, das ist ganz witzig, ja, es gibt tatsächlich, das war jetzt ein Projekt mit XGBoost, weiß ich nur, da haben wir, kann man die Projekte tatsächlich in Form eines Strings speichern und da haben wir die in der Datenbank gespeichert.

00:36:01.440 --> 00:36:09.020
<v Mira>Das funktioniert ganz gut, man kann aber natürlich auch das Modellobjekt irgendwo in deinem Modellrepository dann ablegen.

00:36:09.960 --> 00:36:13.960
<v Dominik>Also eigenes Modellrepo mit Branches oder irgendwie Tags oder sowas hier.

00:36:14.780 --> 00:36:19.740
<v Mira>Ja, oder irgendwelche Tags muss man natürlich schon haben, damit man die dann nachher wieder identifizieren kann.

00:36:20.900 --> 00:36:26.540
<v Mira>Also gut, wenn jetzt die Modellierung total schnell geht, dann kann man natürlich auch das Modell einmal im Monat neu berechnen.

00:36:27.400 --> 00:36:31.200
<v Mira>Einmal im Tag neu berechnen, sofort die Prognosen machen und das Modellobjekt überhaupt nicht speichern.

00:36:31.280 --> 00:36:33.060
<v Mira>Aber das ist, glaube ich, eher so ein seltener Fall.

00:36:33.220 --> 00:36:36.700
<v Mira>Normalerweise muss man es ja schon speichern und wiederverwenden.

00:36:37.980 --> 00:36:41.240
<v Mira>Also wir können uns auch gerne nochmal an dem Ablauf

00:36:41.240 --> 00:36:42.480
<v Mira>ein bisschen weiter entlanghangeln.

00:36:42.720 --> 00:36:43.220
<v Jochen>Ja, gerne.

00:36:43.660 --> 00:36:44.940
<v Mira>Weil wir jetzt schon vorgegriffen haben.

00:36:45.300 --> 00:36:48.200
<v Mira>Also wenn wir das Problem verstanden haben,

00:36:48.280 --> 00:36:50.400
<v Mira>die Daten verstanden haben und die sehen soweit gut aus,

00:36:50.400 --> 00:36:52.400
<v Mira>dass wir und unser Kunde gemeinsam sagen,

00:36:52.500 --> 00:36:53.820
<v Mira>okay, damit können wir jetzt wirklich starten.

00:36:54.220 --> 00:36:55.380
<v Mira>Da ist kein Problem drin.

00:36:55.780 --> 00:36:58.400
<v Mira>Dann passiert natürlich erstmal ganz viel Datenaufbereitung

00:36:59.040 --> 00:36:59.780
<v Mira>und Bereinigung.

00:37:00.020 --> 00:37:02.400
<v Mira>Oft muss man verschiedene Datensätze zusammenführen.

00:37:02.540 --> 00:37:04.280
<v Mira>Da haben wir dann natürlich vorher schon geprüft,

00:37:04.360 --> 00:37:06.900
<v Mira>ob es auch eine gemeinsame ID gibt, um die zusammenzuführen.

00:37:06.980 --> 00:37:07.580
<v Mira>Sonst wird es schwierig.

00:37:08.780 --> 00:37:10.280
<v Mira>Oft muss man auch Sachen aggregieren.

00:37:10.380 --> 00:37:14.700
<v Mira>Zum Beispiel hat man vielleicht einzelne Zeilen für jedes Produkt,

00:37:14.840 --> 00:37:16.320
<v Mira>das gekauft wurde von einem Kunden.

00:37:16.440 --> 00:37:18.800
<v Mira>Wir wollen aber eigentlich nur eine Zeile pro Kunde.

00:37:18.800 --> 00:37:22.660
<v Mira>Da muss man sich was überlegen, wie man das voll aufaggregieren kann.

00:37:23.120 --> 00:37:28.200
<v Mira>Manchmal macht man Transformationen oder berechnet eine neue Spalte aus anderen Spalten.

00:37:28.980 --> 00:37:31.720
<v Mira>Also das, was man immer als Feature Engineering kennt.

00:37:31.820 --> 00:37:35.980
<v Mira>Wir bauen also Features, die ja einfach sinnvolle Inhalte haben,

00:37:36.100 --> 00:37:39.040
<v Mira>mit denen das Modell dann später gut umgehen kann.

00:37:39.600 --> 00:37:40.800
<v Dominik>Macht ihr das dann immer live in Pandas

00:37:40.800 --> 00:37:42.100
<v Dominik>oder schreibt ihr das auch in eine Datenbank rein?

00:37:43.700 --> 00:37:44.680
<v Mira>Es kommt drauf an,

00:37:44.720 --> 00:37:48.020
<v Mira>aber meistens haben wir dann schon eigentlich ein separates Modul,

00:37:48.120 --> 00:37:50.500
<v Mira>das die Features berechnet und irgendwo hinschreibt,

00:37:50.500 --> 00:37:53.740
<v Mira>weil das meistens dann einfach schöner ist,

00:37:53.820 --> 00:37:56.300
<v Mira>das zu modularisieren, weil es sonst ein bisschen zu viel wird.

00:37:56.440 --> 00:37:58.080
<v Mira>Was ist da eure Lieblingsdatenbank für?

00:37:58.980 --> 00:38:01.700
<v Mira>Ich überlege gerade, wir waren früher

00:38:01.700 --> 00:38:03.780
<v Mira>viel auf MariaDB unterwegs, jetzt sind

00:38:03.780 --> 00:38:05.500
<v Mira>wir, ja,

00:38:05.600 --> 00:38:07.380
<v Mira>viel in ClickHouse, also ClickHouse

00:38:07.380 --> 00:38:09.880
<v Mira>teilweise verhält es sich unerwartet, finde ich.

00:38:10.740 --> 00:38:11.560
<v Mira>Aber es ist halt

00:38:11.560 --> 00:38:13.600
<v Mira>schon sehr cool mit großen Datenmengen,

00:38:13.700 --> 00:38:15.560
<v Mira>da kannst du einfach die...

00:38:15.560 --> 00:38:16.780
<v Mira>Das ist diese Geschichte,

00:38:17.000 --> 00:38:19.360
<v Jochen>Yandex hat das, glaube ich, mal gebaut,

00:38:19.360 --> 00:38:20.620
<v Jochen>und dann haben sie es irgendwie Open Source

00:38:20.620 --> 00:38:22.660
<v Jochen>veröffentlicht. Das weiß ich nicht.

00:38:22.760 --> 00:38:23.960
<v Jochen>Ich weiß es nicht genau.

00:38:26.220 --> 00:38:27.400
<v Jochen>Ja, das habe ich auch schon

00:38:27.400 --> 00:38:28.040
<v Jochen>ein gutes Wort gehört.

00:38:28.980 --> 00:38:51.180
<v Mira>Ja, also da haben wir am Anfang dieses Projekts überlegt, okay, machen wir das jetzt. Wir hatten einmal was damit ausprobiert und wir wussten, wenn es jetzt nicht gut funktioniert, dann müssen wir natürlich irgendwie auf eigene Kappe nochmal ein paar Tage investieren, um das umzustellen. Aber es war so eine gute Entscheidung, weil wir gemerkt haben, mit den Datenmengen würde in anderen Datenbanken überhaupt nicht gehen.

00:38:51.800 --> 00:39:13.480
<v Mira>Ja, und wenn wir dann so Features haben und die stehen dann vielleicht auch in der Clickhouse-Datenbank oder vielleicht stehen sie auch in der Postgres- oder Redshift-Datenbank, dann geht es dann erst mit der Modellierung los und zum Glück haben die meisten Leute von uns auch Spaß an den anderen Sachen, weil wie gesagt, die Modellierung meistens wirklich nur ein kleiner Teil ist.

00:39:13.700 --> 00:39:30.120
<v Mira>Man muss sich natürlich genau überlegen, was ist überhaupt das passende Modell. Im Moment, wenn man Prognosen machen will, ist immer noch G-Boost einfach sehr, sehr gut. Das ist ein bombasiertes Modell. Aber es kommen gerade Sachen, zum Beispiel gibt es da P-F-Enders.

00:39:30.120 --> 00:39:32.060
<v Jochen>Ja, das klingt auch sehr interessant, ja.

00:39:33.060 --> 00:39:52.260
<v Mira>Es ist ein Transformer-Modell und das ist irgendwie total verrückt, weil dieses Modell hat, also ich finde es immer noch total beeindruckend, es ist irgendwie so Magic, also das hat gelernt, wie Datensätze, wie die Zusammenhänge in Datensätzen normalerweise so sind.

00:39:52.780 --> 00:40:14.780
<v Mira>Und dann gibt man dem nochmal so ähnlich wie so ein Feintuning den Datensatz, den man halt da selbst hat, der einen interessiert. Und dann kann man damit total gute Prognosen machen, auch wenn der Datensatz nicht besonders groß ist. Und das Verrückte ist, diese Datensätze, anhand derer das gelernt wird, das sind künstliche Daten. Also es sind nicht mal echte Daten, weil es ja gar nicht so viele im Netz verfügt.

00:40:14.780 --> 00:40:16.540
<v Mira>weil es ja anders ist, wenn man ein Sprachmodell trainieren will,

00:40:16.580 --> 00:40:18.300
<v Mira>das ganze Internet besteht aus Sprache.

00:40:18.840 --> 00:40:21.120
<v Mira>Aber es funktioniert trotzdem, es ist richtig beeindruckend.

00:40:21.320 --> 00:40:22.880
<v Mira>Also ich glaube, das ist sowas, was sich

00:40:22.880 --> 00:40:24.780
<v Mira>gerade so anfühlt wie, okay, da passiert

00:40:24.780 --> 00:40:26.520
<v Mira>jetzt wirklich mal wieder was Neues

00:40:26.520 --> 00:40:28.240
<v Mira>in der Bereich-Prognose.

00:40:28.980 --> 00:40:30.620
<v Jochen>Jaja, auch diese ganzen Pre-Trends,

00:40:30.760 --> 00:40:32.840
<v Jochen>das gibt es ja im LLM-Bereich, gibt es das ja alles

00:40:32.840 --> 00:40:35.180
<v Jochen>oder halt auch bei so Vision-

00:40:35.180 --> 00:40:36.720
<v Jochen>Modellen, wo dann alles auf ImageNet

00:40:36.720 --> 00:40:38.600
<v Jochen>oder so trainiert ist, aber bei tabularen Daten

00:40:38.600 --> 00:40:40.560
<v Jochen>hätte ich jetzt überhaupt gar nicht gedacht, dass das überhaupt

00:40:40.560 --> 00:40:42.080
<v Jochen>möglich ist oder dass das irgendwie,

00:40:42.540 --> 00:40:44.640
<v Jochen>Und ja, das hat mich auch total gewundert.

00:40:45.360 --> 00:40:49.140
<v Dominik>Ihr müsst ja vielleicht jetzt noch ein bisschen kurz noch mal erklären, bitte, so die Grundlagen.

00:40:49.220 --> 00:40:52.220
<v Dominik>Ich glaube, das war ein bisschen komplex vielleicht für einen Einstieg.

00:40:52.880 --> 00:40:57.720
<v Dominik>Also Tab-DFN hast du gesagt und XGBoost, also Gradient Boosting.

00:40:57.720 --> 00:41:02.980
<v Mira>Ja, XGBoost ist ein Gradient Boosting und das ist halt eigentlich einfach dazu da,

00:41:03.040 --> 00:41:07.940
<v Mira>um eine Tabelle von Daten zu nehmen und die Zusammenhänge zu lernen, die in diesen Daten vorkommen.

00:41:08.520 --> 00:41:11.980
<v Mira>Zum Beispiel will ich vielleicht vorher sagen, wie viel verkauft wird an einem bestimmten Tag

00:41:11.980 --> 00:41:36.200
<v Mira>Und in den Daten hätte ich zum Beispiel die Info, welcher Wochentag ist das eigentlich und ist dann vielleicht davor oder danach ein Feiertag und um welches Produkt geht es und so weiter. Wie ist das Wetter? Vielleicht verkaufe ich ja bei Hitze mehr Wassermelonen. Und das ist so der Klassiker, das würde man auch mit einer linearen Regression machen können. Die ist aber weniger flexibel und normalerweise dann auch weniger genau. Und XGBoost ist da halt deutlich komplexer.

00:41:36.200 --> 00:41:40.200
<v Dominik>Und XGBoost macht das dann quasi über die Backpropagation-Mechanismen?

00:41:41.040 --> 00:41:42.660
<v Dominik>Nee, das ist eine Art Decision Tree.

00:41:42.780 --> 00:41:46.620
<v Jochen>Das ist eine grundsätzlich andere Art von Modell.

00:41:47.620 --> 00:41:51.500
<v Mira>Das ist im Prinzip so eine Kombination aus ganz, ganz vielen

00:41:51.500 --> 00:41:55.020
<v Mira>kleinen, nicht besonders schlauen Entscheidungsbäumen.

00:41:55.120 --> 00:41:57.100
<v Mira>Aber dadurch, dass die alle hintereinander geschaltet werden,

00:41:57.200 --> 00:41:58.080
<v Mira>ergänzen sie sich ja gut.

00:41:58.180 --> 00:42:00.160
<v Mira>Und dann wird es am Ende auch ziemlich gut.

00:42:02.140 --> 00:42:07.200
<v Mira>Und das heißt, über Jahre eigentlich für jedes typische

00:42:07.200 --> 00:42:09.500
<v Mira>Predictive-Projekt

00:42:09.500 --> 00:42:11.440
<v Mira>oder für jede Predictive-Fragestellung

00:42:11.440 --> 00:42:13.760
<v Mira>war XGBoost. Es war schon fast langweilig.

00:42:14.160 --> 00:42:15.580
<v Mira>Ja, es gibt da noch so ein paar Varianten.

00:42:15.740 --> 00:42:17.600
<v Mira>Es gibt zum Beispiel Catboost, das es so ähnlich hat,

00:42:17.660 --> 00:42:19.420
<v Mira>aber halt schon irgendwie ganz schlaue

00:42:19.420 --> 00:42:21.300
<v Mira>Mechanismen implementiert, um mit

00:42:21.300 --> 00:42:23.320
<v Mira>kategorialen Variablen umzugehen und manchmal

00:42:23.320 --> 00:42:25.680
<v Mira>das eine oder das andere dann so ein bisschen besser oder performanter,

00:42:25.820 --> 00:42:27.040
<v Mira>aber das ist kein Riesenunterschied.

00:42:27.640 --> 00:42:29.660
<v Jochen>Da gab es ja nicht auch noch irgendwas für Microsoft Lightboost

00:42:29.660 --> 00:42:31.680
<v Jochen>oder sowas, aber ich weiß gar nicht, was da rausgeworden ist.

00:42:31.680 --> 00:42:33.800
<v Jochen>Oder LightGBM, genau. Ich weiß gar nicht, was da rausgeworden ist.

00:42:34.200 --> 00:42:35.560
<v Jochen>Ich habe nur irgendwann...

00:42:35.560 --> 00:42:36.880
<v Mira>Benutzen wir auch gerade in dem Projekt.

00:42:40.380 --> 00:42:41.760
<v Mira>Und ja, witzigerweise,

00:42:41.920 --> 00:42:43.860
<v Mira>wir haben auch schon, gerade vor einem Jahr

00:42:43.860 --> 00:42:45.480
<v Mira>oder so, haben wir gedacht, kann man eigentlich auch

00:42:45.480 --> 00:42:47.840
<v Mira>LLMs zur Prognose benutzen? Ich möchte dem LLM ja

00:42:47.840 --> 00:42:49.660
<v Mira>sagen, guck mal hier, das und das und das sind

00:42:49.660 --> 00:42:51.360
<v Mira>meine Daten, was denkst du, wie

00:42:51.360 --> 00:42:53.320
<v Mira>teuer ist dieser Gebrauchtwagen?

00:42:53.940 --> 00:42:55.700
<v Mira>Und wir haben da einen Datensatz bekommen von

00:42:55.700 --> 00:42:57.840
<v Mira>einem Unternehmen,

00:42:58.780 --> 00:42:59.980
<v Mira>die genau solche

00:42:59.980 --> 00:43:01.780
<v Mira>Daten eben aus dem Internet crawlen

00:43:01.780 --> 00:43:03.260
<v Mira>und die, das

00:43:03.260 --> 00:43:05.360
<v Mira>sagen wir natürlich so ein bisschen

00:43:05.360 --> 00:43:07.740
<v Mira>Informationen mitgeben und das hat

00:43:07.740 --> 00:43:09.840
<v Mira>aber schon funktioniert. Also wir haben da

00:43:09.840 --> 00:43:12.000
<v Mira>ja, da weiß

00:43:12.000 --> 00:43:13.780
<v Mira>ich jetzt die Details natürlich nicht alle auswendig,

00:43:13.860 --> 00:43:15.260
<v Mira>aber wir haben sowohl mit

00:43:15.260 --> 00:43:17.860
<v Mira>GPT-Modellen

00:43:17.860 --> 00:43:19.940
<v Mira>als auch mit Open-Source-Modellen das ausprobiert.

00:43:20.040 --> 00:43:21.920
<v Mira>Es macht schon Sinn, die zu freintunen

00:43:21.920 --> 00:43:23.760
<v Mira>und dann kann man aber

00:43:23.760 --> 00:43:25.680
<v Mira>relativ gut sagen, mein Auto oder

00:43:25.680 --> 00:43:27.700
<v Mira>das Auto, das ist die Marke, das hat so

00:43:27.700 --> 00:43:29.660
<v Mira>viele Kilometer, das ist so und so alt

00:43:29.660 --> 00:43:31.980
<v Mira>und hier ist noch der Freitext mit der Beschreibung

00:43:31.980 --> 00:43:33.720
<v Mira>dazu. Da steht dann

00:43:33.720 --> 00:43:35.740
<v Mira>vielleicht irgendwas Spannendes drin,

00:43:35.840 --> 00:43:37.840
<v Mira>wie das hat eine Beule, vielleicht steht aber auch nichts Spannendes

00:43:37.840 --> 00:43:39.960
<v Mira>drin. Und dann fragt man, wie

00:43:39.960 --> 00:43:41.440
<v Mira>teuer ist das Auto?

00:43:41.860 --> 00:43:43.760
<v Mira>Bitte antworte mich nur in einer Zahl,

00:43:43.880 --> 00:43:45.580
<v Mira>in Euro oder irgendwie sowas. Und das

00:43:45.580 --> 00:43:47.640
<v Mira>funktioniert schon erstaunlich gut, vor allem, wenn man

00:43:47.640 --> 00:43:49.520
<v Mira>nicht so viele Trainingsdaten hat. Weil ich glaube,

00:43:49.740 --> 00:43:51.460
<v Mira>dann kann das halt die Stärke ausspielen, dass

00:43:51.460 --> 00:43:53.360
<v Mira>das Sprachmodell eben

00:43:53.360 --> 00:43:56.120
<v Mira>schon Vorwissen hat zu Autopreisen,

00:43:56.120 --> 00:43:58.080
<v Mira>weil es das Internet kennt. Also Transformers

00:43:58.080 --> 00:44:00.040
<v Dominik>meinst du jetzt tatsächlich, also die großen LLMs

00:44:00.040 --> 00:44:01.960
<v Dominik>und nicht nur Transformers selbst? Genau. Weil ich hätte

00:44:01.960 --> 00:44:03.880
<v Dominik>mich halt gefragt, ob das in dem Transformers-Modell

00:44:03.880 --> 00:44:05.920
<v Dominik>durch das, weiß ich nicht, dadurch, dass es

00:44:05.920 --> 00:44:07.800
<v Dominik>halt Nodes sind und Canisian Trees,

00:44:07.880 --> 00:44:09.520
<v Dominik>dass es da irgendeine andere Art gibt,

00:44:09.880 --> 00:44:11.820
<v Dominik>dass Daten aus den tabularischen Daten rausziehen.

00:44:12.780 --> 00:44:13.680
<v Mira>Ja, das hier ist jetzt so,

00:44:14.060 --> 00:44:15.780
<v Mira>dass die klassischen

00:44:15.780 --> 00:44:17.700
<v Mira>LLMs, die man so kennt, und dann kam

00:44:17.700 --> 00:44:19.700
<v Mira>eben jetzt dieses neue mit TabPFN,

00:44:19.820 --> 00:44:21.800
<v Mira>das ist ein Transformer, das halt wie speziell

00:44:21.800 --> 00:44:23.760
<v Mira>für tabulare Daten wieder gemacht ist, weil wir haben

00:44:23.760 --> 00:44:25.580
<v Mira>ja die LLMs eigentlich so ein bisschen zweckentfremdet,

00:44:25.940 --> 00:44:27.240
<v Mira>indem wir die dann da nach dieser Probe-Modul gesagt haben.

00:44:27.240 --> 00:44:28.980
<v Dominik>Was meintest du denn da überhaupt mit Feintuning?

00:44:29.200 --> 00:44:30.280
<v Dominik>Was habt ihr denn da gemacht?

00:44:31.960 --> 00:44:56.840
<v Mira>Also ich weiß nicht, wie das eigentlich im Detail dort funktioniert, aber es ist so, dass das Modell ja eben schon ganz viel weiß von den Sprachdaten, die es aus dem Netz kennt und wir haben ihm dann nochmal, ja gut, das beschreibt es wahrscheinlich ab dann schon komplett, wir haben dem dann nochmal, wir haben einen Trainingsdatensatz, wir ganz viele Gebrauchtwagen schon drin haben mit dem Preis und den ganzen Eigenschaften.

00:44:57.120 --> 00:45:15.240
<v Mira>Und dann haben wir ihm ganz viele Texte gegeben, zu jedem Auto ein Text. Das Auto ist so und so alt, sieht so und so aus, ist die Marke und es kostet das. Und das nächste Auto ist so und so und so und kostet das. Und das ist dann nochmal ein zusätzlicher Text und damit trainiert man das Modell nochmal spezifisch auf diesen einen Task.

00:45:15.240 --> 00:45:35.020
<v Mira>Also wie das jetzt im Hintergrund genau passiert, kann ich tatsächlich euch gerade gar nicht erklären, weil ich in dem Thema weniger drin bin als in so etwas wie XGBoost. Aber ja, dadurch ist das Modell dann nochmal, kriegt nochmal so eine Spezialausbildung quasi für das Thema Auto-Gebrauchtwagenpreise. Und dann wird es nochmal besser, wenn man ihm dann so eine Frage später stellt.

00:45:35.340 --> 00:45:51.100
<v Jochen>Ja, man trainiert es quasi nochmal ein Stückchen weiter, gibt es unterschiedliche Ansätze, wie man das dann macht, ob man nur Layer einfriert, bestimmte Gewichte halt nicht neu setzt und dann vielleicht nur die letzten irgendwie anpasst oder ob man so Low-Rank-Adaption-Geschichten macht oder da gibt es ganz unterschiedliche.

00:45:51.100 --> 00:45:53.680
<v Dominik>Ich komme mir an die Gewichte gar nicht dran von den großen NLMs zum Beispiel.

00:45:54.280 --> 00:46:07.060
<v Jochen>Nee, das kannst du auch nicht mit, das kannst du natürlich dann nur, also du kannst mit den OpenAI-Modellen und so auch machen über deren APIs, aber wenn du das auf einem quasi, wenn du das selber machen willst, dann musst du ein Modell nehmen, wo du Gewichte hast.

00:46:07.060 --> 00:46:08.340
<v Jochen>Ja, genau, das natürlich.

00:46:09.880 --> 00:46:11.680
<v Mira>Ich glaube, wir haben da beides

00:46:11.680 --> 00:46:13.560
<v Mira>gemacht. Also einmal über OpenAI, da kann man einfach

00:46:13.560 --> 00:46:15.800
<v Mira>über die Abdesign-Dienst mit Fine-Tuning-Datensatz

00:46:15.800 --> 00:46:17.600
<v Mira>machen, aber auch mit

00:46:17.600 --> 00:46:20.060
<v Mira>den Open-Source-Modellen,

00:46:20.360 --> 00:46:21.320
<v Mira>wo wir dann nochmal ein Fine-Tuning

00:46:21.320 --> 00:46:23.360
<v Mira>drangehängt haben, damit die eben speziell

00:46:23.360 --> 00:46:25.280
<v Dominik>auf Autopreise...

00:46:25.280 --> 00:46:27.580
<v Mira>Bei Tuning

00:46:27.580 --> 00:46:29.220
<v Mira>und Autos fällt mir jetzt erst auf, dass das

00:46:29.220 --> 00:46:30.440
<v Mira>echt total gut passt.

00:46:31.240 --> 00:46:31.340
<v Dominik>Ja.

00:46:33.600 --> 00:46:35.420
<v Dominik>Okay, das ist also Tab-DFN.

00:46:35.920 --> 00:46:36.460
<v Dominik>Ja.

00:46:37.740 --> 00:46:39.500
<v Mira>Wobei, das ist jetzt noch relativ

00:46:39.500 --> 00:46:41.560
<v Mira>neu und da

00:46:41.560 --> 00:46:43.700
<v Mira>ja nicht jede Woche neue Projekte losgehen,

00:46:43.780 --> 00:46:45.460
<v Mira>sondern die meisten Projekte schon länger laufen,

00:46:45.880 --> 00:46:47.620
<v Mira>sind die meisten Projekte, die wir haben,

00:46:47.620 --> 00:46:49.540
<v Mira>dann auch mit sowas wie XGBoost oder teilweise

00:46:49.540 --> 00:46:51.960
<v Mira>auch mit irgendwelchen ausgefeilten

00:46:51.960 --> 00:46:53.960
<v Mira>statistischen Ansätzen

00:46:53.960 --> 00:46:55.660
<v Mira>oder Kombinationen, je nachdem,

00:46:55.760 --> 00:46:57.600
<v Dominik>was man macht. Ja, das finde ich dann spannend. Wie viel kann denn

00:46:57.600 --> 00:46:59.520
<v Dominik>jemand, der richtig gute Statistik oder in klassischer

00:46:59.520 --> 00:47:01.340
<v Dominik>Statistik ist, rausholen im Vergleich zu diesen

00:47:01.340 --> 00:47:03.500
<v Dominik>ich beschieße das einfach mit so einem Modell?

00:47:04.900 --> 00:47:05.540
<v Mira>Ich würde sagen, es

00:47:05.540 --> 00:47:07.320
<v Mira>kommt auf die Fragestellung an. Bei so einem

00:47:07.320 --> 00:47:09.560
<v Mira>relativ klassischen Tasks

00:47:09.560 --> 00:47:09.940
<v Mira>wie

00:47:09.940 --> 00:47:13.620
<v Mira>Verkaufszahlen geht es, glaube

00:47:13.620 --> 00:47:15.120
<v Mira>ich, auch mit einem Modell

00:47:15.120 --> 00:47:17.480
<v Mira>ganz gut,

00:47:17.560 --> 00:47:19.360
<v Mira>wenn man es natürlich richtig macht und

00:47:19.360 --> 00:47:21.240
<v Mira>zum Beispiel noch,

00:47:21.340 --> 00:47:23.340
<v Mira>es gibt da ja eine Menge Hyperparameter, die

00:47:23.340 --> 00:47:25.360
<v Mira>bestimmen, wie flexibel ist das Modell und

00:47:25.360 --> 00:47:27.240
<v Mira>wenn man das Modell zu flexibel sein lässt, dann

00:47:27.240 --> 00:47:29.180
<v Mira>lernst du auch die kleinsten

00:47:29.180 --> 00:47:31.420
<v Mira>Wackler auf den Trainingsdaten und auf neuen Daten

00:47:31.420 --> 00:47:32.760
<v Mira>erzählst du dann nur Mist.

00:47:33.220 --> 00:47:35.400
<v Mira>Das heißt, dann hat man Overfitting

00:47:35.400 --> 00:47:37.100
<v Mira>und das muss man verhindern. Es gibt natürlich schon

00:47:37.100 --> 00:47:38.640
<v Mira>ein paar Sachen, die man falsch machen könnte,

00:47:39.280 --> 00:47:41.200
<v Mira>aber wenn man da alles

00:47:41.200 --> 00:47:43.160
<v Mira>nach State of the Art macht, kommt man bei so

00:47:43.160 --> 00:47:45.020
<v Mira>einfachen Aufgaben mit einem XG Boost

00:47:45.020 --> 00:47:47.120
<v Mira>meistens ziemlich weit, aber

00:47:47.120 --> 00:47:49.020
<v Mira>ja, zum Beispiel

00:47:49.020 --> 00:47:51.240
<v Mira>im Sportwettenbereich gibt es ja

00:47:51.240 --> 00:47:53.140
<v Mira>manchmal dann wirklich komplizierte Sachen, also wenn

00:47:53.140 --> 00:47:54.520
<v Mira>ich jetzt vorher sagen will, wie

00:47:54.520 --> 00:47:57.340
<v Mira>die Tore sich verteilen,

00:47:58.100 --> 00:47:58.420
<v Mira>dann

00:47:58.420 --> 00:48:01.140
<v Mira>kommt man da dann schon nochmal weiter, wenn man wirklich

00:48:01.140 --> 00:48:03.060
<v Mira>darüber nachdenkt, theoretisch, was ist denn das

00:48:03.060 --> 00:48:04.940
<v Mira>jetzt eigentlich für eine Verteilung, das sind

00:48:04.940 --> 00:48:06.840
<v Mira>Anzahlen, also es ist eine

00:48:06.840 --> 00:48:08.440
<v Mira>Brosson-Verteilung, aber die ist ja irgendwie

00:48:08.440 --> 00:48:10.240
<v Mira>bivariat, weil es sind ja zwei

00:48:10.240 --> 00:48:12.820
<v Mira>Mannschaften und zwei Teams, die Tore

00:48:12.820 --> 00:48:14.860
<v Mira>machen und da weiß ich, dass

00:48:14.860 --> 00:48:16.740
<v Mira>meine Kolleginnen und Kollegen

00:48:16.740 --> 00:48:18.840
<v Mira>sich schon einige ziemlich verrückte Sachen

00:48:18.840 --> 00:48:20.900
<v Mira>ausgehört haben. Und dann umgekehrt, manchmal ist es am Ende

00:48:20.900 --> 00:48:23.000
<v Mira>auch irgendwie doch nur eine einfache Heuristik,

00:48:23.120 --> 00:48:24.100
<v Mira>die einen ziemlich weit bringt.

00:48:24.980 --> 00:48:26.900
<v Dominik>Ihr habt also nicht die Ernährung der Spieler am Morgen

00:48:26.900 --> 00:48:28.700
<v Dominik>zuvor mit einfließen lassen können in sowas?

00:48:28.900 --> 00:48:30.760
<v Mira>Das weiß ich nicht, ich müsste mal fragen, ob sie das

00:48:30.760 --> 00:48:32.520
<v Mira>in der Feature drin haben.

00:48:33.560 --> 00:48:34.740
<v Dominik>Es gibt auf jeden Fall spannende Sachen.

00:48:34.940 --> 00:49:00.560
<v Dominik>Ja, also ich würde mich halt tatsächlich interessieren, was man aus Statistik irgendwie daraus lernen kann, weil ich verstehe nicht genau, wie jetzt in so einem Transformers-Modell die einzelnen Gewichte bei den Neuronen zustande kommen, also ich stelle mir das so vor, der muss versuchen, diese Features rauszufinden und die irgendwie so linear unabhängig wie möglich voneinander zu gestalten, dass er irgendwie den Erklärungsgrad dann da rausfindet, der dann halt gut ist, damit er halt gute Prognosen hinkriegt, aber so richtig klar wird das nicht.

00:49:00.960 --> 00:49:16.520
<v Jochen>Ja, neuronale Liste sind deutlich eher Blackbox, aber das ist Extribus auch. Natürlich, du kriegst bei beiden auch so ein bisschen raus, was da der Grund ist, warum das jetzt irgendwie so oder so entschieden oder vorhergesagt hat, aber es ist schon eher so Blackbox-Modelle.

00:49:17.500 --> 00:49:19.740
<v Mira>Ja, man kann jetzt nachträglich dann.

00:49:20.100 --> 00:49:50.080
<v Dominik>Also das wäre jetzt vielleicht für mich auch nochmal einer der Punkte, der für dieses Data Cleansing spricht. Ja, also wenn ich jetzt die Daten da einfach so reinkippe oder am Anfang schon so aufteile, dass ich jetzt Cluster bilde oder Kategorien bilde oder sowas und die halt nochmal damit annotiere oder so, ob das halt eine deutliche Verbesserung bringt, also weil die ein bisschen reiner sind vielleicht oder halt, ne, oder schon mal irgendwie die Daten wie eine Zusammenfassung oder eine Summe oder sowas da schon drin steht mit, ja, in irgendeiner extra Spalte, dass das dann halt das Ergebnis zum Beispiel nochmal deutlich verbessert.

00:49:50.100 --> 00:49:51.340
<v Dominik>bessere Güte kriegt.

00:49:51.360 --> 00:49:53.360
<v Dominik>Du beschreibst, glaube ich, Feature-Engineering gerade, oder?

00:49:53.780 --> 00:49:54.180
<v Jochen>Ja, vielleicht.

00:49:55.840 --> 00:49:56.940
<v Mira>Also zum Beispiel,

00:49:57.240 --> 00:49:59.240
<v Mira>viele Modelle sind ja auch dazu in der Lage,

00:49:59.320 --> 00:50:01.680
<v Mira>Interaktionen zu erkennen. Also beispielsweise,

00:50:02.680 --> 00:50:02.980
<v Mira>weißt du,

00:50:03.300 --> 00:50:05.420
<v Mira>vielleicht mal gerade

00:50:05.420 --> 00:50:07.220
<v Mira>ein gutes Beispiel. Ah ja, vielleicht aus der

00:50:07.220 --> 00:50:09.080
<v Mira>Luftschallstoff-Prognose überlege ich gerade

00:50:09.080 --> 00:50:11.180
<v Mira>irgendwie was.

00:50:11.820 --> 00:50:13.600
<v Mira>Ja, also mittags ist die

00:50:13.600 --> 00:50:15.200
<v Mira>Luft schlechter, weil mehr Autos rumfahren,

00:50:15.400 --> 00:50:17.500
<v Mira>aber nur, wenn wir keinen Wind haben. Wenn wir viel Wind

00:50:17.500 --> 00:50:19.640
<v Mira>haben, wird nämlich wenig Schallstoff halt weggepustet.

00:50:19.720 --> 00:50:24.820
<v Mira>Das ist halt die Interaktion, also die Effekt, mittags ist es schlechter, der ist nur da, wenn die Windstärke gering ist.

00:50:25.180 --> 00:50:32.220
<v Mira>Und so eine Interaktion können die Modelle auch lernen, aber manchmal sind die Interaktionen ja vielleicht auch nochmal komplexer von drei oder vier Sachen.

00:50:32.620 --> 00:50:37.260
<v Mira>Und wenn man da schon so eine Idee hat, sag ich logisch, dann macht man es dem Modell halt schon deutlich leichter.

00:50:37.290 --> 00:50:55.110
<v Mira>Wenn man das vorher schon mal explizit zusammenbaut, also dann vielleicht irgendwas, das würde dann sagen, es ist Mittag und es ist kein Wind und es ist windstill. Jetzt in diesem sehr einfachen Beispiel. Und das ist dann, glaube ich, auch wieder so was, wo es dann wirklich viel bringt, immer mal wieder mit den Leuten zu reden, die sich fachlich damit auskennen.

00:50:55.110 --> 00:50:57.130
<v Dominik>und das... Ja, also dann hat man quasi

00:50:57.130 --> 00:50:59.150
<v Dominik>tatsächlich schon das Wissen, was man aus den

00:50:59.150 --> 00:51:01.370
<v Dominik>Daten ziehen kann, so ein bisschen annotiert, reingegeben,

00:51:01.710 --> 00:51:03.110
<v Dominik>dass das Modell dann damit besser arbeiten

00:51:03.110 --> 00:51:04.750
<v Dominik>kann, also als eigene Funktion irgendwie so, ja.

00:51:05.410 --> 00:51:07.130
<v Jochen>Ja, und oft musst du auch... Ich würde sagen, eigentlich

00:51:07.130 --> 00:51:08.810
<v Jochen>ja, du erst. Oh, sorry.

00:51:09.010 --> 00:51:10.930
<v Jochen>Ja, oft musst du auch Daten

00:51:10.930 --> 00:51:12.210
<v Jochen>erstmal transformieren, damit die überhaupt

00:51:12.210 --> 00:51:15.110
<v Jochen>von dem Modell verwendet werden können. Also wenn du zum Beispiel Text hast,

00:51:15.710 --> 00:51:17.030
<v Jochen>kannst du den nicht einfach so

00:51:17.030 --> 00:51:18.770
<v Jochen>bei XGBoost sozusagen rein

00:51:18.770 --> 00:51:21.130
<v Jochen>kippen, weil das kann halt bloß

00:51:21.130 --> 00:51:22.890
<v Jochen>irgendwie eine fixe Anzahl von

00:51:22.890 --> 00:51:24.930
<v Jochen>Spalten und dann muss man das irgendwie

00:51:24.930 --> 00:51:26.950
<v Jochen>erstmal den Text runterprojizieren mit

00:51:26.950 --> 00:51:29.210
<v Jochen>Singular Value Decomposition oder so

00:51:29.210 --> 00:51:30.990
<v Jochen>auf, weiß ich nicht, ein paar hundert Dimensionen oder so

00:51:30.990 --> 00:51:33.430
<v Jochen>und das kann man in XGBoost reinpacken.

00:51:33.890 --> 00:51:35.130
<v Jochen>Sozusagen solche Sachen hat man halt

00:51:35.130 --> 00:51:36.870
<v Jochen>auch immer, ja.

00:51:38.450 --> 00:51:39.170
<v Mira>Ja, das war

00:51:39.170 --> 00:51:41.050
<v Mira>tatsächlich so ein Grund, weshalb wir

00:51:41.050 --> 00:51:42.970
<v Mira>das auch mal ausprobieren wollten mit den LLMs

00:51:42.970 --> 00:51:45.030
<v Mira>zur Vorhersage, weil wie du sagst, wenn wir einen Text

00:51:45.030 --> 00:51:46.650
<v Mira>haben und wollen aber XGBoost machen,

00:51:47.070 --> 00:51:49.030
<v Mira>wie in dieser Freitext mit der Autobeschreibung,

00:51:49.270 --> 00:51:50.950
<v Mira>da muss man sich ja erstmal irgendwie was überlegen,

00:51:51.030 --> 00:51:52.990
<v Mira>wie man den dann in ein sinnvolles

00:51:52.990 --> 00:51:54.850
<v Mira>Format bringst du das ins G-Boost. Das kennt halt

00:51:54.850 --> 00:51:56.390
<v Mira>eigentlich nur spaltende Zahlen.

00:51:56.870 --> 00:51:58.970
<v Mira>Kategorien kann man ja im Prinzip auch noch in Zahlen

00:51:58.970 --> 00:52:00.530
<v Mira>überführen und ein Text,

00:52:01.030 --> 00:52:03.150
<v Mira>naja, ist halt erstmal nicht so einfach.

00:52:03.610 --> 00:52:04.970
<v Mira>Was man jetzt natürlich auch noch machen kann,

00:52:05.050 --> 00:52:07.010
<v Mira>ist, dass man das LLM benutzt, um Features

00:52:07.010 --> 00:52:08.810
<v Mira>zu generieren, indem man sagt, hier ist der Text,

00:52:08.910 --> 00:52:10.250
<v Mira>hat das Auto einen Schaden? Ja, nein.

00:52:11.090 --> 00:52:11.230
<v Jochen>Ja.

00:52:13.210 --> 00:52:14.550
<v Mira>Also es ist dann auch nochmal so eine

00:52:14.550 --> 00:52:16.990
<v Mira>Hybridlösung, die, glaube ich, gar nicht so

00:52:16.990 --> 00:52:18.670
<v Mira>dumm ist. Und halt auch,

00:52:19.390 --> 00:52:20.990
<v Mira>man kann natürlich auch, je nachdem,

00:52:21.090 --> 00:52:22.890
<v Mira>wie genau man das machen will, Leute hinsetzen

00:52:22.890 --> 00:52:25.010
<v Mira>die dann wirklich viel Zeit damit verbringen,

00:52:25.090 --> 00:52:26.870
<v Mira>die Texte durchzugucken und das zu labeln,

00:52:27.110 --> 00:52:28.950
<v Mira>dann ist das bestimmt noch mal ein bisschen genauer.

00:52:29.490 --> 00:52:30.550
<v Mira>Das ist halt die Frage, ob es sich lohnt.

00:52:30.830 --> 00:52:31.430
<v Mira>Das muss man sich mal überlegen.

00:52:32.270 --> 00:52:34.390
<v Dominik>Ja, gut, aber

00:52:34.390 --> 00:52:36.790
<v Dominik>dadurch kann man schon viel rausholen, durch diese Modellierung

00:52:36.790 --> 00:52:37.210
<v Dominik>dann und so.

00:52:38.530 --> 00:52:40.810
<v Dominik>Dann sind wir in diesen Datenprozessen. Wie nennt man diese

00:52:40.810 --> 00:52:42.030
<v Dominik>Datenprozesse? ETIL?

00:52:42.250 --> 00:52:43.850
<v Dominik>Da gibt es ja verschiedene Art und Weisen.

00:52:44.890 --> 00:52:45.650
<v Dominik>Ach, du meinst jetzt

00:52:45.650 --> 00:52:47.890
<v Jochen>Extract, Transform, Load?

00:52:48.230 --> 00:52:50.650
<v Jochen>Das ist, glaube ich, aber nicht unbedingt was mit

00:52:51.650 --> 00:52:52.130
<v Dominik>oder...

00:52:52.130 --> 00:52:53.730
<v Dominik>Ja, aber wir sind jetzt da irgendwo in diesem

00:52:53.730 --> 00:52:55.890
<v Dominik>Workflow, also es ging ja um

00:52:55.890 --> 00:52:57.430
<v Dominik>dieses CRISP, ne? Achso.

00:52:57.850 --> 00:52:59.750
<v Mira>Ja, also ich glaube ja,

00:52:59.890 --> 00:53:02.150
<v Mira>also die ETL, Extract, Transform,

00:53:02.310 --> 00:53:03.870
<v Mira>Load, ist ja, beschreibt

00:53:03.870 --> 00:53:05.390
<v Mira>ja einfach den Prozess, dass man

00:53:05.390 --> 00:53:07.830
<v Mira>Daten irgendwo rauszieht, dann

00:53:07.830 --> 00:53:09.790
<v Mira>irgendwas damit macht, also sie transformiert und sie dann

00:53:09.790 --> 00:53:12.130
<v Mira>irgendwo hinlädt, obwohl man sagt, Daten laden

00:53:12.130 --> 00:53:14.110
<v Mira>für Daten kriegen, in dem Fall ist aber Daten laden

00:53:14.110 --> 00:53:16.010
<v Mira>sie irgendwo hinladen, das ist auch ein bisschen

00:53:16.010 --> 00:53:17.850
<v Mira>verwirrend, auch im Naming finde ich,

00:53:17.990 --> 00:53:18.190
<v Mira>in den

00:53:18.190 --> 00:53:21.790
<v Mira>Code dann, wenn man irgendwann überall

00:53:21.790 --> 00:53:23.730
<v Mira>Load stehen hat, egal ob man Daten zieht oder Daten

00:53:23.730 --> 00:53:24.170
<v Mira>wegschiebt.

00:53:25.770 --> 00:53:27.810
<v Mira>Ja, das ist, so hängt das

00:53:27.810 --> 00:53:29.830
<v Mira>im Prinzip zusammen, aber oft benutzt

00:53:29.830 --> 00:53:31.930
<v Mira>man ja den Begriff ETL

00:53:31.930 --> 00:53:33.810
<v Mira>auch einfach für jeden Prozess,

00:53:33.930 --> 00:53:35.810
<v Mira>der irgendwie Daten nimmt, verarbeitet und

00:53:35.810 --> 00:53:37.230
<v Mira>so durch so eine Strecke schiebt.

00:53:37.330 --> 00:53:39.290
<v Dominik>Außerhalb vom Data Science-Bereich halt auch ganz oft.

00:53:39.690 --> 00:53:41.690
<v Dominik>Ja, also jeder Business-Prozess, den man irgendwie

00:53:41.690 --> 00:53:42.830
<v Dominik>halt automatisieren kann.

00:53:44.050 --> 00:53:45.730
<v Mira>Aber ich glaube, es ist schon oft so, dass man

00:53:45.730 --> 00:53:47.810
<v Mira>auch sagen würde nachher in einem fertigen

00:53:47.810 --> 00:53:49.550
<v Mira>Datenprodukt, okay, hier ist der ETL,

00:53:49.790 --> 00:53:52.290
<v Mira>Erst kommt der ETL und dann kommt der Teil mit dem Modell.

00:53:52.450 --> 00:53:54.410
<v Mira>Also oft nutzt man den Begriff eigentlich auch,

00:53:54.470 --> 00:53:55.730
<v Mira>um das voneinander abzugrenzen.

00:53:57.210 --> 00:53:57.510
<v Dominik>Okay.

00:53:58.230 --> 00:53:59.630
<v Dominik>Also ich verstehe jetzt, wir haben okay verstanden,

00:53:59.690 --> 00:54:03.930
<v Dominik>was das Geschäft macht und was wir da lösen wollen für Daten.

00:54:04.210 --> 00:54:06.230
<v Dominik>Und dann haben wir verstanden, welche Daten wir denn haben

00:54:06.230 --> 00:54:07.410
<v Dominik>und was wir damit machen wollen.

00:54:07.690 --> 00:54:10.210
<v Dominik>Dann haben wir die so transformiert und umgebaut,

00:54:10.210 --> 00:54:12.630
<v Dominik>dass wir die in ein Modell kippen können,

00:54:12.710 --> 00:54:14.670
<v Dominik>was wir uns dann ausdenken oder ausgedacht haben.

00:54:15.490 --> 00:54:16.590
<v Dominik>Und was machen wir dann?

00:54:16.670 --> 00:54:18.590
<v Dominik>Dann gucken wir uns an, was dabei rauskommt.

00:54:19.570 --> 00:54:23.730
<v Mira>Ja, dann haben wir ein Modell und dann machen wir Prognosen und gucken, wie gut die sind.

00:54:24.670 --> 00:54:27.050
<v Mira>Und da muss man natürlich verschiedene Sachen beachten.

00:54:27.650 --> 00:54:33.210
<v Mira>Also wenn ich die Prognosen auf denselben Daten mache, die ich für das Modelltraining benutzt habe,

00:54:33.290 --> 00:54:35.190
<v Mira>dann ist das natürlich für das Modell relativ einfach.

00:54:36.150 --> 00:54:40.270
<v Mira>Und deswegen ist es wichtig, dass ich mir vorher einen Teil der Daten weglege

00:54:40.270 --> 00:54:43.550
<v Mira>und nur die übrigen Daten kriegt das Modell zum Lernen.

00:54:43.550 --> 00:54:47.010
<v Mira>Und dann habe ich auf diesen weggelegten Daten die Prognosen.

00:54:47.650 --> 00:54:52.070
<v Mira>Und dann gucke ich, was tatsächlich die Werte waren und vergleiche die mit den Prognosen von dem Modell.

00:54:52.550 --> 00:54:55.530
<v Mira>Und das Modell ist halt ja natürlich in dem Moment blind, das kriegt halt nur die ganzen Features,

00:54:55.670 --> 00:54:58.510
<v Mira>aber es kriegt nicht die Zielvariable, es muss dann seine Prognosen blind machen

00:54:58.510 --> 00:55:03.050
<v Mira>und wir können dann gucken und sagen, ja, wir kennen die Warnwerte aber schon und vergleichen das jetzt.

00:55:03.170 --> 00:55:07.690
<v Mira>Da gibt es dann verschiedene Kennwerte, die man berechnen kann, kommt es halt total auf die Fragestellung an.

00:55:07.770 --> 00:55:11.350
<v Mira>Man könnte zum Beispiel eine mittlere prozentuale Abweichung berechnen,

00:55:11.350 --> 00:55:14.610
<v Mira>man kann einen Bias berechnen, liegen Mittel drüber oder drunter,

00:55:14.850 --> 00:55:18.350
<v Mira>Man kann einen erklärten Varianzanteil berechnen.

00:55:18.530 --> 00:55:20.490
<v Mira>Man kann, je nachdem, vielleicht wollen wir auch gar nicht

00:55:20.490 --> 00:55:22.890
<v Mira>numerische Daten vorher sagen, sondern nur ein Ja, Nein.

00:55:22.990 --> 00:55:27.010
<v Mira>Dann könnte man gucken, wie viele false positive, false negative und so weiter habe ich.

00:55:27.330 --> 00:55:29.530
<v Mira>Das kommt stark auf den Use Case an.

00:55:29.610 --> 00:55:31.130
<v Mira>Auf jeden Fall kann ich das dann berechnen.

00:55:31.790 --> 00:55:35.130
<v Mira>Schön out of sample, also mit diesem separaten Datensatz.

00:55:36.090 --> 00:55:40.010
<v Mira>Und das ist natürlich besonders gut, wenn man zwei Modelle vergleichen will.

00:55:40.010 --> 00:55:43.690
<v Mira>Wenn man nur eins hat, dann ist es, glaube ich, auch gar nicht so leicht zu sagen,

00:55:43.750 --> 00:55:44.810
<v Mira>was ist denn jetzt ein guter Wert?

00:55:44.930 --> 00:55:47.570
<v Mira>Will ich irgendwie 20, 50 oder 90 Prozent erklärte Varianz?

00:55:47.630 --> 00:55:49.690
<v Mira>Das kommt auch stark auf die Fragestellung an.

00:55:50.030 --> 00:55:53.370
<v Mira>Wenn ich zum Beispiel individuelles Verhalten von Menschen erklären will,

00:55:53.510 --> 00:55:56.150
<v Mira>dann kann ich das natürlich nicht so genau vorhersagen

00:55:56.150 --> 00:55:58.430
<v Mira>wie aggregierte Verkaufszahlen,

00:55:58.950 --> 00:56:01.630
<v Mira>weil da einfach so viele andere Einflüsse sind.

00:56:02.710 --> 00:56:05.370
<v Mira>Und nochmal zu diesem Split,

00:56:05.670 --> 00:56:08.030
<v Mira>zu den Trainingsdaten und den Testdaten.

00:56:09.090 --> 00:56:11.110
<v Mira>In den allermeisten Fällen haben unsere Daten

00:56:11.110 --> 00:56:12.670
<v Mira>ja eigentlich eine zeitliche Struktur.

00:56:12.890 --> 00:56:15.810
<v Mira>Man kann jetzt natürlich die Testdaten zufällig rausziehen und zur Seite legen.

00:56:15.930 --> 00:56:20.530
<v Mira>Aber am besten ist es, wenn man immer die zeitlich, die nimmt, die zeitlich am Ende liegen.

00:56:20.530 --> 00:56:26.630
<v Mira>Weil manchmal ändern sich eben Zusammenhänge und das eigentlich passiert ständig, dass sich Zusammenhänge ändern.

00:56:26.790 --> 00:56:31.370
<v Mira>Und deswegen ist es halt sinnvoll, so ein Szenario zu bauen, wo das Modell quasi auf der Vergangenheit lernt

00:56:31.370 --> 00:56:35.010
<v Mira>und dann auf Daten, die danach passiert sind, auch tatsächlich evaluiert wird.

00:56:35.250 --> 00:56:41.190
<v Mira>Sonst kann es halt passieren, dass man sich da verschätzt und dann denkt, das Modell wäre besser, als es tatsächlich ist.

00:56:41.370 --> 00:56:49.050
<v Mira>Und nachher im Betrieb, dann muss es ja tatsächlich Prognosen für die Zukunft machen und dann ist die Enttäuschung dann irgendwie da, wenn es dann doch schlechter funktioniert, als man dachte.

00:56:49.650 --> 00:56:54.990
<v Dominik>Aber man muss natürlich auch immer auffassen, dass man dann halt die neuen Zusammenhänge nach den Änderungen dann irgendwie auch trotzdem mit reinkriegt, ne?

00:56:55.510 --> 00:56:59.150
<v Mira>Ja, das ist natürlich regelmäßiges Neutraining, ja.

00:56:59.150 --> 00:57:04.050
<v Mira>Also das ist dann auch total wichtig, dass man das Modell nicht einmal trainiert und dann fünf Jahre lang benutzt.

00:57:04.530 --> 00:57:10.990
<v Mira>Trotzdem, solange die Zusammenhänge noch nicht da sind, die neuen, wenn man die noch nicht kennt, muss man halt zumindest mit dem leben, was man bis dahin hat.

00:57:11.370 --> 00:57:23.710
<v Dominik>Also man könnte ja vielleicht auch diese Zusammenhänge irgendwie als, ich sag mal, Liste dem Geschäft zurückgeben, hey, hier, das sind unsere Annahmen, guckt doch mal bitte, dass die noch stimmen und wenn ihr merkt, irgendwie da ändert sich irgendwas an den Annahmen, dann müssen wir halt da nochmal was auch anpassen.

00:57:24.770 --> 00:57:50.070
<v Mira>Ja, also zumindest, ich glaube, so direkt geht es gar nicht so gut, weil das ist ja was, was das Modell findet und wo die dann eher auch sagen, ah ja, cool, ja, das passt so ungefähr zu dem, was wir erwartet haben, aber die können sich wirklich sagen, oh, das ändert sich jetzt, weil jetzt ist, keine Ahnung, zum Beispiel der Zusammenhang von Autoanzahl zu Stickoxiden, der wird schwächer, weil mehr E-Autos unterwegs sind und die stoßen keine Stickoxide aus.

00:57:50.490 --> 00:58:08.930
<v Mira>Ja, okay, aber wie viel schwächer der jetzt wird, das kann uns diese NAS-Verwaltung hier für Umwelt und so weiter ja auch nicht sagen. Also sie können uns sagen, ja, das wird wahrscheinlich schwächer mit der Zeit. Also klar, solltet ihr das Modell regelmäßig neu trainieren, aber die können uns nicht sagen, so und jetzt ist es aber so viel schwächer geworden, jetzt müsst ihr mal neu trainieren. Das kann die auch gar nicht sehen.

00:58:09.090 --> 00:58:36.630
<v Mira>Aber deswegen ist es halt meistens so, dass man einfach sagt, wir trainieren unser Modell zum Beispiel einmal im Monat neu und dann wissen wir, dass wir halt eigentlich immer neue Zusammenhänge abgedeckt haben. Deswegen ist es auch manchmal gar nicht so nützlich, ganz, ganz viel Datenhistorie zu haben, weil vielleicht das vor allem jetzt, wo auch noch Corona war, dass die Zusammenhänge und die Muster während Corona in irgendwelchen Verkaufszahlen oder menschlichem Verhalten, die sind natürlich jetzt halt anders.

00:58:36.630 --> 00:58:55.670
<v Dominik>Wäre mein nächster Punkt gewesen. Also wenn ich jetzt Statistik nehme oder von Statistik irgendwo abhängige Modelle, um Prognosen zu machen für die Zukunft, dann bin ich ja immer nur auf den Normalfall trainiert oder den Alltag. Und diese ganzen Schock-Situationen, die kann ich ja immer ganz schlecht abbilden, weil ich ja dafür auch keine Beispiele gehabt habe.

00:58:56.330 --> 00:59:07.810
<v Mira>Wenn der Schock gerade erst passiert ist, dann ist es echt schwierig. Man kann vergangene Schocks kann man halt noch mit reinnehmen und sagen, okay, hier war ein Strukturbruch, da hat sich jetzt irgendwie was geändert. Das nehmen wir als Feature mit rein. Geht manchmal, geht auch nicht immer.

00:59:09.470 --> 00:59:25.590
<v Mira>Also ich glaube, wir haben tatsächlich in dem Luftverschmutzungsprojekt, haben wir, glaube ich, einfach die Zeiträume definiert. Hier war Lockdown, hier war kein Lockdown. Damit das Modell zumindest weiß, ah, deswegen war hier so viel weniger Luftverschmutzung.

00:59:25.730 --> 00:59:28.110
<v Dominik>Ja, okay, sonst hättest du gedacht, oh, das ist eine gute Sache.

00:59:28.990 --> 00:59:50.830
<v Jochen>Aber ich habe nochmal, ich würde mal ganz kurz einen Schritt zurückgehen, weil ich habe eine Frage, die mich noch jetzt schon interessieren würde, weil ich jetzt auch gar nicht so wirklich Ahnung von diesem Tab-PFN oder so habe, weil in den anderen Bereichen haben ja die, also normalerweise hat man neuronale Netze für solche tabularischen Daten, das hat nicht, das funktioniert auch, aber halt nicht so gut wie die anderen Arten von Modellen oft.

00:59:51.290 --> 01:00:17.530
<v Jochen>Und die Frage wäre jetzt, was einem ja die Transformer beziehungsweise überhaupt irgendwie das ganze Deep Learning, die ganze Deep Learning Geschichte oder so in anderen Bereichen gebracht hat, ist ja, dass man nicht mehr so viel Feature Engineering machen musste oder eigentlich ist man ja am Feature Engineering mehr oder weniger vorher gescheitert und dann jetzt kann man halt inzwischen einfach die Rohdaten da so, naja, mehr oder weniger reinkippen und das neuronale Netz macht das Feature Engineering für einen sozusagen.

01:00:17.790 --> 01:00:30.730
<v Jochen>Und die Frage wäre halt, macht es das möglicherweise, ist es bei TAP-Hilfe auch so, dass ich da jetzt quasi auch relativ rohe Daten irgendwie verwenden kann oder muss ich das erstmal auch irgendwie in eine Struktur bringen, so ähnlich wie bei XGBoost?

01:00:31.410 --> 01:00:45.270
<v Mira>Da fragst du eigentlich die falsche. Ich glaube aber, dass man da nicht viel vorbereiten musste. Aber da würde ich tatsächlich auch auf unsere Podcast-Folge mit dem Autor von Tapping FM verweisen.

01:00:45.810 --> 01:00:48.250
<v Jochen>Muss ich mal anhören. Klingt gut.

01:00:48.370 --> 01:00:50.510
<v Mira>Ja, also genau, die ist dann wahrscheinlich für dich die richtige.

01:00:51.190 --> 01:00:57.230
<v Dominik>Ja. Aber vielleicht nochmal zu dem Modelltraining. Wo trainiert ihr denn das und wie macht ihr das?

01:01:00.530 --> 01:01:01.970
<v Mira>auf

01:01:01.970 --> 01:01:04.890
<v Mira>also oft auf

01:01:04.890 --> 01:01:06.810
<v Mira>ABS-Maschinen zum Beispiel.

01:01:07.370 --> 01:01:09.430
<v Mira>Wir haben auch selbst ein paar

01:01:09.430 --> 01:01:11.210
<v Mira>fette Server, die sind

01:01:11.210 --> 01:01:13.230
<v Mira>jetzt im Rechenzentrum in Nürnberg. Seit neuestem

01:01:13.230 --> 01:01:15.350
<v Mira>haben sie dort unter ihresgleichen.

01:01:15.450 --> 01:01:17.350
<v Mira>Vorher haben sie so ein bisschen das Büro beheizt,

01:01:17.430 --> 01:01:19.150
<v Mira>sag mal, es gewinnt das. Jetzt haben

01:01:19.150 --> 01:01:21.090
<v Mira>sie einen besseren Ort gefunden. Also die benutzen wir auch

01:01:21.090 --> 01:01:22.990
<v Mira>manchmal, aber viel läuft jetzt natürlich

01:01:22.990 --> 01:01:24.790
<v Mira>inzwischen in der Cloud und auch das ist dann auch

01:01:24.790 --> 01:01:26.190
<v Mira>kundenabhängig. Also zum Beispiel

01:01:26.190 --> 01:01:28.750
<v Mira>Azure, was auch immer dann.

01:01:29.110 --> 01:01:30.450
<v Mira>Aber das sind

01:01:30.530 --> 01:01:33.030
<v Mira>auf Sachen, die dann doch lokal

01:01:33.030 --> 01:01:34.830
<v Mira>ein bisschen zu lang dauern würden und dann besser

01:01:34.830 --> 01:01:36.150
<v Mira>auf einer größeren Maschine laufen.

01:01:37.070 --> 01:01:38.610
<v Dominik>Also irgendwie, ja.

01:01:39.230 --> 01:01:40.910
<v Mira>Und also die klassischen

01:01:40.910 --> 01:01:42.710
<v Mira>Sachen sind halt normalerweise

01:01:42.710 --> 01:01:44.890
<v Mira>einfach auf der CPU natürlich

01:01:44.890 --> 01:01:46.570
<v Mira>und wenn wir dann aber zu

01:01:46.570 --> 01:01:48.850
<v Mira>LLMs kommen, dann geht es natürlich in Richtung

01:01:48.850 --> 01:01:51.050
<v Mira>GPU und wir haben uns auch da

01:01:51.050 --> 01:01:52.810
<v Mira>was zugelegt vor einigen

01:01:52.810 --> 01:01:54.810
<v Mira>Monaten, sodass wir unsere eigene GPU haben

01:01:54.810 --> 01:01:56.610
<v Mira>und auch mal selbst das

01:01:56.610 --> 01:01:58.350
<v Mira>aussetzen konnten auf einer eigenen GPU,

01:01:58.970 --> 01:02:00.230
<v Mira>was natürlich auch

01:02:00.530 --> 01:02:02.450
<v Dominik>ganz spannend ist. Also habt ihr eine eigene Maschine gestellt oder habt ihr

01:02:02.450 --> 01:02:03.690
<v Dominik>irgendwie bei Hetzner oder was gemietet?

01:02:04.150 --> 01:02:06.370
<v Mira>Die haben wir tatsächlich gekauft physisch,

01:02:06.470 --> 01:02:07.850
<v Mira>die sitzt auch im Rechenzentrum

01:02:07.850 --> 01:02:10.510
<v Mira>und dann irgendwann, wir haben ja auch

01:02:10.510 --> 01:02:12.390
<v Mira>mal was ausprobiert, war die dann doch zu klein,

01:02:12.490 --> 01:02:13.870
<v Mira>da haben wir das dann über Abyss gemacht.

01:02:14.690 --> 01:02:14.810
<v Dominik>Okay.

01:02:15.950 --> 01:02:18.030
<v Jochen>Das ist auch schwierig, gerade welche zu kaufen,

01:02:18.250 --> 01:02:19.050
<v Jochen>und das ist sehr teuer.

01:02:19.050 --> 01:02:19.890
<v Dominik>Ja, es ist teuer.

01:02:19.890 --> 01:02:23.350
<v Mira>Ja, komm, das macht jetzt schon Sinn.

01:02:23.890 --> 01:02:24.890
<v Mira>Wir kaufen die, aber

01:02:24.890 --> 01:02:26.990
<v Mira>ich glaube, sie war dann irgendwie zwei Monate

01:02:26.990 --> 01:02:28.270
<v Mira>später wieder deutlich günstiger.

01:02:30.530 --> 01:02:33.430
<v Dominik>Ich glaube, wenn man die mietet, dann kostet die

01:02:33.430 --> 01:02:35.030
<v Dominik>irgendwie so 1.000 Euro im Monat oder sowas.

01:02:35.230 --> 01:02:37.690
<v Jochen>Also mit viel Hauptspeicher,

01:02:37.750 --> 01:02:39.330
<v Jochen>wenn du zum Beispiel LLMs feintunen willst,

01:02:39.410 --> 01:02:40.450
<v Jochen>dann zahlst du eher 1.000 Euro am Tag.

01:02:41.430 --> 01:02:42.630
<v Dominik>Ja, das ist richtig teuer.

01:02:43.610 --> 01:02:45.470
<v Dominik>Ja, okay, kommt wahrscheinlich darauf an, wie viel man braucht.

01:02:47.390 --> 01:02:49.370
<v Mira>Ich glaube, es hat auch

01:02:49.370 --> 01:02:51.230
<v Mira>ein paar Leuten einfach Spaß gemacht, das Ding halt

01:02:51.230 --> 01:02:53.090
<v Mira>auszuwählen und zu kaufen und dann

01:02:53.090 --> 01:02:55.770
<v Mira>wirklich selber sowas komplett aufzusetzen.

01:02:55.770 --> 01:02:58.190
<v Jochen>Ja, das macht auch Spaß.

01:02:58.510 --> 01:02:59.930
<v Mira>Ist ja auch gut, wenn man das dann mal kann.

01:03:00.530 --> 01:03:01.530
<v Jochen>Dann kommt ja der Operator durch auch.

01:03:02.890 --> 01:03:03.810
<v Mira>Ja, ich würde das auch machen.

01:03:04.670 --> 01:03:06.610
<v Jochen>Ich brauche nur einen Grund. Gib mir doch einen Grund dafür.

01:03:07.330 --> 01:03:08.870
<v Mira>Also vielleicht wollt ihr ein unbezahltes

01:03:08.870 --> 01:03:09.330
<v Mira>Praktikum.

01:03:11.550 --> 01:03:12.510
<v Dominik>Wenn wir dann ganz viel

01:03:12.510 --> 01:03:14.530
<v Dominik>große Hardware in die Hand nehmen, können wir nur mal nachdenken.

01:03:16.190 --> 01:03:16.550
<v Mira>Richtig.

01:03:17.070 --> 01:03:18.510
<v Mira>Das könnten wir mal nutzen.

01:03:19.110 --> 01:03:19.330
<v Mira>Aber ja.

01:03:21.730 --> 01:03:22.570
<v Mira>Vielleicht noch mal zu

01:03:22.570 --> 01:03:24.630
<v Mira>der Modellbewertung. Ich hatte ja schon

01:03:24.630 --> 01:03:26.610
<v Mira>gesagt, dass man natürlich Kennzahlen ausbechern kann

01:03:26.610 --> 01:03:28.370
<v Mira>für die Modellgenauigkeit so

01:03:28.370 --> 01:03:30.330
<v Mira>insgesamt. Wie viele

01:03:30.330 --> 01:03:32.530
<v Mira>Fälle werden richtig vorher gesagt, oder wie weit sind wir

01:03:32.530 --> 01:03:34.450
<v Mira>im Mittel daneben. Aber dann

01:03:34.450 --> 01:03:36.310
<v Mira>macht es halt auch Sinn, diese Blackbox

01:03:36.310 --> 01:03:38.430
<v Mira>nochmal aufzubrechen, wie ihr

01:03:38.430 --> 01:03:40.330
<v Mira>eben erwähnt habt. Dass man guckt, was hat

01:03:40.330 --> 01:03:42.010
<v Mira>das Modell eigentlich für Zusammenhänge gefunden.

01:03:43.170 --> 01:03:44.310
<v Mira>Und das ist

01:03:44.310 --> 01:03:46.250
<v Mira>bei einer linearen Regression natürlich leicht,

01:03:46.330 --> 01:03:47.950
<v Mira>weil man sich einfach die Koeffizienten anguckt,

01:03:48.070 --> 01:03:50.430
<v Mira>wie hoch die sind und hat noch welche signifikant sind.

01:03:51.090 --> 01:03:52.170
<v Mira>Aber das geht dann

01:03:52.170 --> 01:03:53.730
<v Mira>bei XGBoost nicht mehr so leicht,

01:03:54.010 --> 01:03:56.530
<v Mira>irgendwelche Splits anzugucken, wie das Modell gefunden hat.

01:03:56.970 --> 01:03:57.990
<v Mira>Aber da gibt es

01:03:57.990 --> 01:03:59.850
<v Mira>ganz tolle Methoden, die nennen sich

01:03:59.850 --> 01:04:01.350
<v Mira>Shep und die

01:04:01.350 --> 01:04:03.530
<v Mira>kann man dann danach auf die,

01:04:04.190 --> 01:04:05.690
<v Mira>also man braucht das Modell und auch nochmal

01:04:05.690 --> 01:04:07.710
<v Mira>einen Datensatz, mit dem man Prognosen macht und

01:04:07.710 --> 01:04:09.850
<v Mira>wenn man das hat, dann kann man diese Methoden

01:04:09.850 --> 01:04:11.670
<v Mira>darauf werfen und

01:04:11.670 --> 01:04:13.430
<v Mira>kriegt dann ganz praktische

01:04:13.430 --> 01:04:15.590
<v Mira>Visualisierung auch. Also erstmal eine

01:04:15.590 --> 01:04:17.670
<v Mira>Feature Importance, also wie viel

01:04:17.670 --> 01:04:19.790
<v Mira>wurde welches Feature vom Modell eigentlich genutzt.

01:04:20.270 --> 01:04:21.410
<v Mira>Auch das ist ja schon mein erster

01:04:21.410 --> 01:04:23.650
<v Mira>Plausibilitätscheck, wenn da irgendwas ganz am Anfang

01:04:23.650 --> 01:04:25.790
<v Mira>steht, was dir überrascht ist, sollte man auch überlegen,

01:04:25.870 --> 01:04:27.670
<v Mira>was da los ist. Und dann kann man sich

01:04:27.670 --> 01:04:29.830
<v Mira>auch die Form der Zusammenhänge angucken. Zum Beispiel

01:04:29.850 --> 01:04:52.450
<v Mira>Beispiel, ich glaube, da haben wir auch gesehen, je windiger, desto weniger Schadstoff, aber irgendwo gibt es dann so eine Sättigung, dann sind die Schadstoffe halt irgendwie einfach so weggeweht, wie es nur geht. Und das, ich glaube, es war sogar, nee, ich glaube, das war das Interessante, irgendwann wurde es halt wieder schlechter, weil dann der Staub aufgewirbelt wird. Wenn es so wenig ist, dann hat man immer nur den Staub in der Luft, dass es wieder schlechter wird.

01:04:52.450 --> 01:05:02.730
<v Mira>Und da dachte ich so, okay, was ist das für ein komisches Muster? Und haben das mit Kunden angeguckt. Die meinten so, ja, das haben wir auch schon beobachtet. Wir denken, das liegt daran, dass dann irgendwann der Wind zu stark ist, dass das halt stoppt.

01:05:02.730 --> 01:05:05.210
<v Dominik>Der Abrief von der ganzen Straße, der kommt nochmal mit hoch.

01:05:05.210 --> 01:05:22.370
<v Mira>Ja, ist natürlich, wenn es regnet, dann halt eben wieder das, wenn dann wird das eben weggespült. Und solche Sachen kann man dann halt eben sich angucken und überlegen, ob die plausibel sind. Und man kann mit den Methoden sogar ganz einzelne Vorhersagen auch nochmal analysieren.

01:05:22.370 --> 01:05:44.270
<v Mira>Und dann sagt die einem quasi so, okay, wir haben jetzt hier 3,5 mehr gesagt, weil es ist Montag und dann haben wir aber nochmal 1,2 weniger gesagt, weil es ist in den Ferien oder sowas. Und das ist natürlich auch sehr gut, um wirklich erklären zu können, warum man genau diese Prognose macht und was das Modell findet und um sich sicher zu sein, dass man auch irgendwie ein sinnvolles und gutes Modell gefunden hat.

01:05:44.270 --> 01:05:46.030
<v Mira>und das klingt jetzt alles so

01:05:46.030 --> 01:05:47.870
<v Mira>lineal, es soll nur mal da so durchgehen, aber

01:05:47.870 --> 01:05:49.870
<v Mira>das ist dann auch manchmal ein Moment, wo man noch mal

01:05:49.870 --> 01:05:51.350
<v Mira>Ideen hat und neue Features baut

01:05:51.350 --> 01:05:53.990
<v Mira>oder noch mal Ideen hat und die Daten bereinigt,

01:05:54.050 --> 01:05:55.890
<v Mira>weil einem irgendwas ganz komisches auffällt, irgendein

01:05:55.890 --> 01:05:57.290
<v Mira>Artefakt, das man loswerden muss,

01:05:58.050 --> 01:06:00.090
<v Mira>dass egal wie toll

01:06:00.090 --> 01:06:01.970
<v Mira>man sich die Daten vorher anguckt, manche Sachen

01:06:01.970 --> 01:06:04.090
<v Mira>finde ich, sieht man einfach erst nach der Modellierung

01:06:04.090 --> 01:06:05.610
<v Mira>und muss dann irgendwie noch mal ein Stück zurückgehen,

01:06:05.670 --> 01:06:06.330
<v Mira>das ist ja kein Problem.

01:06:08.170 --> 01:06:09.670
<v Dominik>Das ist ja dieser Eval-Step dann,

01:06:10.270 --> 01:06:12.150
<v Dominik>der dann guckt, ob das, was man da macht,

01:06:12.290 --> 01:06:13.650
<v Dominik>auch dem entspricht, was man so

01:06:13.650 --> 01:06:16.050
<v Dominik>möchte. Oder ja,

01:06:16.110 --> 01:06:16.670
<v Dominik>es gibt ein Alert.

01:06:17.890 --> 01:06:19.810
<v Dominik>Irgendwas stimmt hier nicht. Aber das kann natürlich auch sein, dass

01:06:19.810 --> 01:06:21.470
<v Mira>in der Realität irgendwas nicht stimmt. Das kommt erst später.

01:06:21.730 --> 01:06:23.630
<v Mira>In dem Moment haben wir noch gar kein

01:06:23.630 --> 01:06:24.550
<v Mira>Alerting-System.

01:06:24.550 --> 01:06:26.630
<v Mira>Wir haben jetzt

01:06:26.630 --> 01:06:28.410
<v Mira>vielleicht eine Pipeline, die

01:06:28.410 --> 01:06:30.290
<v Mira>die Tests laufen lässt, wenn wir was pushen.

01:06:30.430 --> 01:06:32.390
<v Mira>Aber mehr ist in dem Moment normalerweise noch nicht

01:06:32.390 --> 01:06:33.190
<v Mira>automatisiert.

01:06:34.570 --> 01:06:36.190
<v Mira>Und ja, wir schreiben auch sehr gerne Tests.

01:06:36.590 --> 01:06:37.290
<v Dominik>In was schreibt ihr Tests?

01:06:38.870 --> 01:06:39.890
<v Mira>Ich glaube,

01:06:39.970 --> 01:06:41.310
<v Mira>es sind eigentlich immer ein paar Tests unterwegs.

01:06:42.890 --> 01:06:44.450
<v Dominik>Ja, wir lieben

01:06:44.450 --> 01:06:44.830
<v Dominik>FI-Tests.

01:06:46.270 --> 01:06:48.350
<v Mira>Wobei Tests mit Daten ja auch manchmal ganz witzig

01:06:48.350 --> 01:06:50.130
<v Mira>sind, weil man

01:06:50.130 --> 01:06:52.290
<v Mira>ja, braucht man sich

01:06:52.290 --> 01:06:54.150
<v Mira>dann einen kleinen Testdatensatz, ist der

01:06:54.150 --> 01:06:55.990
<v Mira>dann realistisch,

01:06:56.210 --> 01:06:57.790
<v Mira>macht man vielleicht sogar Tests gegen die

01:06:57.790 --> 01:07:00.130
<v Mira>echten Daten, die können natürlich

01:07:00.130 --> 01:07:02.090
<v Mira>keine einzelnen Werte prüfen, aber man kann damit

01:07:02.090 --> 01:07:03.950
<v Mira>testen, ob es überhaupt durchläuft, also ja,

01:07:04.030 --> 01:07:06.410
<v Mira>das ist ein ganz eigenes Thema, Tests mit Daten.

01:07:07.890 --> 01:07:08.310
<v Dominik>Ja, es ist

01:07:08.310 --> 01:07:10.150
<v Dominik>tatsächlich schon, ja, also ich würde

01:07:10.150 --> 01:07:12.350
<v Dominik>auch dazu tendieren, irgendwie aus der Realität irgendwas rauszuschneiden

01:07:12.350 --> 01:07:14.430
<v Dominik>und dann zu gucken, ob das dann so läuft.

01:07:15.550 --> 01:07:16.230
<v Dominik>Weil also so Daten

01:07:16.230 --> 01:07:17.910
<v Dominik>mocken ist immer so ein bisschen...

01:07:17.910 --> 01:07:19.370
<v Dominik>Naja gut, ja.

01:07:20.070 --> 01:07:21.370
<v Dominik>Ja, es geht auch mal, aber

01:07:21.370 --> 01:07:24.390
<v Dominik>schwer. Ja, also in dem Moment

01:07:24.390 --> 01:07:26.170
<v Mira>wäre man ja eigentlich nur beim POC,

01:07:26.290 --> 01:07:28.070
<v Mira>beim Proof of Concept und

01:07:28.070 --> 01:07:29.870
<v Mira>so ein richtiges Produkt oder

01:07:29.870 --> 01:07:32.150
<v Mira>MVP, Minimum Viable

01:07:32.150 --> 01:07:33.590
<v Mira>Product, kriegt man ja erst, wenn man dann

01:07:33.590 --> 01:07:35.790
<v Mira>das Ganze auch deployt und automatisiert.

01:07:37.110 --> 01:07:37.510
<v Mira>Und

01:07:37.510 --> 01:07:40.090
<v Mira>wir stellen unsere

01:07:40.090 --> 01:07:42.370
<v Mira>Prognosen oder Klassifikationen

01:07:42.370 --> 01:07:42.890
<v Mira>oder was auch immer

01:07:42.890 --> 01:07:46.110
<v Mira>oft über APIs zur Verfügung,

01:07:46.350 --> 01:07:47.470
<v Mira>über Rest-APIs.

01:07:48.430 --> 01:07:50.230
<v Mira>Oft machen wir aber auch nochmal

01:07:50.230 --> 01:07:52.410
<v Mira>schon ein Frontend dazu,

01:07:52.650 --> 01:07:54.610
<v Mira>also eine Web-App, wo die dann angezeigt

01:07:54.610 --> 01:07:56.470
<v Mira>werden, wo zum Beispiel unser Kunde sich dann

01:07:56.470 --> 01:07:58.350
<v Mira>die Alarme angucken kann

01:07:58.350 --> 01:07:59.650
<v Mira>von irgendwelchen

01:07:59.650 --> 01:08:02.510
<v Mira>Käufen, die irgendwie suspekt aussehen.

01:08:03.290 --> 01:08:04.170
<v Mira>Mit was macht ihr

01:08:04.170 --> 01:08:06.410
<v Dominik>eine Vent-App? Mit was macht ihr

01:08:06.410 --> 01:08:06.950
<v Dominik>die Web-Apps?

01:08:08.670 --> 01:08:10.170
<v Mira>Meistens mit Vue.js

01:08:10.170 --> 01:08:12.150
<v Mira>und

01:08:12.150 --> 01:08:14.030
<v Mira>historisch auch noch häufiger mit

01:08:14.030 --> 01:08:14.610
<v Mira>R-Shiny.

01:08:17.350 --> 01:08:18.150
<v Mira>Da haben wir

01:08:18.150 --> 01:08:19.730
<v Mira>ein Projekt, das ist eigentlich ganz cool.

01:08:19.950 --> 01:08:21.890
<v Mira>Da geht es gar nicht darum,

01:08:21.930 --> 01:08:23.790
<v Mira>irgendwelche Prognosen zur Verfügung zu stellen, sondern

01:08:23.790 --> 01:08:25.810
<v Mira>da haben wir Shiny-Apps gebaut, damit

01:08:25.810 --> 01:08:28.290
<v Mira>Leute Modellierungsalgorithmen

01:08:28.290 --> 01:08:30.030
<v Mira>anwenden können, ohne dass sie selbst

01:08:30.030 --> 01:08:31.670
<v Mira>R-Code schreiben können müssen.

01:08:31.810 --> 01:08:33.730
<v Mira>Das ist für ganz viele Forschende, die

01:08:33.730 --> 01:08:35.750
<v Mira>aber nicht gut selbst coden können.

01:08:35.910 --> 01:08:37.610
<v Mira>Dann wäre die Hürde natürlich total riesig.

01:08:37.910 --> 01:08:51.650
<v Mira>Aber die brauchen eigentlich diese ziemlich komplexen Methoden und deswegen haben wir da für ein Forschungsinstitut einige Apps gebaut, wo die dann eben über eine Klick-Oberfläche, können sie ihre Daten hochladen und können dann die Analyse fahren mit bestimmten Einstellungen und kriegen dann Ergebnisse und Visualisierungen.

01:08:51.650 --> 01:08:55.770
<v Mira>Das ist natürlich auch sehr praktisch und schreiben die dann mit ihre Doktorarbeiten.

01:08:57.810 --> 01:09:01.930
<v Mira>Ja, aber zurück zu unseren Prognoseergebnissen.

01:09:02.750 --> 01:09:05.010
<v Mira>Genau, oft stellen wir die über eine API zur Verfügung

01:09:05.010 --> 01:09:06.950
<v Mira>oder wir schreiben sie irgendwo in eine Datenbank

01:09:06.950 --> 01:09:08.270
<v Mira>und der Kunde nutzt sie dann halt so.

01:09:08.370 --> 01:09:11.210
<v Mira>Das ist tatsächlich auch was, was man vorher wirklich klären muss.

01:09:11.510 --> 01:09:13.210
<v Mira>Reicht das denen, wenn das eine API ist?

01:09:13.310 --> 01:09:16.490
<v Mira>Oder sitzen da dann Leute, die damit überhaupt nichts anfangen können

01:09:16.490 --> 01:09:17.890
<v Mira>und sagen, ja, was sind denn jetzt meine Zahlen?

01:09:18.950 --> 01:09:22.810
<v Mira>Also genau, das muss man natürlich auch vorher wirklich bis zum Ende denken.

01:09:23.690 --> 01:09:25.850
<v Mira>Und unsere Erfahrung ist auch, dass es,

01:09:26.670 --> 01:09:29.090
<v Mira>auch wenn der Kunde dann irgendwie vorhat,

01:09:29.190 --> 01:09:30.750
<v Mira>doch das selbst zu machen,

01:09:30.850 --> 01:09:32.090
<v Mira>sagt, ja, schreib das in die Datenbank

01:09:32.090 --> 01:09:34.530
<v Mira>und dann benutzen wir es einfach so weiter,

01:09:34.750 --> 01:09:36.970
<v Mira>dann trotzdem lohnt es sich oft,

01:09:37.090 --> 01:09:38.210
<v Mira>dass wir das dann doch mitdenken

01:09:38.210 --> 01:09:40.250
<v Mira>und zumindest irgendwie eine kleine Web-Anwendung schreiben,

01:09:40.670 --> 01:09:42.010
<v Mira>weil sonst die Löhne doch groß ist

01:09:42.010 --> 01:09:44.510
<v Mira>und dann hat der in IT halt eben auch total viel zu tun

01:09:44.510 --> 01:09:45.790
<v Mira>und dann ist es richtig schade,

01:09:45.890 --> 01:09:47.750
<v Mira>wenn das Projekt nachher in der Schublade landet

01:09:47.750 --> 01:09:50.370
<v Mira>und fällt dann ja am Ende irgendwie auch auf uns zurück.

01:09:50.770 --> 01:09:53.270
<v Mira>Also dann lieber nochmal was Kleines bauen,

01:09:53.270 --> 01:09:54.690
<v Mira>damit die dann doch was sehen können.

01:09:55.650 --> 01:09:57.330
<v Dominik>Aber wenn die Farben dann auch richtig sind,

01:09:57.370 --> 01:09:58.390
<v Dominik>ist das das Wichtigste an der Flickung.

01:09:59.010 --> 01:10:00.170
<v Dominik>Ja, irgendwie schon.

01:10:00.710 --> 01:10:01.930
<v Dominik>Das kann man auch durch unterschätzen.

01:10:02.170 --> 01:10:04.190
<v Mira>Man sieht ja alles, ja, das ist sauhässig.

01:10:05.310 --> 01:10:06.530
<v Jochen>Ja, ja, ja.

01:10:08.590 --> 01:10:11.890
<v Mira>Und ja, üblicherweise, das hat man eben schon gesagt,

01:10:11.950 --> 01:10:13.750
<v Mira>ein Modell muss man natürlich regelmäßig neu trainieren,

01:10:13.830 --> 01:10:15.290
<v Mira>weil sich Zusammenhänge in der Regel

01:10:15.290 --> 01:10:18.270
<v Mira>in allen Bereichen immer mal wieder ändern.

01:10:18.270 --> 01:10:20.590
<v Mira>Das ist dann oft sowas wie einmal im Monat.

01:10:21.190 --> 01:10:22.590
<v Mira>Ab und zu sollte man sich das Modell

01:10:22.590 --> 01:10:24.130
<v Mira>sogar auch noch mal ganz genau anschauen,

01:10:24.190 --> 01:10:26.290
<v Mira>zum Beispiel nochmal diese ganzen CHAP-Sorten berechnen und gucken,

01:10:26.390 --> 01:10:27.830
<v Mira>ist das eigentlich noch plausibel?

01:10:28.630 --> 01:10:30.350
<v Mira>Das kann man vielleicht einmal im Jahr machen.

01:10:31.310 --> 01:10:34.190
<v Mira>Und die Prognoseerstellung kommt halt darauf an,

01:10:34.210 --> 01:10:36.470
<v Mira>wie oft die benötigt wird und auch wie schnell sich die Sachen ändern.

01:10:36.650 --> 01:10:38.950
<v Mira>Also in vielen Projekten ist es, dass das einmal am Tag passiert,

01:10:39.050 --> 01:10:40.530
<v Mira>aber manchmal ist es dann auch wirklich in Echtzeit,

01:10:40.530 --> 01:10:43.610
<v Mira>dass dann der Anfall reinkommt und dann wird die Prognose

01:10:43.610 --> 01:10:46.570
<v Mira>für diesen einen ganz konkreten Fall erstellt.

01:10:46.730 --> 01:10:48.070
<v Mira>Und oft kann man die auch noch nicht vorbereiten,

01:10:48.150 --> 01:10:49.810
<v Mira>weil man die Daten vielleicht dann auch noch nicht hat,

01:10:49.870 --> 01:10:52.370
<v Mira>sondern kommen dann rein die Daten und dann braucht man eine Prognose.

01:10:52.770 --> 01:11:02.430
<v Mira>Zum Beispiel kommt ein neuer Kauf rein oder eine Anfrage und man muss in dem Moment entscheiden, ist das irgendwie verdächtig, könnte das Betrug sein oder ist alles okay.

01:11:05.070 --> 01:11:14.270
<v Mira>Und man sollte das natürlich auch überhaupt nicht unterschätzen, weil vom POC zum MVP und das ist dann ja noch ein simples Produkt, das ist oft nochmal Faktor 10 vom Aufwand her.

01:11:14.390 --> 01:11:20.510
<v Mira>Ich glaube, das ist halt total schwer erkennbar, vor allem wenn man am Anfang so ein bisschen geprototypt hat oder vielleicht mit kleineren Daten gearbeitet hat.

01:11:20.590 --> 01:11:22.610
<v Mira>Und dann muss man auf einmal vermitteln,

01:11:22.710 --> 01:11:24.330
<v Mira>ja, jetzt brauchen wir aber noch mal ganz viel Zeit.

01:11:24.450 --> 01:11:25.650
<v Mira>Und die denken so, hey, wir hatten es doch gerade,

01:11:25.710 --> 01:11:27.310
<v Mira>die Ergebnisse gezeigt, die sind doch da.

01:11:29.330 --> 01:11:32.050
<v Mira>Ja, klar, das ist natürlich auch schwer nachvollziehbar von außen.

01:11:32.190 --> 01:11:34.870
<v Mira>Deswegen ist es einfach wichtig, das richtig zu kommunizieren.

01:11:34.870 --> 01:11:36.150
<v Dominik>Ja, ich wollte gerade sagen, schwer zu kommunizieren,

01:11:36.270 --> 01:11:37.770
<v Dominik>das ist, finde ich, auch ein Hauptproblem,

01:11:37.870 --> 01:11:40.250
<v Dominik>gerade bei so Kunden und Technologie.

01:11:40.250 --> 01:11:41.930
<v Mira>Das sollte man natürlich auch vorher sagen und dann danach.

01:11:42.090 --> 01:11:43.050
<v Mira>Ich meine, kann man ja verstehen,

01:11:43.130 --> 01:11:45.870
<v Mira>dass jemand sich dann ein bisschen an der Nase rumgeführt fühlt

01:11:45.870 --> 01:11:47.310
<v Mira>oder einfach schlecht informiert fühlt.

01:11:47.950 --> 01:11:50.710
<v Dominik>Ja, schwierig.

01:11:52.470 --> 01:11:59.730
<v Mira>Ja, und dann gibt es natürlich auch immer noch den Bereich Monitoring und Wartung.

01:11:59.730 --> 01:12:13.570
<v Mira>Also das, wo wir jetzt auch gerade in dem Projekt mit der Senatsverwaltung drinstecken, seit schon einigen Monaten, da haben wir natürlich Alerts, wenn irgendwo ein Prozess abbricht, wenn es irgendwo einen Fehler in einem Pod gibt, dann müssen wir das natürlich wissen.

01:12:14.410 --> 01:12:31.690
<v Mira>Aber es kann auch sein, dass die durchlaufen ohne Fehler, aber trotzdem irgendwas stimmt und vielleicht nur für halb Berlin Prognosen erstellt werden oder nur für einen halben Tag und deswegen sind dann da auch Alarme definiert, die gucken, ist die Anzahl, entspricht die Anzahl der Prognosen in der Datenbank auch tatsächlich unserer Erwartung?

01:12:31.690 --> 01:12:48.210
<v Mira>Man kann auch definieren, gibt es irgendwelche unerwarteten Werte, extrem hohe Prognosen beispielsweise oder gibt es unerwartete Werte in den Input-Daten, Werte, die vielleicht überhaupt nicht definiert sind. Und dann auch wichtig ist der Model-Drift oder Data-Drift.

01:12:48.210 --> 01:13:04.130
<v Mira>Das heißt, dass die Daten so nach und nach irgendwie in eine andere Richtung driften und sich verändern oder das Modell so nach und nach immer so ein bisschen schlechter wird. Aber irgendwann, wenn es das lange genug gemacht hat, dann ist es halt irgendwann nicht mehr gut genug und dann möchte man das ja auch mitbekommen.

01:13:04.130 --> 01:13:31.350
<v Mira>Und zum Beispiel bei jedem monatlichen Modellneutraining will man auch mal die ganzen KPIs, also die ganzen Gütemaße sehen. Oder vielleicht will man sie nicht angucken, sondern möchte halt einfach informiert werden, ob die sich nach einer Weile vielleicht zu stark verschlechtert haben. Und dann muss man sich einfach nochmal angucken, was los ist. Was halt eben auch nochmal zeigt, das ist halt nicht ganz fertig und dann kann man es für immer benutzen. Aber gut, das ist ja auch in der klassischen Softwareentwicklung oft so, dass das so ein bisschen unterschätzt wird, wie viel dann doch noch gemacht werden muss, obwohl es doch fertig ist.

01:13:32.030 --> 01:13:33.510
<v Dominik>Macht ihr dann eigene Monitoring-Tools

01:13:33.510 --> 01:13:35.650
<v Dominik>oder nutzt ihr da auch eins von den Sachen, die es da so gibt?

01:13:36.570 --> 01:13:37.110
<v Mira>Ja, also

01:13:37.110 --> 01:13:39.290
<v Mira>Redash benutzen wir in einem Projekt

01:13:39.290 --> 01:13:41.010
<v Mira>ja ganz gerne und

01:13:41.010 --> 01:13:43.330
<v Mira>sonst, ja, wie das, was ich

01:13:43.330 --> 01:13:44.490
<v Mira>gerade dann

01:13:44.490 --> 01:13:47.250
<v Mira>anbiete, die ich überlege gerade, was wir sonst

01:13:47.250 --> 01:13:49.570
<v Mira>auch so haben, ja, es gibt ja normalerweise

01:13:49.570 --> 01:13:51.210
<v Mira>dann Tools, die man da

01:13:51.210 --> 01:13:53.410
<v Mira>benutzen kann und die man dann zum Beispiel

01:13:53.410 --> 01:13:55.290
<v Mira>auch an Slack anschließen kann und kriegt dann da

01:13:55.290 --> 01:13:56.330
<v Mira>Nachrichten.

01:13:57.130 --> 01:13:58.790
<v Mira>Weiß ich gerade gar nicht so genau, was die

01:13:58.790 --> 01:14:00.590
<v Mira>in anderen Projekten benutzen.

01:14:00.730 --> 01:14:01.810
<v Dominik>Doch, doch, es gibt ganz viele.

01:14:02.030 --> 01:14:04.270
<v Dominik>Ich versuche gerade, meinen Discord anzubinden.

01:14:05.210 --> 01:14:06.890
<v Jochen>Ah, okay. Also was ich empfehlen kann

01:14:06.890 --> 01:14:07.970
<v Jochen>für so Monitoring-Geschichten

01:14:07.970 --> 01:14:10.750
<v Jochen>ist Telegram, weil das halt sehr einfach

01:14:10.750 --> 01:14:12.190
<v Jochen>ist, da irgendwie

01:14:12.190 --> 01:14:14.690
<v Jochen>über die API Dinge zu verschicken.

01:14:14.690 --> 01:14:16.650
<v Dominik>Also Telegram kriege ich auch Nachrichten für meine Server,

01:14:16.770 --> 01:14:18.430
<v Dominik>falls da irgendwas passiert, was ich will, ja.

01:14:19.670 --> 01:14:20.210
<v Mira>Ja, cool.

01:14:20.950 --> 01:14:21.530
<v Mira>Wollte wissen.

01:14:23.190 --> 01:14:24.510
<v Mira>Ist ja auch immer mal so ein spannendes Thema,

01:14:24.770 --> 01:14:26.730
<v Mira>weg von US-Diensten und so.

01:14:27.150 --> 01:14:28.650
<v Jochen>Ja, wahrscheinlich, genau.

01:14:28.870 --> 01:14:30.790
<v Jochen>Das ist natürlich...

01:14:30.790 --> 01:14:32.650
<v Jochen>weil das Ende-Kram irgendwie an der richtigen Adresse ist.

01:14:33.050 --> 01:14:35.110
<v Mira>Man soll ja streuen.

01:14:35.550 --> 01:14:36.690
<v Mira>Ja, ja, genau.

01:14:37.670 --> 01:14:40.530
<v Dominik>Wir nehmen meistens immer so eigene Server oder sowas,

01:14:40.590 --> 01:14:42.030
<v Dominik>aber wenn die halt dann wechseln, ist halt auch blöd,

01:14:42.090 --> 01:14:42.950
<v Dominik>dann merkt man es halt sonst nicht.

01:14:43.870 --> 01:14:46.110
<v Dominik>Ja, dann musst du halt irgendwo anders noch Dinge haben.

01:14:46.130 --> 01:14:47.370
<v Dominik>Ja, man braucht irgendwie so ein Workaround, ja.

01:14:47.790 --> 01:14:49.650
<v Jochen>Aber ja, klar, es wird dann auch teurer.

01:14:49.810 --> 01:14:51.090
<v Jochen>Ein Monitoring ist jetzt so ruhig.

01:14:51.150 --> 01:14:51.950
<v Dominik>Was passiert denn da jetzt?

01:14:54.230 --> 01:14:55.530
<v Mira>Endlich sind alle Bugs weg.

01:14:56.310 --> 01:14:57.270
<v Mira>Eigentlich ist alles gut.

01:14:58.270 --> 01:15:00.210
<v Dominik>Hat jemand den Nameserver mit in die Tasche gesteckt

01:15:00.210 --> 01:15:12.790
<v Mira>Ja, das ist auch noch ein ganz wichtiges Stichwort in dem Bereich ist natürlich ML Ops, also Machine Learning Operations, also Mischung aus DevOps und Machine Learning ist das Wort.

01:15:13.610 --> 01:15:15.470
<v Dominik>Der Kurzvortritt Ceratops, oder?

01:15:16.610 --> 01:15:17.090
<v Dominik>Ja, genau.

01:15:21.090 --> 01:15:28.670
<v Mira>Und ja, es ist eher im Prinzip DevOps, aber Anpassung auf den Datencase, auf die Arbeit mit Daten.

01:15:28.670 --> 01:15:37.230
<v Mira>Das heißt, es kommen noch so ein paar Sachen dazu, wie zum Beispiel, dass man nicht nur Code versionieren muss, sondern auch Modelle oder vielleicht Experimente versionieren.

01:15:38.070 --> 01:15:47.910
<v Mira>Und ja, es gibt halt nicht nur Code-Änderungen, die dazu führen, dass die Ergebnisse anders sind, sondern auch jeder neue Datenpunkt kann die Ergebnisse verändern.

01:15:47.910 --> 01:15:52.010
<v Mira>Das heißt, da kommt dann nochmal so eine zusätzliche Komplexitätsebene mit rein.

01:15:55.940 --> 01:15:56.940
<v Jochen>auch eine ganz wichtige Geschichte.

01:15:57.980 --> 01:15:59.480
<v Dominik>Also ich finde das immer dann schwierig, wenn das halt so

01:15:59.480 --> 01:16:02.000
<v Dominik>verteilte Systeme sind, die gleichzeitig irgendwie rechnen

01:16:02.000 --> 01:16:03.760
<v Dominik>und dann die Sachen wieder zusammenführen müssen.

01:16:03.940 --> 01:16:05.880
<v Dominik>Da steige ich auch nicht so genau

01:16:05.880 --> 01:16:08.080
<v Dominik>durch, wie man das ordentlich machen will.

01:16:08.860 --> 01:16:09.780
<v Dominik>Aber wenn das so

01:16:09.780 --> 01:16:11.740
<v Dominik>distributed ist, was halt beim Machine Learning

01:16:11.740 --> 01:16:12.700
<v Dominik>auch mal passieren kann, ja?

01:16:13.180 --> 01:16:15.420
<v Jochen>Ja, also würde ich jetzt, also aus meiner Erfahrung,

01:16:15.720 --> 01:16:17.300
<v Jochen>also bei mir ist das eigentlich,

01:16:18.260 --> 01:16:19.560
<v Jochen>also das letzte Mal, dass

01:16:19.560 --> 01:16:21.580
<v Jochen>ich den Fall hatte, dass

01:16:21.580 --> 01:16:24.000
<v Jochen>wir irgendwie sowas verteilen

01:16:24.000 --> 01:16:25.540
<v Jochen>mussten, dann war das wegen, weil

01:16:25.540 --> 01:16:27.940
<v Jochen>die Maschinen 32-Bit waren und

01:16:27.940 --> 01:16:29.820
<v Jochen>nicht mehr als 4 Gigabyte, wie man auf eine

01:16:29.820 --> 01:16:31.880
<v Jochen>Maschine kriegte. Und dann brauchte man mehrere

01:16:31.880 --> 01:16:34.060
<v Jochen>Maschinen. Aber danach ist das eigentlich

01:16:34.060 --> 01:16:35.780
<v Jochen>ehrlich gesagt, also mir nicht mehr passiert,

01:16:36.060 --> 01:16:37.640
<v Jochen>weil... Du hast einfach viel zu kleine

01:16:37.640 --> 01:16:39.600
<v Jochen>Elemente. Meine Daten sind zu klein, das kann schon sein.

01:16:39.920 --> 01:16:41.920
<v Jochen>Aber ich meine, man kriegt

01:16:41.920 --> 01:16:44.100
<v Jochen>heute so große Maschinen, also...

01:16:44.100 --> 01:16:45.920
<v Jochen>Ja, über die Preise haben wir uns ja gerade

01:16:45.920 --> 01:16:46.560
<v Jochen>unterhalten, ja.

01:16:46.600 --> 01:16:48.460
<v Jochen>Ja, aber wenn man CPU,

01:16:49.600 --> 01:16:51.200
<v Jochen>die meisten Sachen brauchen wir mal eher CPU,

01:16:51.200 --> 01:16:53.020
<v Jochen>dann das ist nicht so toll.

01:16:54.300 --> 01:16:54.520
<v Jochen>Okay.

01:16:54.900 --> 01:17:02.860
<v Mira>Und wenn du dann so eine ganz große Maschine hast und die ist teuer und dann kannst du den Code so optimieren, dass es viel, viel billiger wird, dann ist das doch auch ein tolles Erfolg.

01:17:06.200 --> 01:17:12.700
<v Dominik>Ja, wo wir gerade schon mal optimieren sind, wie ist das denn mit Performance zum Beispiel? Ich glaube, das ist noch was gewesen, wo wir sprechen wollten.

01:17:13.420 --> 01:17:19.620
<v Mira>Ja, also da könnte man natürlich auch eine ganz separate Folge dazu machen, aber grundsätzlich ist das auch natürlich ein spannendes Thema.

01:17:19.620 --> 01:17:39.840
<v Mira>Also was mir da immer mal wieder auffällt, ist, dass manchmal, wenn man eben die Funktionen nicht kennt, die eigentlich dafür da sind, mit Datensätzen zu arbeiten, dann kann es etwas unperformant werden, weil man zum Beispiel über den ganzen Datensatz loopt, obwohl man Sachen auf die ganze Spalte anwenden könnte.

01:17:39.840 --> 01:17:42.000
<v Mira>und die sind dann in NumPy und sind halt total optimiert.

01:17:44.420 --> 01:17:46.680
<v Mira>Und es gibt eine Menge Sachen.

01:17:47.320 --> 01:17:51.180
<v Mira>Also natürlich, ich glaube, treffen alle Sachen zu,

01:17:51.260 --> 01:17:52.920
<v Mira>die generell auf Softwareentwicklung zutreffen.

01:17:53.000 --> 01:17:54.460
<v Mira>Die treffen natürlich auch bei Daten zu.

01:17:54.540 --> 01:17:56.140
<v Mira>Und dann kommen noch ein paar Sachen dazu,

01:17:56.360 --> 01:17:58.780
<v Mira>also zum Beispiel Umgang mit großen Datensätzen.

01:17:59.620 --> 01:18:01.280
<v Mira>Da hat man eben schon mal angeschnitten,

01:18:01.540 --> 01:18:02.780
<v Mira>dass das natürlich Spark gibt,

01:18:02.880 --> 01:18:05.000
<v Mira>aber es auch nicht unbedingt total schnell immer ist.

01:18:05.620 --> 01:18:07.780
<v Mira>Und manchmal ist es aber auch echt ausreichend,

01:18:07.780 --> 01:18:09.060
<v Mira>auf einem Sample zu arbeiten,

01:18:09.380 --> 01:18:12.120
<v Mira>weil wenn ich eh schon Millionen von Zeilen habe,

01:18:12.220 --> 01:18:14.060
<v Mira>dann werden die weiteren zehn Millionen von Zeilen

01:18:14.060 --> 01:18:17.440
<v Mira>meistens auch nur so viel zusätzliche Informationen liefern.

01:18:17.900 --> 01:18:20.180
<v Mira>Und dann kann ich mein Modell auch auf einem Sample trainieren.

01:18:20.280 --> 01:18:22.320
<v Mira>Ich kann ja immer mal noch checken,

01:18:22.400 --> 01:18:24.040
<v Mira>ob es wirklich nicht immer viel besser wird.

01:18:25.180 --> 01:18:29.620
<v Mira>Das ist so was, was man im Blick haben sollte.

01:18:30.420 --> 01:18:31.360
<v Mira>Ich gucke mal gerade noch.

01:18:31.360 --> 01:18:33.820
<v Mira>Ich hätte da mal so eine Liste.

01:18:36.360 --> 01:18:39.200
<v Mira>Ja, Polar ist eben auch schneller als Pandas.

01:18:39.280 --> 01:18:44.660
<v Mira>Es gab auch vorher noch das Paket-Data-Table,

01:18:44.760 --> 01:18:48.020
<v Mira>aber ich glaube, das ist einfach gar nicht mehr so interessant jetzt, wo es Pollers gibt.

01:18:49.420 --> 01:18:53.060
<v Mira>Dann, ja, bei Datenbanken ist es auch manchmal ganz interessant,

01:18:53.200 --> 01:18:58.980
<v Mira>weil die sind oft eher darauf optimiert, dass man eine kleine Menge von Daten abruft oder hinschreibt.

01:18:58.980 --> 01:19:01.140
<v Mira>Und wenn man dann auf einmal mehrere Millionen Zeilen hat,

01:19:01.220 --> 01:19:04.200
<v Mira>dann werden die so Stück für Stück abgerufen und hingeschrieben,

01:19:04.260 --> 01:19:05.620
<v Mira>wie man den welchen Treiber nutzt.

01:19:05.700 --> 01:19:15.700
<v Mira>Und da gibt es dann auch Hacks, wie zum Beispiel, dass man es erst in ein Paket-File oder ein CSV schreibt und dann das im Batch hochlädt.

01:19:15.960 --> 01:19:18.540
<v Mira>Da gibt es, das wird jetzt schon ziemlich detailliert.

01:19:18.540 --> 01:19:23.640
<v Dominik>Ja, mit dem Paket-File, da wollten wir noch ein paar bisschen drüber reden, wie man das machen kann und auch aktivieren kann.

01:19:23.860 --> 01:19:31.040
<v Jochen>Ja, aber genau, wenn wir bei Performance sind, so ein ganz generelles Ding, was ich häufig sehe, also gerade auch im Zusammenhang mit irgendwie Dinge verteilen oder so.

01:19:31.640 --> 01:19:33.680
<v Jochen>Was ich ganz oft sehe, ist, dass Leute halt

01:19:33.680 --> 01:19:35.520
<v Jochen>grundsätzlich erstmal der Meinung sind, wenn man Dinge

01:19:35.520 --> 01:19:36.660
<v Jochen>verteilt, dann wird es halt schneller.

01:19:39.400 --> 01:19:39.860
<v Jochen>Ist aber

01:19:39.860 --> 01:19:40.380
<v Jochen>oft nicht so.

01:19:42.420 --> 01:19:43.700
<v Jochen>Weil ganz oft ist halt

01:19:43.700 --> 01:19:45.460
<v Jochen>CPU möglicherweise gar nicht das Bottleneck.

01:19:45.920 --> 01:19:47.700
<v Jochen>Bevor man sowas macht, wie Dinge

01:19:47.700 --> 01:19:49.600
<v Jochen>dann verteilen oder so, sollte man vielleicht mal gucken, wo ist

01:19:49.600 --> 01:19:50.380
<v Jochen>eigentlich das Bottleneck.

01:19:52.180 --> 01:19:53.700
<v Jochen>Ich sehe das so oft,

01:19:53.800 --> 01:19:55.260
<v Jochen>dass Leute sagen,

01:19:55.420 --> 01:19:57.680
<v Jochen>das wird nicht schneller oder so und dann ist es

01:19:57.680 --> 01:19:58.100
<v Jochen>halt I.O.

01:19:58.660 --> 01:20:01.500
<v Jochen>Und dann ist es halt so,

01:20:01.640 --> 01:20:03.980
<v Jochen>verteilen macht das alles noch schlimmer, weil

01:20:03.980 --> 01:20:06.000
<v Jochen>irgendwie Netzwerk

01:20:06.000 --> 01:20:07.740
<v Jochen>ist halt noch viel langsamer als irgendwie

01:20:07.740 --> 01:20:10.080
<v Jochen>quasi lokale SSDs und

01:20:10.080 --> 01:20:12.180
<v Jochen>wenn man halt die Daten

01:20:12.180 --> 01:20:14.060
<v Jochen>in der richtigen Reihenfolge lädt sozusagen

01:20:14.060 --> 01:20:16.060
<v Jochen>und nicht zufällig die ganze

01:20:16.060 --> 01:20:17.960
<v Jochen>Zeit, wenn man sehr große Datenmengen hat, also

01:20:17.960 --> 01:20:19.440
<v Jochen>so groß, dass sie nicht in den Hauptschlechter passen,

01:20:19.800 --> 01:20:21.840
<v Jochen>wenn man die dann sozusagen richtig, also

01:20:21.840 --> 01:20:24.200
<v Jochen>sich jedes, alle Daten

01:20:24.200 --> 01:20:26.000
<v Jochen>immer nur einmal anguckt, dann kann es sein, dass

01:20:26.000 --> 01:20:27.900
<v Jochen>es super schnell ist, während wenn man halt

01:20:27.900 --> 01:20:30.220
<v Jochen>zufällig auf einem großen

01:20:30.220 --> 01:20:32.580
<v Jochen>Paketfile beispielsweise dann irgendwie

01:20:32.580 --> 01:20:34.300
<v Jochen>immer ein Stückchen hier liest, ein Stückchen da liest,

01:20:35.300 --> 01:20:36.620
<v Jochen>die ganze Zeit random

01:20:36.620 --> 01:20:38.540
<v Jochen>irgendwie zwei Gigabyte I.O.

01:20:38.660 --> 01:20:40.880
<v Jochen>macht, dann ist das alles total langsam

01:20:40.880 --> 01:20:42.520
<v Jochen>und sieht so aus, als ob es nicht schneller

01:20:42.520 --> 01:20:44.020
<v Jochen>gehen würde und

01:20:44.020 --> 01:20:46.640
<v Jochen>tatsächlich ist es

01:20:46.640 --> 01:20:48.880
<v Jochen>aber eine ganz einfache Optimierung,

01:20:49.400 --> 01:20:50.440
<v Jochen>die dazu führt, dass es halt

01:20:50.440 --> 01:20:52.780
<v Jochen>schnell genug ist.

01:20:52.960 --> 01:20:54.480
<v Jochen>Also ich würde mal sagen, wenn man

01:20:54.480 --> 01:20:56.640
<v Jochen>so ein MacBook nimmt und das richtig benutzt,

01:20:56.980 --> 01:20:58.600
<v Jochen>sehr schwer, das mit einem Cluster zu schlagen.

01:20:58.760 --> 01:20:59.460
<v Jochen>Wirklich, sehr schwer.

01:21:00.220 --> 01:21:02.240
<v Jochen>und das ist, glaube ich, auch vielen Leuten

01:21:02.240 --> 01:21:04.020
<v Jochen>nicht so bewusst, also das ist halt

01:21:04.020 --> 01:21:06.100
<v Jochen>oft, wird da mit Kanonen auf Spatzen

01:21:06.100 --> 01:21:08.140
<v Jochen>geschossen, und das eigentlich

01:21:08.140 --> 01:21:10.100
<v Jochen>Problem wird gar nicht erkannt,

01:21:10.320 --> 01:21:12.040
<v Jochen>sondern, ja. Jetzt wollte ich gerade

01:21:12.040 --> 01:21:13.700
<v Dominik>mit IBIS anfangen, was ja auch so

01:21:13.700 --> 01:21:15.700
<v Dominik>ein bisschen größer ist als ein Spatz, aber

01:21:15.700 --> 01:21:17.960
<v Jochen>Ja, aber gut, das ist ja

01:21:17.960 --> 01:21:20.100
<v Jochen>sozusagen, dass man halt

01:21:20.100 --> 01:21:21.820
<v Jochen>quasi ein DataFrame-Interface hat

01:21:21.820 --> 01:21:24.060
<v Jochen>für irgendwie Sachen, die

01:21:24.060 --> 01:21:25.800
<v Jochen>hintendran SQL sprechen, oder? Ja, oder

01:21:25.800 --> 01:21:27.900
<v Dominik>zum Beispiel verteilte Datenbanken oder sowas, ja.

01:21:28.560 --> 01:21:28.740
<v Jochen>Ja.

01:21:30.220 --> 01:21:50.140
<v Jochen>Und genau, also oft ist es dann halt so, wenn man dann halt irgendwie irgendwas benutzt, was halt SQL spricht, aber hinten dran total verteilt ist, dass das dann halt sehr langsam ist und Leute nicht wissen, warum das langsam ist und sich dann irgendwie dran gewöhnen und dann halt, wenn sie ihre Jobs losschicken, halt dann Mittagessen gehen oder so.

01:21:50.140 --> 01:21:52.420
<v Jochen>Und wenn sie sich vorher die Daten

01:21:52.420 --> 01:21:54.400
<v Jochen>irgendwie halt geholt hätten

01:21:54.400 --> 01:21:55.940
<v Jochen>und hätten das auf dem Laptop in Pandas gemacht,

01:21:56.040 --> 01:21:56.800
<v Jochen>wäre es viel schneller gewesen.

01:21:57.640 --> 01:21:58.780
<v Jochen>Naja, solche Sachen.

01:22:00.360 --> 01:22:01.460
<v Jochen>Aber IWIS, ja.

01:22:03.660 --> 01:22:04.360
<v Jochen>Benutzt ihr das?

01:22:05.340 --> 01:22:06.580
<v Mira>Nee, habe ich tatsächlich noch nie gehört.

01:22:07.300 --> 01:22:07.460
<v Dominik>Okay.

01:22:07.980 --> 01:22:10.080
<v Mira>Aber was ich

01:22:10.080 --> 01:22:12.140
<v Mira>nochmal wiederholen will,

01:22:12.380 --> 01:22:13.960
<v Mira>ist einfach dieses, ja, guck dir erstmal an,

01:22:13.980 --> 01:22:15.200
<v Mira>was eigentlich gerade langsam ist.

01:22:15.300 --> 01:22:16.260
<v Mira>Wo ist eigentlich dein Bottleneck?

01:22:16.260 --> 01:22:18.240
<v Mira>Weil da sind ja manchmal die Annahmen einfach

01:22:18.240 --> 01:22:19.380
<v Mira>nicht richtig.

01:22:20.140 --> 01:22:28.760
<v Mira>Das ist so witzig, dass du es sagst. Ich glaube, letzte Woche habe ich gerade was parallelisiert und dadurch sehr, sehr, sehr, sehr viel schneller gemacht.

01:22:28.760 --> 01:22:29.980
<v Jochen>Ja gut, das geht schon auch.

01:22:30.320 --> 01:22:37.140
<v Mira>Das kann natürlich schon manchmal der Punkt sein. Aber eben das Beispiel war ja eben gerade, dass es dann an der Kommunikation mit der Datenbank liegt.

01:22:39.140 --> 01:22:48.300
<v Mira>Also eigentlich ist es trivial, dass man erstmal profilen muss und gucken muss, was langsam ist. Wenn man es mal gesagt hat, klingt es ja trivial. Aber ich glaube, wenn man es zum ersten Mal macht, dann vergisst man es.

01:22:48.300 --> 01:22:50.620
<v Jochen>Ich glaube auch, dass viele Leute halt nicht so bewusst sind.

01:22:50.700 --> 01:22:52.620
<v Jochen>Die profilen dann vielleicht auch und sehen dann vielleicht

01:22:52.620 --> 01:22:54.880
<v Jochen>sogar noch irgendwie, wo Zeit verloren geht.

01:22:55.460 --> 01:22:56.760
<v Jochen>Aber gucken

01:22:56.760 --> 01:22:58.600
<v Jochen>halt nicht auf sowas, wie ist denn jetzt

01:22:58.600 --> 01:23:00.240
<v Jochen>eigentlich, wenn ich jetzt einfach mal

01:23:00.240 --> 01:23:02.660
<v Jochen>ein paar CPUs nehme, kriege ich

01:23:02.660 --> 01:23:04.080
<v Jochen>dann tatsächlich, wird es schneller oder nicht?

01:23:04.360 --> 01:23:06.540
<v Jochen>Wenn es nicht schneller wird, okay, gibt es vielleicht irgendeine andere

01:23:06.540 --> 01:23:08.300
<v Jochen>Komponente im System, die halt

01:23:08.300 --> 01:23:10.180
<v Jochen>irgendwie, die halt dicht ist.

01:23:10.780 --> 01:23:12.680
<v Jochen>Und dass es halt da Unterschiede

01:23:12.680 --> 01:23:13.920
<v Jochen>gibt, dass halt nicht alles CPU ist.

01:23:14.420 --> 01:23:16.120
<v Jochen>Oft habe ich das Gefühl, nicht so

01:23:16.120 --> 01:23:17.600
<v Jochen>keine weit verbreitete

01:23:17.600 --> 01:23:19.980
<v Jochen>sozusagen Erkenntnis und

01:23:19.980 --> 01:23:22.060
<v Jochen>ja, aber ja, genau, das ist ganz wichtig,

01:23:22.240 --> 01:23:24.060
<v Jochen>dass man das halt sich einfach

01:23:24.060 --> 01:23:25.260
<v Jochen>so im Gesamtsystem mal anguckt.

01:23:26.320 --> 01:23:28.140
<v Mira>Beim Modelltraining ist es dann

01:23:28.140 --> 01:23:30.280
<v Mira>tatsächlich schon oft sinnvoll

01:23:30.280 --> 01:23:32.140
<v Mira>zu parallelisieren, wenn das lang

01:23:32.140 --> 01:23:34.200
<v Mira>dauert und das ist aber dann

01:23:34.200 --> 01:23:36.220
<v Mira>auch in den meisten Paketen schon so eingebaut,

01:23:36.320 --> 01:23:38.180
<v Mira>dass man dann nur irgendwie die Anzahl der

01:23:38.180 --> 01:23:40.140
<v Mira>Kerne übergeben muss, die dieses nutzen soll und dann

01:23:40.140 --> 01:23:41.640
<v Mira>läuft das einfach, das ist ganz praktisch.

01:23:41.740 --> 01:23:43.820
<v Jochen>Genau, aber ich weiß jetzt nicht, also das war jedenfalls,

01:23:43.880 --> 01:23:45.160
<v Jochen>ich habe das auch schon lange nicht mehr gemacht, aber

01:23:45.160 --> 01:23:48.160
<v Jochen>zu der Zeit, wo ich solche Sachen gemacht habe,

01:23:48.240 --> 01:23:50.020
<v Jochen>war das halt schwer, das auf mehrere Rechner zu verteilen.

01:23:50.160 --> 01:23:52.160
<v Jochen>Also auf einem Rechner, ja, genau, mehrere Kerne, kein Problem.

01:23:52.780 --> 01:23:53.660
<v Jochen>Aber auf mehrere Maschinen,

01:23:53.780 --> 01:23:56.480
<v Jochen>ja, eher nicht.

01:23:56.480 --> 01:23:57.600
<v Mira>Ja, die Frage ist,

01:23:58.120 --> 01:24:00.080
<v Mira>wie sehr man das auch manuell

01:24:00.080 --> 01:24:01.760
<v Mira>machen muss, weil man ja meistens dann

01:24:01.760 --> 01:24:04.160
<v Mira>sich seinen Class-Data-Breaks oder so

01:24:04.160 --> 01:24:06.180
<v Mira>hochfährt und muss sich darüber gar keine Gedanken

01:24:06.180 --> 01:24:06.880
<v Mira>machen eigentlich.

01:24:08.040 --> 01:24:10.300
<v Mira>Also zumindest als Data-Scientist ist das

01:24:10.300 --> 01:24:11.860
<v Mira>nicht das, was man irgendwie

01:24:11.860 --> 01:24:13.660
<v Mira>erwartet wird, dass

01:24:13.660 --> 01:24:16.660
<v Mira>dass dann da verschiedene Rechner zusammenfließt.

01:24:17.440 --> 01:24:17.780
<v Jochen>Ja, ja.

01:24:18.660 --> 01:24:20.800
<v Mira>Und dann ist es natürlich manchmal irgendwie schon so,

01:24:20.860 --> 01:24:25.100
<v Mira>dass man doch wieder auf andere Programmiersprachen ausweichen muss,

01:24:25.380 --> 01:24:27.860
<v Mira>weil Python und R nicht unbedingt dafür bekannt sind,

01:24:27.900 --> 01:24:29.160
<v Mira>dass sie total schnell sind.

01:24:30.040 --> 01:24:33.400
<v Mira>Aber ich glaube, also meiner Erfahrung nach ist es schon oft so,

01:24:33.440 --> 01:24:34.840
<v Mira>dass man schon sehr viel rausholen kann,

01:24:34.840 --> 01:24:38.200
<v Mira>wenn man sich den Python oder R-Code nochmal genau anschaut, profilt

01:24:38.200 --> 01:24:43.180
<v Mira>und dann vielleicht irgendwo auch mal die Daten vorher klug filtert

01:24:43.180 --> 01:24:44.820
<v Mira>oder ein sinnvolles

01:24:44.820 --> 01:24:47.260
<v Mira>If-Statement irgendwie so ein bisschen verschiebt,

01:24:47.320 --> 01:24:48.560
<v Mira>weil man auf einmal merkt, oh Moment,

01:24:48.940 --> 01:24:51.020
<v Mira>oder in einem Loop irgendwas rauszieht, was eigentlich nur einmal

01:24:51.020 --> 01:24:53.020
<v Mira>passieren muss. Das sind ja so Sachen, die

01:24:53.020 --> 01:24:55.000
<v Mira>dann doch schnell passieren,

01:24:55.080 --> 01:24:57.040
<v Mira>wenn man den Code irgendwann so geschrieben und ein paar Mal

01:24:57.040 --> 01:24:58.680
<v Mira>verändert hat, dann ist da vielleicht irgendwas,

01:24:59.620 --> 01:25:01.520
<v Mira>was man, also so eine Low-Hanging-Foot,

01:25:01.580 --> 01:25:03.160
<v Mira>was man schon leicht optimieren kann.

01:25:03.180 --> 01:25:05.080
<v Dominik>Ja, Python könnte man ja auch noch schneller kriegen, wenn man will, ja.

01:25:06.140 --> 01:25:07.240
<v Jochen>Ja, wobei, sieht man das halt

01:25:07.240 --> 01:25:09.260
<v Jochen>immer die Frage, wenn es halt schnell sein soll,

01:25:09.340 --> 01:25:10.540
<v Jochen>dann nimmt man am besten was, was nicht halt,

01:25:11.320 --> 01:25:13.020
<v Jochen>In Python sind halt, was halt langsam ist,

01:25:13.100 --> 01:25:15.000
<v Jochen>Funktionsaufrufe, Schleifen,

01:25:15.140 --> 01:25:16.360
<v Jochen>das ist halt extrem langsam.

01:25:17.460 --> 01:25:19.020
<v Jochen>Aber wenn man die Schleifen halt in NumPy

01:25:19.020 --> 01:25:20.880
<v Jochen>nicht als Schleife, sondern irgendwie

01:25:20.880 --> 01:25:23.200
<v Jochen>vektorisiert auf den Daten macht, dann ist es halt schnell.

01:25:23.760 --> 01:25:24.980
<v Jochen>Und ob man das jetzt von Python aus aufruft oder nicht.

01:25:24.980 --> 01:25:27.320
<v Mira>Das ist dann auch dieses Stichwort,

01:25:27.440 --> 01:25:29.120
<v Mira>dass jemand, der das durchweist, eben über den

01:25:29.120 --> 01:25:30.320
<v Mira>DataFrame drüber loopt.

01:25:30.520 --> 01:25:32.000
<v Mira>Das ist dann schlecht, ja.

01:25:33.400 --> 01:25:34.260
<v Dominik>Vektorisiert und schlecht.

01:25:35.520 --> 01:25:37.140
<v Dominik>Ja, aber deswegen ja genau, einfach dann eine Maske

01:25:37.140 --> 01:25:38.840
<v Dominik>drauf und dann machst du es halt

01:25:38.840 --> 01:25:39.820
<v Dominik>drunter in NumPy, ja.

01:25:41.100 --> 01:25:43.220
<v Dominik>Ja, also

01:25:43.220 --> 01:25:45.320
<v Dominik>warum ich Ibis eben sagte, von Wes McKinney

01:25:45.320 --> 01:25:47.220
<v Dominik>ist halt dem Pandas

01:25:47.220 --> 01:25:49.300
<v Dominik>Menschen der. Ja, der hat

01:25:49.300 --> 01:25:51.040
<v Jochen>ja eine ganze Menge, der ist auch hinter dem

01:25:51.040 --> 01:25:53.240
<v Jochen>Arrow, das ist halt so seit

01:25:53.240 --> 01:25:54.320
<v Jochen>einiger Zeit so sein Hauptprojekt.

01:25:55.240 --> 01:25:56.720
<v Dominik>Vielleicht nochmal, was macht Arrow,

01:25:56.920 --> 01:25:59.020
<v Jochen>wenn wir schon dabei sind? Achso, ja, das ist eigentlich

01:25:59.020 --> 01:26:01.020
<v Jochen>im Grunde so, die Grundidee

01:26:01.020 --> 01:26:02.940
<v Jochen>dabei ist halt, dass man

01:26:02.940 --> 01:26:04.240
<v Jochen>vielleicht aus unterschiedlichen,

01:26:04.960 --> 01:26:06.780
<v Jochen>also das ist halt das Problem bei NumPy

01:26:06.780 --> 01:26:09.040
<v Jochen>oder Pandas Geschichten, also

01:26:09.040 --> 01:26:11.340
<v Jochen>man hat das dann halt

01:26:11.340 --> 01:26:12.980
<v Jochen>in Python, aber wenn man jetzt eine andere

01:26:12.980 --> 01:26:14.940
<v Jochen>Programmiersprache hat und darauf zugreifen will, dann geht das

01:26:14.940 --> 01:26:17.240
<v Jochen>halt nicht. Und die

01:26:17.240 --> 01:26:19.080
<v Jochen>Idee bei Arrow ist halt,

01:26:19.260 --> 01:26:21.220
<v Jochen>dass man das halt, dass man eine gemeinsame

01:26:21.220 --> 01:26:23.780
<v Jochen>Daten-In-Hauptspeicher-

01:26:23.780 --> 01:26:25.040
<v Jochen>Laden-Infrastruktur hat

01:26:25.040 --> 01:26:26.900
<v Jochen>und dann halt

01:26:26.900 --> 01:26:28.940
<v Jochen>Paketfiles quasi, oder was auch immer,

01:26:29.020 --> 01:26:31.020
<v Jochen>man lässt halt einen Hauptspeicher und kann dann halt von

01:26:31.020 --> 01:26:33.020
<v Jochen>unterschiedlichen Sprachen

01:26:33.020 --> 01:26:34.280
<v Jochen>auch darauf zugreifen und

01:26:34.280 --> 01:26:36.000
<v Jochen>das funktioniert dann halt.

01:26:37.320 --> 01:26:37.960
<v Jochen>Genau, und

01:26:37.960 --> 01:26:40.240
<v Jochen>ja, ist halt nicht an sowas wie NumPy

01:26:40.240 --> 01:26:41.820
<v Jochen>gebunden, was es halt nur für Python gibt im Grunde.

01:26:42.660 --> 01:26:44.240
<v Jochen>Und ja, das ist jetzt inzwischen,

01:26:44.420 --> 01:26:46.340
<v Jochen>aber glaube ich, liegt das auch unter Pandas

01:26:46.340 --> 01:26:47.100
<v Jochen>drunter und

01:26:47.100 --> 01:26:49.580
<v Jochen>zu größeren Teilen.

01:26:50.120 --> 01:26:52.200
<v Jochen>Ehrlich gesagt bin ich da in letzter Zeit nicht so viel

01:26:52.200 --> 01:26:52.740
<v Jochen>Interessanz gemacht.

01:26:54.900 --> 01:26:55.040
<v Jochen>Ja.

01:26:55.960 --> 01:26:57.560
<v Dominik>Mit Ibis kann man zum Beispiel auch da

01:26:57.560 --> 01:26:59.940
<v Dominik>PySpark oder sowas damit berechnen, dass man dann...

01:26:59.940 --> 01:27:01.880
<v Jochen>Ja, also alles, was irgendwie SQL spricht,

01:27:02.080 --> 01:27:04.080
<v Jochen>kannst du da, soweit ich weiß, ist einfach nur

01:27:04.080 --> 01:27:06.080
<v Jochen>ein Layer, wo du halt ein DataFrame

01:27:06.080 --> 01:27:08.180
<v Jochen>Interface hast nach außen hin,

01:27:08.300 --> 01:27:10.000
<v Jochen>sodass du es benutzen kannst wie einen normalen DataFrame,

01:27:10.120 --> 01:27:11.940
<v Jochen>aber nach hinten raus spricht es dann halt SQL.

01:27:13.420 --> 01:27:13.860
<v Jochen>Was halt,

01:27:14.240 --> 01:27:16.140
<v Jochen>ja, wenn du ein System hast, das das kann,

01:27:16.240 --> 01:27:17.220
<v Jochen>dann ist es, ja.

01:27:17.900 --> 01:27:18.120
<v Dominik>Ja.

01:27:19.080 --> 01:27:22.300
<v Dominik>Ja, ich glaube,

01:27:22.300 --> 01:27:24.320
<v Dominik>wir haben schon viel über diesen

01:27:24.320 --> 01:27:26.200
<v Dominik>Prozess gesprochen. In Crisp sind wir durch.

01:27:27.340 --> 01:27:28.520
<v Mira>Ja, eigentlich sind wir durch

01:27:28.520 --> 01:27:30.440
<v Mira>und dann kann man ja wieder von Anfang an anfangen

01:27:30.440 --> 01:27:32.440
<v Mira>und sich den nächsten, next best use case

01:27:32.440 --> 01:27:32.680
<v Mira>schlagen.

01:27:33.760 --> 01:27:35.640
<v Mira>Oder das, was man schon hat, halt nochmal.

01:27:35.820 --> 01:27:37.700
<v Mira>Arbeitern überlegen, ob man es

01:27:37.700 --> 01:27:39.480
<v Mira>auch anders anwenden kann und so weiter.

01:27:40.260 --> 01:27:41.820
<v Dominik>Also du würdest zum Beispiel

01:27:41.820 --> 01:27:43.800
<v Dominik>sagen aus deiner Perspektive, es gibt gar keinen großen Unterschied

01:27:43.800 --> 01:27:45.880
<v Dominik>zwischen Data Science und Machine Learning

01:27:45.880 --> 01:27:47.360
<v Dominik>Operations oder Engineering

01:27:47.360 --> 01:27:48.380
<v Dominik>mehr

01:27:48.380 --> 01:27:51.280
<v Dominik>heutzutage oder so.

01:27:51.620 --> 01:27:53.380
<v Mira>Ja, also es sind halt alles irgendwie so verschiedene

01:27:53.380 --> 01:27:55.640
<v Mira>Schwerpunkte. Bei uns sind

01:27:55.640 --> 01:27:57.700
<v Mira>jetzt, wir haben schon Leute, die

01:27:57.700 --> 01:27:59.680
<v Mira>eher Data Science machen, die eher

01:27:59.680 --> 01:28:01.220
<v Mira>modellieren und andere Leute, die

01:28:01.220 --> 01:28:03.600
<v Mira>eher in dem DevOps,

01:28:03.740 --> 01:28:05.620
<v Mira>MLOps Bereich unterwegs sind oder auch

01:28:05.620 --> 01:28:07.620
<v Mira>Data Engineering machen, die sich besser mit

01:28:07.620 --> 01:28:09.300
<v Mira>Datenbanken auskennen, aber

01:28:09.300 --> 01:28:11.480
<v Mira>wir haben bei uns jetzt nicht so die klare Trennung,

01:28:11.620 --> 01:28:13.520
<v Mira>du musst das eine oder das andere machen. Es gibt auch Leute, die machen

01:28:13.520 --> 01:28:15.500
<v Mira>beides, gehen dann halt eben nicht ganz so krass

01:28:15.500 --> 01:28:17.520
<v Mira>in die Tiefe, aber haben halt ein breiteres

01:28:17.520 --> 01:28:19.440
<v Mira>Profil und das ist halt natürlich auch total

01:28:19.440 --> 01:28:19.900
<v Mira>wertvoll.

01:28:21.540 --> 01:28:23.440
<v Mira>Es gibt diese Schwerpunkte,

01:28:23.600 --> 01:28:25.460
<v Mira>aber greift ja auch alles

01:28:25.460 --> 01:28:27.840
<v Mira>ineinander und es ist

01:28:27.840 --> 01:28:29.280
<v Mira>ja auch so, dass es halt Sinn macht, so

01:28:29.280 --> 01:28:31.580
<v Mira>einen T-Shape-Profile aufzubauen,

01:28:31.680 --> 01:28:33.460
<v Mira>also dass man in einer Sache schon wirklich gut ist,

01:28:33.460 --> 01:28:35.300
<v Mira>aber viele von vielen anderen Sachen

01:28:35.300 --> 01:28:37.180
<v Mira>auch Ahnung hat und da auch was machen kann,

01:28:37.240 --> 01:28:39.200
<v Mira>dann ist man eben auch flexibler, auch wenn vielleicht ein Bereich

01:28:39.200 --> 01:28:41.200
<v Mira>auf einmal nicht mehr so gefragt ist

01:28:41.200 --> 01:28:43.000
<v Mira>aus irgendwelchen Gründen, ob das AI

01:28:43.000 --> 01:28:46.400
<v Dominik>den überkommen hat oder so was, genau.

01:28:48.180 --> 01:28:48.960
<v Dominik>Und so

01:28:48.960 --> 01:28:51.340
<v Mira>macht es natürlich auch Sinn,

01:28:51.420 --> 01:28:53.200
<v Mira>wenn ich als Data Scientist

01:28:53.200 --> 01:28:54.920
<v Mira>jetzt mich nicht weigere,

01:28:55.000 --> 01:28:56.900
<v Mira>mal das Jenkins-File zu updaten.

01:28:58.760 --> 01:28:59.240
<v Mira>Da

01:28:59.240 --> 01:29:00.980
<v Mira>macht es ja schon Sinn, sich dann mit einem

01:29:00.980 --> 01:29:01.840
<v Mira>ein bisschen auszukennen.

01:29:02.600 --> 01:29:25.800
<v Jochen>Ja, so aus meiner Perspektive ist das, ich meine, das mag jetzt etwas ketzerisch klingen oder vielleicht so Hot Take. Ich würde sagen, das ist alles Programmieren. Oder sagen wir mal so, das, was praktisch oft das sozusagen Bottleneck ist bei Leuten, die versuchen, irgendwas zu tun, ob es Produkt umsetzen, irgendwas analysieren oder Modelle bauen oder was auch immer ist, ist halt normalerweise das Programmieren.

01:29:25.800 --> 01:29:27.800
<v Jochen>ist halt das Bordelneck aus so

01:29:27.800 --> 01:29:28.060
<v Jochen>was.

01:29:29.480 --> 01:29:31.680
<v Dominik>Ein bisschen statistisches Grundverständnis schadet

01:29:31.680 --> 01:29:33.640
<v Dominik>vielleicht auch nicht. Ja, aber du brauchst oft

01:29:33.640 --> 01:29:35.060
<v Jochen>oder gut, das mag

01:29:35.060 --> 01:29:37.840
<v Jochen>dann irgendwie, das mag

01:29:37.840 --> 01:29:39.660
<v Jochen>daran liegen, dass ich das halt, dass ich

01:29:39.660 --> 01:29:41.540
<v Jochen>die Feinheiten dann oft nicht so sehe,

01:29:41.780 --> 01:29:43.780
<v Jochen>aber und dass man da vielleicht Feinheiten machen kann,

01:29:43.880 --> 01:29:45.640
<v Jochen>aber oft scheitert es halt schon an so groben Dingen

01:29:45.640 --> 01:29:47.680
<v Jochen>und dann kommt es auf die

01:29:47.680 --> 01:29:48.560
<v Jochen>Feinheiten auch nicht mehr an.

01:29:50.000 --> 01:29:51.260
<v Mira>Ich würde sagen,

01:29:51.380 --> 01:29:53.600
<v Mira>alle bei uns können programmieren

01:29:53.600 --> 01:29:55.760
<v Mira>und wenn man jetzt ein Projekt hat,

01:29:55.800 --> 01:29:57.680
<v Mira>wo alle programmieren können, aber nur die Hälfte

01:29:57.680 --> 01:29:59.340
<v Mira>hat Statistikverständnis, ist okay.

01:29:59.680 --> 01:30:01.440
<v Mira>Wenn aber alle Statistik können und die Hälfte kann

01:30:01.440 --> 01:30:03.880
<v Mira>programmieren, dann langweilt sich die eine Hälfte

01:30:03.880 --> 01:30:05.580
<v Mira>der Leute, die halt nicht programmieren können,

01:30:05.660 --> 01:30:07.480
<v Mira>weil die können dann ja immer nur Ergebnisse angucken und

01:30:07.480 --> 01:30:09.380
<v Jochen>irgendwas dazu sagen. Oder genau, so kommt man

01:30:09.380 --> 01:30:11.360
<v Jochen>es auch aus, man ist halt hart

01:30:11.360 --> 01:30:13.200
<v Jochen>davon abhängig, dass man, dass irgendwie

01:30:13.200 --> 01:30:15.340
<v Jochen>dieses Programmier-Dings halt auch funktioniert, weil

01:30:15.340 --> 01:30:17.360
<v Jochen>ansonsten kommt man mit den anderen Sachen, ist halt

01:30:17.360 --> 01:30:19.360
<v Jochen>sozusagen die Infrastruktur, die man braucht für fast

01:30:19.360 --> 01:30:21.300
<v Mira>alles andere, ja. Ja, natürlich

01:30:21.300 --> 01:30:23.360
<v Mira>gibt es halt auch so Programme wie SPSS,

01:30:23.460 --> 01:30:25.120
<v Mira>womit man Statistikanalysen machen kann.

01:30:25.200 --> 01:30:26.380
<v Mira>Das wollte ich ganz am Anfang sagen.

01:30:27.760 --> 01:30:30.820
<v Mira>Das hat ja auch seine Daseinsberechtigung,

01:30:30.920 --> 01:30:33.520
<v Mira>weil wenn jemand nur alle drei Monate mal eine Analyse fährt,

01:30:33.720 --> 01:30:34.820
<v Mira>dann lohnt sich halt eben nicht.

01:30:36.340 --> 01:30:37.180
<v Dominik>Ja, aber auch da,

01:30:37.240 --> 01:30:39.560
<v Dominik>da mache ich mir einen Notebook für halt dann, oder?

01:30:40.440 --> 01:30:41.440
<v Mira>Nee, aber die Person macht

01:30:41.440 --> 01:30:43.060
<v Mira>alle drei Monate irgendwas anderes.

01:30:43.160 --> 01:30:45.200
<v Mira>Und dann müssen sie alle drei Monate wieder

01:30:45.200 --> 01:30:46.760
<v Mira>sich erinnern, wie man eigentlich

01:30:46.760 --> 01:30:48.620
<v Mira>Variable zuweist.

01:30:49.460 --> 01:30:50.760
<v Mira>Und das

01:30:50.760 --> 01:30:53.120
<v Mira>dann lieber das angestaubte SPSS klicken.

01:30:55.200 --> 01:31:02.820
<v Mira>Also ja, mich hat SPSS auch ziemlich schnell genervt, aber es hat schon seine Daseinsberechtigung für bestimmte Dinge.

01:31:03.020 --> 01:31:10.920
<v Jochen>Oder vielleicht das SPSS des kleinen Mannes. Ich meine, das ist halt auch das, womit man täglich zu tun hat. Excel. Ja, ich meine, es gibt ganz viele Leute, die machen halt einen Großteil von dem Zeugs halt mit Excel.

01:31:11.220 --> 01:31:12.320
<v Dominik>Eigentlich machen alle Leute nur in Excel.

01:31:12.520 --> 01:31:17.860
<v Jochen>Alle Leute machen alles mit Excel, genau. Ja, natürlich. Man kommt auch ein gewisses Stück weit schon. Das ist so richtig, aber.

01:31:18.660 --> 01:31:19.280
<v Dominik>Eine Million Zeit.

01:31:19.280 --> 01:31:21.100
<v Mira>Ja, ich glaube, man hat als Data Scientist

01:31:21.100 --> 01:31:22.880
<v Mira>auch manchmal so eine Arroganz, dass man Excel

01:31:22.880 --> 01:31:23.840
<v Mira>überhaupt gar nicht öffnet.

01:31:24.180 --> 01:31:27.040
<v Jochen>Ja, und für manche Sachen ist es vielleicht gar nicht so schlecht.

01:31:27.220 --> 01:31:28.200
<v Dominik>P.D. Rietze ist heuer.

01:31:29.000 --> 01:31:29.180
<v Jochen>Ja.

01:31:31.560 --> 01:31:32.660
<v Dominik>Aha, jetzt hat jemand Excel gesagt.

01:31:33.720 --> 01:31:35.000
<v Dominik>Jetzt kriege ich ein komisches Gefühl.

01:31:35.320 --> 01:31:36.500
<v Dominik>Ich bin zu cool dafür.

01:31:37.940 --> 01:31:39.100
<v Dominik>Es ist halt einfach fürchterlich.

01:31:39.200 --> 01:31:40.840
<v Dominik>Es ist halt hässlich und dann wollen Leute

01:31:40.840 --> 01:31:42.640
<v Dominik>auch noch, dass man dann in Excel Spalten

01:31:42.640 --> 01:31:44.820
<v Dominik>färbt, weil man macht ja Data Science für was mit Daten

01:31:44.820 --> 01:31:46.240
<v Dominik>und dann soll das alles so aussehen wie vorher.

01:31:47.980 --> 01:31:48.640
<v Dominik>Das geht alles.

01:31:48.720 --> 01:31:50.720
<v Jochen>Ich habe da kein Problem mit. Ich generiere auch Excel-Output

01:31:50.720 --> 01:31:51.800
<v Dominik>und ich lese auch Excel ein.

01:31:52.520 --> 01:31:54.860
<v Jochen>Ja, also einen schönen Output machst du.

01:31:55.720 --> 01:31:57.220
<v Jochen>Ich habe da eine Aufgabe für dich.

01:31:57.620 --> 01:31:58.260
<v Jochen>Oh, ja, so.

01:31:59.520 --> 01:32:01.020
<v Jochen>Okay, jetzt, wenn es dann so konkret wird,

01:32:01.100 --> 01:32:01.640
<v Jochen>dann weiß ich nicht.

01:32:01.780 --> 01:32:05.740
<v Mira>Ich glaube, wir haben sogar so ein Mini-Open-Source-Projekt

01:32:05.740 --> 01:32:06.840
<v Mira>auf GitHub liegen

01:32:06.840 --> 01:32:08.480
<v Mira>für Excel,

01:32:08.940 --> 01:32:10.740
<v Mira>also um Excel-Files schön zu formatieren.

01:32:10.740 --> 01:32:13.180
<v Mira>Ah, sehr gut.

01:32:13.600 --> 01:32:14.120
<v Jochen>Ja, schon.

01:32:16.160 --> 01:32:18.600
<v Mira>Ja, das war tatsächlich ein Projekt,

01:32:18.720 --> 01:32:20.340
<v Mira>wurden halt die Reports, das war so

01:32:20.340 --> 01:32:22.740
<v Mira>ein Banking-Kontext und die haben halt die Reports

01:32:22.740 --> 01:32:24.860
<v Mira>als Excel-File gebraucht, um wahrscheinlich

01:32:24.860 --> 01:32:26.580
<v Mira>damit die weiterzuschicken.

01:32:26.780 --> 01:32:28.560
<v Dominik>Ja, weil die auch den ganzen Tag das halt schon kennen.

01:32:28.700 --> 01:32:30.400
<v Dominik>Die haben halt ihren Prozess, der ist immer schon so

01:32:30.400 --> 01:32:32.640
<v Dominik>und dann ist es halt super, wenn dann die Sachen einfach

01:32:32.640 --> 01:32:34.740
<v Dominik>dann neu sind oder Daten drin sind, aber es soll genauso

01:32:34.740 --> 01:32:36.340
<v Dominik>aussehen mit Condition-Formatting und so.

01:32:37.100 --> 01:32:38.700
<v Mira>Ja, oder es sind halt Leute, die können

01:32:38.700 --> 01:32:40.620
<v Mira>halt solche programmieren, das ist auch irgendwie völlig okay,

01:32:40.780 --> 01:32:42.760
<v Mira>weil sie ganz andere Sachen machen, aber trotzdem müssen

01:32:42.760 --> 01:32:44.280
<v Mira>die irgendwie die Ergebnisse

01:32:44.280 --> 01:32:45.320
<v Mira>liefern.

01:32:45.640 --> 01:32:45.760
<v Dominik>Ja.

01:32:48.720 --> 01:32:50.140
<v Dominik>Ich glaube, wir sind bei den Picks angekommen, oder?

01:32:50.860 --> 01:32:52.860
<v Dominik>Ich glaube, Miriam, du wolltest was picken,

01:32:52.880 --> 01:32:54.040
<v Dominik>was auch noch mit Data Science zu tun hat.

01:32:54.100 --> 01:32:55.180
<v Dominik>Vielleicht fangen wir damit doch direkt an.

01:32:55.860 --> 01:32:57.440
<v Mira>Ja, also wir haben es schon so ein bisschen angestellt.

01:32:57.500 --> 01:32:59.860
<v Mira>Ich hatte ja eben erwähnt, dass ich was parallelisiert habe.

01:33:00.000 --> 01:33:03.380
<v Mira>Und das war total cool, weil diese Prognosen,

01:33:04.340 --> 01:33:06.640
<v Mira>also dieses Modelltraining und Prognosen erstellen,

01:33:06.720 --> 01:33:08.840
<v Mira>das hat halt Stunden gedauert

01:33:08.840 --> 01:33:10.920
<v Mira>und auch wahnsinnig hohe Kosten verursacht,

01:33:11.020 --> 01:33:14.840
<v Mira>weil anderes Thema, Pandas haben hohe Rampe gebraucht.

01:33:14.920 --> 01:33:16.180
<v Mira>Das heißt, man braucht einen riesen Cluster.

01:33:16.500 --> 01:33:18.380
<v Mira>Und dann ist es aber auch noch total lang gelaufen.

01:33:18.380 --> 01:33:20.640
<v Mira>auf diesem riesigen Cluster, also total teuer.

01:33:21.080 --> 01:33:25.500
<v Mira>Und dann habe ich festgestellt, dass die Prognosen alle nacheinander erstellt wurden

01:33:25.500 --> 01:33:27.320
<v Mira>und alles nur auf dem Driver-Node lief.

01:33:27.420 --> 01:33:30.180
<v Mira>Also diese ganzen vielen Nodes auf diesem riesigen Cluster,

01:33:30.240 --> 01:33:31.660
<v Mira>die wurden alle überhaupt gar nicht benutzt.

01:33:32.120 --> 01:33:37.380
<v Mira>Und dann dürfte ich das parallelisieren, in dem Fall mit Pandas UDFs,

01:33:38.160 --> 01:33:39.540
<v Mira>Pandas User-Defined Functions.

01:33:39.720 --> 01:33:42.780
<v Mira>Also es ist dann eine Möglichkeit, es läuft halt in Pandas,

01:33:42.860 --> 01:33:45.640
<v Mira>weil es ist ein Light-GBM-Modell und es kann im Moment

01:33:45.640 --> 01:33:47.740
<v Mira>noch keinen High-Spark-Data-Frame

01:33:47.740 --> 01:33:49.480
<v Mira>oder Spark-Data-Frame nehmen, deswegen

01:33:49.480 --> 01:33:51.300
<v Mira>muss man den in Pandas geben

01:33:51.300 --> 01:33:53.600
<v Mira>oder wahrscheinlich geht auch Polars, da sind wir

01:33:53.600 --> 01:33:55.120
<v Mira>jetzt gerade dran, aber ja

01:33:55.120 --> 01:33:57.480
<v Mira>und man kann dann diese Prognosen

01:33:57.480 --> 01:33:59.240
<v Mira>in Pandas auf diese Art und Weise

01:33:59.240 --> 01:34:01.400
<v Mira>parallelisieren und es war einfach so

01:34:01.400 --> 01:34:03.560
<v Mira>schön und so geil, weil es einfach

01:34:03.560 --> 01:34:05.600
<v Mira>so viel schneller geworden ist und

01:34:05.600 --> 01:34:07.640
<v Mira>ich habe mich sehr wie eine Heldin gefühlt.

01:34:08.420 --> 01:34:09.800
<v Dominik>Ja, so ein Erfolgstor ist immer schön, ja.

01:34:11.160 --> 01:34:11.700
<v Dominik>Dann komme ich

01:34:11.700 --> 01:34:13.500
<v Dominik>auch direkt zu meiner Erfolgstor, ich hatte nämlich auch so

01:34:13.500 --> 01:34:15.460
<v Dominik>einen Moment, ich habe nämlich Hynix

01:34:15.460 --> 01:34:16.840
<v Dominik>neues Video gesehen und

01:34:16.840 --> 01:34:19.280
<v Dominik>das ist Just Love. Also ich habe

01:34:19.280 --> 01:34:21.260
<v Dominik>Just Files für mich entdeckt, die hatte ich

01:34:21.260 --> 01:34:23.120
<v Dominik>vorher nicht so auf dem Schirm,

01:34:23.180 --> 01:34:25.040
<v Dominik>dass das so ein bisschen was ähnliches wie eine

01:34:25.040 --> 01:34:27.060
<v Dominik>Makefile nur, dass man halt in einer Just File,

01:34:27.140 --> 01:34:28.680
<v Dominik>das ist auch ein Rust geschriebenes Tool,

01:34:29.280 --> 01:34:31.640
<v Dominik>definiert, wie so die Projektkommandos

01:34:31.640 --> 01:34:33.560
<v Dominik>eigentlich alle sind und dann kann man

01:34:33.560 --> 01:34:35.660
<v Dominik>das diesen wundervollen mit Variablen

01:34:35.660 --> 01:34:37.540
<v Dominik>und so, es funktioniert toll, Hennings Video

01:34:37.540 --> 01:34:39.280
<v Dominik>dazu zu gucken, glaube ich, ist sehr hilfreich und

01:34:39.280 --> 01:34:41.560
<v Dominik>ich habe alles umgestellt bei mir, ich benutze fast meine

01:34:41.560 --> 01:34:43.720
<v Dominik>Commands nicht mehr, also meine Commands bei mir noch ein bisschen

01:34:43.720 --> 01:34:45.820
<v Dominik>selten, sondern einfach nur just, just run

01:34:45.820 --> 01:34:47.480
<v Dominik>und der Server läuft oder

01:34:47.480 --> 01:34:49.580
<v Dominik>just connect für Dev-Server

01:34:49.580 --> 01:34:51.680
<v Dominik>oder sowas oder für auch Prod-Server,

01:34:52.240 --> 01:34:53.440
<v Dominik>dann kann ich sagen just connect production

01:34:53.440 --> 01:34:55.280
<v Dominik>und dann noch den Pod-Namen oder sowas, was ich

01:34:55.280 --> 01:34:57.740
<v Dominik>übernichten muss oder ich kann sagen just lint

01:34:57.740 --> 01:34:59.360
<v Dominik>oder just test

01:34:59.360 --> 01:35:01.220
<v Dominik>und so. Es ist toll.

01:35:01.540 --> 01:35:02.000
<v Dominik>Ich liebe es.

01:35:02.660 --> 01:35:05.680
<v Mira>Das ist ja auch echt eine gute Entscheidung für den Namen.

01:35:06.300 --> 01:35:07.340
<v Mira>Also richtig schlau, oder?

01:35:07.620 --> 01:35:09.880
<v Dominik>Ja, voll gut. Finde ich auch. Deswegen just love.

01:35:10.560 --> 01:35:10.960
<v Jochen>Okay.

01:35:11.420 --> 01:35:13.040
<v Jochen>Ja, ja, ich habe ja auch tatsächlich, nachdem ich das

01:35:13.040 --> 01:35:15.400
<v Jochen>Video schon gesehen habe, habe ich mir auch gedacht,

01:35:15.520 --> 01:35:16.920
<v Jochen>vielleicht muss ich das auch mal ausprobieren.

01:35:18.840 --> 01:35:19.320
<v Dominik>Ja, ich

01:35:19.320 --> 01:35:21.400
<v Dominik>meine...

01:35:21.400 --> 01:35:23.300
<v Dominik>Das ist toll, du kannst auch nach dem Just Build und du machst mit

01:35:23.300 --> 01:35:25.520
<v Dominik>UV, machst dein Direktpaket-Installation, Paket-Sync,

01:35:26.020 --> 01:35:27.240
<v Dominik>kannst Upgrade machen,

01:35:28.000 --> 01:35:29.660
<v Dominik>alle Sachen mit den

01:35:29.660 --> 01:35:31.440
<v Dominik>Kommandozeilen, die du sonst immer nutzt, reinschreiben

01:35:31.440 --> 01:35:33.520
<v Dominik>und wenn du das über so eine Command-Spy geregelt hättest oder sowas,

01:35:33.620 --> 01:35:35.480
<v Dominik>musst du halt immer dann einen Subprozess spawnen

01:35:35.480 --> 01:35:36.580
<v Dominik>und so. Ah, ich weiß nicht.

01:35:36.580 --> 01:35:38.140
<v Dominik>Das war schon sehr schön.

01:35:38.420 --> 01:35:40.780
<v Jochen>Was ich häufig mache in letzter Zeit

01:35:40.780 --> 01:35:42.040
<v Jochen>ist halt einfach Entry Points

01:35:42.040 --> 01:35:44.140
<v Jochen>im, weil meistens hat man ja

01:35:44.140 --> 01:35:45.100
<v Jochen>ein Paket, das man installiert.

01:35:46.640 --> 01:35:48.100
<v Jochen>Das würde ich jetzt nicht so sehen.

01:35:48.280 --> 01:35:50.080
<v Jochen>Ja, kommt drauf an, aber also ich

01:35:50.080 --> 01:35:52.100
<v Jochen>hab das halt oft und dann kann ich halt auch

01:35:52.100 --> 01:35:54.020
<v Jochen>irgendwie in PyProject, Project Terminal

01:35:54.020 --> 01:35:56.280
<v Jochen>halt unter Scripts halt andere Entry Points

01:35:56.280 --> 01:35:58.140
<v Jochen>definieren und dann hab ich halt Funktionen. Dann hab ich's

01:35:58.140 --> 01:35:59.760
<v Jochen>jetzt nicht in der Command-Fuhrrei, sondern

01:35:59.760 --> 01:36:02.120
<v Jochen>ich schreib dann halt einfach Python. Aber ja, es gibt natürlich

01:36:02.120 --> 01:36:04.020
<v Jochen>Dinge, wo man nicht einfach Python schreiben kann,

01:36:04.080 --> 01:36:06.200
<v Jochen>wenn man Datenbalken runterfährt oder solche Sachen.

01:36:06.340 --> 01:36:07.540
<v Jochen>Ja klar, dann muss man irgendwie das

01:36:07.540 --> 01:36:09.820
<v Dominik>anmachen. Also das DB zum Beispiel ist das andere oder

01:36:09.820 --> 01:36:12.680
<v Dominik>Also Shell-Skripte da reinschreiben,

01:36:12.780 --> 01:36:14.440
<v Dominik>wenn du willst, die dann Sachen

01:36:14.440 --> 01:36:16.720
<v Dominik>hintereinander machen und so. Oder Tests

01:36:16.720 --> 01:36:18.600
<v Dominik>machen oder gucken.

01:36:18.740 --> 01:36:20.640
<v Dominik>Du kannst Environment-Variablen da reinladen oder spezifisch,

01:36:20.700 --> 01:36:21.880
<v Dominik>wenn das da irgendwie passt. Und

01:36:21.880 --> 01:36:24.880
<v Dominik>du hast gerade eine Sache gesagt, Pakete.

01:36:25.100 --> 01:36:26.580
<v Dominik>Also du könntest ja auch einfach aus der Pipe-Produktur mal das

01:36:26.580 --> 01:36:28.500
<v Dominik>Pipe-Skript dann ausfüllen lassen. Und bei mir ist es zum Beispiel so,

01:36:28.600 --> 01:36:30.820
<v Dominik>dass die Dinge im Python

01:36:30.820 --> 01:36:32.840
<v Dominik>und im anderen Verzeichnis liegen als das Projekt

01:36:32.840 --> 01:36:34.700
<v Dominik>und die Dokumentation oder sowas.

01:36:34.860 --> 01:36:36.980
<v Dominik>Und trotzdem, wenn ich das Just benutze,

01:36:37.040 --> 01:36:38.460
<v Dominik>benutzt es halt dann auch den Kontext.

01:36:38.520 --> 01:36:40.120
<v Dominik>Du kannst Work in Directory setzen. Toll.

01:36:41.880 --> 01:36:42.480
<v Jochen>Ja, okay.

01:36:42.680 --> 01:36:44.080
<v Jochen>Also ich muss es mir vielleicht auch nochmal

01:36:44.080 --> 01:36:45.960
<v Jochen>angucken. Ja, mach das.

01:36:47.560 --> 01:36:47.960
<v Dominik>Breaking.

01:36:48.360 --> 01:36:50.500
<v Dominik>Wie Sockzeit. Geht nicht mehr weg.

01:36:50.880 --> 01:36:52.020
<v Jochen>Okay. Naja.

01:36:52.980 --> 01:36:53.980
<v Jochen>Ja, genau.

01:36:54.140 --> 01:36:55.740
<v Jochen>Ich habe gerade überlegt, was ich picken könnte.

01:36:55.740 --> 01:36:57.640
<v Jochen>Ich habe mir gar keine Gedanken gemacht, aber ich bin ja

01:36:57.640 --> 01:36:59.600
<v Jochen>in letzter Zeit so ein bisschen besessen von

01:36:59.600 --> 01:37:00.820
<v Jochen>nur ein bisschen.

01:37:01.400 --> 01:37:03.360
<v Dominik>Du bist besessen oder das

01:37:03.360 --> 01:37:04.360
<v Jochen>bist du besessen?

01:37:04.980 --> 01:37:06.820
<v Jochen>Ich mache ganz einfach

01:37:06.820 --> 01:37:08.400
<v Jochen>Cloud Code.

01:37:08.520 --> 01:37:09.860
<v Jochen>und Dinge mit

01:37:09.860 --> 01:37:12.120
<v Jochen>LLMs irgendwie

01:37:12.120 --> 01:37:13.980
<v Dominik>programmieren. Das ist schon

01:37:13.980 --> 01:37:15.900
<v Dominik>verrückt, also ich weiß nicht, ob du das auch

01:37:15.900 --> 01:37:17.860
<v Dominik>sagst, Mira, aber die Kosten sind halt krass

01:37:17.860 --> 01:37:19.580
<v Dominik>und wir nutzen jetzt halt Max,

01:37:20.660 --> 01:37:21.460
<v Dominik>das ist halt das Abo,

01:37:21.620 --> 01:37:23.360
<v Dominik>wie teuer ist das, 200 Euro? Ja,

01:37:23.740 --> 01:37:25.760
<v Dominik>gut, es gibt auch 1 für 100, aber... Ja, okay,

01:37:25.800 --> 01:37:27.220
<v Dominik>aber das ist halt das 20, normalerweise müsst ihr halt

01:37:27.220 --> 01:37:29.700
<v Dominik>3.000, 4.000 Euro Tokenkosten zahlen

01:37:29.700 --> 01:37:31.660
<v Dominik>im Monat dafür. Ja,

01:37:31.900 --> 01:37:33.920
<v Jochen>so, genau, das würde ich

01:37:33.920 --> 01:37:35.240
<v Jochen>jetzt dann picken, es gibt da

01:37:35.240 --> 01:37:37.900
<v Jochen>ein NPM-Paket,

01:37:38.300 --> 01:37:40.500
<v Jochen>CC-Usage nennt sich das.

01:37:40.680 --> 01:37:42.040
<v Jochen>Kann man per MPX zum Beispiel installieren.

01:37:42.420 --> 01:37:44.280
<v Jochen>Und dann sagt einem das quasi

01:37:44.280 --> 01:37:46.300
<v Jochen>für wie viel Geld man Tokens

01:37:46.300 --> 01:37:47.780
<v Jochen>verbraucht hat. Und

01:37:47.780 --> 01:37:50.360
<v Jochen>damit kann man sich sehr schön rationalisieren, dass das gar nicht

01:37:50.360 --> 01:37:52.280
<v Jochen>so viel ist, wenn man 200 Dollar im Monat

01:37:52.280 --> 01:37:52.680
<v Jochen>zahlt.

01:37:55.720 --> 01:37:56.440
<v Jochen>Wie viel hast

01:37:56.440 --> 01:37:58.380
<v Jochen>du diesen Monat? Auf dem Rechner

01:37:58.380 --> 01:38:00.140
<v Jochen>hier 2000 Dollar Tokens.

01:38:00.840 --> 01:38:02.560
<v Jochen>Und ich habe aber auch noch andere Rechner auf denen auch.

01:38:02.680 --> 01:38:04.300
<v Dominik>Ja. Und das ist der

01:38:04.300 --> 01:38:05.360
<v Dominik>17. heute, glaube ich.

01:38:05.960 --> 01:38:06.320
<v Dominik>Ja.

01:38:08.300 --> 01:38:11.140
<v Dominik>die sind gefährlich, die Dinger, die machen uns alle

01:38:11.140 --> 01:38:12.840
<v Dominik>obsolet. Wir werden sehen.

01:38:13.440 --> 01:38:14.440
<v Dominik>Ah, das glaube ich nicht.

01:38:14.940 --> 01:38:17.140
<v Dominik>Man sitzt dann am Strand und nimmt dann sein Schirmchen

01:38:17.140 --> 01:38:19.140
<v Dominik>und redet dann mit seinem, keine Ahnung,

01:38:19.320 --> 01:38:20.900
<v Dominik>kleinen Roboter, der neben einem herläuft, der

01:38:20.900 --> 01:38:23.060
<v Dominik>nebenbei noch unterhält, dass man weiterentwickelt

01:38:23.060 --> 01:38:25.040
<v Dominik>und unterhält sich dann wie im Podcast. Da haben wir ja schon mal gut

01:38:25.040 --> 01:38:26.880
<v Jochen>geübt jetzt. Also, ja, man muss so ein bisschen

01:38:26.880 --> 01:38:29.080
<v Jochen>vorsichtig sein, weil natürlich wird man halt

01:38:29.080 --> 01:38:30.960
<v Jochen>irgendwie so ein bisschen zu so, man schreibt dann halt nur noch so

01:38:30.960 --> 01:38:32.980
<v Jochen>Anforderungen hin und so versucht das genau zu

01:38:32.980 --> 01:38:35.160
<v Jochen>spezifizieren. Man befördert

01:38:35.160 --> 01:38:36.860
<v Jochen>sich selbst zu so einer Art Projektmanager

01:38:36.860 --> 01:38:39.000
<v Jochen>und dann macht man einen ganz

01:38:39.000 --> 01:38:40.900
<v Jochen>anderen Job und da muss man so ein bisschen aufpassen,

01:38:41.000 --> 01:38:42.760
<v Jochen>dass das, weil dann nachher, weil

01:38:42.760 --> 01:38:44.760
<v Jochen>eigentlich, also ich mache es mit der Familie

01:38:44.760 --> 01:38:46.840
<v Jochen>nur, weil es Spaß macht, genau und

01:38:46.840 --> 01:38:48.940
<v Jochen>ja, wenn es keinen Spaß mehr

01:38:48.940 --> 01:38:50.600
<v Jochen>macht, weil ja, das ist halt,

01:38:50.820 --> 01:38:52.880
<v Jochen>dann hat man sich irgendwie... Doch, was wird Holz machen?

01:38:53.220 --> 01:38:54.840
<v Mira>Ja. Manchmal nutzt

01:38:54.840 --> 01:38:56.680
<v Mira>tatsächlich, also für den privaten Projekt

01:38:56.680 --> 01:38:58.740
<v Mira>ja auch viel Cursor und er sagt so, ja

01:38:58.740 --> 01:39:00.740
<v Mira>das, worauf ich Bock habe, das schreibe ich da

01:39:00.740 --> 01:39:03.020
<v Jochen>trotzdem selbst. Ja, das ist auf jeden Fall

01:39:03.020 --> 01:39:04.780
<v Mira>eine gute Idee wahrscheinlich. Und sonst ist

01:39:04.780 --> 01:39:06.500
<v Mira>er halt, ja, der Projektmanager, der

01:39:06.500 --> 01:39:09.040
<v Mira>bei einem Juvia quasi

01:39:09.040 --> 01:39:11.120
<v Mira>immer gucken muss, was der

01:39:11.120 --> 01:39:13.000
<v Dominik>macht. Ja, bei mir hat auch Cursor ist raus,

01:39:13.100 --> 01:39:14.800
<v Dominik>AdVenture wird eh verkauft, aber Cursor ist raus,

01:39:14.980 --> 01:39:16.860
<v Dominik>nur noch Commandoteile und ich bin

01:39:16.860 --> 01:39:18.920
<v Dominik>wie das Code. Das ist

01:39:18.920 --> 01:39:21.180
<v Dominik>super. Das also, kann ich

01:39:21.180 --> 01:39:22.500
<v Dominik>nur empfehlen. Ist verrückt.

01:39:23.220 --> 01:39:24.680
<v Dominik>Ist grad verrückt, ja.

01:39:25.000 --> 01:39:27.060
<v Mira>Ist schon, es macht also viel schneller

01:39:27.060 --> 01:39:29.080
<v Mira>und dann mache ich so nervige

01:39:29.080 --> 01:39:31.040
<v Mira>Sachen ab. Aber ja, man wird irgendwie

01:39:31.040 --> 01:39:32.960
<v Mira>mehr zum Projektmanager, Projektmanagerin

01:39:32.960 --> 01:39:34.980
<v Mira>und ich glaube, das Thema Kommunikation

01:39:34.980 --> 01:39:37.340
<v Mira>Wohnen wird halt immer noch wichtig bleiben.

01:39:37.580 --> 01:39:39.040
<v Dominik>Ich hoffe ja, dass das Ding über meine Stimme hat

01:39:39.040 --> 01:39:40.940
<v Dominik>und dann bessere Kommunikation mit den anderen Leuten.

01:39:41.420 --> 01:39:43.000
<v Jochen>Das wäre, genau, das habe ich ja auch mal

01:39:43.000 --> 01:39:45.040
<v Jochen>gehofft, dass ich irgendwie, warum ich, genau,

01:39:45.220 --> 01:39:46.340
<v Jochen>während meine

01:39:46.340 --> 01:39:49.180
<v Jochen>die Cloud-Jobs

01:39:49.180 --> 01:39:51.020
<v Jochen>halt laufen, kann ich dann halbwegs mehr Zeit, um

01:39:51.020 --> 01:39:53.040
<v Jochen>irgendwie Meetings mit Kollegen irgendwie da

01:39:53.040 --> 01:39:55.080
<v Jochen>irgendwie Pläne zu besprechen, so, das sollte

01:39:55.080 --> 01:39:56.920
<v Jochen>umgekehrt sein, dass ich

01:39:56.920 --> 01:39:59.120
<v Jochen>lieber programmieren und dann kann irgendwie

01:39:59.120 --> 01:40:00.900
<v Jochen>weiß ich nicht, so ein Avatar in so einem Meeting

01:40:00.900 --> 01:40:03.140
<v Jochen>auftauchen und immer sagen, das ist eine super

01:40:03.140 --> 01:40:04.080
<v Jochen>Idee, voll gut.

01:40:04.980 --> 01:40:05.920
<v Jochen>Genauso machen wir das.

01:40:05.940 --> 01:40:07.020
<v Dominik>Kann auch Kluge Dinge sagen, Jo.

01:40:08.040 --> 01:40:09.960
<v Dominik>Du kannst das Training, kannst dann unsere Podcast-Folgen

01:40:09.960 --> 01:40:10.820
<v Dominik>eingeben dann.

01:40:11.120 --> 01:40:11.780
<v Jochen>Ja, ja, okay.

01:40:14.020 --> 01:40:14.840
<v Jochen>Einiges ungekrempelt.

01:40:14.860 --> 01:40:17.480
<v Mira>Wir haben halt manche Leute, die hätten wirklich

01:40:17.480 --> 01:40:19.620
<v Mira>was Spannendes zu erzählen, aber trauen sich nicht so richtig

01:40:19.620 --> 01:40:21.380
<v Mira>im Podcast, kann ich verstehen, ist okay.

01:40:21.860 --> 01:40:23.600
<v Mira>Aber wenn man dann die Stimme einfach nehmen könnte,

01:40:23.680 --> 01:40:25.500
<v Mira>dann können sie einen Text schreiben und dann könnte man

01:40:25.500 --> 01:40:26.880
<v Mira>den Podcast einfach generieren.

01:40:27.040 --> 01:40:27.740
<v Mira>Ja, das geht.

01:40:28.740 --> 01:40:31.640
<v Dominik>Also die neuen Modelle von Gemini, die ich gehört habe,

01:40:31.720 --> 01:40:32.680
<v Dominik>ich glaube, es gibt noch andere,

01:40:33.100 --> 01:40:34.900
<v Dominik>die Whisperers ersetzen, das ist verrückt.

01:40:34.980 --> 01:40:37.080
<v Dominik>Wie gut die sind und wie natürlich die auf einmal klingen,

01:40:37.200 --> 01:40:38.780
<v Dominik>ja, das ist schon crazy. Ja, also Stimme, LLM Labs

01:40:38.780 --> 01:40:40.420
<v Jochen>hat da super Modelle, aber

01:40:40.420 --> 01:40:42.620
<v Jochen>fürs Generieren von Podcasts,

01:40:42.760 --> 01:40:45.040
<v Jochen>Notebook LLM, das, ja, da geht

01:40:45.040 --> 01:40:45.840
<v Dominik>alles. Das ist crazy, ja.

01:40:47.020 --> 01:40:48.360
<v Dominik>Danke, Mira, dass du da warst. Ja.

01:40:48.860 --> 01:40:50.380
<v Dominik>Ja, sehr gerne, hat Spaß gemacht.

01:40:51.200 --> 01:40:52.780
<v Dominik>Also, denk dran, Hörertreffen am

01:40:52.780 --> 01:40:54.140
<v Dominik>20. September.

01:40:55.820 --> 01:40:56.020
<v Dominik>Ja.

01:40:56.020 --> 01:40:56.820
<v Dominik>Ja, Hörertreffen.

01:40:58.720 --> 01:40:59.120
<v Dominik>Ja.

01:41:00.900 --> 01:41:01.900
<v Dominik>Und, ja,

01:41:02.020 --> 01:41:03.640
<v Dominik>kommt vorbei, hört uns, hallo at pythonpodcast.de,

01:41:03.740 --> 01:41:04.780
<v Dominik>alles Feedback, alles und so weiter.

01:41:04.980 --> 01:41:06.360
<v Dominik>Jo, vielen Dank und bis bald.

01:41:07.240 --> 01:41:08.800
<v Mira>Alles klar. Und hört auch gerne

01:41:08.800 --> 01:41:10.200
<v Mira>meinen Datasign Steve Dive rein.

01:41:10.420 --> 01:41:12.360
<v Dominik>Auf jeden Fall. Großempfehlung. Bis bald.

01:41:12.860 --> 01:41:14.320
<v Dominik>Bis dann. Tschau. Tschüss.
