Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast in der 28. Episode heute.
Das ist ein bisschen wieder eine Laberfolge und zwar über Machine Learning heute.
Ja, hi Jochen, du bist wieder dabei, hier ist wieder Dominik.
Ja, hallo Dominik.
Und heute ist auch der Christian wieder da.
Christian haben wir auch dabei, ja.
Hey, willkommen.
Danke.
Ja, habt ihr euch schon was genaueres überlegt heute oder wolltet einfach so ein bisschen die Döniges erzählen?
Wir haben heute übrigens, wir wollten das ja irgendwann mal anfangen zu sagen, 4. Februar 2021.
Ja, ich glaube, diesmal wollten wir wieder so ein bisschen Richtung irgendwie Data Science, Machine Learning ein bisschen mehr.
Wir hatten in letzter Zeit immer ganz, ganz viel Webentwicklung und so.
Ja, und wir wägen uns da jetzt mal so ein bisschen.
So wirklich das Thema haben wir noch nicht.
Wir haben alle so ein bisschen was mitgebracht.
Mal schauen.
Ja, wir hatten auch einige Hörerwünsche, was Datentypen zum Beispiel angeht.
Wir wollten auch mal eine Folge machen, wo wir genau diese
Build-in-Implementierung in Python
dazu erklären, aber das wird dann eine
der nächsten Folgen werden.
Was wir euch aber nochmal fragen wollten, wenn ihr
Feedback und Kritik und so habt, wie immer an
hallo.pythonpodcast.de und sagt uns
nochmal, auf welche Themen ihr so besonders Lust hättet.
Dann werden wir die auch nochmal mit
in unsere engere Auswahl nehmen.
Ja,
es gibt was Neues, es gibt eine
mögliche Update von
Paketen, NumPy, Pandas,
Pandas auch, MyPy,
Nein, Pandas nicht. Doch, Pandas tatsächlich
auch, fällt mir jetzt gerade so ein.
Ich habe es jetzt hier gar nicht aufgeschrieben, aber ja,
gab es jetzt auch letztens irgendwie eine neue,
größere Version 1.2.
Ich bin mir nicht ganz sicher, aber tatsächlich
auch NumPy hat die größte Release,
also mit den meisten Pull-Requests seit
x Jahren, jetzt mit
1.20 und
JupyterLab
3 ist draußen und
Spacey, also
die ganze Natural Language Processing
Geschichte, Version 3 ist jetzt gerade erschienen mit Support für Transformer.
Also genau, das war mal so das Erste. Ich habe mir mal angeguckt, was ist denn alles Neues passiert, weil ich da auch schon lange nicht mehr draufgeguckt habe.
Und da ist in letzter Zeit einiges...
Falls ihr irgendwie tatsächlich mal den Einstieg finden wollt in NumPy und oder Pandas oder schon immer mal ein bisschen tiefer angucken wolltet,
es gab einige richtig coole YouTube-Tutorials, die ich fand, die ich bis jetzt so die besten nicht kennengelernt habe, von Ben Gorman dazu.
Und zwar NumPy for Grandmas und Pandas for your Grandpa.
Okay, das bin ich schon als Panda.
Ja, eine richtig schöne
Einführungsserie für die
beiden Bibliotheken, würde ich sagen, wo man mal so ein bisschen
schon doch tiefer
einkommen kann. Das fand ich super.
Genau.
Ja.
Genau, weil wir
so ein bisschen News machen. Also es gab noch ein paar andere
Releases auch.
MyPy, kann man
dazu was sagen? Also ich weiß nur, das hat jetzt irgendwie
Support für 3.9.
Python 3.9.
Dann gibt es irgendwie für PIP einen neuen Resolver. Hat sich den irgendjemand schon mal angeguckt so ein bisschen?
Ich hatte drüber gelesen und
mir nochmal auf die Wiedervorlage
gepackt.
Tatsächlich bin ich mit,
was das Resolving angeht, momentan
ich bin immer noch
an dem anderen Ende, äh, umdoktern,
wie ich irgendwie so
einmal zusammengestellte Paketlisten
so fix und fertig durch die Gegend
verteile. Deswegen hatte ich
es wieder zur Seite gelegt, aber
ich merke auch, es hat uns nirgendwo gebissen,
zumindest. Stand ja so ein kleines Teilchen
drauf von, man kann noch den alten
Reserver, glaube ich, aktivieren, wenn einen der neue
irgendwie Quatsch macht.
Aber
nee, erst mal nicht negativ aufgefallen.
Ja,
nee, ich merke, ab und zu
funktioniert das halt irgendwie nicht so richtig und dann
irgendwie meistens hilft
irgendwie das Paket, was Ärger macht, nochmal auszukommentieren
und mal wieder alles neu zu installieren und dann wieder reinzunehmen
und dann geht es irgendwie wieder.
Ja, aber ich habe es auch
eigentlich nicht, also insofern, ich habe es nicht
und es hat nicht wehgetan, insofern scheint alles halbwegs gut gelaufen zu sein.
Wobei, wenn du das erzählst, ist das aber genau so ein Fall von
ja, nee, das kann ich nicht leiden.
Ja, ja, das ist auch mal ein schlechtes Gefühl, wenn ich so etwas merke.
Ich spiele halt ein bisschen rum mit so einer Form von Logfiles,
dass ich halt ein Environment beschreiben kann.
Ich hatte, glaube ich, an irgendeiner Stelle ja mal das AppEnv erwähnt gehabt,
was ich benutze, um so
fertiggebackene Virtual Envs zu erzeugen.
Klingt nach Poetry.
So ein bisschen
das Problem bei Poetry war mir,
das ist zu viel.
Das ist einfach zu viel Kram. Ich brauche
was ganz Kleines.
Der wichtigste Teil für mich ist,
wir haben so
Projekte, wo wir ein Repo haben,
das auschecken und dann
bringt das Repo im Prinzip sein
Logfile mit und das konkrete
Tool, was da dran hängt,
und bootstrappt sich mit dem Log-File selber durch ein kleines Bootstrap-Skript, was in dem Repo drin liegt.
Also Bateau ist bei uns das große Werkzeug, was das benutzt.
Und dann kannst du dort, dann kann sozusagen jeder, der mit diesem Projekt arbeitet, das Repo auschecken
und tippt einfach Punkt, Schräg, Schräg, in dem Fall Bateau oder auf irgendwas anderes.
Du musst gleich nochmal kurz auf Bateau eingehen, gleich.
Ja, kann ich auch.
Und dieses Skript, was in dem Repository eingecheckt ist, ist nur ein ganz kleines Bootstrap-Skript,
zu einem Single-File, was auch über mehrere, mindestens so Python 3.4 oder 3.5 bis hoch zur aktuellsten halt,
kompatibel ist. Und der ist ein kleiner Wrapper, dass wenn man ihn aufruft, guckt er,
ob ein funktionierendes Virtual-Env für das Log-File oder halt auch das Requirements-Text-File vorhanden ist.
Und wenn ja, dann startet er sozusagen das eigentliche Kommando aus diesem Virtual-Env statt sich selber.
so einmal durchgerecht wie so ein Exec
und wenn das aber eben nicht der Fall ist
oder wenn das Virtual Env kaputt ist oder wenn sich das
Log-File geändert hat oder wenn du deinen Python-Interpreter
geändert hast,
dann erkennt er das und macht in dem
Moment sofort eine Reinstallation,
ohne dass du irgendwas tun musst. Du rufst einfach
wie immer dein Tool auf,
um zu sagen, ich will das XY machen und dann sagt er
im schlimmsten Fall, ja Moment, weil
zum Beispiel ein anderer im Projekt hat was
committed, weswegen das Log-File sich geändert hat
und dann zieht er das sofort gerade.
und dieses Self-Contained-Ding, es ist auch so, dass du kannst dann halt dieses Tool in sieben Projekten benutzen
und jedes Projekt benutzt seine eigene Versionsliste automatisch und du hast nie eine systemweite Installation dieses Tools,
sondern das hängt immer konkret an den Projekten dran und das ist ein Use-Case, den habe ich nirgendswo gefunden, der das so abbildet
und Poetry hatte ich gesehen und das war aber sozusagen, dafür Poetry zu verwenden, wäre viel zu aufwendig geworden, um dieses ganze Self-Bootstrapping irgendwie anzugehen.
Ich merke, da habe ich auch häufig Gedanken und Ideen, wie ich möchte, dass das funktioniert, wo ich gegen andere Tools nicht mehr ankämpfen möchte.
So viel Code ist es dann nicht, das selber zu bauen, als dass ich dann einem Riesentool hinterherlaufe, dem man ständig sagen muss, du, ich brauch das aber so oder so.
und vielleicht, das machst du mit Bato oder das Tool heißt Bato?
Also dieses Bootstrap-Tool heißt AppEnv, das ist im Prinzip nur eine einzige Datei,
da gibt es bei uns auf GitHub, GitHub, Flying Circus IO, AppEnv, das ist nur eine einzige
Python-Datei, die legt man sich in ein Repo und wenn in dem Repo daneben eine Datei liegt,
und die Requirements Text heißt. Dann passiert folgendes, dann benennt man das Skript so wie das
eigene Tool. Das muss nicht Bato sein, das kann irgendein Python Package sein, was ein
Konsolenskript hat, was genauso heißt wie das Skript, was du in deinem Repo ablegst. Und dann
und installiert alles, was in dem Equipment-Text-File drin steht, in eine geheime Position, also es heißt dann Punkt, dein Tool-Name, Schrägstrich und dann werden da so gehäschte Virtual-Envs drin erzeugt und auch wieder aufgeräumt und ruft im Prinzip dann bloß Punkt da aus dem Virtual-Env bin und dieses Konsol-Skript auf, viel mehr macht er nicht und das ist das App-Env, um so einen Bootstrapping-Mechanismus da einmal abzubilden.
und Bato ist ein Werkzeug, was das halt benutzt.
Wir haben so Bato-Projekte, also das ist ein
Deployment-Werkzeug, ähnlich zu
Ansible und anderen Tools
und ein
Charakter von dem Ding ist halt, wenn du
Bato-Projekte machst und wir haben
bei unseren Mitarbeitern halt gerne das,
die haben 12,
15, 20 so Projekte rumfliegen, die sie
jonglieren und jedes davon,
eins davon hat ein Kunde halt
mal ein Dreivierteljahr nicht angefasst
und das ist jetzt auch eine Bato-Version von vor anderthalb Jahren
oder irgendwas
und dann will ich nicht überlegen müssen, was muss ich tun, um diese Bateau-Version wieder zum Laufen zu kriegen,
weil meine letzten drei Projekte waren eine andere Bateau-Version.
Oder ist das Thema halt, nee, du brauchst nur das Repo nehmen, rufst .slash Bateau in dem Repo auf
und der zieht sich exakt die Version, die für dieses Projekt gebraucht wird, her
und du kannst dann halt in dutzenden Projekten halt die Dependencies ordentlich managen,
ohne jemals händisch reingreifen zu müssen.
Das macht er alles im Self-Bootstrapping und auch ohne, dass in deinem System was anderes installiert ist, außer Python selber.
also da sind auch noch so ein paar Hacks drin
dass wenn du halt kaputte Pythons
hast, wie auf Debian üblich
also Debian macht halt gerne
Setup-Tools und Pip und so kaputt
und dass die Standard-Library
noch nicht mehr geht, da ist überall so dieses
kleine Wissen drin von, wie ziehe ich mir das
in so einem Moment halt alles gerade, dass ich mich
dann aus dem luftleeren Raum, solange ich
irgendwie einen Python habe
was nicht nur
ein bisschen kaputt gemacht wurde
dass er sich daraus
bootstrapen kann und dir dann ein vollfunktionelles
Virtual-Env auch zusammenbaut.
Und du musst nie
überlegen, muss ich das Virtual-Env
jetzt aufräumen oder nicht, sondern er macht es halt
immer, weil er erkennt, wann das nötig ist.
Das klingt klasse.
Ja.
Ja, ehrlich gesagt,
hätte man an der Stelle schon
eigentlich eine ganz gute
Überleitung zu
MBDev, also das ist ja so ein
Ding, mit dem spiele ich in letzter Zeit so ein bisschen
rum,
weil das
im Grunde auch einen Großteil von
diesen Dingen halt tut.
Probleme lösen, wie man seine
MGBoG so einrichtet, dass man damit arbeiten kann, oder?
Ja, wobei es halt auch
sehr weit noch in den Bereich reinragt,
irgendwie, wie kann man
quasi ein Projekt so konfigurieren,
dass hinterher dann auch Pakete für PyPI
rausfallen
und Dokumentation
und
GitHub Actions, wo dann direkt
irgendwie so ein
Continuous Integration
Zeugs halt läuft und...
Also Jochen, man hört raus, mag Notebooks, Jupyter Notebooks.
Ja, also ich
mag die tatsächlich
und das Ding
dreht halt quasi
den Jupyter Notebook Level
so auf 11, weil
da schreibt man halt alles in Jupyter
Notebooks, beziehungsweise das ist halt eigentlich
so eine Art IDE und
plus Projektverwaltungsdings irgendwie
und
genau, also
ist halt quasi so die Antwort auf die Frage, was wäre,
wenn ich alles in Notebooks machen
wollte und dann kommt so ungefähr das
dabei raus und das hat einige interessante
Vorteile, also es hat auch interessante, also
es ist halt auch ein bisschen komisch natürlich, also wenn man
jetzt irgendwie eine IDE gewohnt ist
oder irgendwie auch nur einen
normalen Texteditor, dann kommt einem das alles
so ein bisschen eigenartig vor, es gibt ja auch so einen
sehr populären
Talk, ich weiß gar nicht wo, der gehalten,
Joel Gruß, der macht auch so einen
Data Science
Podcast, Adversarial Learning, glaube ich,
heißt der und der macht viele YouTube-Videos
und der hatte halt so einen Talk
gehalten, I don't like Notebooks,
der dann oft
irgendwie immer rumgeschickt wurde
und wo er
sagt, ja, ja, das
encouraged irgendwie einen Haufen sehr schlechte
Software-Entwicklungspraktiken
und
macht die funktionierenden
Workflows, die ich habe, halt kaputt und deswegen
ich finde das alles doof und nicht deterministisch und
ja,
in gewisser Weise hat er da so einen Punkt, aber
man kann da auch überall um diese ganzen
Ecken drum herum arbeiten
und manche Sachen sind halt auch sehr, sehr
cool dabei. Also
das, was das halt so ein bisschen möglich
macht, ist
halt ein Ideal, das
ich glaube, Knut hatte das irgendwann mal
1983 oder so aufgeschrieben,
so von Literate Programming,
dass man halt sozusagen nicht nur Code
hinschreibt, sondern halt Dokumentation und Code oder was der Code tun soll, halt irgendwie zusammen.
Gab es diverse Versuche, das irgendwie hinzukriegen. Ich glaube,
mit die ersten war der erste Versuch bei Mathematica, aber das ist halt irgendwie nicht so richtig populär
geworden. Matlab, RStudio,
geht auch in die Richtung. Und jetzt halt Jupyter Notebooks, damit würde
ich sagen, hat es in gewisser Weise einen Durchbruch gehabt und wird jetzt
überall verwendet. Und halt auch JupyterLab nochmal so als komplette IDE irgendwie dafür.
und genau, da gibt es dann halt auf diesem Talk auch eine Antwort von
einem, der sich, also derjenige, der sich diese NBDF-Geschichte
überlegt hat oder dann halt, ja, die dann entstanden ist bei der
Entwicklung einer Bibliothek, das ist Jeremy Howard, der hat
der hat halt FastAI,
die Library, das ist ja auch so ein Wrapper um PyTorch im Grunde,
damit geschrieben, auch ein Buch darüber geschrieben, das ist auch wahrscheinlich so,
das empfehlenswerteste
Buch über PyTorch ist
und das Buch ist auch komplett
mit MBDev geschrieben und
das ist halt schon
das hat auch schon sowas sehr sehr cooles
und der argumentiert halt ja, für mich ist das alles
viel einfacher, also einmal diese ganzen
Hässlichkeiten und da muss man leider sagen, es ist halt
es gibt viele Hässlichkeiten
es fällt vielen Leuten total schwer
irgendwie Projekte ordentlich aufzusetzen
das geht halt alles mehr oder weniger
weg, wenn die Leute halt mit
also es gibt ja so ein Template für GitHub zum Beispiel
wo man einfach sagen kann, okay, erzeuge mir so ein MBDev-Projekt
oder man sagt MBDev-New irgendwie, ich weiß jetzt gar nicht genau,
wenn man das installiert hat, dann erzeugt es einem halt
so eine Projektstruktur, so ähnlich wie
bei Poetry, PoetryInit oder so,
nur es macht noch mehr, deutlich mehr
und ja,
dann für ihn ist es halt total super, weil
die Pull-Requests werden halt besser
und er reviewt die Pull-Requests, da gibt es dann auch ein eigenes Tool für,
dann direkt in einem Notebook, das halt irgendwo
auf Binder oder
irgendwie auf Google Colab oder so gestartet wird.
Das heißt, ein Pull-Request kommt rein,
er klickt halt auf einen Link, dann geht das halt in einem eigenen
Notebook auf, das überhaupt nicht bei ihm läuft, sondern irgendwo
in der Cloud. Und dann kann er
halt auch direkt sehen, da das halt so ein bisschen
Richtung Literate Programming geht,
was hat sich denn geändert? Also wie
verändern sich zum Beispiel auch die Visualisierungen
von irgendwelchen Dingen?
Das ja ansonsten auch ein Problem wäre, wenn jemand
ein Pull-Request stellt, wie so
die Visualisierung von irgendeiner Geschichte
besser aus. Ja, da muss man
erstmal, okay, die Daten zusammensammeln,
das dann irgendwie ausführen und dann sich das angucken,
oh, dann wo guckt man sich das an,
wie generiert man so diese Grafik eigentlich, das ist alles
ziemlich umständlich. Und da
hat man es halt dann direkt, kann sehen, okay, ah,
sieht besser aus als vorher, super, Prüfingfest
akzeptieren, fertig.
Und auch ein schöner Vorteil ist halt
Tests und so, die sind da auch direkt mit
im Notebook. Also bei
so klassischer Softwareentwicklung mit einer IDE
oder so hast du dann halt schon auch die Tests
oft in einem sehr anderen Bereich
deines Pakets als das der Code, an dem man gerade schreibt.
Und das ist halt auch immer nicht so richtig.
Also die liegen halt nicht nah beieinander.
Während wenn man das jetzt in den Notebook schreibt,
dann hat man halt irgendwie den eigentlichen Code, der irgendwas tut
und halt noch Dokumentation und Beispiele, wie man es halt ausführt und so drumherum.
Plus die Tests, alle zusammen in einem Notebook.
Und über den Teilen, die halt hinterher in der Library wirklich landen sollen,
dann steht halt noch irgendwie Export in Markdown oben drüber.
und dann werden die halt
in eine Library gepackt.
Und der ganze Dokumentationscode
nicht, aber der landet dann durchaus noch in der Dokumentation.
Und das ist schon
sehr nett. Also ich finde es auf jeden Fall einen sehr
interessanten Ansatz.
Und ja, also
es ist halt, ist das nicht dann irgendwie so ein
ewig langes Endlos-Scrolling durch
irgendwelche Projekte dann durch, von
Top to Bottom, oder?
Ja gut, du kannst
das ja strukturieren. Natürlich können die
Notebooks können schon lang werden, man kann das so strukturieren, wie man möchte, man kann auch viele
Notebooks machen. Ist auch so, also
man kann auch Dinge dann in der Library ändern und die werden dann in die Notebooks zurückgesynct,
der Code, und umgekehrt halt. Und das ist so,
man muss, wenn Dinge jetzt, wenn Klassen zum Beispiel sehr groß werden,
dann muss man nicht alle Methoden direkt an die Klasse dran schreiben,
sondern man kann das dann auch später machen, dann gibt es dann halt Dekoratoren, die dann
irgendwie Funktionen als Methoden wieder an Klassen dranklatschen.
Dem Code, der da hinterher rausfällt, den sieht man das nicht an, aber im Notebook
ist es dann halt schön übersichtlich, weil die ganzen
Methoden, die die Klasse groß machen, kommen dann halt erst so nach und nach dazu
oder können halt auch in einem anderen Notebook dazukommen.
Also es ist sehr anders, als man normalerweise
so entwickelt, aber ich finde, das ist interessant.
Ich muss mich manchmal so ein bisschen zwingen,
da immer mal so reinzugucken in solche Dinge.
und Jochen unterhalten sich über die Programmiersprache Python
für manche Sachen ist das total super.
Ja, und
genau, deswegen gucke ich mir das jetzt gerade an und probiere
das halt auch mal aus. Und
das ist halt auch sowas, was der
Autor von Imdingen dann
in seinem Talk als Antwort auf diesen
I-don't-like-notebooks-Talk erzählt hat.
Also er hat immer, er findet,
es funktioniert immer gut bei Anfängern oder bei
sehr, sehr erfahrenen Leuten.
Dazwischen, wenn die Leute so sich eingegroovt
haben auf ihre Idee oder so, dann
die sind alle immer sehr skeptisch zuerst.
Weil das
natürlich auch immer so eine harte Änderung ist.
Ich merke das ja auch. Ich bin eigentlich
VI-User und ich habe jetzt dieses
Jahr mich mehr mit PyCharm
beschäftigt.
Wie es gut ist.
Und das war schon schmerzhaft.
Also das war irgendwie nicht...
Aber muss man ab und zu wohl mal machen,
um einfach mal zu gucken, wie sind andere
Entwicklungsumgebungen denn so.
Ja, diesen Wendel haben wir auch bei uns immer ständig.
Was ich mich frage, macht ihr gerne
Notebooks?
Könntet bestimmt gerne mal Bescheid schreiben,
uns die E-Mail dazu oder sowas. Also ich benutze zum Beispiel
Notebooks auch relativ gerne, so zum
schnellen Debuggen oder sowas.
Wenn ich irgendwie neue Methoden, neue Funktionen baue,
dann schreibe ich die gerne erstmal im Notebook,
zum Beispiel in der Django-Shell dann auch oder so
und probiere es dann direkt aus, ob es geht und
muss dann halt nicht mehr das ganze Projekt immer starten und
dann irgendwie den Web-Server hochfahren und
dann da die Module oder die Routen aufrufen, sondern
sehe halt irgendwie direkt, ob diese kleinen Teile
gehen oder nicht. Das ersetzt so ein bisschen den
Debugger vielleicht an der Stelle oder so.
Finde ich sehr handlich.
und ich habe das Gefühl, dass es ein Phänomen von der Komplexität der Frameworks und der Libraries ist, mit dem man zu tun hat.
Im Kern ist ja die Handlichkeit, dass es Python eh schon hat.
Ich habe jetzt in der letzten Zeit häufiger eher mit sehr kleinen Sachen immer wieder zu tun,
weil viel Systemintegration, viel Minitooling, gerade auch verteilt durch die Gegend,
verstehen möchte.
Da merke ich, da bin ich halt häufig in so Systemintegrationssachen
drin. Und ich habe,
ich falle irgendwie, so wie du sagst, genau in diesen
Mittelteil da irgendwie gerade rein.
Das sozusagen, ja, für so
einzelne Fälle haben mich die Notebooks immer wieder
angelockt. Ich sehe
auch so andere Kollegen für bestimmte Fälle, die immer wieder
rausholen. Aber wenn
ich es dann versuche, dann stolpere ich in meinem
Workflow zu schnell
drüber, dass es mit irgendwie allen
anderen Sachen nicht mehr so richtig andockt, die
ich bei mir so parat liegen habe.
Also ich würde es zum Beispiel sehr gerne auch wie das Code
und da kann man die mittlerweile
sogar integrativ einfach nutzen.
Das heißt, du hast den einfach nur bei liegen,
wie den anderen Code, den du auch drin hast, so neben dem Terminal oder sowas
und kannst halt dann direkt fast
wie in der Shell irgendwie so nativ so hin und her
switchen, was schon nett ist.
Ja Ja interessant Ja Ja das ist schon also ich finde das f mich total Geschichte war dann halt
also gerade für so Data Science oder Machine Learning
Geschichten, wo man oft so Schritte hat,
die lange dauern.
Und das ist einfach, wenn man das anders
macht, ist es halt, also kann man
auch irgendwie, aber das lässt man dann manchmal weg,
weil man da nicht dran denkt oder so. Man kann natürlich alles irgendwie
cachen oder versuchen, das halt so
hinzuschreiben, dass man es auch
schnell wieder erzeugen kann oder so.
aber wenn man jetzt irgendwie ein Modell eine Stunde lang trainiert hat oder ein paar Stunden
und dann macht man irgendeinen blöden Fehler und dann ist halt
das Ergebnis von einer Stundenberechnung ist halt einfach weg
das kann einem im Notebook im Grunde nicht so wirklich passieren
weil dann hat man halt die Zelle, die das irgendwie macht
ausgeführt und wenn man irgendwo anders einen Fehler macht
dann macht das halt erstmal nichts kaputt, sondern
dann ändert man das halt und dann führt man es nochmal aus
und dann geht es halt weiter und das beschleunigt
viele Dinge durchaus, auch wenn man gerade mit
mit großen Datenmengen
viel macht und die nicht so einfach mal laden kann.
Also gerade leidvolle
Geschichten sind da sowas wie
fürchterliche Hadoop
Data Lakes oder so, aus denen man die Daten
nur ganz schlecht wieder rauskriegt und dann hat man es
irgendwie geschafft, die Daten rauszukriegen
und dann sind sie gleich wieder weg,
wenn man irgendwie einen Fehler gemacht hat oder so.
Also
das war auch in dem Talk von Joel
Glus hat dann jemand am Schluss,
als dann Fragen aus dem Publikum kamen,
meinte jemand dann so, ja, also ich habe ja das Problem genau,
und Jochen unterhalten sich über die Programmiersprache Python
und man kann es auch verstehen, okay, wenn man diesen Fall nie hat, dann okay, aber wenn man ihn hat, dann ist das sehr hilfreich.
Und interessanterweise triggert aber bei mir dieses Gefühl, und das ist so diese Frage, wer bringt da welchen Erfahrungshintergrund mit,
bei mir triggert, wenn du beschreibst, du willst nicht aus Versehen irgendwas verlieren,
dann ist mein Gefühl den Notebooks halt gegenüber viel stärker ein, ja, das ist da irgendwo, ich habe keine Ahnung, wann der Punkt ist, wann ich es verliere.
und Jochen unterhalten sich über die Programmiersprache Python
und
zum Machine Learning rüber.
Da habe ich gesehen, dass das halt tatsächlich sehr häufig
auch angeboten wird als Übungsplattform,
dass du irgendwie vorgefertigte Notebooks eben hast,
wo du eben halt so ein bisschen erzählerische Erklärungen hast
und dann Codebeispiele und dann halt auch das Zeug ausführen kannst,
die Ergebnisse legen und dann halt drinnen rumeditieren,
um so ein bisschen mit dem Code zu spielen.
Ich bin mal gespannt, weil ich mich jetzt durch ein paar von den Sachen durcharbeite, wie mir das didaktisch als jemand, der auf der Konsumentenseite davon ist, gefällt
Weil ich gleichzeitig mich selber dann eher ertappe von, wenn ich das schon so vorgesetzt kriege, ist irgendwie die Hürde
Oder es gibt ein gewisses Risiko, dass ich schneller durchgehe, als ich es tatsächlich verstehen und konsumieren kann
Weil es dir vorgaukelt, du hast jetzt auf Play gedrückt und jetzt kam das Ergebnis raus, aha, okay, weiter
Da ist sozusagen
vom E-Learning-Faktor
habe ich das Gefühl, ich muss mich ja eigentlich
noch viel stärker mit dem Zeug auseinandersetzen
und jetzt muss ich aber noch weniger machen
Also ist da so ein Gap von
was hat mein Hirn noch an Chancen
es zu verstehen, bin ich gespannt darauf
Ja, es ist immer blöd, wenn man es
nicht selber ausprobiert, dann ist es schnell wieder weg
Ja, eben, also wenn man die Zeilen einfach nur
nacheinander, viele
Tutorials oder Videos, die man so sieht
bestehen daraus, dass jemand dann halt so eine Zeile nach der anderen ausführt
das hilft einem natürlich nicht so richtig, also aber
was toll ist und was man machen kann
ist ja selber dann halt irgendwann mal so damit rumzuspielen
und halt zu gucken, okay, was ist
denn da jetzt wirklich drin und das kann man halt
auch einfach... Ich hatte mal so am Anfang ja
diese Tutorial-Reihe, der erwähnt
NumPy for Grandmas und Pandas for Grandpas
der benutzt auch Google Colab
was ja auch im Prinzip das Notebook ist
und er hat
jedes Mal nach jedem Kapitel
Übungen eingestellt, die ziemlich cool sind
wo man, weiß ich nicht, die
anwendung direkt praktisch an so Aufgaben üben kann und wenn man die halt selber versucht, dann stellt man halt fest, ob man das kann. Also meistens kann man es dann nicht, aber das ist ja nicht so schlimm, weil er hat ja die Lösung dann hinterher gezeigt und aber durch das Ausprobieren bekommt man halt genau das Gefühl dafür, wann, wie, wo, was man vielleicht filtern, nutzen und so kann und auch halt mit dem Notebook und ich glaube, das ist so die einzige Methode, wie man tatsächlich dann versteht, was dann da passiert und was man da machen möchte.
und mindestens ist es natürlich so, dass man
auf jeden Fall erstmal eine lauffähige Umgebung hat.
Also, dass man dort erstmal was hat,
wo man sagt, okay, ich kann
anfangen mit, also hier gibt es Code,
der sich selber beweist, dass er erstmal tut.
Das heißt, ich habe nicht das Problem, wenn ich dann
irgendwie das Zeug aufbaue
und
dann noch nicht so ganz weiß, ob meine Umgebung
jetzt tatsächlich irgendwie clean ist
und warum kommt jetzt nicht das raus, was
rauskommen soll, warum wirft man mir irgendwelche komischen Fehler,
bin ich schuld oder war die Umgebung schuld?
und das ist natürlich schön von einem definierten Zustand aus loszulaufen.
Zumal ich auch eigentlich, eigentlich würde ich halt sagen, mir liegt das total,
Sachen halt erstmal Ende-Ende zu begreifen, also wirklich mit, wo fängt es hier an,
was sind die kleinen Bauteile, aus denen sich das zusammensetzt und wie löse ich jetzt ein Problem
einmal von vorne bis hinten damit durch, das taugt mir total,
aber trotzdem triggert es mich an so ein paar anderen Punkten.
Ja, also
genau, also ich würde sagen, kann man sich mal
angucken,
ist ganz nett, ja,
genau, aber genau, eigentlich ein ganz
guter Einstieg in dieses Machine Learning Ding.
Ja, genau, Machine Learning. Ich würde sagen,
dieses PyTorch Buch, was Jeremy Howard geschrieben hat,
das kann man sich auf jeden Fall auch
Wie heißt nochmal dieser Rapper um PyTorch, von dem
du am Anfang sprichst? Fast.ai
Fast.ai, okay.
Könnte man jetzt eigentlich also direkt in
Colab, also das kann man auf seinem Telefon ausprobieren,
direkt Python ausführen im Browser und live
und funktioniert einfach.
Und dann kann man es importieren.
Ich glaube, die Sachen sind alle dabei und los geht's, oder?
Ja.
Naja, ich weiß jetzt nicht, ob ich das
auf dem Telefon machen wollte, aber gut.
Ja. Wobei die Telefone,
also ich war ja von dem
Machine Learning Thema angetriggert,
weil ich
mich jetzt mal angefangen habe, ein bisschen umzugucken, was da
so an Hardware auf dem
Markt eigentlich rumfliegt und in den Libraries
habe ich zumindest auch gesehen, tatsächlich, dass
Mobil ist ja definitiv halt
interessant, weil du hast halt
inzwischen da überall nochmal irgendwelche Chips drin, die
Machine Learning Tasks
halt unterstützen, also ich meine, guck dir den
bei Apple die ganze
Reihe, da ist das ja irgendwie völlig klar
aber auch die Androids haben da
ja schon Sachen drin
das ist halt, weil es ist ja
für mich vom
Verständnis jetzt mit dem, wie ich reingeputzelt
bin über die letzten zwei Wochen ist
vor allem
dass es halt ein Trade-off ist, dass du mit weniger Strom mehr Punch kriegst.
Also die Verhältnisse, wenn du deine Algorithmen oder deine Pipelines halt richtig aufziehst,
speziell nachher für die Inferenz, müssen nachher ein bisschen in die Themen, glaube ich,
die Stichworte, glaube ich, sortieren und ich habe auch noch welche, wo ich Fragezeichen im Kopf habe.
Also wenn ich tatsächlich für den Benutzer etwas rechnen will,
um für ihn ein Ergebnis zu erzeugen
dann ist da wohl typischerweise
ein Power Factor von 40 drin
was ich an Geschwindigkeit rausholen kann im Vergleich zu wenn ich es
auf einer normalen CPU rechne und gerade
wenn ich halt ein stromlimitiertes Gerät habe
wie ein Telefon, dann ist Faktor 40
halt schon ein massiver Unterschied
alle beschweren sich, dass sie gerade über den Tag kommen
wenn ich das halt dann mal 40 mache
ist der Tag halt schon früh um 8 vorbei
insofern
das ist so
das erste Verständnis von
warum fangen wir eigentlich da an
an dieser Ebene drauf rein zu hauen
und
das ist halt auch wenn jetzt einige
CPUs
natürlich immer mehr Instructions kriegen
die bestimmte von den Operationen
die es da braucht, diese ganzen Vektor-Operationen
in Hardware abbilden
die fallen einem auch gerne mal auf den Fuß
also mir ist dann letztens auch aufgefallen, dass
einige von den etwas älteren
Libraries, die sich im
KI
artigen Bereich bewegen, also
Tesseract für
OCA, also Schrifterkennung, Texterkennung
die haben halt
zum Beispiel jetzt Unterstützung für diese
Vector Instructions von Intel
und das fällt einem auf die Füße, weil du auf einem
Multicore-System mit diesen großen Instructions von den Vektoren,
da halt gerne mal die Pipeline für drei, vier Kerne auf einen Schlag mal für
40, 50 Takte stilllegen kannst.
Und ja, das durch eine so eine Vektor-Operation erledigen zu lassen,
ist in Summe schneller als durch viele kleine, aber nichtsdestotrotz
hat das so Auswirkungen auf die Responsivität des Systems, weil das plötzlich, also
das Ding frisst Strom, dann geht dir der Turbo-Boost verloren und so Auswirkungen,
die, wenn du das dann auf einer virtuellen Maschine machst,
dann müssen halt gegebenenfalls noch drei virtuelle
Maschinen nebenan auch noch die Luft anhalten,
weil, boah, das ist aber eine dicke Instruction,
die kann ich jetzt aber nicht so auf einmal
rechnen. Und da
merke ich, okay, ja, das macht Sinn,
da nochmal über spezialisierte Hardware nachzudenken
und Algorithmen, die sich genau darauf abbilden
lassen.
Ja, ja, ja, dieses Hardware-Thema
ist natürlich total interessant. Ich meine, im Grunde
hat man da nur
bei einer speziellen Art von
Machine Learning-Modellen
irgendwie diesen Bedarf, halt bei
neuronalen Netzen,
bei vielen
anderen Sachen, also wenn man jetzt irgendwie,
weiß ich nicht, lineare Modelle macht oder
Superfactor-Maschinen oder so, da hilft einem das alles nicht so richtig.
Aber
eben bei
neuronalen Netzen halt schon, also alles, was
irgendwie mit Matrizenmultiplikation
irgendwie darauf dann
letztlich irgendwie basiert,
finde ich das sowieso auch interessant, wie sich jetzt so
die Hardware im Grunde so
über die Jahrzehnte so in der Mathematik
hochhangelt. Also wenn man jetzt sozusagen
sagt,
ein Skalar ist irgendwie so ein Tensor,
Nullterstufe oder sowas, und dann hat man halt irgendwie
einen Vektor und dann
irgendwie eine Matrix
und dann irgendwie
im allgemeinen Fall
Tensoren oder
Arrays mit N-Dimensionen.
Was ist der Unterschied
eines Arrays mit N?
Also was ist der Unterschied eines Tensors mit einer Matrix?
Das ist genau
eigentlich eher, Matrix ist zweidimensional,
Tensor ist quasi n-dimensional,
wobei das halt in unterschiedlichen Communities
auch unterschiedlich genannt wird.
Wenn ich dann sowas sage, dann sagen
die Leute, die aus der Mathematik kommen,
das ist doch Quatsch, dann die Leute, die aus der Physik kommen,
sagen so, nee, Moment, Tensor, das ist für uns was ganz anderes.
Ja, da musst du jetzt nochmal genau sagen,
was denn Tensor für dich ist.
Also das Konzept
sozusagen ist eigentlich quasi, du hast einen Skalar,
das ist halt irgendwie sozusagen ein Ding,
irgendwie eine Zahl.
Die nächste Stufe wäre für mich jetzt halt irgendwie ein Vektor.
Eine Richtung in einem Raum.
Ja, das ist dann schon eine Interpretation, was das dann nun ist, aber das einfach nur so als Struktur.
Das nächste wäre halt eine Matrix.
Also ein Skalar ist ja tatsächlich erstmal bloß ein Wert, der für sich steht.
Der ist dimensionslos.
Und ein Vektor kann ja n Dimensionen haben.
und es ist ein Punkt in einem
n-dimensionalen Raum.
Genau, aber da sieht man schon, dass das mit den
Dimensionen nicht so ganz hinkommt, weil klar, natürlich hat er
n Dimensionen, aber tatsächlich würde ich jetzt sagen,
der hat halt irgendwie, ist halt
eine Liste von Zahlen, hat halt
als Struktur eine Achse.
Vielleicht einfach mal ein anderes Wort nehmen.
Ich kann, ja die Frage ist
von welchem Ende komme ich halt erstmal, aber
ich bilde ja mit einem Vektor
einen Punkt in einem
n-dimensionalen Raum ab und dafür brauche ich
eine Liste, weil ich nämlich halt
und Jochen unterhalten sich über die Programmiersprache Python
wo man dann halt bestimmte Dinge rechnen kann
Ja, aber genau, das wäre halt für mich
die nächste Stufe sozusagen, dass du dann zwei Achsen
hast, so in zwei unterschiedliche
Richtungen und das nächste wären dann halt drei
das hast du dann halt bei Bildern, da hast du dann halt
nicht nur, also du kannst es ja auch schon
in der Matrix als Modell
für ein Bild nehmen, wenn du jetzt nur
schwarz und weiß hättest oder nur irgendwie
einen Wert für, weiß ich nicht, die Helligkeit
oder so, aber wenn du jetzt Farben
hast, dann hast du schon Rot, Grün, Blau
das kannst du jetzt in eine Matrixzelle
ja schon nicht mehr so richtig reinpacken. Und was man dann
macht, ist halt, dann geht man halt noch
eine Achse in die nächste Richtung
sozusagen. Und dann hast du halt sozusagen
eine Matrix pro
Farbkanal sozusagen.
Das kannst du ja abbilden sozusagen über eine Matrix
von Vektoren oder über eine
3D-Dimension statt einem Quadrat
über einen Würfel. Ja, genau.
Mit dem Würfel darstellen, glaube ich, das wird schwierig, weil
was ist dann die vierte Dimension und die fünfte
und so? Ja, das geht immer weiter.
Für Masse halt ein Hyperwürfel.
Genau. Also das
Tatsächlich, Bilder sind halt im Rechner, also für Machine Learning-Geschichten sind halt einzelne Bilder, sind halt sozusagen Arrays mit drei Achsen, so einer für halt Höhe, Breite.
Also wenn man die so nebeneinander macht, dann hast du da drei Matrizen nebeneinander und dann hast du hinterher Reihen von Matrizen nebeneinander.
Ja, aber die legt man übereinander und das spielt auch tatsächlich eine Rolle, dass das halt irgendwie nicht einfach getrennte Dinger sind, sondern dass es halt ein Array ist mit drei Achsen und nicht drei Matrizen.
Und es ist so, tatsächlich ist es eher sogar so, dass man jetzt ein Trainingsset als ein Array mit vier Achsen begreift, nämlich du hast dann halt auch noch deine Trainingsbeispiele.
Die Labels.
Die Labels sind getrennt davon, aber du hast halt sozusagen mehrere Trainingsbeispiele.
und
Puppe, dann
das heißt ein bisschen visualisierbarer.
Ja, kann man auch.
Auf jeden Fall. Aber genau.
Jedenfalls, das wird dann halt immer
von der
Struktur her schwieriger.
Und was ich eigentlich nur am Anfang sagen wollte,
was ich interessant finde, ist, dass jetzt sozusagen die Hardware
halt diesen Prozess mitmacht.
Nämlich halt von
irgendwie, keine Ahnung,
Vektorrechnern, wo man halt eine
Instruktion hat, die dann nicht nur auf einem
mit einem Skalar quasi rechnet.
Das ist der Aberkurs, der dann hin und her schiebt.
Ja, sondern wo man
die halt auf vielen
Datendingern dann halt ausführt,
sozusagen diese Sindiergeschichten oder Vektorrechner halt.
Und jetzt
haben wir halt Tensor Cores in den
Grafikkarten und den GPUs
und da ist halt sozusagen
die rechnen dann halt nicht mit Vektoren,
sondern die rechnen halt direkt mit Matrizen.
Also klein, so 4x4
Matrizen, aber immerhin.
Die machen halt dann in einem Takt schon
Multiplikation von zwei 4x4-Matrizen,
wo du normalerweise
viel, viel mehr Takte brauchst, wenn du das halt
irgendwie dann halt in Vektor-Operationen
machst oder halt
in der CPU als Skalar.
Und ja, das ist eigentlich ganz faszinierend
zu sehen, dass das jetzt so gerade mit der Zeit passiert.
Das ist auch der Hauptgrund dann, warum
die Grafik-Hardware
so gerne dafür benutzt wird, weil halt
die Dimensionalität bei Grafik-Operationen
schon so hoch gewesen sein muss?
Ja, weil halt die
Geschichten, auf die das optimiert ist, die mappen halt super
auf die Operationen, die man halt für
Machine Learning braucht. Also diese
ganzen Matrix-Multiplikationen
beziehungsweise halt diese Convolution-Operationen,
die man für diese Convolutional
Neural Nets halt braucht, die
sind halt damit super umzusetzen. Die brauchen
halt auch Spiele und so. Die machen ja auch im Grunde
solche Sachen.
Jetzt musst du vielleicht nochmal für all die Hörer erklären, was ein Convolutional
Neural Network ist. Vielleicht einmal ganz kurz.
Da hatten wir doch schon mal eine Episode zu, da war das nicht die Folge 8.
Ehrlich gesagt, ich weiß nicht, ob ich das so
kann ich jetzt aus dem Stehgreif auch nicht. Also im Grunde, das ist halt eine spezielle Art von
neuronalen Netz, wo halt
zwischen den verschiedenen Layern, zwischen den Ebenen irgendwelche Dinge passieren.
Das eignet sich halt vor allen Dingen, also es ist nicht nur Bildverarbeitung, also man kann das auch
eindimensional dann halt für Audio machen oder für halt Texte, aber
Es ist halt eine Operation, man kann sich das, muss man sich eigentlich auch mal im Bild so angucken.
Ich glaube, das kann man nicht so wirklich gut erklären.
Kriege ich irgendwie nicht so richtig hin.
Aber genau, es gibt auch noch andere Arten von Netzen,
die jetzt gerade eine große Rolle spielen mit Transformer, ist zum Beispiel total heiß gerade.
Und ja, das funktioniert, es gibt so unterschiedliche Architekturen, TPUs und so, TensorFlow.
Kurs. Und das
einzig Blöde ist jetzt, dass außerhalb von
das eigentliche, was halt
wirklich doof ist, dass halt Nvidia da so ein Monopol
auf den ganzen Kram hat. Das ist richtig
ätzend. Das macht das mit der Hardware auch ziemlich
schwierig, finde ich, irgendwie. Und gut,
ich meine, es gibt noch Google und so, die mit ihren TPUs
dann auch mal eine eigene Geschichte machen, aber da kommt man ja auch nicht
so richtig ran. So einen Laden kaufen kann man ja auch nicht.
Und
tja, das ist
halt, das macht das Ganze etwas unschön.
Alles andere ist super toll, aber das ist
diese ganzen Geschichten sind etwas
etwas fies und natürlich ist es dann auch schwierig,
die Dinger zu betreiben, weil wenn man jetzt zu Nvidia geht und sagt,
also ich habe da so ein Rechenzentrum und da würde ich
jetzt gerne irgendwie Machine Learning
Server irgendwie
mir hinstellen oder so, dann sagen die, ja gern,
klar, super, hier, nimm doch mal die,
weiß ich nicht, was haben wir da,
A100 Karten oder so,
aber die kosten halt ein Arm und ein Bein.
Wobei das
finde ich, also ob die ein Arm und ein Bein kosten,
kommt es ein bisschen darauf an, du hast halt das Thema,
du kannst nicht unter einer gewissen Mindestgröße
einsteigen. Und was mir bei
Nvidia mit dem Monopol tatsächlich aufgefallen ist,
die
segmentieren sich den Markt zurecht.
Die haben sehr stark
angefangen über Lizenzverträge zu knebeln.
Also speziell
mit dem Thema, dass
die meisten Puppel-Grafikkarten
können genau den Kram, den man da
braucht. Die haben inzwischen auch ausreichend RAM.
Es ist immer noch die Frage, nach welchen Modellgrößen
man zu rechnen kann. Und Nvidia will ja
nun mal die Gamerszene bedienen
und verbietet dir aber
halt für die normalen
Gamer-Grafikkarten. Sie verbieten es
die Lizenz technisch einfach, sie dafür einzusetzen.
Sie sagen, auf diesen Karten
darfst du kein Machine Learning machen.
So, und dann
nimmst du bitte unsere,
die A100 oder halt auch ein paar kleinere oder irgendwas
und es ist schon krass, was die auf dem Gebrauchtmarkt
teilweise ziehen. Also es gibt jetzt irgendwie
bei Azure
gibt es die K80 unter anderem.
Die ist jetzt schon ganz schön in die Jahre gekommen,
glaube ich. Aber die kostet
das Stück immer noch 2500 Mark
als eine 1.000 Euro auf dem
freien Markt.
Und wenn du mit einer A100 einsteigen willst,
bist du halt bei so 8.000, 9.000 Euro
etwa dabei netto.
Und dann muss man aber im Hintergrund wissen, naja, das ist halt
schon genau für das High-End-Data-Center-Zeug
gedacht. Das heißt, eine davon kannst
du halt im Prinzip auch in sieben Teile
zerteilen, in virtuelle Maschinen reinpacken,
kannst die irgendwie in unterschiedliche
Zuschnitte von irgendwie unterschiedlichen RAM und was du denen an Ressourcen zuweist Also da ist dann schon auch Musik drin im Handling Und wenn du dir das dann durchrechnest dann merkst du okay das lohnt sich wirtschaftlich auch
Aber es braucht halt diese Mindestgröße.
Und klar, Nvidia verkauft ja halt auch, es gibt so ein A100, irgendwie vier Höheneinheiten, glaube ich,
Riesenchassis mit acht von den Stück drin oder so.
Mit den tollen, irgendwie auch noch speziellen Bussystemen, die die Karten untereinander verbinden.
da kostet halt das Stück nur 250.000 Euro
und das ist natürlich
für mal anfangen und irgendwie loslegen
und gucken, wie experimentiere ich jetzt eigentlich damit
und du brauchst halt, ich habe noch nicht verstanden
welche dieser Hardware, welche
Operationen zum Beispiel in vergleichbarem
Umfang, vergleichbarem Takt,
welche Modellgröße, wie viel RAM
und haben die nochmal
inzwischen auch 8 Generationen glaube ich
in Summe am Start, was die
tatsächlich können, welche Befehlssätze
das ist alles relativ unübersichtlich
und da findet man im Netz auch für die ganzen klassischen Frameworks, die man jetzt so hat, wie PyTorch etc. Anleitung,
wie man die auf den Teilen dann betreibt.
Das heißt, das ist so für mich gerade der Vektor mal zu gucken, okay, so ein Stück Hardware mal zu kriegen,
wo man das Zeug tatsächlich sehen kann von, bringt mir das jetzt wirklich was in der Beschleunigung
oder ist das alles bloß heiße Luft.
Das ist so ein Ende.
Ansonsten würde ich ja gerne immer lieber noch ein bisschen AMD kaufen
und da macht sich aber auch wieder Nvidia
als Platzhirsch bemerkbar, dass viele von den
Frameworks dann mit den AMD-Karten
wieder nichts anfangen können.
Das ist so ein bisschen, ja.
Ja, das ist ganz blöd.
Nicht, dass ich wüsste, dass mit AMD da irgendwas
zu machen wäre zur Zeit.
Das kann man ja auch nicht kaufen können.
Ja, okay.
Zum einen muss die Playstation mal noch irgendwie
gefertigt werden, die ziehen da ja
Kapazität ab und zum anderen die ganzen
Bitcoin-Miner,
die scheinen das Zeug schon direkt an der Fabrik
abzuzweigen. Ich habe ein paar Lieferanten
gesprochen, die eigentlich gern AMD anbieten würden
sie meinen, sie haben noch nicht einmal
irgendeine der Karten jemals in echt gesehen
Oh, okay, ja gut
Ja, ja, das ist natürlich auch
so ein Problem, die Verfügbarkeit
das ist auch teilweise bei den Nvidia-Karten
auch immer so ein Problem
wirklich zu bekommen
ist manchmal gar nicht so einfach
Ja, also genau diese
Marktskipentierungsgeschichte ist halt das, was man dann
Das ist halt im Grunde die Art,
wenn man jetzt ein Monopol hat, wie man das
zu Geld macht.
IBM hat das früher ja dann auch schon
gemacht. Man macht dann halt Functional Pricing.
Man macht den Preis
halt so, dass es zu dem Markt,
das man bedienen möchte, passt. Im Grunde können die
ganzen Dinger mehr oder weniger das Gleiche.
Die RTX-Karten,
die können
im Grunde fast das, also die Gamer-Karten können
halt im Grunde das Gleiche, was halt
auch die
großen Server-Karten
können. Sie sind halt in bestimmten Operationen
ein bisschen künstlich langsamer gemacht, damit
man sie halt jetzt nicht so verwenden kann.
Übrigens, ich weiß auch nicht, ob das
irgendwie überhaupt geht. Also in den USA geht's
vielleicht, aber ob man jetzt in Deutschland
jemandem, der
irgendwas abgekauft hat, dann hinterher
vermieten kann, damit irgendwas zu tun. Ich glaube, das
geht überhaupt gar nicht. Also auch in die Trends oder
sowas, schwierig wahrscheinlich.
Insofern, ja,
also vielleicht kann man
das einfach trotzdem machen,
auf der anderen Seite ist es natürlich auch so, es ist
nicht so einfach.
Ja, es ist halt für eine Geschäftsbeziehung
keine Grundlage, also
was machst du denn? Damit machst du dich deinem Hersteller
gegenüber nackig und der sagt
so, jetzt hast du da dein Produkt aufgebaut und
wir sollen dich beliefern, wäre aber schade
wenn du nicht mehr beliefert wirst.
Ja, gut, klar, natürlich.
Das ist halt die Frage, ob man das
machen kann.
Das ist natürlich so ein Punkt.
Ja, und ein weiterer Punkt ist halt,
Es ist schwer, die Dinger zu betreiben nach wie vor.
Die Leistung steigt zwar auch immer noch, aber auch die Leistungsaufnahme
steigt halt so einfach an Strom.
Bei den RTX 3090 Karten,
die aktuellsten, da musst du halt dann
die größten Netzteile, das funktioniert nicht mehr,
du brauchst dann nochmal externen Strom da dran und wenn du dann mehrere in ein Gehäuse steckst,
und Jochen unterhalten sich über die Programmiersprache Python
gekauft, beziehungsweise wenn du es dir halt aus irgendeinem
Cloud-Ding rausziehst, der Unterschied
dort ist halt, naja, du kannst halt hinklicken,
dann kostet es zwar auch einen Arm und ein Bein, aber du kannst
es halt auch jederzeit wieder abschießen und du
musst nicht fünf Monate lang
ein Projekt machen, dir zu überlegen,
was kaufe ich jetzt und wie stecke ich es zusammen, etc.
Insofern finde ich das schon legitim.
Aber ich merke halt, also
man darf das
nicht unterschätzen, was Flexibilität
und das ist ja eine
betriebswirtschaftliche
Grund,
Erkenntnis
Flexibilität oder Optionen
kosten Geld.
Die kosten immer irgendwas und
wenn man Investitionskosten,
und alle wollen immer alles auf
möglichst OPEX umlegen heutzutage und
wenig kapitalintensiv irgendwie vorfinanzieren,
aber es kann halt manchmal passieren,
dass wenn du deine Lebensdauer von 12 bis 14,
äh von 12, 36
oder 60 Monaten anguckst,
dann ist das Ding in Summe 3 bis 4,
5 mal so teuer, als wenn du es dann irgendwann mal
selber in die Hand genommen hättest.
Da muss man sich dann fragen, ist das für eine Basislast, ist das halt eigentlich dann irgendwann nicht mehr gerechtfertigt?
Also ich meine, die A100 fand ich sogar relativ zahm in der Hinsicht noch.
Also ich gucke gerade nochmal in das Specsheet rein und wenn du halt eine PCIe-Karte von der A100 ziehst
und die hat, was hat die an RAM drin, 40 Gig und die zieht halt 250 Watt.
Das ist halt schon noch überschaubar.
Also da habe ich bei den Netzleinern,
was wir so typischerweise Zeug verbauen,
ich würde ja in so einer Hinsicht halt auch
weniger gucken, irgendwie eine Karre
möglichst voll zu machen, sondern
mehr zuzusehen, dass man halt irgendwie dann
in seinem Pool vier, fünf,
sechs Maschinen damit bestückt,
weil man es ja auch irgendwie verteilen möchte,
wenn mal was kaputt geht, etc.
Da bin ich halt auch noch gespannt,
weil dann halt
die Kundenseite
für, ich rechne Modelle, um dir irgendwie Vorschläge oder Klassifizierung oder irgendwie so ein Kram zu rechnen.
Das ist ja immer sehr kurz von den Transaktionen her.
Da willst du ja innerhalb von einer halben Sekunde deine Antwort haben und dann ist es vorbei.
Wenn du aber tatsächlich so ein Ding hast mit, ich rechne hier mein Training,
da habe ich noch nicht herausgefunden, was dann typische Trainingsdauern sind.
aber wenn das halt mal Stunden dauert
und die ganze
Virtualisierung das noch nicht hergibt, so ein Zeug
transparent halt dann zwischen A und B zu verschieben
dann muss ich halt
mittendrin operativ eingreifen können
zu sagen, du, ne jetzt
die eine Grafik da drüben
die fliegt jetzt mal weg
Ja, also es kommt halt darauf an, was
man damit macht, also die Leute, die das halt
also die ganze Kegel-Community
die da so kompetitives Machine Learning machen
die versuchen sich alle
möglichst viele Karten in einen Rechner zu basteln
halt irgendwie und das ist natürlich irgendwie
auch, das ist nicht so einfach,
aber weil du damit
halt die Trainingszeiten runterkriegst.
Wenn du jetzt viele Karten, also wenn du mehrere Karten
in unterschiedlichen Rechnern hast, das hilft dir nicht so viel.
Also insofern,
aber
das hängt da,
also das Ende, an dem ich noch dran bin,
ist ein Gefühl dafür zu kriegen,
dann welche Modellgrößen sich dann in welcher
Geschwindigkeit aufhäufen, weil
da wir über Mehrdimensionalität reden,
ist es natürlich immer so, irgendwann kommt der Punkt,
wo jede neue Dimension
das ganze Ding natürlich
dir schnell weglaufen lässt und wenn du also
keine Ahnung, dein Modell zu trainieren
schon 20 Gig frisst und du kriegst noch eine Dimension
rein, dann kann ich mir gut vorstellen, bist du plötzlich
bei 40 und damit bist du schon beim
oberen Ende, was eine so eine Karte halt kann.
Ja, kommt halt drauf an, was man macht. Also wenn man
halt irgendwie so
so klassische
Bild,
was ImageNet mäßiges macht, halt
Klassifikation von Bildern oder so und da Modelle trainiert.
Da braucht man nicht so viel
Hauptspeicher, aber wenn man jetzt Transformer-Geschichten macht,
also Natural Language
Processing auf irrsinnig
großen Mengen Text oder so,
da braucht man eigentlich so viel Hauptspeicher, wie man kriegen kann
und da sind halt auch 24 Gig oder so,
das ist halt so das, glaube ich, maximale,
was man im Computer-Summer-Bereich kriegt, halt schnell
vorbei und dann...
Kann man auch
in seinen Gaming-PC einbauen? Ich frage nur
aus Interesse. Ja, ja, kann man
machen, aber
Die A hat glaube ich, die hat keine
Grafik-Outputs, glaube ich. Ich weiß nicht, ob die
tatsächlich was hilft.
Also für die Enthusiasten dann in der Szene.
Ne, ne, also das sind ja
viele von den Karten
benutzt man ja auch so, benutzen Spieler ja auch
weiß ich jetzt nicht genau
welche davon, aber
das sind also die
günstigen
Dinger, das sind halt alles eigentlich
Karten für den
Gamermarkt.
Genau. Aber kann der, wie ist das auch mit diesen externen Grafikkarten dann, schließe ich die Displays an die externen Grafikkarten an oder schleifen die das Rechenergebnis wieder zurück und ich schicke das irgendwie über einen anderen Output raus?
Ich meine, man schließt die direkt an, ja.
Ja, das ja auch, weil es gibt auch NVIDIA hat an der Stelle halt von ihren, von den Sachen, die haben ja dann auch zum Beispiel noch Spezialkarten, siehe Marktsegmentierung, die so für AI-Unterstützung, Maschinenunterstützung zum Beispiel für Architekten ist und das sind dann Karten, die haben halt entsprechend auch wieder ein Output dran und dann gibt es halt noch, da gibt es ja noch dann wieder die Karten, die für Desktop-Sozialisierung gemacht sind, da ich auch gerade einen Kollegen, der da an dem Ende bei sich rumarbeitet, also das ist nicht bei uns eine Firma, sondern
woanders, die halt jetzt dank Corona und Homeoffice haben sich anscheinend viele Unternehmen
entschieden, die Windows-Desktops ihrer User, damit die Daten nicht bei den Usern zu Hause
liegen, alles über so Remote-Desktop zu machen. Und die musst du aber tatsächlich auch durch
eine Acceleration durchschicken. Naja, weil auch das Windows auf der VM rechnet dir irgendwelche
Transparenzen aus und das willst du nicht mehr in CPU machen.
und da haben sie dann auch wieder
Spezialkarten für, die halt genau dafür
wiederum getrimmt sind und
ja
naja, also
gut, ich kenne es halt nur von den Leuten,
die das halt, ja,
die das jetzt nicht, also
mit den ganzen Enthusiasten sozusagen, die nehmen
alle die Gamer-Karten und basteln halt
selber, dann gut,
wenn man jetzt ein Data Center machen will, dann
ja, nimmt man vielleicht halt
einfach und kauft das Zeug halt zehnmal so teuer.
Die sind dann auch
in den Nernchenbereich noch ein bisschen schneller,
aber da kommt es halt darauf an, was man damit machen möchte.
Für Transformer braucht man halt viel Hauptspeicher,
für viele andere kleinere Sachen
reichen halt auch die
mit weniger Hauptspeicher.
Es ist sowieso so, dass man ja im Grunde braucht man
diese ganze Power eigentlich nur dann, wenn man
tatsächlich größere
Trainingsdatenmengen halt hat
und irgendwie Modelle
quasi von Grund auf trainiert.
Also wenn man jetzt irgendwie
und das würde ich jetzt, ist halt die Frage, was das für ein Anwendungsfall ist, aber wenn man jetzt den Anwendungsfall hat,
wo ich denke, der kommt ja in der Praxis sehr, sehr häufig vor,
man hat im Grunde, man nimmt irgendwie fertig trainierte Modelle von irgendwo her
und feintunt die jetzt auf das Problem, das man hat.
Also man hat halt irgendwie, keine Ahnung, möchte irgendein Produkt für was,
irgendwie, das kriegt halt Bilder und soll dann irgendwas zu den Bildern sagen,
die irgendwie klassifizieren oder da halt irgendwie, weiß ich nicht, irgendwas drauf erkennen oder so,
und Jochen unterhalten sich über die Programmiersprache Python
also schon so paar hundert,
jenseits von 100 Gigabyte irgendwie Bilder
und dann halt
von Grund auf das Trainieren, dann
braucht man eigentlich alles, was man an
Power kriegen kann, weil dann kann es sein,
dass ein Trainingslauf halt einmal eine Woche läuft
und ob der eine Woche läuft oder eine halbe Woche
läuft, macht dann einen großen Unterschied, weil dann kann
man halt unter Umständen doppelt so schnell iterieren
und ja, also
tja,
ich denke mal, die allermeisten Leute
brauchen das gar nicht so wirklich, die Power,
ehrlich gesagt.
Aber wir hätten gerne
alle so ein Machine Learning Ding dabei, wenn wir
zum Beispiel irgendwelche Geräte bewegen
oder sowas, die alles dann direkt selber
wahrnehmen können.
Genau, aber das ist ja immer sozusagen das Ende von
die benutzen die Modelle ja nur und
schärfen sie vielleicht noch ein bisschen nach,
aber die rechnen ja die Modelle nicht.
Nee, nicht von Grund auf, genau.
Wäre doch schön, wenn sich das Modell
parallel anpasst, aber naja, wir träumen
hier ein bisschen. Doch, kann man ja tun,
aber die unteren Ebenen, also
sozusagen, du trainierst halt bei diesem Feintuning, was du da machst, ist halt, du passt halt nur die oberen, also sozusagen nur einen Teil der Layer an, also du befrierst halt die Gewichte für den Großteil deines Modells ein und passt halt nur noch Details davon an.
Wenn jetzt irgendwas über ImageNet gelaufen ist,
was halt jetzt
ein Modell, was jetzt super gelernt hat,
wie man Haare erkennt oder Augen
oder sowas, das macht
eigentlich keinen großen Sinn, wenn du jetzt
eine spezielle Art von Tier irgendwie
erkennen willst auf Bildern,
das nochmal alles von Grund auf neu zu machen,
zu trainieren, wie man Fälle erkennt oder so,
weil das funktioniert schon super. Du willst
halt nur, dass deine Klasse von Tier jetzt da noch
gut erkannt wird, aber dafür musst du eigentlich nur
ein paar Layer irgendwie...
bei Live-Videodaten oder sowas, ist das vielleicht
noch anders?
Natürlich, also es kommt halt auch, ich meine Video ist
sowieso ein Ding, wo es noch nicht so viel gibt.
Das wäre, wenn, also
klar, wenn du jetzt eine neue Geschichte machst,
die sonst noch keiner gemacht hat, dann hast du natürlich genau,
oder wenn du auch neue Modelle ausprobieren willst,
wenn du die Architektur änderst und sagst,
mir ist jetzt eingefallen, wie man das jetzt,
wie man eine ganz neue, tolle Art von
Maschinenmodell hat, bauen kann,
die alles viel besser macht und
da musst du halt von Grund auf neu trainieren, weil
ja, du willst ja demonstrieren, dass es besser ist.
dann, ja, also wenn du Maschinenleitung und Forschung machst und so, klar, dann musst du, brauchst du, aber auch da brauchst du unter Umständen keine so wahnsinnig, wahnsinnig große Rechenleistung für, du brauchst die, ja, wenn du Forschung im Bereich von Transformer machen willst, dann brauchst du halt richtig viel Hauptspeicher und richtig viele Leistungen, aber ich meine, wer macht denn sowas, also so, also ich, die Leute, die Werbung, die Leute, die die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Werbung, die Wer
und die Modelle, die da aber gewonnen haben, gut, das ist jetzt auch schon lange her, aber das war alles total einfach, das war alles linear, das war alles so Logistic Regression-mäßig.
Ich bin mal gespannt, ich habe mich ja jetzt mal, also ich habe, um da ein bisschen tiefer auch in das Thema für mich einzusteigen, weil ich halt eigentlich immer gerne verstehen will, wie ist das handwerklich gemacht, habe ich mich in so einen Coursera-Kurs eingeschrieben und da kommen natürlich dann diese ganzen Standardteile, unter anderem dann halt auch irgendwelche Recommendation Systems
und ich wollte ja ganz kurz irgendwie den Schreibtisch abräumen und alles in die Ecke pfeffern,
als dann die Aussage war, dass ja irgendwie so die tollen positiven Beispiele die sind,
wie Netflix dir halt neue Sachen empfiehlt und Amazon.
Und ich denke mir so, ja, aber das sind doch die Beispiele für, das hilft gerade genau gar nicht.
Also ich meine, wofür brauche ich Machine Learning, damit mir meine Plattform sagt,
du hast gerade einen Schraubenzieher gekauft, ich glaube, du willst einen Schraubenzieher kaufen.
Ich habe es ja noch nie
in Funktionierend gesehen, dass da irgendwie
sinnvolles Zeug rauskam
Mich würde wirklich interessieren
wo die Teile, also wo jemand
nachgewiesen hat, dass
das was bringt
Also vielleicht bin ich auch einfach als Nerd so ein bisschen
komisch an der Stelle
Das ist ganz wichtig, Recommendation-Systeme
Das geht gerade besonders gut
Einfach die Sachen, die am häufigsten gekauft werden
die viralisieren sich dann einfach weiter
Scheint ja auch so funktionieren
Naja, also
das ist jetzt aber auch schon da ganz lange her
aber zum Beispiel Netflix hat da ja tatsächlich mal
einen Preis für ausgelobt
für eben
Leuten Videos empfehlen
und
das weiß gar nicht, wann das war, das muss
das ist jetzt auch schon über 10 Jahre her, oh mein Gott
und sie haben da
eine Million Dollar drauf
ausgesetzt und das, was die Leute
da gemacht haben, war auch sehr interessant
und
die Verbesserung in diesem
Wettbewerb von, wie war das
am Anfang oder was hat Netflix
quasi, sie haben als Baseline auch angegeben,
was sie momentan verwenden für ein Verfahren und
wie gut das ist und
das, was dann hinterher gewonnen hat,
das war schon deutlich besser. Also
das hat richtig was gebracht, aber
ehrlich gesagt, natürlich, es ist immer noch nicht
wirklich gut.
Ja, es war so mittelgut, ne?
Ja.
Gerade Netflix muss sich halt dann an der Stelle
auch gefallen lassen, ihr Katalog ist halt nicht so groß.
Also wenn ich es halt vergleiche, auch die eingeschränkte Art, wie man es häufig browsen kann,
dass du gar nicht mehr so richtig wirklich strukturiert durch die Kataloge durchkommst,
sondern immer nur noch nach irgendwelchen vorgefertigten Kategorien, die so ein bisschen merkwürdig sind
und dann irgendwie so Unterkategorien haben, die Netflix irgendwie gefallen,
dann hilft es mir ja nichts, wenn er mir
die 20 Filme, die er für mich gut findet
mal in der und mal in der und mal in der Reihenfolge anzeigt
das ist ja das, was momentan gefühlt für mich dabei rauskommt
ist, nach so einer Pandemie nach einem Jahr
Netflix ist ja gerade was Filme angeht immer ziemlich hinten dran
da hast du eh schon alles durchgeguckt
und jetzt empfehlen sie dir das, aber halt
einmal in der und in der und in der Reihenfolge
wie viel Machine Learning brauche ich dafür?
Ja, es ist auch die Frage, ob das eben
tatsächlich ein Machine Learning Problem ist oder
vielleicht doch eher ein User Interface Problem.
Ich finde das auch total schrecklich.
Ich habe auch immer das Gefühl, ich weiß nicht, auf was sie da
optimieren, aber manchmal habe ich das Gefühl, sie optimieren darauf,
dass man da möglichst lange drin rumsucht.
Also es ist ja irgendwo ein Incentive falsch gesetzt
oder irgendein KPI
geht einfach in die falsche Richtung.
Ja, sie haben eine Variable
oder irgendeine Dimension in ihrem
Ding drin, wo aus Versehen
darauf optimiert wird
und es entspricht, und das ist ja
und die
Feature Extraction
und die Technik und Jochen unterhalten sich die Programmiersprache Python
Optimierung und eben auszusehen drauf optimiert hat, dass die User möglichst lange den Katalog
browsen und möglichst wenig gucken, damit Netflix möglichst wenig
Lizenzgebühren bezahlen muss.
Vielleicht ist das eine mögliche Erklärung.
Ist das ein Phänomen?
Vielleicht haben sie sich tatsächlich auf die Nutzungsdauer pro Kunde optimiert.
Also wie lange gucken die Leute und wenn du jedes Mal 10 Minuten extra guckst
für eine Suche, gucken die Leute jetzt länger.
und die Programmiersprache Python.
angezeigt und zwar genau den, den ich gerade in dem Moment
gucken will.
Ja, das geht ja nicht.
Das verkürzt ja die Komplexität
menschlichen Daseins so
massiv.
Naja, aber vielleicht kann der Algorithmus
sich mit mir irgendwie koppeln und irgendwie einen Faktor
reinnehmen, dass er versteht, was ich gerade
möchte. Ich glaube auch nicht,
dass er durch meinen historischen Guckverhalten
sowas schon wüsste.
Aber durch vollständige Information...
Das ist ja das andere Problem.
Du kannst ja nur...
Also, wie ist es auch in den Tutorials, bei wem war es? Ich glaube, das war bei meinem aktuellen Coursera-Kurs.
Da war der Vergleich von Machine Learning hat im Prinzip zum Ziel, ungefähr das menschliche Lernverhalten, was wir im Alter von vier Jahren haben, nachzubilden.
Und das würde ich sagen, das kriege ich ziemlich gut hin.
Also, viele Leute machen ja Witze drüber, dass Machine Learning sich so anstellt wie ein kleines Kind.
ja, gibt es ja haufenweise
Memes, die immer
ist das ein Brokkoli? Nein, das ist kein
doch, das ist ein Brokkoli, was ist das?
Das ist ein Brokkoli, na gut, das ist ein Brokkoli
und
gleichzeitig
wird dem aber
eine
ominöse Fähigkeit
zugeschrieben, die weit
über das hinausgeht, also wenn man auf der einen Seite
ehrlich sagt und sagt, okay, wir versuchen
so ein biologisch inspiriertes Lernverhalten
von einem Vierjährigen und der kann ja was
und das ganze Pattern-Matching, was wir haben, und wie trainiere ich das halt an.
Das ist ja nicht so, dass das nichts kann.
Aber ich kann halt auch einen Vierjährigen nicht drauf trainieren, mich anzugucken und sich zu fragen,
wie geht es mir eigentlich? Oder was bräuchte, was würde mir jetzt als Erwachsener eigentlich gut tun?
Dafür ist ein Vierjähriger halt nicht gemacht.
Ja, ich glaube auch eher, es ist halt unklar.
unklar. Deswegen sind halt die Erwartungen teilweise vielleicht völlig daneben
und zu optimistisch, teilweise aber auch vielleicht
zu pessimistisch, dass man glaubt, da geht gar nichts. Es gibt schon sehr beeindruckende
Dinge, die man damit auch machen kann und Fortschritte, die da
passiert sind. Insofern ist es halt einfach momentan nicht klar, was da überhaupt geht und was passiert.
Das werden wir dann halt mit der Zeit irgendwann rausfinden.
Naja, ich glaube, ein wichtiger Aspekt davon ist ja die Frage,
benutzt, also das kommt jetzt aus dem ganzen Thema Komplexität,
nutze ich es, um
menschliche Kognitionsprozesse zu ersetzen
oder zu unterstützen? Also das ist ja Augmentation
über Cognitive Augmentation.
Also es gibt jetzt auch so neue tolle Kontaktlinsen, mit denen man
sowas augmentieren kann. Ja, sehr schön.
Und durch diese Augmentierung, wenn die halt Machine Learning
gestützt ist, das ist natürlich schon super cool, weil du halt
einfach Zusatzinformationen bekommst, die du vielleicht sonst nicht hast.
und das ist auf der einen Seite viel leichter, es ist ethisch auch viel einfacher zu kontrollieren,
aber natürlich hängt jedes Startup und jeder immer erstmal hin, nein, nein, das machen wir hier,
wir ersetzen das, wir lösen das Problem komplett und ich glaube, das ist halt eine massive Sackgasse.
Also ich habe so ein paar Beispiele, die man immer sieht, ist halt auch dieses Thema Krebszellen erkennen.
das ist ja gedacht als Augmentierung
das ist ja nicht dafür gedacht
dass der Arzt das nicht mehr drauf guckt
aber das ist halt gedacht, dass wenn du halt
eine gewisse Menge schon
vorverarbeitete
Zellbilder hast
auf denen bestimmte Parameter wie irgendwie
die Klumpigkeit und der Farbton
und die Schärfe von der Umrandung und
ich glaube es sind so 15, 16 Dimensionen
nach denen das dann auch bewertet
und gelabelt wird und dann kannst du mit einer
und Jochen unterhalten sich über die Programmiersprache Python
dann ist das tatsächlich, das ist Augmentation.
Das heißt, das Hirn von dem Arzt,
der das bewertet, ist weiterhin dran zu arbeiten,
wird aber entlastet, irgendwie die komplette
Bewertung zu machen, sondern kriegt halt schon mal so ein bisschen
Sparring dazu, ist aber,
er ist der, der am Steuer sitzt.
Und das ist aber was anderes, als wenn du halt
sagst, naja, das Ding läuft auf Vollautomatismus
und wenn es tief geht, dann muss halt
jemand irgendwie ein Postmortem
machen, im wahrsten Sinne des Wortes.
Ja.
Ja, es hat halt viele Möglichkeiten.
und Jochen unterhalten sich über die Programmiersprache Python
halt irgendwelche Zufallswerte generiert, aus denen er dann irgendwie
die wahrscheinlichste Wiederholung irgendwie bemerkt.
Das sind ja keine Zufallswerte.
Auch nicht alle Maschinenmodelle haben irgendwas mit Statistik zu tun, das ist auch nicht so.
Ja, aber so ein bisschen macht er es schon, oder?
Kommt auf das Modell an, es gibt sehr unterschiedliche Modelle.
Okay, dann müssen wir das vielleicht nochmal in einer anderen Folge genauer...
Ja, also der Klassiker, wenn du über die neuronalen Netze halt nachdenkst,
mit einer Backpropagation, dann ist es halt schon so, das sieht für uns aus, ja, der kriegt dann immer, der hat sein, häufig haben sie ein random initialisiertes Modell, das gibt es schon.
Und dann ist es aber so, dass das an den Gewichten rumdrehen ist halt eine deterministische Funktion.
und das ist, du hast halt, du hast ja dein gelabeltes Datenset und sagst so, hier kommt mein Input,
liebes neuronales Netz, rechne mal und dann kommt dann nachher raus, ich glaube der Output ist folgender
und dann vergleichst du das mit dem gelabelten Output, der zu diesem Beispiel gehört hat und daraus ergibt sich ein Fehler
und dann macht man da eine Bewertungsfunktion für den Fehler und er sagt, okay, damit dieses Bild oder dieser Input
und der
um 30% nachgesteuert, aber es ist halt nicht so, dass es random ist, sondern er rechnet immer aus,
wie hätte das aussehen müssen für die perfekte Lösung, da ich aber nicht nur dieses eine Bild bewerten können will,
das wäre dann ja overfitting, muss ich mich in der Anpassung ein bisschen dämpfen und jedes Bild,
was einen kleinen Fehler hat, korrigiert das Netz immer wieder ein kleines bisschen nach.
Aber das ist nicht random an der Stelle, das müsste sogar eigentlich deterministisch sein.
Ja, ja.
Und ich glaube, dass man sie random initialisiert
macht, glaube ich, ist eine Idee, dass man halt
versucht, irgendeinen Bias zu vermeiden,
dass man irgendwie an einem Extremwert
einsteigt, der das Modell halt völlig verzerrt.
Ja.
Du alles steht auf Null und dann kommt er halt nie vom Fleck.
Das ist so ein bisschen, wenn du dir an Newton
denkst, wenn du halt
eine Newton'sche Approximation probierst,
da ist es auch immer so, dass du
schon mal so grob in irgendeine Richtung werfen musst,
weil wenn du halt irgendwie völlig bei Null oder einem blöden Punkt anfängst, dann
kommst du halt nie zum Ziel.
Naja, das dauert sehr lange.
Ja, ich überlege gerade, ich weiß nicht genau, ich würde es eher allgemeiner,
auch gerade was das Lernen angeht, ich würde sagen Machine Learning oder so was,
und versucht es halt
Software hinzubekommen,
die halt mit Erfahrung besser wird.
Ich würde das tatsächlich so allgemein lassen.
Was das genau tut, kann man gar nicht so
sagen. Es gibt alles mögliche.
Also es gibt auch
das ist nicht
immer in einer bestimmten Art, sondern
es gibt die unterschiedlichsten Geschichten.
Ja, was man halt,
ich glaube an einer Stelle,
der Trick ist ja, das ist ja ein technisches Werkzeug.
Das kann was, das kann bestimmte andere Sachen nicht
und da habe ich erstmal ja null Probleme mit.
und ich glaube, wo wir in der Öffentlichkeit so ein Problem haben, ist dieses Zuschreiben,
es ist so komplex, dass man ja nur über Vereinfachungen, über Bilder darüber reden kann
und wenn die Leute aber dann mit diesen vereinfachten Bildern weiterdenken wollen,
dann führt das halt ganz schnell zu logischen Schlussfolgerungsfallen,
weil man halt auf Basis dieser Analogien nicht mehr dem technischen Kern gerecht wird.
und
ich meine, was ich spannend finde, ist erstmal, wenn man
diese Unterteilung nochmal anguckt zwischen Supervised
und Unsupervised, dann sind gerade
die Supervised-Sachen natürlich
immer interessant, weil ich kann mir
die Extremwerte nochmal angucken
und kann schauen,
also ich kann es halt evaluieren und ich kann halt
prüfen, wenn ich feststelle,
ich habe hier komische Fehler drin, die ich
so nicht beabsichtigt habe, woran liegt denn das?
Muss ich noch eine Dimension dazunehmen?
Fehlt mir bei einer Dimension irgendwas? Ist in meinen Eingangsdaten
irgendwas komisch, weshalb das Training in bestimmten Varianten halt
in die falsche Richtung läuft und kann das dann halt auch immer weiter treiben, weil das ist ja
was, das kann Machine Learning an der Stelle nicht, Machine Learning kann ja
nicht selber feststellen und sagen, du brauchst eigentlich ganz andere Eingangsdaten
für dein Problem. Das kann es dir dann nicht liefern.
Doch, doch, doch.
Naja, man kann sich schon angucken, zum Beispiel man kann sich die Kurve angucken
mit zunehmenden
also
man trägt dann halt
den Trainingserror
gegen den Testerror auf
zum Beispiel. Dann kann man sich halt
je nachdem, wie das dann aussieht,
also wenn die beiden Kurven sehr weit auseinander liegen,
also sozusagen, wenn man
wenn der Fehler auf den
Trainingsdaten gering wird,
aber auf den Testdaten nicht,
und die beiden Kurven sehr weit auseinander liegen, dann weiß man, okay, man hat zu wenig
Trainingsdaten. Oder die falschen.
oder die sind halt nicht gut verteilt.
Wenn das Ding
sich über, wenn die Kurven
anfangen sich zu überschneiden oder so, weiß man halt,
okay, ja, man
overfettet gerade zum Beispiel.
Aber das sind ja Sachen, die werden
zum Beispiel, da kommen wir in den Bereich, das ist
Augmented und das ist ein Prozess, den wir als Menschen
halt begleiten. Das ist halt
was, also dann diese Entscheidung zu treffen,
jetzt ist es so weit, dass ich das halt anders machen
muss, das kann das Modell nicht
für dich und das Modell kann dir auch nicht sagen, was
das andere ist, was es braucht.
und Jochen unterhalten sich über die Programmiersprache Python
und das ist ja nur...
Also ich weiß es nicht.
Was macht das?
Du hast ja entscheidend irgendwas gerade in der Intention,
was du gesagt hast, da versteckt sich was Interessantes.
Finde ich jetzt interessant.
Ja, also
ich weiß es nicht.
Auch, also
dass da
das Problem
würde ich auch daran, also ich meine
gerade der Medizin,
naja gut, das ist auch wieder so ein
Weitersfeld dann direkt.
Es ist ja so, dass wir
momentan ja eigentlich sehr, sehr
grobe Geschichten
machen. Also wenn man ja
so eine Diagnose und dann
was macht man jetzt, wenn man die Diagnose hat?
Das ist halt sehr, sehr
auch, was gibt man für Medikamente?
Das ist ja alles super grob.
Das ist ja überhaupt nicht angepasst auf
jemanden individuell oder so.
Nee, nee, das ist also
ja. Und
wenn jetzt, also
Also man könnte jetzt, das ist aber so angenommen, man nimmt jetzt, weiß ich nicht, irgendwie Daten, was auch immer, alle möglichen Daten, die man jetzt über einen Patienten hat und ein Modell sagt einem jetzt, okay, ich nehme jetzt nicht irgendwie zwei Tabletten von der Sorte jeden Tag oder so, morgens oder abends, keine Ahnung, sondern irgendwie wir mixen jetzt folgende Wirkstoffe in der Kombination zusammen und das muss zu den Zeiten.
das könnte ein einzelner
Arzt ja niemals machen
im Grunde in der
Granularität
ja ne, aber ich bin ja gerade
an einem, ich bin, nochmal ganz kurz
zu meinem, da würde ich gerne einknüpfen, aber
wo ich halt davor stehe ist, wenn
wir
Feature Extraction
halt haben
wo
ja durchaus teilweise
eine Qualität von Features
die eine sehr hohe kognitive Leistung
erstmal haben
deswegen geht mir dieses
Krebszellenerkennungsding nicht aus dem Weg
es geht ja nicht darum, dass
das ist ja kein Imageprocessing
was da stattfindet
sondern
ich habe ein ganz konkretes Modell gerade
die machen halt kein
Imageprocessing
sondern die haben
Feature-extrahierte Sachen, wo Menschen halt
auf so einen Fleck drauf gucken
und sagen, der hat folgende Eigenschaften
und das sind sehr, sehr kognitiv hochwertige Eigenschaften.
Also hat es eine regelmäßige Kante?
Ist es irgendwie besonders scharf abgegrenzt?
Hat es irgendwie kleine Ausschlümpfungen?
Hat es dies, hat es das, hat es jenes?
Und das sind die Features, die dann in das Modell reingehen,
wo er sagt, okay, bei dem mit diesen Eigenschaften würde ich sagen,
das ist eine Krebszelle, bei dem anderen, das ist es nicht,
bei dem nächsten, das ist es und darauf kannst du halt ein Modell trainieren.
und so. Wenn du sowas trainierst,
so ein Modell, und du findest mit den
Qualitätskriterien, die du zwischen deinen Tests und deinen
Trainingsdaten heraus, dass das gerade nicht
passt, dann kannst du das
als Signal nehmen, dass du als Mensch
hergehen musst und sagen musst, das Modell reicht
so nicht, das kann ich so nicht in Betrieb nehmen.
Aber das Modell
selber kann dir nicht sagen, ja,
überleg dir mal nochmal, ob die Farbe
eine Rolle spielt. Das kann das
Modell halt nicht.
Da würde ich sagen,
also das kommt halt
und Jochen unterhalten sich über die Programmiersprache Python
Ja, das kann mit den Daten arbeiten, das kann auf den Daten ganz coole Sachen machen und auch diese automatischen Feature-Experimente, die können alles. Aber dann zu sagen, du hast mir jetzt Fotos gezeigt von den Zellen, ich bräuchte aber mal noch, was der die letzte Woche gegessen hat.
Ja, die Auflösung beim Vieljährigen ist auch einfach viel höher.
Viel mehr Informationen drin.
Viel, viel mehr.
Keine Ahnung, was Menschen machen, weiß ich jetzt nicht
aber
dass man andere Informationen mit rein
nimmt, das geht auch
Was ich aber sage ist, das Modell
kann dir nicht sagen, gib mir diese
Art von anderen Informationen
Nö, aber dann können die alle gehen
Genau
Ich glaube aber, das ist etwas
Ich versuche
noch zu dem Punkt zu kommen
wo ich da stehe
und die Technik.
Das ist was, wo Machine Learning einfach falsch wahrgenommen wird.
Von, das löst irgendwie diese und jene und so Probleme und alles.
Aber Machine Learning kann nie die eigenen Grenzen erkennen und überschreiten.
Das geht halt nicht.
Und das ist für mich dieser Punkt, weswegen Augmentation so wichtig ist, dass du dort
jemanden hast, der als körperliche, biologische Entität in der Welt ist und in der Lage ist,
eigenen Grenzen in Frage zu stellen und zu überschreiten.
Bei der Grenzerkennung gehe ich mit.
Also dass ein Modell Safety Belts haben kann und sagen kann, du hier komme ich an meine
Grenze, ja, aber es kann nicht selber sagen, ich mache jetzt ein Forschungsprojekt und
finde raus.
Man könnte ja vielleicht mehrere Netze miteinander kombinieren, dass du einen Cluster von Netzen
hast, wo ein Netz auf sowas achtet.
Das ist der Mensch, das ist nicht das Machine Learning, was das macht.
Ja, also, ja, keine Ahnung.
Also, wir sind halt noch nicht so weit.
Wenn wir Katzen von Hunden unterscheiden können,
sind wir total glücklich.
Also insofern, ja, das mal schauen.
Keine Ahnung.
Ich finde, das mit den Katzen von Hunden unterscheiden
war ein super Schlusswort für diese Machine Learning-Folge.
Ja.
Hattet ihr noch einen wichtigen Punkt?
Ich wollte euch nicht ganz so abwürgen.
Ja, äh, tatsächlich...
Nee...
Sonst machen wir einfach das nächste Mal.
Stimmt, wir sind auch schon eine ganze Zeit dran, ne?
Ja, und es ist spät.
Was ich noch spannend fände, wenn vielleicht auch Hörer
an der Stelle wollen, dass wir
dem Thema treu bleiben und damit
nochmal, weil ich glaube, das können wir nochmal ein bisschen,
wenn ich da tiefer angekommen bin,
nochmal ein bisschen praktischer, ein bisschen Python-orientierter machen,
weil wonach ich tatsächlich momentan so ein bisschen
Ausschau halte, ist so ein bisschen Spielprojekte,
nach denen ich nämlich
mal genau das ausprobieren will, so in welchen
Anwendungsfällen von qualitativer
Bewertung und für diese ganzen unterschiedlichen
Teildisziplinen von Machine Learning
auf welche Arten von Daten kann man das
eigentlich mal loslassen, weil
da merke ich so, jetzt langweilig muss ich
da mal einfach irgendwas selber bauen
mit den eigenen Daten, die hier so rumfliegen.
Vielleicht gibt es ja auch noch ein paar Leute,
die gerade ein Haus gebaut
haben und ein bisschen Hausautomatisierung machen.
Wir kommen so nicht.
Oh ja, das ist auch noch ein großes Thema.
Genau, schreibt das doch an
hallo.pythonpodcast.de
und sagt uns Bescheid, wie er das fand.
Ja.
Ja, dann einen wunderschönen guten Abend.
Bleibt uns gewogen.
Schön, dass Christian wieder dabei war.
Gerne, jederzeit.
Ja, dann hören wir uns
nächstes Mal. Alles klar.
Tschüss. Tschüss. Ciao.