Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / CSS-Forum / Posits Zahlen beschleunigen AI
- - By Lothar Jung Date 2022-10-20 13:18 Edited 2022-10-20 14:01 Upvotes 1
Posit-Zahlen sind eine neue Art, reelle Zahlen für Computer darzustellen, eine Alternative zu den standardmäßigen IEEE-Gleitkommaformaten. Der Hauptvorteil von Posit-Zahlen ist die Möglichkeit, mit einer bestimmten Anzahl von Bits eine höhere Genauigkeit oder einen größeren Dynamikbereich zu erzielen. Wenn eine Anwendung beispielsweise von 64-Bit-IEEE-Fließkommazahlen auf 32-Bit-Posits umstellen kann, können doppelt so viele Zahlen gleichzeitig im Speicher abgelegt werden. Das kann einen großen Unterschied in der Leistung von Anwendungen machen, die große Datenmengen verarbeiten.

Niedrigpräzise Formate haben sich als effizienter Weg erwiesen, um nicht nur den Speicherbedarf, sondern auch die Hardware-Ressourcen und den Stromverbrauch von Deep-Learning-Berechnungen zu reduzieren. Unter dieser Prämisse scheint das numerische Format Posit ein sehr brauchbarer Ersatz für das IEEE-Gleitkommaformat zu sein, aber seine Anwendung auf das Training neuronaler Netze erfordert noch weitere Forschung. Einige vorläufige Ergebnisse haben gezeigt, dass 8-Bit-Posits (und noch kleinere) für die Inferenz und 16-Bit-Posits für das Training verwendet werden können, wobei die Modellgenauigkeit erhalten bleibt. Die hier vorgestellte Forschungsarbeit zielt darauf ab, die Durchführbarkeit des Trainings tiefer neuronaler Faltungsnetze unter Verwendung von Posits zu bewerten. Zu diesem Zweck wurde ein Software-Rahmenwerk entwickelt, um simulierte Posits und Quires in End-to-End-Training und Inferenz zu verwenden. Diese Implementierung ermöglicht die Verwendung beliebiger Bitgrößen, Konfigurationen und sogar gemischter Präzision, die für unterschiedliche Präzisionsanforderungen in verschiedenen Phasen geeignet sind. Die Ergebnisse deuten darauf hin, dass 8-Bit-Posits 32-Bit-Gleitkommazahlen während des Trainings ersetzen können, ohne dass dies negative Auswirkungen auf die resultierenden Verluste und die Genauigkeit hat.

