PyTorch für Inferenz in PureBasic

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
DarkDragon
Beiträge: 6249
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

PyTorch für Inferenz in PureBasic

Beitrag von DarkDragon »

Hallo zusammen,

Ich habe vor kurzem ein kleines Beispiel gebaut wie man PyTorch in PureBasic für die Inferenz Neuronaler Netze verwenden kann und habe es auch schon im englischen Forum gepostet, aber vielleicht ist es hier auch hilfreich.

https://github.com/Bradan/pytorch-in-purebasic

Wenn ihr mehr Features braucht müsst ihr den C Wrapper entsprechend erweitern, aber die meisten Netze erwarten einfach einen richtig dimensionierten Tensor als Input und geben auch einen Tensor zurück. Das sollte damit gehen. Das Beispiel funktioniert hier unter Linux, unter Windows bin ich zur Zeit nicht unterwegs, aber es würde denke ich auch dort klappen wenn man ein paar Dateinamen anpasst. Das Beispiel ist ein einfaches CNN.

Modelle werden in der Regel immer in Python designed, dann wird es als torch.jit.script exportiert und in C++ wieder importiert. Man könnte auch darüber nachdenken ONNX Runtimes an PB anzubinden, dann könnte man PyTorch und Tensorflow Modelle auswerten.

Viel Spaß damit.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8655
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: PyTorch für Inferenz in PureBasic

Beitrag von NicTheQuick »

Sehr cool! Ich habe es jetzt nicht ausprobiert, weil ich lieber bei den Programmiersprachen bleibe, die sich etabliert haben um mit pytorch oder tensorflow zu arbeiten. Und abgesehen davon stecke ich da eh noch in den Kinderschuhen :-D

Aber echt cool, dass du dir die Arbeit gemacht hast. Machst du aktiv damit etwas?
Bild
DarkDragon
Beiträge: 6249
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: PyTorch für Inferenz in PureBasic

Beitrag von DarkDragon »

NicTheQuick hat geschrieben: 22.10.2023 13:40 Sehr cool! Ich habe es jetzt nicht ausprobiert, weil ich lieber bei den Programmiersprachen bleibe, die sich etabliert haben um mit pytorch oder tensorflow zu arbeiten. Und abgesehen davon stecke ich da eh noch in den Kinderschuhen :-D

Aber echt cool, dass du dir die Arbeit gemacht hast. Machst du aktiv damit etwas?
Ich finde auch, dass man gerade in dem Bereich eher etablierte Standards verwenden sollte. Aus dem Grund ist das Beispiel auch nur so klein geworden. Privat mache ich relativ wenig in dem Bereich, da mein Rechner langsam zu alt wird für alles und ich mir keinen neuen mehr zulegen will. Ich wollte einfach die Machbarkeit hier demonstrieren, da doch langsam immer wieder die Frage nach ML in PB aufkommt. Aber beruflich bin ich durchaus in Richtung OCR und co unterwegs. Was genau machst du denn damit wenn ich fragen darf?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8655
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: PyTorch für Inferenz in PureBasic

Beitrag von NicTheQuick »

Noch mache ich damit nicht viel, aber ich fange diese Woche an damit ein wenig herumzuspielen. Zuerst wollte ich mich ein bisschen mit Bild-Generierung beschäftigen, und später dann mit LLMs. Ich würde ein LLM gerne Dokumente lesen lassen, damit ich ihm später Fragen darüber stellen kann. Also ähnilch wie ChatGPT es kann. Meine erste Idee war alle meine Mails als Prompt reinzuhauen und dann mal schauen, was es darüber am Ende weiß.
Ich habe mir deshalb extra eine RTX 3080 TI gekauft, die zwar von der RTX 4070 TI in Gaming-Performance schon überholt wurde, aber in Sachen AI anscheinend immer noch besser ist. Die Karten sind momentan etwa gleich teuer. Schade ist nur, dass sie nur 12 GB VRAM haben.
Bild
DarkDragon
Beiträge: 6249
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: PyTorch für Inferenz in PureBasic

Beitrag von DarkDragon »

Das klingt spannend. Viel Erfolg. Das wichtigste Paper ist dann wohl "Attention Is All You Need". Wenn dein LLM zwar sachlich korrekt aber vielleicht zu unnatürlich ist gabs erst neulich dutzende Vorträge zu "Reinforcement Learning with Human Feedback" im Bereich Transformer auf der ICML 2023, deren Videoaufzeichnungen nun für jeden online einsehbar sind. Anstelle einer vordefinierten Loss Funktion trainiert man eine anhand von binären, menschlichen Entscheidungen an um dann ein bereits vorhandenes Netz natürlicher zu trainieren.

Für Bildgenerierung sind Diffusion Models ("Denoising Diffusion Probabilistic Models") aktuell die Präferenz, wobei Progressive Generative Adversarial Networks auch recht gute Ergebnisse erzielen.

Wenn du ein allgemeines Modell zur Verbindung von Sprache und Bildern suchst schwören die meisten auf CLIP, ein vortrainiertes Modell: https://github.com/openai/CLIP
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8655
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: PyTorch für Inferenz in PureBasic

Beitrag von NicTheQuick »

Interessant, Danke schön! Für die Bildgenerierung habe ich schon viele Tipps bekommen von meinem Arbeitskollegen, der bereits tolle Ergebnisse erhalten hat. Aber ich nehme natürlich alles, was ich kriegen kann. :-D
Bild
Antworten