Transcript: Vermischtes über Data Science, Machine Learning und nbdev

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

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

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

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.