Übersetzt mit DeepL (https://www.deepl.com/app/?utm_source=ios&utm_medium=app&utm_campaign=share-translation. Sie verweist auf diese: https://ieeexplore.ieee.org/document/9413919

Dieses reduzierte FP-Zahlenformat steht damit an, das Training von AI-Netzen erheblich zu verkürzen;
Sowohl software- als auch hardwareseitig. Zum Beispiel Lc0-NN als auch NNUEs in der Computerschachprogrammierung, siehe https://github.com/hpc-ulisboa/posit-neuralnet.

Intel, Nvidia und ARM arbeiten an Gleitkomma-Standard der die Berechnungen beschleunigen soll.
Um bisherige Workarounds bei Gleitkommazahlen für Machine Learning zu vereinheitlichen, treiben Intel, Nvidia und ARM einen gemeinsamen Standard voran.
Intel, Nvidia und ARM wollen mit FP8 einen neuen Standard für Gleitkommazahlen etablieren, der die bisherigen in IEEE 754 normierten Formate für 16, 32 und 64 Bit ergänzt. FP8 soll vor allem beim Trainieren von Machine-Learning-Modellen zum Einsatz kommen und Prozesse ohne nennenswerten Einfluss auf die Genauigkeit beschleunigen.
Wie die drei Hersteller erklären, gibt es derzeit verschiedene Ansätze, Gleitkommazahlen für das Machine Learning zu optimieren. Viele setzen auf einen Mixed-Precision-Weg, der beispielsweise Gleitkommazahlen halber und einfacher Präzision, aber auch FP16 mit 8-Bit-Integer-Werten (INT8) mischt. Aktuelle Prozessoren und Rechenbeschleuniger verarbeiten auch das benutzerdefinierte BFloat16 (BF16).

Siehe Heise: https://www.heise.de/select/ix/2022/11/2224812225142247937

Weitere Veröffentlichungen über Posits:

https://www.johndcook.com/blog/2018/04/11/anatomy-of-a-posit-number/

https://spectrum.ieee.org/floating-point-numbers-posits-processor

https://www.cs.cornell.edu/courses/cs6120/2019fa/blog/posits/

https://posithub.org/docs/Posits4.pdf
Parent - - By Rainer Neuhäusler Date 2022-10-20 17:42
Lothar Jung schrieb:
Dieses reduzierte FP-Zahlenformat steht damit an, das Training von AI-Netzen erheblich zu verkürzen;
Sowohl software- als auch hardwareseitig. Zum Beispiel Lc0-NN als auch NNUEs in der Computerschachprogrammierung

Interessante und gute Engine-Neuigkeiten *Y* Wann kommt es beim Entwickler und schließlich beim Nutzer an? Wer kann das schätzen? 

Lothar Jung schrieb:
Intel, Nvidia und ARM arbeiten an Gleitkomma-Standard der die Berechnungen beschleunigen soll.
Um bisherige Workarounds bei Gleitkommazahlen für Machine Learning zu vereinheitlichen, treiben Intel, Nvidia und ARM einen gemeinsamen Standard voran.
Intel, Nvidia und ARM wollen mit FP8 einen neuen Standard für Gleitkommazahlen etablieren, der die bisherigen in IEEE 754 normierten Formate für 16, 32 und 64 Bit ergänzt. FP8 soll vor allem beim Trainieren von Machine-Learning-Modellen zum Einsatz kommen und Prozesse ohne nennenswerten Einfluss auf die Genauigkeit beschleunigen.
Wie die drei Hersteller erklären, gibt es derzeit verschiedene Ansätze, Gleitkommazahlen für das Machine Learning zu optimieren. Viele setzen auf einen Mixed-Precision-Weg, der beispielsweise Gleitkommazahlen halber und einfacher Präzision, aber auch FP16 mit 8-Bit-Integer-Werten (INT8) mischt. Aktuelle Prozessoren und Rechenbeschleuniger verarbeiten auch das benutzerdefinierte BFloat16 (BF16).

Thema "Integer, Festkomma, Gleitkomma". Die Sourcen, die ich mir noch zu Gemüte führte, benutzten nur Integer-Zahlen, wegen dem Speed. Das Brett ist z.B. integer mit der Schleife 1-64 abzutasten und mit Festkomma zweidimensional von 1.1 bis 8.8. Wozu dann überhaupt Fließkomma ? Für welche Programmteile bringt das Vorteile? "Prinzipiell verarbeiten Rechenanlagen Integer meist schneller als Gleitkommazahlen, da oft weniger Bits zu verarbeiten sind (die kleinste IEEE-754-Gleitkommazahl hat 32 Bit) und die Verarbeitung des Exponenten entfällt, was Rechenzeit und Speicherplatz einspart"

Also, bei Schachcomputerprogrammen

- Um wieviel schneller ist Integer als Festkomma und Gleitkomma?
- für welche Programmteile bietet Fließkomma Vorteile ?
- Was brächte voraussichtlich der besagte neue Gleitkommastandard ?
- Mit welchem Zahlenformat werden die heutigen Engines programmiert?

Experten gefragt und bitte alle melden, die das hier wissen wollen 
Parent - - By Lothar Jung Date 2022-10-20 18:11 Edited 2022-10-20 18:18
Frage 1) Die Chiphersteller von Intel, Nvidia und ARM arbeiten gemeinsam daran,  das FP8 oder gleichwertige Formate als Standard in ihre Prozessoren zu integrieren.
Die ausführlichsten Informationen bietet Nvidia mit dem folgenden Blog:
https://developer.nvidia.com/blog/nvidia-arm-and-intel-publish-fp8-specification-for-standardization-as-an-interchange-format-for-ai/

Frage 2) Gleitkommazahlen werden beim Training und Berechnung der AI (Lc0 und NNUE) viel genutzt. 2D und 3D grafische Differenzial-Berechnungen mit Hilfe von Feldern oder TensorCores. Die Brettdarstellung im Schach ist Integer, aber keine 64 IntegerVariablen, sondern Bitboards/Feldern (vgl. https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=12276).

