Transformers.js mit Nico Martin
- // Podcast
- // Deep Dive 211
Shownotes
In dieser Folge begrüßen wir einen alten Bekannten in der programmier.bar: Nico Martin, Machine Learning Engineer bei Hugging Face und gern gesehener Podcast-Gast und programmier.con-Speaker.
Während Nico bei seinen letzten Besuchen noch über WordPress und PWAs sprach, tauchen wir heute tief in die Welt von WebML ein. Wir besprechen, wie ihr mit Transformers.js modernste Machine-Learning-Modelle direkt in euren JavaScript-Anwendungen ausführt – egal ob im Browser, in Node.js, Bun oder Deno.
Warum sollte man ML-Modelle überhaupt lokal beim Team oder den Endnutzenden laufen lassen, statt einfach eine API anzufragen? Nico erklärt uns die Vorteile von On-Device AI: von maximaler Privacy über Offline-Verfügbarkeit bis hin zur Vermeidung von Latenzen bei großen Mediendateien. Wir räumen mit dem Vorurteil auf, dass Machine Learning im Web nur aus Chatbots besteht, und schauen uns spannende Use Cases wie Background Removal, Voice Activity Detection oder lokale Audio-Transkription an.
Und natürlich stellt Nico auch die neusten Updates von Transformers.js vor, das gerade in Version 4 erschienen ist und jetzt unter anderem seine eigene Tokenizer Library mitbringt. Er erklärt uns auch, welche Herausforderungen es bei der Gestaltung der APIs gab und wie Transformers.js es schafft, dutzende Use-Cases, unterschiedliche APIs und eine quasi endlose Anzahl an Modellen zu vereinen und erfolgreich zu abstrahieren.
Außerdem sprechen wir über die zugrundeliegende ONNX Architektur und Runtime und beleuchten, was damit alles geht und was nicht. Wir sprechen über Herausforderungen im Caching, der Bandbreite des Clients und strikte RAM-Limitierungen, insbesondere in mobilen Browsern.
- Jan
- Hallo und herzlich willkommen zu 1 neuen DeepDive Folge hier in der programmier.bar beziehungsweise bei Gareth in der programmier.bar. Der sitzt nämlich in unserem neuen Studio. Hallo, Gareth. Schön, dass Du da bist.
- Garrelt
- Hallo, Janusz. Freu mich auch. Und
- Jan
- neben Gareth am Start ist heute noch Nico Martin. Nico ist schon ziemlich häufig in der programmier.bar gewesen. Ich glaub, angefangen irgendwann so 20 19, 20 oder so was, schon sehr lange her über WordPress damals.
- Nico
- Klassik, man sieht es 20. Ja. Ja.
- Jan
- Dann 20 24 noch mal, glaube ich, war das über PBAs. Da waren wir schon zusammen in der in der Folge. Und 20 25 als MVP auf der Programmierkonten mit dem bestgerateten Talk von allen und dementsprechend 20 26 auch wieder auf der ProgrammierCon. Also eigentlich schon eher 'n Mitglied in der programmier.bar, so.
- Garrelt
- Wow. Haben wir gar keinen Applausmedia hier? Man. Wir haben so was, weil das Ich hör nix, ja.
- Jan
- Ja. Man muss auch auf Play drücken. Ja, oder Riverside zieht grade wieder. Also wir hätten jetzt einen Applaus gehabt.
- Garrelt
- Hallo, megaschön, hier zu
- Nico
- gehabt. Hallo, megaschön hier zu sein. Wow, cool.
- Garrelt
- Ah, hier ist Clipping, okay.
- Jan
- Ja, aber ich hab auch Clipping gedrückt, aber Clipping klappt nicht bei mir.
- Garrelt
- Sollen wir auch nicht Okay, nee, gut,
- Nico
- Du hast son kleines Emoji.
- Garrelt
- Ah ja, wie Nico schon gesagt, einmal mit Profis, ne? Wir sind so gut vorbereitet. Also ich ich hab natürlich schon erst mal
- Jan
- vor 1 Stunde darauf hingewiesen worden, dass ich diese Podcastfolge machen soll und bin noch mit 9 Stunden gejettlagt, weil ich noch nicht mal 48 Stunden wieder im Land bin, so. Ja, Cari, was ist deine Ausrede?
- Garrelt
- Ich hab Kinder. Ich hab Tennis Jetlag sozusagen.
- Jan
- Ich hab Kinder, ich hab ständig Jetlag, das ist auch richtig. Ja. Dennis hat gesagt, ich soll hier einspringen über diese Folge zu Transformers Jazz. Ich weiß gar nicht viel. Mein Lieblingstransformer ist Bumblebee. Garelt, wie sieht's bei dir aus?
- Garrelt
- Alter, sorry, ich musste erst mal auf diesen Switch klarkommen. Nicht Optimus Prime ist es zu ist es zu leicht.
- Nico
- Ich kenn nur Bumblebee. Ich würd's sonst auch den nehmen.
- Garrelt
- Ist der Geld im Team? Ja, ich glaub schon oder, nee, schon. Einfach, ich bin der Böse.
- Jan
- Aha. Okay.
- Nico
- Das sind aber nicht Transformer, das sind die
- Jan
- Doch, doch, das sind ja alles Transformer. Das einen sind die Autobots, das anderen sind die Decepticons. Mensch, Leute, wo ist eure Achtzigerjahre wissen? Alter, weil das Man,
- Nico
- man, man.
- Garrelt
- Ich bin
- Jan
- 'n bisschen enttäuscht, muss ich sagen. Ich bin bisschen enttäuscht.
- Garrelt
- Okay, ich hab da nicht
- Jan
- über Autotransformer reden können, dann müssen wir über andere Transformer reden. Mhm. Und bevor wir zu Transformer Jazz einsteigen, vielleicht einmal der der initiale Pitch. Und weil Nico bestimmt weiß, was der richtige Pitch ist, frag ich zuallererst Garrit, der freut sich ja auch immer gerne, wenn er offline und lokale Modelle benutzen kann. Garrit, was ist dein Pitch zu Transformer JS? Was ist das und warum sollte mich das interessieren?
- Garrelt
- Stell dir vor, Du willst eine App bauen, aber Du denkst dir so, das muss schon im Web Bereich sein und dann fragst Du dich, aber warte mal, wir leben doch in dem Zeitalter der AI, meine App muss auch AI können, aber kann das das Web überhaupt? Dann googelst Du kurz und dann findest Du natürlich Niko Martins LinkedIn Account, wo er über Transformer. Js sprichst und denkst dir, ah, das ist die Lösung für alle meine Probleme. Und nutzt Transformer. Js, AI in alle deine Webapplikationen einzubauen. Egal, ob's Dinner gibt oder nicht, Du solltest es einfach tun. Das ist mein Witz.
- Jan
- Egal, ob's Sinn ergibt oder nicht. Wunderbar. Nico, wie nah an der richtigen Antwort war Garette schon?
- Nico
- Gar nicht mal so weit weg. Ich würd's in einem Satz zusammenfassen oder Tagline, ist halt State of the Art Machine Learning für Javaskript. So. Ja. Das heißt, Du kannst Machine Learning Modelle in allen möglichen Farben und Formen in JavaScript ausführen. Heißt also im Browser, aber genauso auch in Node, Bun, DINo, allen möglichen Runtimes. True.
- Jan
- Wunderbar. Ich glaub,
- Garrelt
- ich hab die meisten Demos irgendwie mit so Web Webapplika dazu gesehen. Du hast ja auch deine praktisch eher alles in Webkameraden, aber klar, ja. Das deckt natürlich vieles ab, wenn's einfach JavaScript ist. Ja, cool. Genau.
- Jan
- Vielleicht können wir da direkt einspringen mit der mit der ersten Frage, weil Du hast jetzt grade schon so Machine Learning gesagt als großen Übergriff und das heißt ja aber Transformer. Js. Und jetzt sind ja Transformer nur so ein Teil von Machine Learning und Machine Learning kann ja noch ganz viele andere Sachen bedeuten, so, ja. Wenn ich jetzt Transformers jazz benutzen will, bin ich dann wirklich so auf Transformers Modelle beschränkt oder kann ich viel mehr andere Sachen machen, die auch noch so rund Machine Learning stattfinden?
- Nico
- Du bist beschränkt, was Also erst mal, die Transformers Architektur ist halt son bisschen das, was im Moment am sowieso am meisten verwendet wird. Das heißt Genau. Genau. Wo Du 'n bisschen beschränkt bist, ist in dem Framework, was wir nutzen, unter the road sozusagen, die Inference auszuführen. Und das ist halt Onyx, also dieser Open New York Exchange Standard. Heißt eigentlich, jedes Modell, was Du in Onyx konvertieren kannst, kannst Du dann auch mit Transformers jazz ausführen. Also dort ist son bisschen der Bottonack. Mhm. Okay. Und
- Jan
- dann lass uns doch da gleich noch mal 'n bisschen genauer draufschauen. Du hast jetzt einfach so gesagt, na, wir haben wir nutzen hier Onyx under the Hood, aber wie kommt denn Onyx überhaupt in eure rein? So, weil das ist ja jetzt kein JavaScript Framework per se.
- Garrelt
- Mhm. Genau.
- Nico
- Vielleicht fangen wir ganz vorne an eben. 'N Machine Learning Modell ist ja ein neuronales Netz. Das neuronale Netz hat verschiedene Layer von Neuronen, das Input Layer, Du hast Tinten Layer und das 'n Output Layer. Innerhalb oder zwischen diesen Layern hast Du Operationen, also mathematische Operationen. Die werden ausgeführt, bis dann am Ende rauskommt eine Wahrscheinlichkeit, für was auch immer dieses Modell dann, für was es trainiert wurde. So. Onyx ist 'n Format, was die die, was das Modell und die von dem Modell von der Trend. Und das ist ganz wichtig für uns bei Transformers j s. Du hast Onyx, was das Modell beschreibt. Du hast also, das beschreibt, wo sind die Layer, welche Operationen werden ausgeführt? Und hier sind die, also welche Parameter werden verwendet innerhalb von diesen Operationen, dann zum rechten Kontinent zu kommen? Das ist der eine Layer. Und dann hast Du die und bei Onyx ist es so, dass Du eigentlich jedes Onyx Modell in jeder ausführen kannst. Wir haben zum Beispiel eine Onyx Run Time Web mit WebGP oder Web Assembly Run Time, aber Du hast dann auch eine directedML oder eine coole Run Time, wenn Du es in in Server Sideros ausgibt ausführen möchtest.
- Jan
- Wie muss Du dich so denn technisch vorstellen, was ist denn Also wenn wenn ich jetzt son Modell in Onyx reinschmeiße, was was kommt da denn überhaupt an? Ist das so was binär Zusammenkompiliertes? Ist das eine irgendwie 'n 'n maschinenlesbares Format mit ganz vielen Anweisungen drin? Was bekomme ich denn als Modell in diese Ausführung rein?
- Nico
- Genau, es ist 'n 'n Dot Onyx File, was 'n binär Format und je nach Größe hast Du dann noch 'n Onyx, sonyx Data File oder mehrere Onyx Datafiles, wo die Wates dann noch gestored werden, weil ich glaub, momentan ist es so, dass 'n Onyx File nicht größer als 2 Gigabyte sein darf und deswegen, je nachdem, wie groß das Modell ist, wird es dann auch aufzusplittet verschiedener Onyx und Onyx Datafiles. Aha. Aber das ist 'n binäres Dateiformat, was Onyx Run Time dann lesen kann. Also jetzt im Falle von Onyx Run Time Web ist es so, dass wir laden sozusagen die die Factory, die dann die mit dem Onyx Web Assembly kommuniziert, laden wir im Browser. Der holt sich dann oder nee, eigentlich wir holen die die Onyx File, die es braucht und füttern die dann in dieses Web Assembly mit rein. Web Assembly deswegen, weil Du halt diese, die in verschiedenen auf verschiedenen Devices laufen soll und Web Assembly ist eigentlich so der Layer, der das halt möglich macht, dass Du's in oder dass es so einfach wie möglich in JavaScript nutzen kannst. Heißt aber nicht, dass auch die Kalkulationen dann in Web Assembly laufen. Es gibt eine Onyx Run time Web Assembly, wo das dann aufm CPU in Web Assembly passiert. Aber in der Regel nutzen wir WebG PU, das heißt, wir haben dieses Web Assembly, was das Modell einliest, aber dann die die Operationen an WebG PU delegiert. Das heißt, die Operationen selber laufen dann aufm aufm GPU oder über WebGPU im GPU vom vom Gerät.
- Jan
- Und Onyx ist aber nicht von euch, das ist, glaub ich, son Microsoft Projekt oder so Genau. Mal gewesen, boah?
- Nico
- Genau. Ist immer noch Microsoft, also grad mit 'nem Onyx Run Time Web Team, arbeiten mit ziemlich eng zusammen und das ist auch so, dass ich, wie auch Joshua, wir haben beide schon auch Commits zu Onyx Run Time Web gemacht. Also es ist 'n Und wir sind, glaub ich, wenn ich's richtig im Kopf hab, zumindest für Onyx Run Time Web bei Weitem der größte, die die größte Library, die das verwendet. Von dem wär's auch für sie wichtig, aber da sind wir ziemlich eng in der Zusammenarbeit.
- Garrelt
- Kannst Du vielleicht noch mal dann ganz kurz erklären, was bietet dann Transformer JS? Ist das sozusagen der Rapper für Onyx, dass ich mich nicht darum kümmern muss, wie wird das Model geladen? Wie pack ich das in die Runtime und wie welche Runtime nutzt ihr überhaupt? Es ist Genau. Kann man Convenience Rapper sagen oder bietet es noch mehr als das?
- Nico
- Ja. Convenience Rapper passt. Also, was Transformers share s macht, sind 4 Sachen. Das eine ist mal das Handling von den Modelfiles, also sprich, Du in der Regel lädst Du die Files vom Hugingface hub, die werden in Browser geladen, in je nachdem, also wir haben Caching, wir haben 'n Caching Mechanismus für Nodejazz, was einfach als File im Filesystem gecashed wird. Mhm. Oder dann im Browser in der Cache API, heißt, nach dem ersten Download bleibt's im im Browser. Das ist eine, dass wir das Handling von den Files machen. Mhm. Dann haben wir Preprocessing, weil 'n Modell erwartet 'n 'n Tensor. 'N Tensor ist 'n ist 'n numerischer Wert, also es kann eine Zahl sein, kann 'n Array von Zahlen sein, eine Liste von Zahlen, kann aber auch eine Liste von Listen von Zahl sein oder und so weiter und so fort. Also es ist immer numerische Werte und am Ende kommt auch einen Tänzer wieder raus. Mhm. Heißt, wir haben das Preprocessing, dass wir aus dem Input, den Du reingibst, 'n Text, 'n Bild, was auch immer, die Tansors in dem bauen, wie das Modell dir erwarten würde. Mhm. Dann haben wir die, der 3. Part, der eigentlich dann an onyx rangan delegiert wird oder dann onyx. Und dann der 4. Part ist dann die das, dass wir aus dem Tänzer dann wieder das machen, was Du erwarten würdest. Zum Beispiel einen eine, keine Ahnung, einen Text, wenn Du einen LLM verwendest, möchtest Du wieder Text zurückbekommen. Also ist der Part auch wieder Transformers Jazz.
- Garrelt
- Wahrscheinlich ist Text auch der allergrößte Use Case für Transformers Jazz, oder? Weil oder würde, kannst Du dir vorstellen, auch 'n 'n Imagemodel darüber laufen zu lassen?
- Nico
- Ja, natürlich, aber was wichtig ist, Machine Learning ist nicht nur Large Language Modelle.
- Garrelt
- Mhm.
- Jan
- Wenn
- Nico
- man an Large Language Modelle denkt, ja, dann ist wohl der häufigste Use Case. Du hast halt 'n Text, der Text wird in einen Input String verwandelt, live durch, neue Tokens werden generiert und Du bekommst eine Antwort. So, Text to Text in der Regel. Und das ist ein Task, den wir anbieten, den nennt sich Textgeneration. Auf der anderen Seite sind die Modelle, so LLM sind halt auch die kleinen LLM sind sehr groß. Du hast aber, wenn Du bald eine außerhalb von von Load Language Modellen denkst, hast Du halt Tasks, die viel besser geeignet sind fürs Web. Aha. Das ist zum Beispiel 'n Background removal Task. Du hast einen Bild, das fütterst Du rein, wird eingelesen, geht durchs Modell und da bekommst Du dann einfach nur das Bild zurück vom vom vom Vordergrund ohne den Hintergrund. Aha. So. Kleinereres Modell, läuft relativ gut in auch auf auf älterer Hardware bei schlechterer Internetverbindung und solche Sachen. Aha. Also das heißt, wir haben eigentlich eine API und das ist, auf der einen Seite ist es das, was was so komplex macht, Transform und Jazz für uns in der Entwicklung, aber auch für die Nutzer*innen halt sehr, weil Du hast eine API und Du kannst basically alle möglichen Modelle reinladen und alle möglichen Tasks damit dann aus ausführen.
- Jan
- Also wenn man sich mal die anguckt von Transformers jess, gibt's ja diese Task Auflistung, was da alles unterstützt wird, ne? Und das war auch,
- Garrelt
- also ich bin auch so
- Jan
- rangegangen wie, als mir das 1. Mal angeklopft, dachte, ja, okay, da kann ich so irgendwie Text irgendwie machen, aber das ist ja zwischen, also Text, Maskierung, Token, Translation, Background hast Du grade angesprochen, Imageklassifizierung, Audioklassifizierung, Audioklassifizierung, Audioklassifizierung, Audiogenerierung, multimodales Zeug, Visual Question ansuring, reinforcement lol, also ist ja irgendwie alles drin so, ja. Und das ist das, was ich mir, glaub ich, am schwierigsten irgendwie davon vorstelle, was weil was ja, glaub ich, eure Aufgabe ist, auch wenn wir das grade so als irgendwie schon abgestempelt haben, ist ja, all diese Feature halt irgendwie so zu abstrahieren, dass sie ja mit jedem beliebigen Modell in Anführungszeichen, also jedes Modell, was das natürlich auch unterstützen würde, aber jedem beliebigen Modell ja ja quasi ermöglichen. Und das ist, glaub ich, so der Teil, wo der der größte Teil eurer Arbeit drin steckt wahrscheinlich am Ende des Tages, oder?
- Nico
- Na ja, was lustig ist, wir haben ja jetzt grad vor Kurzem die Version 4 rausgebracht und da haben haben wir relativ viel Refacturing gemacht. In der Version 3 hatten wir ein Models dot Json, sorry Models dot Json, also 'n Model Js File. Und in dem Pfeil waren eigentlich nur verschiedene Modellarchitekturen und so wie kleine, so was ist bei dem Modell anders als bei anderen Modellen? Hier kommt noch der Schritt dazu, hier kommt der Schritt dazu. Und das Ding war 8000 Zeilen lang das Pfeil.
- Jan
- Also es Ja, also in der stehen ja auch über 200 Modelle, die wir unterstützen, ne? Also da ist ja auch Nee. Ab 1000 ist dann gar nicht mehr so viel eigentlich. Das sind 40 Zeilen pro Modellanweisung, also
- Nico
- Genau. Und dann haben wir das Ganze natürlich auseinandergenommen. Jetzt haben wir das alles schön in eine in eine schöne Struktur reingebracht und so, aber allein das File mal durchzulesen und mal zu gucken, okay, ja, war spannend. Okay, das heißt, ihr, weil ich
- Garrelt
- hab mich grad gefragt so, wenn ihr das so archivitut spezifisch macht, ist es aber schon so, dass ihr nicht jedes Modell einfach, dass man nicht jedes Modell einfach nutzen kann. Es muss schon unterstützt sein und sehr wahrscheinlich, wenn man praktisch anfragt so, hey, könntet ihr das Modell auch unterstützen, müsstet ihr auch was ändern an der Library?
- Nico
- Kommt drauf an. Es geht in der Regel die Modellarchitektur. Heißt, wenn Du 'n Modell feintunest, basierend auf 'nem Modell, was unterstützt wird mit derselben Architektur, das dann in Onyx exportierst, dann kannst Du das problemlos nutzen mit halt deinen gefeintunenden Model weides. Wenn jetzt aber 'n neues Modell rauskommt, wie letztens grad eben Jamma 4, dann ist es in der Regel so, dass wir eigentlich 2 Sachen machen müssen. Erst mal bei der Konvertierung vom Modell zu Onyx, also so, so wie sie's halt dann rausgeben zu Onyx. Das ist ein Teil, wo wir Arbeit reinstecken müssen und dann, je nachdem, was sich sonst noch im im API Surface geändert hat, bis wir dort auch noch was anpassen. Aber die Anpassungen in Transformers Jazz sind in der Regel relativ minimal. Mhm.
- Jan
- Und das heißt, auch so Sachen wie ist dann für euch wahrscheinlich auch kein Problem, solange die Architektur halt einmal drin ist, ne. Also wenn jetzt Jamma 4 rausgekommen ist und es gibt jetzt verschiedene davon, dann ist das überhaupt kein Problem, wenn ich sag, ich nehm mir jetzt 1 mit 'ner geringeren Auflösung oder so, weil ich bin halt hier mobil unterwegs und hab nicht so viel Bandbreite oder nicht so viel Speicher oder so und will halt was Kleines nutzen, das geht dann auch.
- Nico
- Ja, wobei schon beim Onyx Export passiert. Also eigentlich, wenn wir 'n Modell hochladen, dann ist es schon in verschiedenen Formaten verfügbar in in in Hugingface dann im Repo. Okay.
- Garrelt
- Aber ich kenn Hugingface hauptsächlich über lokale LLMs, die man jetzt in LM Studio oder so laufen lassen kann. Und da kenn ich die Dateiformate gguf und m lx. Wenn man das Dateiformat nennen kann, da kenn ich mich nicht mehr aus. Aber U NX ist jetzt noch mal dann was anderes, oder? Das ist nichts, was ich jetzt in LLM Studio laufen lassen würde, sondern ihr habt das im Repro von diesem Modell, aber das wird nur von Transformers. Wenn das,
- Nico
- versteh ich das, wüsste ich das Ja, also hauptsächlich von Transformers Jazz, aber theoretisch könnte jede ONEx Run Time könnte die Modelle dann verwenden.
- Garrelt
- Okay. Ja. Ja. Cool.
- Nico
- Wir haben in eine org, die nennt sich Onyx Community und dort sind eigentlich die Modelle, die wir jeweils konvertieren, die laden wir dann jeweils in dieser Onyx Community und wer sie dann nutzt, ist dann, ich denk mal, die meisten über Transformers Jazz, aber können genauso gut auch über über direkt ONEx verwendet werden.
- Garrelt
- Ah, das, oh, das hat das hab ich mir nämlich auch schon aufgefallen. Ist vielleicht 'n kleiner Exkurs, aber bei LM Studio, wenn man da Modelle unter dieser zum Beispiel MLX Community findet, dann ist das eigentlich von euch gemacht. Weil Community klingt für mich immer so, das haben halt andere User von Higgingface erstellt?
- Nico
- Beides. Also bei Onyx Community weiß ich jetzt gar nicht, wer da alles mitarbeitet, aber das sind zum Teil Modelle von uns, aber zum Teil sicher auch Modelle von Okay. Ja, oder auch Modelle, wenn wenn das Lab zum Beispiel selber eine Onyx Conversion rausbringt, dann kann man auch die nutzen. Also, das muss nicht im Onyx Community Ork sein, das kann auch Ich glaub, Liquid AI hat ihre Modelle in ihrer eigenen drin. Das ist egal, woher die kommen. Ja. Ja, gut.
- Jan
- Okay. Jetzt hast Du schon gesagt, ist im Prinzip wird auch schon von euch erledigt. Modelle werden von euch bereitgestellt. Was muss ich denn selbst noch tun, außer Transformers j s als hinzuzufügen und zu sagen, ich brauch dieses Modell? Muss noch irgendwas anderes machen?
- Nico
- Nee, also was wir haben, wir haben die sogenannte Pipeline API. Und Pipeline, also vielleicht noch 'n Stück zurück, transformers j s ist ja oder lehnt sich stark an der transformers Python Library an. Deswegen sind eigentlich alle alles, was wir exposen, ist sieht sehr ähnlich aus wie Index Transform of Python Library. Und die hatten auch dieses Konzept von Pipeline, da hast Du eine Task ID, also was möchtest Du damit machen? Dann das Modell und dann Poweroption und so. Deswegen, wenn Du die Pipeline Function verwendest, dann importierst Du die von transformers. Ja, baust dir dann 1 1 1, heißt, Du erst mal definierst Du, welchen Task möchtest Du verwenden. Bei mir bei Textgeneration, also bei LLMs würdest Du sagen Textgeneration. Dann als zweiten Parameter sagst Du, welches Modell Du verwenden möchtest und das ist in der Regel einfach der der Pfad in im Hubingface Hub drin. Also von mir ist jetzt Onyx Community, E 2 b, Onyx, irgendwas, damit Advance Jazz weiß, wo das Modell runtergeladen wird. Und dann kannst Du noch in den angeben, möchtest Du es in WebGP laufen lassen? Welche Quantisierung, also welchen möchtest Du verwenden? Und Du bekommst auch einen progress Callback als als Option, wo Du dann den Download progress tracken kannst. Also der Part ist relativ wichtig, dass Du auch zeigen kannst, was im Moment grad passiert, weil je nachdem hast Du einen 'n LLM, was was 'n paar Gigabyte groß ist, dauert einen Moment, bis runtergeladen ist und dann bekommst Du halt so einen Progress Event, wo Du dann zeigen kannst, hey, wir sind da 10, 20, 30 Prozent. Wir sind da runterladen. Und dann hast Du die und dann wirst Du irgendwie Text oder was auch immer. Und dann kannst Du je nach Task jede oder jeder Task return einen anderes eine andere in dem Sinn. Bei ist jetzt so, dass Du einen, dass Du die diese Funktion aufrufst mit 'nem Array von Messages und also das wär der der Minimalfall Array von Messages und dann bekommst Du die die Antwort zurück. Also es ist wirklich, wenn man bei der Pipeline bleibt, ist es megawenig Code, den Du selber schreiben musst. Mhm. Du
- Jan
- hast ja auch gesagt, also gerade meinte ja so, AI im im Browser irgendwie an den Start zu bringen mit Transformers Jazz. Du hast dann direkt darauf hingewiesen, dass es ja auch andere gibt, die auch unterstützt werden. Wo seht ihr denn aktuell die größte? Also sind es wirklich mehr Leute, die das in ihr Dino, Node, whatever Projekt backendseitig bringen wollen? Oder ist es wirklich mehr im Browser, wo's direkt kleinseitig ausgeführt wird? Schon im Browser.
- Nico
- Weil Na ja. Sobald Du einen Server hast, wenn Du irgendwie deinen eigenen, keine Ahnung, hast 'n Vektor Investing Service, dort hast Du ja in der Regel, kannst Du selber entscheiden, welche Software dort drauf läuft. Und dann hast Du, gibt's effizientere Wege, beim Modell laufen zu lassen als Java Script und Onyx. Das ist, da müssen wir Ja. Ehrlich bleiben.
- Jan
- Fair. Fair. Und die meisten, die das dann jetzt browserseitig benutzen, was was machen die damit? Was sind so die die größten Use Cases davon? Weil ich muss ehrlicherweise sagen, ich hab jetzt noch kein Projekt gesehen, wo ich zumindest für mich so direkt offensichtlich gesehen hab, ah, hier wird irgendwie Transformers Jazz genutzt, dieses oder jenes Feature anzubieten. Deshalb muss ich ganz doof fragen, was machen die Leute damit?
- Nico
- Ich würd sagen, es sind oder dort, wo ich auch das meiste Potenzial sehe, sind halt wirklich kleinere Tasks, weil 'n large language Modell, es ist cool, dass es funktioniert und funktioniert super als Demo, aber Du musst halt damit rechnen, dass wenn Du das in deine Webapplikation integrierst, müssen müssen deine Nutzer*innen erst mal pack Gigabyte Daten runterladen, die 1. Hürde. Und dann muss auch die Hardware entsprechend sein, damit Du das flüssig nutzen kannst. Also auf 'nem MacBook kommst Du bei 'nem LLM gut mal auf irgendwie 20, 30, 40, 50 Tokens pro Sekunde. Aber bei 'nem älteren Windows Gerät bist Du dann bei 2, 3 Tokens pro Sekunde und deshalb macht dann nicht viel Spaß.
- Garrelt
- Mhm. Ja.
- Nico
- Wo Du aber wo wo aber viel Potenzial ist, ist bei kleineren Modellen, wo Du nicht nur, wo's wo's nicht Oder anders sein, wo die wo die Latency auch wieder eine Rolle spielt. Bei 'nem LLM sindest Du Text an den Server und bekommst Text zurück. Es ist, also dass Du ja kaum Daten wieder hin und herschicken musst. Also das geht relativ schnell und die Verarbeitung aufm Server ist auch schnell, alles gut. Sobald Du dann aber Bilder oder Audio verschicken musst, hast Du größere Datenpakete und dann ist beziehungsweise eine Rolle, wo oder was musst Du mit diese, wohin werden die Datenpakete geschickt? Und dann ist die die Balance zwischen Zeit, die es braucht für die und Zeit, die es braucht für die Kommunikation mit dem Server, die die Balance sieht dann ganz anders aus. Und das beste Beispiel find ich Voice Activity Detection. Voice Activity Detection sind in der Regel sehr kleine Modelle, also wirklich 'n paar Megabyte und die auch sehr schnell ausgeführt werden können. Und da ist die Idee, dass Du halt 'n kleinen Audio Snippet ans Modell schickst und dann bekommst Du zurück, ob da jemandem reden ist oder nicht. Und das macht vor allem deswegen Sinn, dass wenn Du, sagen wir, Du hast 'n Chatbot, brauchst Du irgend einen Trigger, wo der Chatbot erkennt, ah, da redet grad jemand. Also ja, ich muss die Aufnahme starten. Oder ah, ist jetzt grad fertig. Das heißt, ich kann den Audio, den ich jetzt aufgenommen hab, kann ich irgendwo hinschicken. Das ist son minikeines Modell und das macht halt überhaupt keinen Sinn, dass jedes kleine x Millisekunden Snippet an an den Server zu schicken und dann die Antwort abzuwarten. Das ist viel schneller, wenn Du das direkt aufm Gerät machst und dann erst das Audio, was aufgenommen wurde, an an Server schickst. Oder dass Du sogar dann den zweiten Schritt die Audiotranskription auch aufm Gerät machst. Heißt, dass Du erst erkennst, ob jemand redet, dann die Aufnahme machst und dann aus der Aufnahme den Text extrahierst, also die das Transkript, von dem was gesagt wurde, dass Du das auch schon aufm Gerät machst, was unter Umständen auch schneller ist, als wenn Du erst das Audio hochschickst, dort die machen lässt und dann das Transkript zurückbekommst.
- Jan
- Also was da son bisschen meine Sorge ist, warum ich das gefragt hab, ist, das hat da schon sehr hohe initiale Kosten, ne. Also ich bin voll bei dir zu sagen, lokale Audiotranskription ist halt superschnell und mittlerweile auch sehr zuverlässig eigentlich, ja. Ich hab hier auch 'n kleines Projekt laufen, auch mit Transformer JS, was lokal Audiotranskription macht. Das läuft, aber das erfordert auch, dass ich beim Starten irgendwie, ich weiß nicht, wie groß Whisper ist, zwei-, 300 Megabyte oder so mal runterlade, ja. Und das ist ja schon was, was für wahrscheinlich viele Endnutzerinnen da draußen sehr intransparent ist, irgendwie, ne. Die kommen dann jetzt auf meine Chatbot Seite oder so was und werden gefragt so, hey, willst Du irgendwie das Audiofeature nutzen? Ja oder nein? Dann drücken sie auf ja und dann lädt erst mal so zwei-, 300 Megabyte. Und das ist ja vielleicht grade auf mobilen, vielleicht auch datenlimitierten Verbindungen oder so was, ist ja schon auch nicht ohne. Und da mach ich mir so eher Gedanken, ne, das ist kein technisches Problem, wo jetzt Transformers zuerst dran schuld ist, aber ist, glaub ich, son son UX Problem, was man halt irgendwie lösen muss, ne. Wie bietet man das 'nem Benutzer, 'ner Benutzerin am Ende des Tages an, zu sagen, wir haben hier 'n cooles Feature für dich, aber das kostet dich halt, weiß ich nicht, ne, 200 Megabyte, Du wirst erst mal runterladen musst, keine Ahnung. Du willst auf irgend eine Social Network Seite 'n neues Foto hochladen und kannst deinen Hintergrund automatisch freigestellt bekommen. Aber ich muss dafür erst 'n komisches Modell runterladen, mein Ein Megabyte Bild irgendwie freizustellen, lade ich 200 Megabyte Modell runter. Das ist also es ist halt komisch so, ne. Und das ist, glaube ich, was, wo wir irgendwie son son Weg finden müssen, das richtig anzubieten.
- Nico
- Ja. Was ich gerne empfehle, ist, dass man dass man's optional macht. Zum Beispiel, bleiben wir bei 'nem bei 'nem Chatbot oder bei 'nem bei 'ner irgend 'nem Agent, der dir was auf deiner Seite erklären kannst. Du kannst sagen, hey, das Ding funktioniert on device, sprich, das funktioniert, wenn Du offline bist. Das funktioniert ohne, dass, das haben wir noch gar nicht angeguckt, also sprich, dass die Daten bleiben immer aufm Gerät. Du kannst es nutzen, heißt aber, Du musst 3 Gigabyte an Daten runterladen oder Du nutzt unseren Cloud Dienst. Keine Ahnung, wo der ist, keine Ahnung, wo die Daten hingeschickt werden, aber ist halt dann, ist ist ist unter Umständen
- Garrelt
- so. Ich finde Also
- Jan
- die, sag ich grad kurz, ne. Er folgt mich noch. Die andere Alternative, wo ich nämlich aktuell drauf hängen geblieben bin, ist zu sagen, na, wir wir bieten halt, je nachdem, wie Du grad unterwegs bist, andere Modelle an, ne. Ich bin jetzt hier in dieser Anwendung, die ich gebaut hab und Du bist irgendwie aufm Desktop und lokal bla. Und dann kriegst Du halt 'n Jama 4 Modell runtergeladen. Das sind irgendwie, weiß nicht, 2, 3 Gigabyte so. Kannst Du zu Hause am Rechner mit genug Strom und fester Internetverbindung, überhaupt kein Thema, so. Du besuchst dieselbe Seite irgendwie auf 'ner mobilen Verbindung, auf 'nem kleinen Gerät. Boah, dann kriegst Du, ich weiß gar nicht, was was hab ich dir dann reingebaut? Weiß nicht mehr, aber irgendwie son son superkleines Zweieinhalb Megabyte Textmodell oder so was. Aber es ist dann halt auch schlechter, ne. Also das gehört ja dann auch irgendwie dazu. So und das ist auch wieder was, was man son bisschen mitkommunizieren muss dann zu sagen so, hey, ich kann dir gerade, also ich hab's tatsächlich versucht, ich kann dir mobil keinen Jam A4 anbieten, weil dein Browser halt abschmiert. Also ich hab wirklich Mhm. Vielleicht kleine Bugreport hier zu Transformers Jazz. Das ist wirklich superschwierig, diese großen Modelle mobil zum Laufen zu bringen, weil halt irgendwie, ne, Rahmen Limit und dein Browser schmeißt dich raus, wenn dein Prozess zu lange läuft und dein Download zu groß wird und so was, da könnt ihr nix für. Aber es ist halt was, was als als Developer auf einmal sone ganz neue Hürde ist, weil wir sehr lange uns sehr wenig damit beschäftigen mussten, ne. Als diese ganzen Mhm. Als so Mobile Internet irgendwie neu war, da war doch so, boah, Ram und wir müssen aufpassen und Assets dürfen nicht so groß sein und bla. Und irgendwann sind Smartphones so geil geworden, dass das überhaupt kein Problem mehr ist. Und jetzt müssen wir uns auf einmal wieder irgendwie darum kümmern, weil halt irgendwie mit Jamma 4 2 Gigabyte RAM in 'nem Safari Tab anzufragen mobil, halt nicht so geil ist und dann killt Safari dich halt so, ja. Ja, ja.
- Nico
- Voll. Also es ist, ich komm, Du meintest vorher mit den Tasks. LLMs sind megacool, eine Demo zu bauen, zum Zeigen, ich hab jetzt vor 'n paar Tagen hab ich grad mal Chrome Extension releast, Du hast keine Demo, wo Du eigentlich mit Gemma 4 gewisse Tasks innerhalb von deinem Browser ausführen kannst. Ist cool, weil die Chrome Extension ist in der Regel ein auf deinem Desktop PC. Du weißt, es ist nicht, also jemand lädt das runter und nutzt dann in auf verschiedenen Seiten. Das ist nicht eigentlich pro Origin, wenn man auf deine Extension einmal runtergeladen ist dort und kann, also grad Jamma 4 ist 'n mega, mega gutes Modell, was was Toolcalling angeht. Egal, welche Tools ich da reinschmeißt, ich kann meine eigenen Tools dafür bauen, die mir in meinem Browser irgendwas machen und es funktioniert dann einfach. Das funktioniert als Demo super. Aber würde ich jetzt einen LLM in meiner Production Applikation für meinen Webshop einbauen als Customer Support Agent? Auf gar keinen Fall. Also so. Aber Du hast dann halt andere Tasks, die, wie gesagt, geht nur on Device, macht überhaupt keinen Sinn, das in der Cloud zu machen. Background removal oder auch Automatic Speech Recognition sind so Sachen, wo Du halt gucken musst, wie ist die Qualität, wie ist die Größe vom Modell, welche Quantisierung, als das das Du Trade offs und da kommst Du zum einen zum anderen Schluss. Und ich denk, je weiter wir in die Zukunft denken, desto besser wird die Hardware und desto öfter wird die, wird die Entscheidung dann zugunsten von on device ausfallen. Aber doch, Du hast den Trade off und als Entwickler*in musst Du halt überlegen, was was ist mir wichtig? Ist Privacy wichtig für mich? Ist ist es wichtig für mich, dass ich keinen Server am Laufen halten muss, sondern ich möchte einfach meine Applikationen schippen und möchte, dass das Zeug bei den bei meinen Nutzer*innen läuft? Das sind die Überlegungen, die Du halt machen musst, wenn Du Transformers share verwenden möchtest gegenüber irgendwelchen Cloud Cardanbietern.
- Jan
- Ich glaub Garnit, wir hätten mal Benny einladen müssen. Der hat doch auch dieses Tool gebaut, was komplett im Browser läuft. Das wär ja auch eigentlich 'n cooler Use Case gewesen, damit Weber zu sprechen.
- Garrelt
- Ich mein, grade diese User Experience ist, glaub ich, auch sehr abhängig davon, was das eigentlich für eine Applikation ist. Also würd ich jetzt auf eine Shopping Seite gehen, wo ich 'n Chatbot öffne und der sagt mir erst mal, ja, Du musst erst mal 3 Gigabyte runterladen? Auf gar keinen Fall. Aber hab ich eine Web App, wo ich mich irgendwo anmelde, mir 'n Account erstelle und weiß, okay, hier kommt jetzt praktisch eine Funktion und da wird ja oft auch irgendwie gesagt, okay, wir initialisieren, was auch immer, dann würde ich schon viel eher akzeptieren, dass da auch mal was geladen wird oder so. Klar, vielleicht auch mit 'ner Nachfrage oder so, aber das kommt ja auch sehr praktisch auf den Bereich an, wo man's einsetzt, wie bereit ich dann bin, auch Dinge zu tun. Oder Nico, wie Du schon sagst, eine Extension ist auch wieder was anderes, ist selber Bereich, aber da wär's für mich auch komplett verständlich, wenn da irgendwas runtergeladen wird. Aber was ich noch spannend finde, ist dieses Thema, Jan, Du meintest eben, man kann das technisch gar nicht so richtig lösen, aber ich frag mich, ob man's zumindest 'n bisschen verbessern kann, indem man guckt, okay, was ist das hier fürn Gerät? Und kann, also habt ihr irgendwelche Features sozusagen, die erkennen können, okay, das Gerät hat nicht genügend Megabyte und dann fang ich gar erst gar nicht an, das zu laden. Und man hat als Entwickler die Möglichkeit, dann eben darauf zu reagieren und zu sagen, okay, sorry, das Feature ist nicht verfügbar, weil dein Gerät nicht stark genug ist. Weil das wär für mich wahrscheinlich sogar noch am sinnvollsten für UX, dann sagen zu können, okay, das Gerät muss mindestens so gut sein, sonst bringt das Feature auch, also macht das gar keinen Sinn.
- Nico
- Mhm. Haben wir im Moment noch nicht. Was wir haben, ist, wir haben mit Version 4 'n 'n Feature rausgebracht, das nennt sich. Und innerhalb von der hast Du verschiedene Helperfunktionen, zu überprüfen, ob 'n Model schon gecashed ist, ob 'n Model die großen Model ist und solche Sachen. Und dort haben wir auch eine Funktion, die dir zurückgibt, welche Quantisierungen verfügbar sind fürn Modell. Damit Du zumindest mal weißt, ja, hier könnte ich q 4 f 6 f 6, q 4 f 6 f 16 verwenden, so. Oder vielleicht gibt's es auch gar nicht bei dem Modell. Mhm. So. Wo wir im Moment grad dran sind, ist sone Art automatische Device Detection einzubauen, dass man auch einfach Device Auto eingeben kann und dann wird's die beste oder das beste Device, vielleicht Web GPU oder was auch immer, verwenden für das Gerät. Das Problem hier ist aber, dass es, man kann nicht einfach sagen, wenn Web GPU vorhanden, dann Web GPU, sonst Web Assembly, sondern je nach Modell, es gibt Modelle, die performen besser in der einen oder anderen Device, deswegen sind wir da noch nicht noch nicht so weit. Ist 'n bisschen komplexer, dass das von außen aussieht. Aber da sind wir dran. Und dann, was das größte Problem ist, ist die Geschichte mit dem mit dem Ram. Also sprich, selbst wenn ich genügend Ram hätte, 'n Modell zu laden, ist ja dem noch die Frage, wie viel brauch ich, ums auszuführen, grad bei 'ner längeren, also wenn wir 'n LLM nehmen, hast Du, je länger die Konversation wird, desto mehr, desto größer ist dein Cavy Cash jedes Mal, wenn's der neue nächste Token generiert wird. Es wird alles, irgendwann erreichst Du halt dann 'n 'n Limit. Und ich weiß auch nicht, wie gut die Detection ist. Ich weiß nicht, ob der Browser dir einfach so sagt, wie viel Rahmen zur Verfügung steht oder noch frei ist. Es gibt diverse APIs, da habe ich gehört auch, dass sie footprint mäßig sehr konservativ sind. Dumm. Mhm. Ja. Einfach ist es sicher mal, nee, ist auf keinen Fall einfach. Und dann hast Du ja, mit Mac ist es einfacher, weil Du halt wenig Geräte hast und und wenig Konfiguration. Mhm. Aber sobald Du's dann öffnest zu Mobile und Windows und so, dann hast Du so viele verschiedene Konfigurationen. Und ja, der Browser ist 'n guter Abstruction Layer, die ganzen Device Eigenschaften 'n bisschen wegzuabstrahieren, aber das Grundproblem bleibt, dass Du so viele verschiedene Hardware hast, dass Du gar nicht genau sagen kannst, wie, was, auf welcher Hardware funktionieren.
- Jan
- Also es gibt es gibt ja so Webseiten wie canar Use LLM dot com und local LLM dot run, die im Prinzip genau so was versuchen, gehst mit deinem Browser drauf. Dann kommt sone Model Registry und da kannst Du reingucken und sagen, hier, ich hab jetzt mal bei can Air Use LLM dot com hab ich mal Jam a 4 eingegeben. Und dann sagt er so, na ja, Du solltest mindestens 4 Gigabyte RAM haben und Du solltest irgendwie Gpu mitbringen und bla bla bla. Und da siehst Du aber schon, dass mein Mac nur mit 32 Gigabyte RAM hier grade erkannt wird. Ah. Was halt Murks ist, weil ich hab 100, also 96 Gigabyte so, ja. Und irgendwie scheint der Browser davon nicht alles mitzubekommen oder vielleicht vom System auch gar nicht alles zu kriegen so. Ja. Also tricky so, ne. Ne. Aber also zeigt nur, was Nico gesagt hat, so. Es ist halt sehr schwierig, so so voll zu automatisieren. Und ich glaube, Garald, das ist halt das, was was wir als Entwickler, Entwicklerinnen am Ende des Tages noch mitbringen müssen so, ne. Also aktuell und vielleicht niemals, das ist halt nicht die Aufgabe von Transformer JS, das irgendwie grade zu entscheiden, weil das musst Du halt auch machen basierend auf, was willst Du von deinem Model? Was am Ende wichtiger, dass das irgendwie 'n maximal großes Modell reinpasst, weil Du halt viel Wissen drin haben willst? Oder ist dir wichtiger, dass es maximal schnell performt und mehr Tokens pro Sekunde irgendwie ausspucken kann? Dass ja auch wieder eine 1 Use Case oder eine 1 produktspezifische Entscheidung am Ende, die ja gar nicht technisch bedingt ist.
- Garrelt
- Na ja, klar, aber Pathis, wenn meine Antwort ist, ich will die maximale Qualität, dann muss ich ja immer noch drüber nachdenken, was mach ich mit Usern, die das gar nicht ausführen können. Und dann praktisch, möcht ich ja eigentlich auch nicht sagen, ja, probier's mal runterzuladen und wenn Du abstürzt, dann sag ich dir halt, ja, das geht nicht so. Also das wär ja schon irgendwie auch nett, wenn man's halt schon vorher irgendwie abfangen kann, so,
- Jan
- ne. Ja, und leider muss man da halt auch sagen, also wie gesagt, ich kann jetzt nur über Safari sprechen, weil ich's ja auf Mobile iOS probiert hab. Mhm. Das Browserverhalten ist halt auch nicht gerade developerfreundlich an der Stelle. Ja. Also in dem Fall, was ich hier probiert hab, als ich, wie gesagt, mit mit Jammer, 'nem sehr großen Modell halt versucht hab im im Browser, der der schießt halt einfach deinen Tab ab und lädt ihn neu. So und Du kriegst halt als Webanwendung nicht mit, dass das passiert ist und warum das passiert ist und bla und kannst Du halt auf keinster Weise drauf reagieren. Das Einzige, was Du machen kannst, ist halt, Blutforce noch mal zu versuchen. Und vielleicht kommst Du noch mal genauso weit oder vielleicht wirst Du vorher abgeschossen. Mhm. Aber das ist halt superschwierig, ja? Bei nativen Anwendungen kriegst Du irgendwie eine Memorywarnung vom Betriebssystem, hast Du sone Chance, noch mal was aufzuräumen, was anders zu machen, bla bla bla. Und der an der Stelle hat der Browser halt einfach so, ja, nö. So. Und das ist halt was, wo's 'n bisschen schwierig ist grade noch, ne?
- Nico
- Ja. Ich mein, unterm Strich ist ja alles, was on device läuft, bist Du davon abhängig, was das device ist. Ja. Und grade wenn Du's im Web machst, ist es noch viel schlimmer, weil Du nicht kontrollierst, wer deine Webseite nutzt, weil jemand, jeder gibt die Uhr allein, kommt drauf und Du hast keine Ahnung, was was deine Nutzer*innen für für Hardware mitbringen. Und das, ja, wie gesagt, das ist Es kann ja auch die
- Jan
- Anlehnung scheiße sein. Also stell dir vor, das Gerät ist megagut, aber der hat halt Ja. 'n superschlechten Empfang und dann hilft es dir ja auch nix zu sagen, hey, dieses dieses Background Removel Model, was nur, weiß nicht, 20, 50 Megabyte groß ist oder so was, ja, könnte locker auf deinem Gerät funktionieren, dauert aber grade 2 Stunden, bis es irgendwie da ist. So. Hilft ja auch jemandem.
- Nico
- Ja. Nee, deswegen guck, was was Du dann was welchen Task Du damit lösen möchtest. Schau, welche Modelle verfügbar sind. Wie groß sind die Modelle, welche Quantisierungen? Ich hab auch, also es gibt Modelle, da gibt's zwar eine q 4, also 4 Bit Quantisierung, aber ist eigentlich unbrauchbar dann. Guck dir die Qualität an und dann musst Du halt entscheiden, ist das was, was Du so shippen möchtest mit deiner Web App oder ist es halt noch nicht so weit oder wird nie so weit sein, keine Ahnung. Was ich aber krass finde, ist, grad bei LLMs, wie sich die Qualität in den letzten paar Jahren verbessert hat. Also Du hast jetzt, kannst Du grad, so, so viel besser das 2 b Modell als einen Mistral 7 b, was sich vor 2, 3 Jahren getestet hat. Also, nicht die Jahre so. Wenn man sich dann überlegt, wie und es gibt auch kleinere Modelle, es gibt 'n Jämmer 3 270 m, also da passiert so viel, dass ich jetzt nicht 'n Status quo nehmen möchte und sagen, ja, guck, funktioniert nicht, deswegen wird's nie was.
- Garrelt
- Es ist so wild, was die so in so kleine Modelle dann auf einmal für so viel bessere Qualität packen. Also die, ich sag mal, die die großen Cloud Modelle, die werden ja meistens besser, weil sie einfach noch größer gemacht werden, ne, und dass es in die andere Richtung aber auch geht, das verwundert mich jedes Mal wieder. Ich find's richtig krass. Also ja, absolut. Ich find 'n bisschen anderes Thema interessiert mich noch. Es ist ja, also ihr, das ist eine krasse, die Endnutzern extrem viel bietet. Ihr bietet diese Modell Downloads an und trotzdem ist es alles open source for free, oder? Hab ich's da irgendwas übersehen? Das find ich krass, wie, also wie könnt ihr so was zur Verfügung stellen? Das ist vielleicht 'n bisschen anderes Thema, aber das find ich interessant.
- Nico
- Das hat viel mehr der Philosophie von Hackingface zu tun. Mhm. Also, Joshua und ich, die sind ja beide angestellt bei Hackingface und sind beide 100 Prozent für die angestellt. Mhm. Und die Philosophie von Hackingface ist halt, dass sie über Open Source ihre Plattform nicht nur promoten, sondern auch ganz viel von den Open Source Projekten aktiv nutzen. Mhm. Wir haben eigentlich 3 Arme, kann man sagen, bei Haken und Face. Wir haben auf der einen Seite den den Hub, die Plattform, also eigentlich dieses ganze Team, was die Plattform verwaltet. Aber das ist auch von den Mitarbeitenden, glaub ich, ungefähr 'n Drittel. Und die anderen 2 Bereiche sind dann Research, was auch 'n großer Teil ist, also selber sich selber Modelle bauen, selber Architekturen überlegen, selber in in Datasets investieren. Also, wie kommt man zu qualitativ hochqualighting Datats und so weiter und so fort. Und dann hast Du noch den Open Source Arm. Mhm. Und Transformers j s zum Beispiel bringt jetzt nicht direkt der Plattform was, außer Visability natürlich. Mhm. Aber die Transformers Python library oder auch die anderen Open Source Libraries, das sind halt Sachen, die wir aktiv in der Plattform selber auch nutzen.
- Garrelt
- Mhm. Und
- Nico
- deswegen sind es wie Elemente von HGGFace, die aber dann auch Open Source zur Verfügung gestellt werden.
- Garrelt
- Ja, okay. Und die Datasets, die macht ihr, von denen macht ihr auch viele Open Sourcen öffentlich, oder? Also das ist ja auch 'n großer Teil von HGFace. Ja.
- Nico
- Aber nicht nur, also die meisten Datasets sind auch wieder Communityprojekte, wie auch die meisten Modelle. Mhm. Also als Google, das durfte so immer das Beispiel, aber es war halt grad erst vor Kurzem, Wenn Google Jamma 4 released, dann machen die das auf Hogingface, dann sind die die Weides und und Modelle sind sind auf Hogingface in der Regel. Genauso wie wenn Research Labs ihre Datasets Open Source, dann ist es in der Regel auch über Hogingface und je nach Lizenz kommen die Datasets dann auch für seine eigenen Modelle oder fürs eigene Feintuning verwenden.
- Jan
- Aber trotzdem, also ja, die Arbeit kommt von der Community oder von großen Firmen, aber am Ende bleibt ja 90 Prozent der Traffickosten bei euch irgendwie hängen. Und das ist ja auch nicht grade wenig, ja? Also ich weiß nicht, wie oft ich jetzt hier während meinen Versuchen einfach mal so Jama 4 runtergeladen hab, aber das sind halt jedes Mal 'n paar Gigabytes und das geht alles irgendwie auf eure Kappe. Und da
- Nico
- hab ich
- Jan
- schon auch so am Ende son bisschen schlechtes Gewissen irgendwie. Ja. Aber also, ne, weil weil weil Du sagst so, die Arbeit machen ja die anderen, aber ich mein, die Infrastruktur betreibt ihr ja schon. So, das muss man ja schon mal irgendwie sagen.
- Nico
- Nee, also wir machen viel Arbeit. Das ist überhaupt nicht so gemeint, dass wir dass wir nix machen müssen, als wenn der Community kommt. Ich ich weiß nicht, unterm Strich, das Businessmodell geht auf. Also man hat, wir haben über 'n Hub hast Du halt diese diese Pro Accounts, die Du haben kannst und das ist eigentlich so die, soweit ich weiß, die Haupt, aber ich bin Das ist echt nicht mein Fachgebiet, aber grundsätzlich haben wir diese Pro Accounts, genau wie GitHub zum Beispiel auch, wo Du grundsätzlich Open Source Software zur Verfügung stellen kannst, aber wenn Du Modelle nur in deinem Team sharen möchtest, private Modelle oder private Datasets haben möchtest und auch größere Datasets hochladen möchtest, dann brauchst Du halt einen pro Account und damit dann halt mit mit mit verschiedenen Labs arbeiten mit zusammen, dass die das dann auch wie finanzieren. Und über das finanziert sich dann die ganze Plattform und die ganzen Projekte rundherum.
- Garrelt
- Krass. Das find ich erst 'n besonderes, also besonderes Konzept, wie ihr das hinbekommen habt, dass ihr so viel anbieten könnt und es für euch trotzdem aufgeht. Also Respekt. Ja.
- Jan
- Ja. Machen wir, dass das Also ich finde lange so weiter funktioniert für uns alle.
- Nico
- Ja, ich bin erst seit 'nem halben Jahr dabei, von dem her, ich kann jetzt nicht da ausm Nähkästchen plaudern, wie das alles war von Anfang an, aber ich find's genauso krass wie ihr auch. Mhm.
- Jan
- Aber wir kommen vielleicht noch einmal ganz kurz oder nein, ja. Halb zurück zu Prince Format. Weil ich glaube, ein Thema, über das wir auch sprechen müssen, ist son bisschen die, ich will nicht sagen, die die Konkurrenz, aber vielleicht die Alternative dazu, ja? Weil grade, wenn wir jetzt bei diesem Thema im Browser bleiben, gibt es ja auch so die Entwicklung, ich glaub, maßgeblich getrieben von Google, abstrahierte Gen AI APIs vom Browser aus anzubieten, ja, wo die Idee ist, Du hast auf deinem Window halt son AI Property und da kannst Du halt auch sagen, ne, hier, ich mach 'n bisschen Text Inference, ich mach Bildergeneration. Ich weiß nicht, was da grade alles noch so so drin ist. Aber die Idee ist halt dahinter, ja, es muss nicht jeder sein eigenes Modell mitbringen und runterladen und verwalten, sondern wir schippen halt mit dem Browser irgendwie ein Modell oder oder 2, je nach Use Case, whatever. Und das kannst Du halt fragen, so, hey, hier ist Text und und prompthe mir mal was und und mach mal was so. Und das ist halt im Prinzip noch eine viel geringere Hemmschwelle, ja, weil ich den ganzen Infrastrukturteil an den Browser irgendwie abgeben kann und nur noch in Anführungszeichen Anwender irgendwie davon sein kann. Wie guckt ihr da drauf? Ich hab da auch eine Meinung, aber ich würde erst mal deine interessieren.
- Nico
- Ich find das Projekt super. Also ich hab viel mit der Prompt API gemacht, grad am Anfang, als sie die die ersten, den ersten drauf mal rausgebracht haben. Und die Idee ist, dass der Browser, also genau wie Du gesagt hast, das Windows Objekt, verschiedene AI Funktionen zur Verfügung stellt und dass ich dann als Entwickler nur noch sagen muss, hey, ich möchte gern, weiß nicht, wie es heißt, ich glaub irgendwas, keine Ahnung, Textgeneration verwenden oder so, geborene meine Messages rein und der Browser generiert mir das dann entweder, weil der Browser eine Modelle geladen hat und ausführt oder weil der Browser das weitergibt an an, keine Ahnung, an Apple Intelligence, was aufm Gerät läuft oder was auch immer. Das ist ja dann die Frage, wie das der Browser implementieren möchte, so. Finde ich finde ich finde ich gut, dass es ist. Wo ich 'n 'n kleines Problem sehe, ist, dass ich als Entwickler dann nicht mehr sagen oder nicht mehr kontrollieren kann, welches Modell verwendet wird. Mhm. Weil Mhm. Jetzt im Fall von von Chrome ist es ja ist ja das Gemini Nano, was im Hintergrund läuft. Erstens ist das Modell nicht mehr das Jüngste. Der ist auch schon 'n paar Monate bisher 'n paar Jahre alt und sicher auch schlechter als das Gemma 4. Und ich weiß jetzt, dass Chrome zwar Jamma eine Nano verwendet, aber angenommen Apple hat das auch drin, dann gibt es, keine iOS gibt's dann vielleicht jetzt aber den Intelligence weiter und dort hinten dran ist ein sonstigen Modell. Ich weiß nicht, was die verwenden Oder Firefox hat dann noch 'n 'n 'n 'n
- Jan
- 'n 'n 'n
- Nico
- 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n 'n
- Jan
- 'n 'n 'n 'n
- Nico
- 'n 'n 'n 'n Modell, weil keine Ahnung was. Und ich als Entwickler sehe halt nicht, wird jetzt, wird jetzt 'n von oder verarbeitet oder von Quen oder von was auch immer. Und je nachdem, welches Anteil ich verwende, gibt's halt schon Unterschiede. Und kann sein, dass die Unterschiede mit der Zeit sich, dass dass dass die sich immer weiter annähern, dass man keine Unterschiede zwischen den Quellen und einem einem Jemmmer. Kann sein, aber ich habe keine Kontrolle übers Modell. Das finde ich 'n Nachteil.
- Garrelt
- Wahrscheinlich, Normalität wird wahrscheinlich sich annähern, aber trotzdem haben die ja oft Eigenheiten. Also man merkt ja schon, ob man mit mit Open Air Modellen oder mit Entropic Modellen redet, ne. Und die antworten halt anders. Das ist dann nicht so interessant, ja.
- Jan
- Ja, und das auch Was? Das das Modell selbst ist das eine, ne, zu sagen, hier bei Firefox ist es irgendwie 'n Gwen und in Chrome ist es irgendwie Jammer oder so was hinten dran, ja. Aber was ich viel schwieriger finde, wär dann zu sagen, ich weiß ja nicht mal, welche Version von diesem Modell oder wann das aktualisiert wird oder so was, ne. Weil ich könnte natürlich sagen, na gut, wenn ich in 'nem Firefox bin, das kann ich irgendwie rausfinden, dann ich meinen Prompt irgendwie an. Wenn ich in 'nem Chrome bin, mach ich halt dieses son, also ne, son bisschen 'n paar Weichen in die in die Prompting Strategie reinbekommen. Mhm. Aber es kann mir halt passieren, dass von heut auf morgen alle Chrome Browser irgendwie mit 'nem anderen Modell daherkommen und ich halt überhaupt keine Chance hatte, das quasi zu testen, meine Prompts anzupassen, die anzupassen et cetera et cetera. Mhm. Und Du gibst dann quasi son son sehr großen Teil von deiner Infrastruktur aus der Hand, was ja grade so bei nichtdeterministischen Features schon schwierig sein kann so, ja? Das find ich den den viel schwierigeren Teil. Also was jeder sein anderes Model mitbringt, damit könnt ich wahrscheinlich noch leben, aber dass ich überhaupt keine Garantie grade habe, dass es keinen Contract gibt zu sagen, hey, wenn ich diese API benutze, dann würd ich gerne diese Version von diesem Model irgendwie haben, ja, von der ich weiß, wie sie funktioniert und wie sie reagiert. Und das finde ich so aus Production Sicht viel schwieriger, ja, als die die Auswahl des Models.
- Garrelt
- Obwohl ich mir da ja schon vorstellen könnte, dass die Browser auch, wenn sie 'n Update machen, dann das alte Modell noch eine Zeit lang anbieten und man sone Übergangszeit hat, oder? Also ich mein
- Jan
- Aber die API sieht das halt grade nicht vor, ne? Also wie Nico gesagt hat, die API ist halt Windows Punkt a I Punkt generate Text, sag ich jetzt mal, ganz vereinfacht und da gibt's halt Du hast keine Metadaten. Genau. Das ist
- Nico
- halt wirklich so nutzig, so wie sie jetzt ist, aber Du hast keine Ahnung, was hinten dran läuft. Okay. Vielleicht ändert sich das auch noch. Also, wie gesagt, ich ich hab sie viel verwendet, gerade am Anfang, weil ich's 'n spannendes Thema finde und ich find's auch immer noch spannend. Ich find das super, wenn man wenn man sich so Sachen überlegt, auch als als Standardisierungslayer. Auch wenn das jetzt nicht die prompt API wird, aber dass man zumindest Teile davon rausnehmen kann und sagen kann, hey, das ist 'n 'n gutes Konzept, das werden wir weiterhin verwenden. Ich glaub, Stand jetzt ist es ja auch noch nicht in 'nem normalen Chrome, wenn ich's richtig im Kopf hab. Du bist ja erst oder wenn überhaupt, dann behind the flagg und alles Mögliche.
- Jan
- Nur hinter dem Flak, ja.
- Nico
- Das ist sehr, es ist immer noch
- Jan
- in 'nem
- Nico
- sehr, sehr frühen Stadion.
- Jan
- Was ich hingegen gut finde an dieser Implementierung, ja, ist zum einen, dass es natürlich hardwarenähe läuft. Also mein mein Browser ist halt einfach viel mehr an meine Hardware dran, als meine Webseite jemals sein kann, so auch mit WebGP und Web Assembley. Und das nimmt mir als Endnutzer son bisschen die Sorge, wie gut sich Leute halt benehmen am Ende damit. Also wenn jede Webseite Worst Case, sag ich mal, 'n Jamert 4 Modell runterladen kann, ja, dann wird ja irgendwann meine Festplatte zugespamt so damit. So, wenn wenn jeder jetzt anfängt, seine eigenen LMs runterzuladen, zu cachen und auf Dauer vorzuhalten und nicht ordentlich hinter sich aufräumt, ja, dann hab ich irgendwann 'n Browsercash, der halt Hunderte Gigabyte groß ist. Und das wahrscheinlich nicht mal übertrieben, ja, weil ich mein, guck dir an, wie viele unterschiedliche Webseiten wir alle benutzen. Und wenn jeder nur 20 oder 50 oder 100 Megabyte davon irgendwie nutzt für für so Features, ja, dann geht das halt schnell hoch. Ja. Und das ist natürlich was, was vermieden werden kann, wenn man sagt, na gut, wir wir teilen uns alle ein Modell und müssen nicht pro Origin, ne, wie Nico vorhin gesagt hat, das halt irgendwie neu runterladen, sondern wir können da irgendwie eine 1 gescherte Architektur verwenden. Das wär halt auch noch irgendwie 'n Punkt zu sagen, da das lohnt sich das irgendwie, sich mal anzuschauen.
- Nico
- Ja, wenn ich kurz einen Punkt dazu sagen kann, es stimmt, was Du sagst. Es ist so, weil wir halt diese Cross Origin oder Origin Isolation haben in den Browsern, ist es so, dass wenn wenn meine Webseite, Nico Punkt dev, 'n Modell runterlädt vom Hubingface Hub, dann und die andere Webseite Amazon com oder was auch immer, es dasselbe Modell auch runterlädt, dann ist es nicht, sondern jede Origin hat seine eigenen Storage.
- Garrelt
- Shit.
- Nico
- Aber Stand jetzt ist es so. Was ich weiß, ist, dass auch jetzt Chrome, die arbeiten an 'ner Cross Origin Storage API. Mhm. Auch da ist, aber da ist dann die Idee, dass man für in bestimmten Konstellationen erlaubt, also ja, storage zu sharen zwischen Origins. Wir haben in Transformers Jazz haben wir das eingebaut. Heißt, wenn dein Browser Cross unterstützt, was wir im Moment erst über einen über einen Chrome über eine Chrome Extension geht. Ist auch so, ihr erster ihr erster Wurf ist mal eine Chrome Extension. Da können Entwickler erinnern, die sich interessieren, können's den mal installieren und das mal ausprobieren. Und wenn Du die Chrome Extension hast, dann kannst Du in Transformers Jazz in 'n flag auf setzen und dann wird die Cross Origin Storage API als Cash verwendet. So. Cool. Und das löst das Problem, aber es löst halt nichts Problem, dass Du eben noch verschiedene Devices hast und in deiner Webseite ist drinläuft und so weiter und so fort.
- Jan
- Cool. Ich hab son bisschen Angst, wie das für Tracking missbraucht werden kann, wenn das irgendwann mal wirklich so als weitverbreitetes Feature kommt. Aber ich seh für euren Case auf
- Nico
- alle Fälle die die Nützlichkeit dadrin. Es, Sie haben sich viel Gedanken gemacht. Zum Beispiel, Du musst den vom File wissen, was Du runterladen möchtest und nicht die URL. Das ist der der Key zu dem Story ist nicht die URL, sondern der vom vom File Content. Das heißt, Du musst den Content eigentlich kennen. Du kannst, es reicht nicht einfach zu gucken, was ist denn da, was liegt denn da so rum, sondern Du musst halt genau den kennen. Ja. Und es ist auch noch nicht eben, wie gesagt, ist noch nicht mal als, ist noch nicht mal in 'nem oder so drin. Ja. Das ist wirklich, aber das ist so Das ist so sehr series Page und genau die Von
- Jan
- reach only storage, ne?
- Nico
- Nee. Also wenn
- Jan
- ich den kennen muss, dann kann ich ja nicht die Datei wieder umschreiben, oder? Weil sonst kann ja der andere, der die runtergeladen hat, nicht mehr drauf zugreifen, weil der hat sich ja grade geändert.
- Nico
- Ja, okay, Du kannst es nicht, genau, Du kannst es nicht überschreiben, aber Du kannst halt eine neue Version ablegen.
- Jan
- Ah, okay. Okay. Das muss ich mal gucken, ich sag mal hier, weil da sieht's.
- Nico
- Und bei uns ist es so, dass Du kannst über übern Hubingface hub kannst Du einen kleinen machen, der dir den herrscht zurückgibt, so mit der Information übers File. Ja, ja. Und dann hast Du den den und kannst dann gucken, ist der im im drin? Wenn ja, gib mir das zurück, wenn nicht, lad's runter und pack's dann in in in rein. Cool.
- Jan
- Cool. So, yeah. Garved, hast Du jetzt Bock auf Transformers Jazz? Musst Du mal benutzen?
- Garrelt
- Boah, ich hab Bock. Also ich hatte auch schon 'n kleinen Use Case, wo unn nix, also unnicks heißt das ja, ne. Aber man schreibt das unn nix, oder?
- Nico
- Es ist Open Neurol Network Exchange Standard, also auch. Onix.
- Jan
- Also Du kannst es auch Onix. Onix. Aus Onix.
- Garrelt
- Also ich hab auch Onix schon mal so Bairbones verwendet, weil es aber auch in der App war, und zwar in der Programmierkorn App. Und da hat es die praktisch die Bilder, die man gemacht hat von der Folie, hat es probiert, die Folie zu extrahieren, sodass man nur die Folie als Bild hatte.
- Jan
- Ah, ice.
- Nico
- Und das
- Garrelt
- war 'n echt cooler Use Case, weil da dachte ich auch so, oh, sone sone Konferenz App hat man oft kein Internet. Das ich fänd's cool, wenn das lokal läuft und wollte natürlich auch keinen Server dafür irgendwie zur Verfügung stellen. Da war's schon sehr spannend. Ich weiß gar nicht, Creative und Transformer. Js würde wahrscheinlich nicht so gut funktionieren. Na ja, Du hast schon den Kopf.
- Nico
- Na ja, noch nicht. Wir haben 'n paar Tasks offen oder a ist offen, halt so Cross Plattform Frameworks zu unterstützen. Mhm. Ja. Und es ist immer son, ja, machen wir mal, aber ist jetzt noch, ist halt nicht wirklich. Wir haben Ja. Sachen, die uns wichtiger sind im Moment.
- Garrelt
- Ja klar. Ich glaub, das würde auch kein, also der Use, wie sagt man, die Nutzung davon wär wahrscheinlich nicht sehr hoch. So, für mich wär's geil, aber wahrscheinlich
- Nico
- nicht so viele Leute.
- Garrelt
- Und ich find einfach diesen Gedanken, deswegen wär's wirklich cool, Benny eigentlich da gehabt zu haben, weil der hat ja sone App gebaut, wo man sich die die App nicht mehr über son Menü konfiguriert, sondern über den Chat sozusagen. Also der Chat lokal hat Tools bekommen, die dann lokal die Version sozusagen konfiguriert. Und das find ich sone coole Idee, weil ich im Moment noch mal
- Jan
- genauer, ich dein Einbruch
- Garrelt
- würde Ja, ich oder? Ich erklär's jetzt noch mal. Also in in 'nem Use Case, wo ich dachte, das wär total geil. Ich hab mir jetzt Image, ich glaub, das hast Du mal als Peak of the day gepitzt, Jan, das ist praktisch eine Open Source Bilder, wie sagt man, eine Software Ist
- Jan
- son Google Fotos Fotos von eigentlich.
- Garrelt
- Google Fotos Klon, den Du auf deinen Nas packst und damit so deine Bilder verwaltest. Und da ist halt so, die haben dann sone Verwaltungsseite und da sind halt, keine Ahnung, 30 Dinge, die Du machen kannst. Und ich denk mir so, ich würde eine spezielle Sache machen und da sind dann LLMs meistens auch irgendwie nicht so smart, weil die dann nicht genau wissen, wo diese Option ist. Da konnten sie mir echt nicht gut helfen, aber wie geil wär's denn, wenn anstatt dieser riesigen Liste da 'n Chat ist und ich sage, hey, ich würd gern, keine Ahnung, mal meinen User aufräumen? Und der sagt, klar, mach ich. Und also das ist so ein geiler Use Case, den ich gern mehr explorieren wollen würde, weil ich brauch nicht diese 30 Optionen. Ich will einfach, was dass der was macht, so. Und deswegen hab ich extrem Bock drauf bekommen und ich werd auf jeden Fall mal weiter explorieren, was, ja, was man damit so besser malen könnte.
- Jan
- Nice. Ich
- Nico
- hab Bock. Nice. Cool. Nee, ich, also grad so Gentlem Der
- Jan
- Kugel Stempel drauf, so. Ja, cool. Nee, ich mein Ja, genau.
- Nico
- Die die meisten U-Wis, die man hat, irgendwelche Einstellungen vorzunehmen, ist halt irgendwo, Du möchtest alles mit dir reinpacken, aber weißt halt auch nicht, wie's übersichtlich wird und so. Und mit so was, hey, man kann's probieren, eben grad, so grad so Single Tool Use Cases sind halt kleine Modelle megagut. Sollen wir auch sagen, Du musst mir nicht erklären können, wie die Welt funktioniert. Du musst einfach gucken, hab ich 'n Tool, was mein mein Darkmode ein- oder ausmacht und dann dieses Tool betätigen.
- Garrelt
- Ja. Das ist easy.
- Jan
- Oder stell
- Garrelt
- dir vor, stell dir vor, Du hast einfach eine Liste von Daten und gar keinen Filter Button mehr, sondern sagst ihm einfach, hey, filter mir mal das nach da, also keine Ahnung, nach dem Namen oder so. Und dann erstellt er dir Javascip, der das einfach filtert sozusagen. Also Du kannst, Du hast neue Use Cases, wo er
- Nico
- dir dann irgendwas erstellt. Ja. Das das wird dann komplexer, weil Du dann ja Ja. 'n Tool hast, was Code generiert, Also, da klar, das ist eigentlich die Grundlage von 'nem Pi oder von jedem Agentic Framework, klar. Ja. Aber jetzt grad für kleine Modelle müsst man sich ja ausprobieren und ich weiß auch nicht, wie stark man dem Output vertrauen kann, dass man einfach so JavaScript, was aus 'nem Jam mal 4 2 w rauskommt, einfach so mal laufen lässt im eigenen Klar.
- Garrelt
- Text oder so. Ja, auf jeden Fall. Aber ja. Das sind Hürden, die zunehmen sind, aber wie Du schon gesagt hast, Du würdest nicht vertrauen, dass es in der Zukunft vielleicht auch mit 'nem kleinen Level extrem gut geht. Und ja, Safegards auf jeden Fall Thema so, aber weiß nicht, das ist son Sache für mich, die sich irgendwie, die macht mir, also da da passiert was mit mir, wenn ich so denke, ja, man muss es gar nicht mehr entwickeln, sondern das was macht dann der User sozusagen selbst mit seinem LLM. Das Ja. Ja.
- Jan
- 'N Schoko, hast Du noch Mhm. Fragen, von denen Du dir gewünscht hättest, dass wir sie gefragt hätten und jetzt denkst, keiner hat mich gefragt zum Thema x y. Ich wollt unbedingt darüber reden.
- Nico
- Nee, ich glaub, wir haben alles gecovert. Nee, vielleicht explizit noch 'n Hinweis auf Transformers Jazz Version 4. Die ist recht cool, die ist vor 'nem Monat plus minus rausgekommen und da haben wir grad am Ende geholt haben wir extrem vieles verbessert. Zudem haben wir eine neue library, die nennt sich tokenias JS. Mhm. Und da haben wir den Tokenizer, der den wir bis jetzt in Transformers JS drin hatten, von 'nem also von von Messages Arrays zu 'nem Chat Template zu kommen, von 'nem Chat Template dann zu 'nem zu den Inputtents und so. Den haben wir extrahiert in den eigenes in eine eigene Library, weil wir gesehen haben, dass das nicht nur Transformers Jazz verwendet, sondern es gab Projekte, die haben nur Transformers Jazz verwendet, den Tokenizer zu verwenden, weil der Jama 4 Tokenizer, der ist der gleiche, ob ich den jetzt mit mein mit Transformers und Onyx verwende oder ob ich meine eigene dafür baue. Mhm. Den haben wir vor kurz oder mit oder vor Version 4 auch noch released, aber sonst,
- Garrelt
- ja, haben wir alles.
- Jan
- Mhm. Wunderbar. Wir haben aber noch nicht ganz alles, weil was fehlt noch, Garelt?
- Garrelt
- Die.
- Jan
- Und da stellt sich zuallererst die spannende Frage, waren, ich muss kurz auf die Uhr gucken, 68 Minuten genug Zeit, dass Garritz sich einen Pic auf der, der überlegt hat?
- Garrelt
- Auf jeden Fall, aber ich musste mir gar keinen überlegen. Ich hatte, ich bring den von letztes Mal mit, den ich dann nicht gemacht hab. Ah, Recycling, das ist cool. Recycling und zwar lustigerweise, Niko, Du hast ihn ungefähr vor 5 Minuten genannt, aber ich glaube, es geht unter, weil dieser Name so unscheinbar ist. Und zwar hast Du Pi gesagt. Und ich bin mir ziemlich sicher, dass Du den, das, den oder das Pi meinst, was ich als Pick mitgebracht hab. Und zwar gerade, wenn wir auch heute über lokale Modelle gesprochen haben, ich experimentiere sehr gerne auch mit Coding Agents rum. Und dann ist halt die Frage, okay, wie lässt man die laufen? Weil Cloud Code ist ja ja nicht so freundlich, was andere Modelle angeht. Und es gibt ja Open Code, was ich auch eine Zeit lang benutzt habe, was irgendwie so ist, aber deswegen auch irgendwie sehr heavy und bei mir auch oft irgendwie langsam und backgy. Und Pi ist da so der Gegenansatz. Der ist superbarbones, kommt mit sehr minimalen Dingen, aber funktioniert erstaunlich gut und gerade irgendwie mit lokalen Modellen hab ich da sehr gute Erfahrungen. Und das Coole ist irgendwie, es ist sehr darauf ausgelegt, dass man es selbst erweitert, indem man ihn fragt, es sich selbst zu erweitern. Und das ist ist irgendwie, weiß es nicht, das macht was mit mir. Und es ist natürlich nicht nur mit lokalen Modellen, sondern auch mit allen, die ihr kennt, nutzbar. Tropic ist ja immer son bisschen, muss man aufpassen, dass man da nicht gesperrt wird, aber Open Air Modelle, alles kein Problem. Checkt den aus, sehr cool, ist von 'nem Österreicher entwickelt. Ich hoffe, wir quatschen irgendwann auch mal mit dem, der Mario Zechner. Ist der, glaub ich, Zechner? Mhm. Genau, das wär mein Pick. Irgendwie find ich das nice. Also es ist 'n cooles Projekt. Auch übrigens Funfact, Openclaw basiert auf Pi sozusagen. Openclaw ist ja wahrscheinlich viel ein Begriff.
- Jan
- Also Mario, wenn Du uns zuhörst, schreib uns mal an Podcast als Programmier Punkt bar. Wir machen die Aufnahme dann nice. Ja, einfach mal die Leute im Podcast einladen, so. Vielleicht funktioniert das ja.
- Garrelt
- Ah, im Podcast zum Podcast einladen, ja.
- Jan
- Ja, ja. Du weißt ja nie, wer so alles zuhört. Vielleicht vielleicht ist es nicht Mario, aber vielleicht, weiß ich nicht, seine Schwiegermutter oder so, ihm dann anstrahlt, so, hey Wahrscheinlich. Mario, ich hab's schon mal so bei mir mal gehört. Solltest dich mal bei den Jungs melden. Nice, Pi, ja mega cool. Ich bin gespannt, ich werd auch mal was dazu hören. Na, vielleicht kannst Du mal 'n Talk bei uns machen, gerad, zum Thema Pi. Gerne. Nico, was hast Du so am Start für uns?
- Nico
- Ich ich hab's ein bisschen schwer gemacht, weil
- Jan
- als
- Nico
- ich in 20 20 da war, ging's ja WordPress. Und wisst ihr, was damals beim Pick of the day war?
- Jan
- Ich kann's nachgucken, aber ich weiß es nicht mehr.
- Garrelt
- Weiß ich auch nicht.
- Nico
- Mein Pick of the day war mein Projekt, das war hat sich PWAdvent genannt, also es ging den Adventskalender mit progressive Webbleaches. Das 2., als ich da war, ging's PWAS. Ja. Und man wisst ihr aus meinem Pick of
- Jan
- the day? Und da war der, das weiß ich noch, Transformers Jazz, weil da war ich
- Nico
- schon grad. Ja, mein Pick of the day Transformers Jazz Version 3. Heißt, das, was ich jetzt als Pick of the day nenne, wird wohl nicht Thema sein. In Folge. Ja. Genau, genau. Und deswegen hab ich absichtlich was genommen, was ganz sicher nicht mein Pick off Detail oder mein mein nächstes Thema sein wird, sondern einfach was Kleines, was ich meganützlich finde. Und zwar hab ich mir vor 'nem Jahr oder so einen einen Charger gekauft, 'n 4 Port Charger, der bis zu 130 Watt, glaub ich, laden kann. Hat 2 Pole, sprech ich grad als als Schweizer, das ist 'n bisschen mühsam, weil wir haben ja immer diese dreipoligen Stecker und der passt halt dann überhaupt gar nirgends und die zweipoligen, die passen halt dann in den meisten Steckdosen in Europa passen die auch so ohne Adapter rein. Und ich kann damit gleichzeitig meine Uhr, mein mein Smartphone und mein Laktob laden und das ganze Ding ist auch kleiner als mein MacBook Charger, von dem her. Oh. Hab ich mir gekauft und bin seitdem mega zufrieden, grad auch, weil ich relativ viel unterwegs bin. Bestes Gadget, ja, was ich in den letzten Jahren gekauft hab. Ich kann 'n Link dazu kann ich sich in den Shownotes tun, wobei das ist 'n, den den ich jetzt gekauft hab, ist einen Produkt von Digitech. Das ist sone Online Plattform, online Onlineshop für für die Schweiz und es ist son hauseigenes Produkt, aber ich denk mal, es gibt jede Menge solcher Whereport Adapter oder Whereport Charger. Kann ich wärmstens empfehlen. Gute Charger,
- Jan
- so viel Geld wert, wirklich. Ja. Auf jeden Fall.
- Nico
- Und unbedingt den großen, weil grad 'n MacBook zieht halt relativ viel Strom.
- Jan
- Ah, siehst Du, da da würd ich jetzt hier den Gegenpunkt machen. Ich hatte nämlich auch ganz lange als Reiseadapter, ich ich hab ihn grade nicht griffbereit, aber son 200 Watt Vierport Charger auch mit sonem Universal Stecker Ding vorne dran für überall auf der Welt und kommt damit auch und dann kannst Du irgendwie deinen Laptop und dein iPad und dein Handy und deine Uhr halt irgendwie alles gleichzeitig laden und und funktioniert und so. Und jetzt bin ich aber auf einen gewechselt, der nur noch 'n Drittel so groß ist, nur noch dreiports hat und maximal 80 Watt macht, glaube ich. Und ja, dein MacBook Pro lädt unter Vollerst halt nicht mehr auf damit, aber wenn Du's halt über Nacht aufm Schreibtisch neben im Hotelzimmer lädst oder so, reicht's ja trotzdem, ne, zum zum Vollladen damit. Aber das Ding ist halt so viel kleiner und leichter. Deswegen wär wär mein Gegenpick sozusagen zu überlegen, braucht ihr wirklich die volle Leistung an Charger, sonen Lotz mit euch rumzuschleppen? Oder tut's nicht 'n kleinerer Charger, der in der Tasche ganz unauffällig ist, aber dafür euer über Nacht halt auch alles vollladen kann, so oder so Ich
- Nico
- dachte gar nicht, dass wir da sonen Disput drin haben, dass es wirklich für die nächste Folge dann reichen würde, aber Ja. Wir lassen wir lassen's jetzt mal bei dem.
- Garrelt
- Ich würd's jetzt sagen, ich schmeiß
- Jan
- dich, vielleicht vielleicht wechselst Du in in 2, 3 Jahren in irgend son Electric Engineering Job oder so was, ja, und dann reden wir darüber, also, wo knows.
- Garrelt
- Für für generelle Kaufberatung von Techprodukten, melde Du das bei Programmierfunk bar oder bei Hast Du eine eigene? Nee, sagen wir mal Podcast der Programmier Punkt bar, dann
- Jan
- Kannst auch Jan, den Programmier Punkt bar gibt's auch, aber wir können auch gerne im Discord Channel weiter darüber quatschen. Tech, Ich hab ich hab auch noch 'n Pick, keinen keinen Charger. Ich hab einen einen anderen Pick, über den ich letzte Woche gestolpert bin. Und zwar gibt es ja so das Problem, dass man diese ganzen AI Tools, die man so länger verwendet, egal ob das jetzt Cloud Code oder Codex oder oder, ja, was auch immer man halt irgendwie so so haben will, ist, manchmal hat man ja so das Gefühl, irgendwie diese Tools werden schlechter über Zeit. Und man man kann das nicht so ganz quantifizieren, aber man hat so den Eindruck, man nutzt jetzt irgendwie Codex schon 'n paar Wochen, 'n paar Monate und irgendwie hat das am Anfang besser funktioniert als jetzt grade. Und da denkt man sich so, na ja, bin ich der Einzige? Ist das son subjektives Ding oder ist das, geht das objektiv allen da draußen so? Wie verhält sich das so? Und dann hab ich eine Webseite gefunden, die nennt sich Punkt Club, also so wie Dispoointed, aber halt mit AI drin. Und wenn man die aufruft, sieht man im Prinzip wie son son son Chart, welche AI funktioniert gerade besonders schlecht und worüber regen sich Leute halt irgendwie gerade auf? So und da kann man dann halt sehen, dass es irgendwie manchmal halt cursor ist, wo die Leute das Gefühl haben, dass es schlechter wird. In den letzten paar Wochen ist da sehr viel claude irgendwie ganz oben, gefolgt von irgendwie Gemini. Und das
- Nico
- ist
- Jan
- irgendwie interessant zu sehen, so seine eigenen Eindrücke mal son bisschen cross zu checken, ja? Sagen so, hey, ich will mir das hier einfach mal angucken. Man muss da vorsichtig sein, dass UI ist nicht so sonderlich durchdacht, muss ich sagen, wenn man oben diese großen Buttons hat für, Gemini, ChatGPT und so weiter. Ich dachte, das wären Filterbuttons, aber nein, sobald Du drauf drückst, hast Du dich schon über son AI Model beschwert. Also dann erzähl das schon quasi als als Vote gegen 1 dieser Modelle. Aber trotzdem fand ich fand ich das ganz hilfreich. Das ist jetzt noch nicht mega groß und die machen das noch nicht megalang, aber son son bisschen dieses dieses Gefühl, ist dieses Tool grade gut oder wird es schlechter oder wird das besser? Das son bisschen zu Crowdsourcen, fand ich eigentlich nicht nicht verkehrt als Ansatz. Ja, deswegen Cool. Das mein mein Punkt Club. Verlinken wir auch noch mal in den Shownotes dann. Gut, dann bleibt mir nicht viel zu sagen, außer 1000 Dank Nico, dass Du mit am Start warst, dass Du wieder die Zeit für uns gehabt hast, zum siebenunddreißigsten Mal in der Programmierwahl hier am Start zu sein?
- Nico
- Jederzeit, wenn er an deinem
- Jan
- Wissen teilhaben lässt. Ja, aber mindestens das nächste Mal dann im November. Im November, wenn wir uns wieder für die Programmierkonten alle sehen. Und wir erwarten wieder coole Tech Demos und fahrende Autos oder so was Ähnliches.
- Nico
- No Pressure. Ja, ja, ich muss ich muss das fahrende Auto irgendwie toppen. Muss man auch, muss ja was überlegen.
- Jan
- Ja, also ich mein, Drohnen, Drohnen auch immer cool, ja. Also Drohnen und AI zu kombinieren, da kriegst Du auch Venture Capital grade hinterhergeschmissen, also vielleicht Hot top
- Nico
- dicke Moment, glaube ich, aber ja.
- Jan
- Wunderbar. Dann danke, Gandald, dass Du mit am Start warst, live zugeschaltet aus der Saline. Danke Jan, dass Du dir
- Garrelt
- das ist so kurzfristig vertreten hast und so hervorragend doch.
- Jan
- Ja, das ist, also mit, so solange ich 'n bisschen vollauf hab, krieg ich das ja noch hin, so. Dennis hat mir nur heute Morgen geschrieben, hast Du Zeit? Und ich ich denk so, für für was? Für was? Ja, was willst Du von mir? Ja. Nee, kriegen wir alles, kriegen wir alles hin. Wunderbar, dann hören wir uns Und
- Garrelt
- warte warte oder auch danke an Niko oder hab ich das verpasst? Was hab ich das hin? Hab ich gerade
- Jan
- schon gesagt und ihn gleichzeitig genötigt, noch mehr abzuliefern, wenn er wieder
- Garrelt
- Ah, das war der Morgen. Okay, ich war ja, okay. Ich hab auch so ein Hamstergedächtnis. Ist krass. Ja, das
- Jan
- Jetlag mit Kindern hab ich vorhin gehört, das ist ganz schlimm.
- Garrelt
- Aber von mir auch noch mal danke, Dico. Das war 'n richtiges Gespräch.
- Nico
- Ja. Sehr, sehr gerne. Hat Spaß gemacht,
- Garrelt
- jedes Mal. Wunderbar.
- Jan
- Dann bis bald zusammen. Tschau,
- Nico
- tschau.