Frage 3) Den Beschleunigungsfaktor kann man dem Nvidia-Blog entnehmen. In den Kommentaren wird der Faktor 4,5 angegeben, vgl. https://www.heise.de/forum/heise-online/Kommentare/Gleitkommazahlen-im-Machine-Learning-Weniger-ist-mehr-fuer-Intel-Nvidia-und-ARM/Performance-stieg-um-den-Faktor-4-5-haette-man-ruhig-im-Artikel-erwaehnen-koennen/posting-41608378/show/

Frage 4) Zahlenformate bzw. Datenstrukturen sind IEEE-Formate, aber auch Bitoperationen, Felder, Tensoren, Strings und Streams.

Frage 5) Der Heise-Artikel beschreibt die Vorteile von FP8.
Parent - - By Rainer Neuhäusler Date 2022-10-21 19:09
Lothar Jung schrieb:


Frage 2) Gleitkommazahlen werden beim Training und Berechnung der AI (Lc0 und NNUE) viel genutzt. 2D und 3D grafische Differenzial-Berechnungen mit Hilfe von Feldern oder TensorCores. Die Brettdarstellung im Schach ist Integer, aber keine 64 IntegerVariablen, sondern Bitboards/Feldern (vgl. <a class='ura' href='https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=12276'>https://forum.computerschach.de/cgi-bin/mwf/topic_show.pl?tid=12276</a>).

Es wäre wahrscheinlich sinnvoll zwischen Engine-, GUI-Funktionen und neuronalen Netzwerk-Funktionen zu unterscheiden bzw. den betreffenden Schnittstellen.
Was läuft da integer, was mit Fließkomma ?

Was die nackte Engine betrifft, kannst du vielleicht noch genauer spezifizieren, wo und wann Integer oder Fest-Gleitkomma Variablen angezeigt sind?

- Zuggenerator
- Bewertungsfunktionen
  -Material
  -Position
  -statisch
  -dynamisch
- Steuerung der Such und Zugauswahl
   -Minimax
   -Alpha-Beta
   -Hash
   -Null Move

Von noch spezielleren Algorithmen mal abgesehen

Es wäre schön, wenn du das möglichst allgemeinverständlich mit eignenem Präsenzwissen und eigenen Worten machst und die Community nicht bei jedem Satz auf die Uni schickst
Links dazu kann ich ja nach Eigenbedarf selbst recherchieren. Also, alles von Dir ist mir zehnmal lieber als tausend Links.

Rainer
Parent - - By Lothar Jung Date 2022-10-22 15:34 Edited 2022-10-22 15:42 Upvotes 1
Also in A/B Engine werden nur Integer-Variablen in den Datenstrukturen verwendet.
Bei den Bewertungsalgorithmen von NNUE und Lc0-NN werden bei den Matrixmultiplikationen oder Tensorberechnungen mit Fließkomma-Variablen verwendet.

Die Datenstrukturen im Einzelnen:

Programme bestehen aus Algorithmen (Rechen- und Entscheidungsanweisungen) und Datenstrukturen.
Schachprogramme verwenden eine Reihe von Datenstrukturen:

1. Arrays bei der Brettdarstellung
2. Zeichenketten (Strings) sowie streams für die Ein- und Ausgabe (UCI)
3. Bäume (trees) für die Mini-Max und Alpha-Beta-Suche (mit Schlüsselwerten)
4. Tabellen für  das hashing auf Transformation Tabellen, (indexierte) Endspiel- und Eröffnungstabellen
5. Netze (nets) für NNUE und Lc0 (Tensornets)

Diese Datenstrukturen werden in den höheren Programmiersprachen durch Klassen definiert.

Bei der Bewertung (Eval) werden Algorithmen d.h. Schleifen, Entscheidungsanweisungen, Funktionen mit Variablen verwendet.
Dabei wird auf die o.a. Datenstrukturen zugegriffen bzw. sie werden verändert.

Die jeweiligen Datenstrukturen kann man dem Sourcecode der Engines entnehmen.
FP8 kommt demnach nur bei NNUE und Lc0-NN bei den Matrixmultiplikationen zum tragen.
Parent - - By Rainer Neuhäusler Date 2022-10-22 16:20
Lothar Jung schrieb:

Also in A/B Engine werden nur Integer-Variablen in den Datenstrukturen verwendet.
Bei den Bewertungsalgorithmen von NNUE und Lc0-NN werden bei den Matrixmultiplikationen oder Tensorberechnungen mit Fließkomma-Variablen verwendet.

War ja meine Rede, hätte mich ansonsten sehr gewundert.
Aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wird aus dieser Figur nicht die kompliziereste, sondern die einfachste Figur im Zuggenerator. Kein Scherz, ich wollte schon lange einmal damit vorstellig werden.

Der Rest des Textes, Programmier-ABC für die VHS-Community. Aber vielen Dank für die Allgemeinverständlichkeit der eigenen Worte und die fehlenden Links "Y"

Hallo MODs, ein Daumen-Smiley wäre Super. Der wird bestimmt sehr oft verwendet

Lothar Jung schrieb:

Die Datenstrukturen im Einzelnen:

Programme bestehen aus Algorithmen (Rechen- und Entscheidungsanweisungen) und Datenstrukturen.
Schachprogramme verwenden eine Reihe von Datenstrukturen:

1. Arrays bei der Brettdarstellung
2. Zeichenketten (Strings) sowie streams für die Ein- und Ausgabe (UCI)
3. Bäume (trees) für die Mini-Max und Alpha-Beta-Suche (mit Schlüsselwerten)
4. Tabellen für  das hashing auf Transformation Tabellen, (indexierte) Endspiel- und Eröffnungstabellen
5. Netze (nets) für NNUE und Lc0 (Tensornets)

Diese Datenstrukturen werden in den höheren Programmiersprachen durch Klassen definiert.

Bei der Bewertung (Eval) werden Algorithmen d.h. Schleifen, Entscheidungsanweisungen, Funktionen mit Variablen verwendet.
Dabei wird auf die o.a. Datenstrukturen zugegriffen bzw. sie werden verändert.

Die jeweiligen Datenstrukturen kann man dem Sourcecode der Engines entnehmen.
FP8 kommt demnach nur bei NNUE und Lc0-NN bei den Matrixmultiplikationen zum tragen.
Parent - - By Lothar Jung Date 2022-10-22 17:25
Naja, ….VHS…
Ich könnte auch anders.
Gehe jedes Niveau mit.
Parent - By Rainer Neuhäusler Date 2022-10-22 22:33
Lothar Jung schrieb:

Naja, ….VHS…
Ich könnte auch anders.
Gehe jedes Niveau mit.


Na na, übernimm dich mal nicht, die Community ist ein recht bunt gemischter Haufen, tchuldigung... eine höchst inhomogene Population, vor allem, was die Schachprogrammierung angeht.
Parent - - By Olaf Jenkner Date 2022-10-22 18:01 Upvotes 1
Rainer Neuhäusler schrieb:

Aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wird aus dieser Figur nicht die kompliziereste, sondern die einfachste Figur im Zuggenerator.

Der Springer war schon immer die einfachste Figur im Zuggenerator.
Parent - - By Rainer Neuhäusler Date 2022-10-22 18:50
Olaf Jenkner schrieb:

Rainer Neuhäusler schrieb:

Aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wird aus dieser Figur nicht die kompliziereste, sondern die einfachste Figur im Zuggenerator.

Der Springer war schon immer die einfachste Figur im Zuggenerator.


Hallo Meister Jung und Schachprogrammkundige, was stimmt jetzt?
Parent - - By Olaf Jenkner Date 2022-10-22 19:10
Zur Sicherheit ergänze ich, daß er König ebenso die einfachste Figur ist.
Parent - - By Peter Martan Date 2022-10-22 19:20 Edited 2022-10-22 19:22
Zu schnitzen ist der Springer sicher nicht so einfach, nein.
Parent - By Olaf Jenkner Date 2022-10-22 19:26
Als Erzgebirger sage ich, daß man alle Figuren wunderbar auf der Drechselbank herstellen kann mit Ausnahme das Springers. Der muß geschnitzt werden.
Parent - By Rainer Neuhäusler Date 2022-10-22 22:40
Peter Martan schrieb:

Zu schnitzen ist der Springer sicher nicht so einfach, nein.

Im Chaques-Stil sicher diffizil, weil sehr filigran, aber der ist auch der schönste.
Parent - - By Lothar Jung Date 2022-10-22 19:49
Die Sicherheit war ganz gut, wegen des Königs.
Obwohl bei der Bewertung, die Königssicherheit ziemlich kompliziert ist.
Ich finde auch den Turm einfach zu berechnen und bewerten.
Parent - - By Olaf Jenkner Date 2022-10-22 20:59 Upvotes 1
Es ging um den Zuggenerator und nicht um Königssicherheit.
Ich wollte mich nur vor Klugscheißern absichern.
Deiner Antwort entnehme ich weiterhin, daß du noch nie einen
Zuggenerator programmiert hast.
Parent - By Rainer Neuhäusler Date 2022-10-22 22:53
Olaf Jenkner schrieb:

Es ging um den Zuggenerator und nicht um Königssicherheit.
Ich wollte mich nur vor Klugscheißern absichern.
Deiner Antwort entnehme ich weiterhin, daß du noch nie einen
Zuggenerator programmiert hast.

Es ist geradezu das Hauptmerkmal von Lothars Arbeit, daß er immer mehr beantwortet als gefragt ist. Er schreibt und verlinkt sogar vieles, ohne dass jemand danach gefragt hat
Das mit dem Zuggenerator muß er selbst beantworten.
Parent - By Lothar Jung Date 2022-10-23 08:29
Ich habe „bei der Bewertung“ geschrieben.
Kleinkariert!!
Parent - - By Rainer Neuhäusler Date 2022-10-22 22:34
Olaf Jenkner schrieb:

Rainer Neuhäusler schrieb:

Aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wird aus dieser Figur nicht die kompliziereste, sondern die einfachste Figur im Zuggenerator.

Der Springer war schon immer die einfachste Figur im Zuggenerator. 

Warum ?
Parent - - By Olaf Jenkner Date 2022-10-22 22:50
void zw(void) {
  if(waf>vor_a1) goto m97;
  awkf=wkf;indzw=wzind; goto m92;
  m91: f[waf]=wfg;
  m92: do { if(!(--indzw)) return;
            wfg=f[waf=zwfig[indzw]];
          }
       while(wfg<=0);
   if(wfg&wdtls) {
       wzf=waf; wri=3+((((wfg>>4)|wfg)&wd)<<1);
       do { wzf+=tepallgw(wri+(wfg<<2));
            if((wgn=f[wzf])<=0) goto m95;
          }
       while(--wri>=0);
    }        else
   if(wfg==wb) {
      wgn=f[wzf=waf+9];
      if(wgn<0) { wri=11; goto bazu; }
      wgn=f[wzf+=2];
      if(wgn<0) { wri=7; goto bazu; }
      if(!(wgn=f[--wzf])) {
         wri=3;
         bazu: if(wzf<fd_a8) goto m95;
               f[waf]=0;f[wzf]=wd; return;
      }
   }        else
      { f[waf]=0;wri=7; goto m2; }
    goto m92;
m97: f[wzf]=wgn;
   if(wfg<wk) {
      if(!wgn) { wzf+=stepd[wri+((wfg&wt)<<2)]; goto m3; }
      do { if(!wri) goto m91;
           wzf=waf+stepd[--wri+((wfg&wt)<<2)];
           m3:;
         }
      while ((wgn=f[wzf])>0);
      goto m94;
   }
   if(wfg==ws) {
      do { if(!wri) goto m91;
           wzf+=teps[--wri];
         }
      while((wgn=f[wzf])>0);
      goto m94;
   }
   if(wfg==wk) {
      do { if(!wri) { wkf=awkf; goto m91; }
           wri--;
           m2: wkf+=tepk[wri];
         }
      while(((wgn=f[wkf])>0)||wis());
      wzf=wkf; goto m94;
   }
   if(wzf>=fd_a8) {
      if(wri%4) { f[wzf]=wuf(--wri); return; }
      if(wri>0) {
         if(wri==8) {
            if((wgn=f[wzf+=2])<0) { wri=7;f[wzf]=wd; return; }
         }
         if(!(wgn=f[--wzf])) { wri=3;f[wzf]=wd; return; }
      }
      goto m91;
   }
   if(wri==11) {
      if((wgn=f[wzf+=2])<0) { wri=7; goto m94; }
      goto bazu2;
   }     else
   if(wri==7) {
      bazu2: if(!(wgn=f[--wzf])) { wri=3; goto m94; }
   }    else
     if((wri==3)&&(wzf<=fd_h3)) {
        if(!(wgn=f[wzf+=10])) { wri=doppstep; goto m94; }
     }
   goto m91;
m95: f[waf]=0;
m94: f[wzf]=wfg;
}
Parent - By Rainer Neuhäusler Date 2022-10-22 23:41
Olaf Jenkner schrieb:

void zw(void) {
  if(waf>vor_a1) goto m97;
  awkf=wkf;indzw=wzind; goto m92;
  m91: f[waf]=wfg;
  m92: do { if(!(--indzw)) return;
            wfg=f[waf=zwfig[indzw]];
   .................................

if "Sprache wieder gefunden"
then "text schreiben"
else "Logopäde"
endif
end
Parent - - By Jörg Oster Date 2022-10-22 23:51
Rainer Neuhäusler schrieb:

Olaf Jenkner schrieb:

Rainer Neuhäusler schrieb:

Aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wird aus dieser Figur nicht die kompliziereste, sondern die einfachste Figur im Zuggenerator.

Der Springer war schon immer die einfachste Figur im Zuggenerator. 

Warum ?

Weil der Springer einfach über andere Figuren hinweg ziehen kann.
Es muss nur geprüft werden, dass keine eigene Figur auf dem Zielfeld steht.
Außerdem ist die Zugmöglichkeit, also die möglichen Zielfelder, immer exakt bekannt.

Bei Läufer, Turm und Dame, den sogenannten 'slidern', muss man hingegen immer überprüfen, ob und wo eine eigene
oder gegnerische Figur die Zugmöglichkeit stoppt. Stößt man auf eine eigene Figur, muss man auf dem Feld davor stoppen.
Eine gegnerische kann man schlagen.

Das nur mal so auf die Schnelle am späten Abend. 
Parent - - By Rainer Neuhäusler Date 2022-10-23 20:21
Jörg Oster schrieb:

Rainer Neuhäusler schrieb:

Olaf Jenkner schrieb:

Rainer Neuhäusler schrieb:

Aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wird aus dieser Figur nicht die kompliziereste, sondern die einfachste Figur im Zuggenerator.

Der Springer war schon immer die einfachste Figur im Zuggenerator. 

Warum ?

Weil der Springer einfach über andere Figuren hinweg ziehen kann.
Es muss nur geprüft werden, dass keine eigene Figur auf dem Zielfeld steht.
Außerdem ist die Zugmöglichkeit, also die möglichen Zielfelder, immer exakt bekannt.

Bei Läufer, Turm und Dame, den sogenannten 'slidern', muss man hingegen immer überprüfen, ob und wo eine eigene
oder gegnerische Figur die Zugmöglichkeit stoppt. Stößt man auf eine eigene Figur, muss man auf dem Feld davor stoppen.
Eine gegnerische kann man schlagen.

Das nur mal so auf die Schnelle am späten Abend. 

Mehr OSTER, bitte! Da sag mir einer, dass man Schachprogrammierung nicht anschaulich erklären kann *Tup*

Schachprogrammierkenntnis-Skala
(ordinal-, nicht intervallskaliert; die jeweils nächst Stufe setzt die vorhergehende voraus)

0= null Ahnung von Schach und Programmierung
1= null Ahnung, aber Schachspieler
2= ein paar Begriffe und Ahnungen sind hängen geblieben
3= liest einen Beitrag, googelt die thematisierten Fachbegriffe und redet dann "gescheit" mit
4= kennt die Basics einer Programmiersprache und der Schachprogrammierung
(Variablendeklaration, Loops, Subs, Functions etc. Brettdarstellung, Zuggenerator, Bewertungsfunktionen etc.
5= selbst schon ein kleines Lern- Übungsprogramm geschrieben
6= fertiges u. funktionierendes  Programm geschrieben in adäquater Programmiersprache (Assembler, C, C++, Delphi,VB) 
7= Publiziertes Programm
8= Spitzenprogramm

Verteilung bei der hiesigen Community:
Normal, Mittelwert ca. 3, Modalwert ca. 2, geringe Varianz.

Ich würde mich da bei .., ach was, warum soll immer ich anfangen!

Zum Diskussionsanlass " aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wird aus dieser Figur nicht die kompliziereste, sondern die einfachste Figur im Zuggenerator"
wird korrigiert in:
Aber warte bis ich mit meiner zweidimensionalen Festkomma-Springerviariable komme, da wirst du sehen, welche simple Alternative es gibt, diese Figur in die Programmierschleifen zu schicken. Die Lösung heißt Geometrie statt Algebra: Mehr sage ich nicht.

Die Frage, welche Figur nun am einfachsten oder schwierigsten für den Zuggenerator zu programmieren ist, scheint von geringer Praxisrelevanz, da diese basalen Routinen frei kopierbar in den gängigen Programmiersprachen zur Verfügung stehen. Da braucht es auch keine Lizenz, nehme ich mal an.
Welche Figur nun "von Hand" am schnellsten zu programmieren geht oder die größte Mühe macht, müsste in einem sportlichen Wettkampf  geklärt werden. Schätze,ein oder zwei Programmzeilen mehr oder weniger bei Springer, Läufer und Turm werden da kaum Signifikanzen bringen. Die Dame geht bestimmt am schnellsten, weil sie sie schon per Turm und Läufer repräsentiert ist. 
Vielleicht  ist der Bauer mit seinen Sonderzügen (Doppelschritt, en passant, Umwandlung) der lästigste Patron.

*Tup* heisst "Thumbs up", solange der Forumsbetreiber keine Daumen-Smileys präsentiert.
Parent - - By Lothar Jung Date 2022-10-23 21:38
Rainer und Olaf:
Macht eure Sache unter euch aus.
An Rainer: Bist Du der 3. Nerd im Forum?
An Olaf: Etwas mehr Respekt.
Parent - By Rainer Neuhäusler Date 2022-10-24 22:33 Edited 2022-10-24 23:32 Upvotes 1
Lothar Jung schrieb:

Rainer und Olaf:
Macht eure Sache unter euch aus.
.
He he, da verschiebst Du was. IHR habt doch da eure Sache, Thema Königssicherheit im Zuggenerator. Schon vergessen? In meinem Beitrag geht es um Schachprogrammierung, um den Programmieraufwand für die einzelnen Figuren im Zuggenerator, eine Rangskala für Programmier-Kompetenz und um eine Idee für eine alternative  Programmiermöglichkeit für den Springer. Das müsstest doch ausgerechnet Du am allermeisten zu schätzen wissen ??  
Lothar Jung schrieb:

An Rainer: Bist Du der 3. Nerd im Forum?

Der dritte Nerd, das klingt irgendwie gut. Da ist was dran. Wenn ich mich einer Sache widme, dann fast mit autistischer Inbrunst. Das schöne daran, es vergeht wieder und wenn es wieder kommt, dann kommt auch nach und nach das ganze Wissen von früher wieder zum Vorschein. Das Problem, ich habe noch einige andere Interessen, und da geht es genauso.

Wen ich der dritte Nerd bin, wer sind dann die beiden anderen? 

Lothar Jung schrieb:

An Olaf: Etwas mehr Respekt.

Den Respekt hast Du m.E. zu Recht eingefordert.  Die Olafsche Ableitung war alles andere als eine Beweisführung. Er war scheinbar auch nicht so gut drauf an diesem Abend. Mir gegenüber konnte er sich plötzlich nur mehr in Programmiersprache verständlich machen
Parent - - By Jörg Oster Date 2022-10-22 21:07
NNUEs verwenden aber doch nur Integer Datentypen bei der Berechnung soweit ich das verstehe.
Nur beim Trainieren kommen Fließkommazahlen zum Einsatz.

Oder verstehe ich da was falsch?
Parent - By Olaf Jenkner Date 2022-10-22 23:41
Ich denke auch, daß das Schachprogramm die Netze ohne Floating Point Geschichten nutzt.
Wenn nicht, wäre das nochmal ein toller Geschwindigkeitsgewinn, wenn man die Netze auf
Integer-Werte skaliert.
Aber viel Ahnung habe ich davon nicht.
- By Lothar Jung Date 2022-10-20 15:56
Hier noch ein lesenswerter Heise-Artikel zu FP8:

https://www.heise.de/news/Gleitkommazahlen-im-Machine-Learning-Weniger-ist-mehr-fuer-Intel-Nvidia-und-ARM-7264714.html
- By Lothar Jung Date 2022-10-21 08:26 Edited 2022-10-21 09:06
FP8 wurde in den ADA 49X0 GPUs integriert:

https://images.nvidia.com/aem-dam/Solutions/geforce/ada/nvidia-ada-gpu-architecture.pdf

„Ada GPUs include a new Fourth-Generation Tensor Core. The GeForce RTX 4090 offers double the throughput for existing FP16, BF16, TF32, and INT8 formats, and its Fourth-Generation Tensor Core introduces support for a new FP8 tensor format. Compared to FP16, FP8 halves the data storage requirements and doubles throughput. With the new FP8 format, the GeForce RTX 4090 delivers 1.3 PetaFLOPS of performance for AI inference workloads.“
Up Topic Hauptforen / CSS-Forum / Posits Zahlen beschleunigen AI

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill