An even simpler neural net as the simplest neural net
Googling for the simplest neural net always provide the XOR example with a hidden layer implemented with two neurons. A short but detailed explanation can be found in The Nature of Code – Chapter 10. Neural Networks written by Daniel Shiffman. The trainingssets work like this input(0,1) -> output(1), input(1,1) -> output(0) as in 1 XOR 1 = 0 and so on.
Searching for a “c simple neural net” may come up on top with an article of Santiago Becerra on torwardsdatascience “Simple neural network implementation in C“. Santiago provides the code at GitHubGist (which is C++ instead of plain C). There are plenty of other articles about implementations of the original description of the perceptron by Rosenblatt, as in Python, Haskell, Ada, and Assembler(x86).
The cpp-code is straight forward and only addresses the XOR-case, but is easily adoptable to different layouts and input types. Most of the parts of the code are explained in the article in detail, even if the code differs. Only one issue can be spotted in the listing: there is no valid random seed, so the results will always the same on every run. A simple initial srand (time(NULL)) before calling the init_weight function will provide different weights on every run.
Q: Is the original description of a perceptron really the simplest neural net?
A: No (and Yes).
The XOR example of a perceptron expect two inputs and one output. As always the first (and only) hidden layer is implemented with two neurons/nodes. To adopt the example code to different types of inputs the layout of the hidden layer may be changed to more or even less nodes. Use cases with more input attributes could be something like sensor inputs from pressure and temperature together with a timestamp.
But it is possible to think about usage scenarios with only a single input value. For the simplicity an example can be implemented where the output is the sin of the input. The training kernel will then look like:
for (int n=0; n < EPOCHES; n++) { for (int i=0; i<NUMTRAININGSSETS; i++) { // Starting training hiddenLayer = sigmoid(hiddenLayerBias + (training_inputs[i] * hiddenWeights)); outputLayer = sigmoid(outputLayerBias + (hiddenLayer * outputWeights)); // Starting backpropagation double deltaOutput = (training_outputs[i] - outputLayer) * dSigmoid(outputLayer); double deltaHidden = (deltaOutput * outputWeights) * dSigmoid(hiddenLayer); outputLayerBias += deltaOutput * lr; outputWeights += hiddenLayer * deltaOutput * lr; hiddenLayerBias += deltaHidden * lr; hiddenWeights += training_inputs[i] * deltaHidden *lr; } }
In this example the activation function is a sigmoid. Due to reducing the input dimension all inner loops can be removed and the flow is much more readable.
For a training set with only ten inputs (from 0.1 to 1.0) after 10.000 epochs the prediction varies from 0.1% to 13% accuracy. It is always way better as the expected 50%
If this works, the question is, if a single dimension hidden layer is either a more simple (and simplest) neural network or no neural network at all. This is for sure only a philosophical question as the definition of a generic network is not provable per se.
A potential use case for such a neural net could be a replacement for lookup tables in embedded devices. LUTs often used to have functions like sine available in systems not providing these functions in hardware. The simple net implementation would only need the four network values (two weights and two bias). But for sure the number of calculations is significant more cost intensive compared to a LUT implementation.
Q: What other implications coming from this proof of concept?
A: Don’t know, but …
As this implementation was part of an effort to come up with a generic solution to parallelise NN-kernel code on accelerator hardware like GPUs and FGPAs, one interesting aspect is the question if one solution could be to see the whole net as stacked pipelines. Both the forward pass and the back propagation then would be the only point where the stacks depends on another. Such architecture could first of all boost the training massive. But – probably more important – could also make the training more predictable and could give more insight into the condition and behaviour of the net while it is trained.
An interesting second idea is: how could be an architecture looks like, which reduces all nodes and layers in a net to black boxes realised with such a simple “net”. This would provide much more degree of freedom for the layout design of a neural net not even ending up in a dynamic layout (like place and route for hardware design) for the net itself.
Finally, a really silly idea would be to use such a “net” as an entropy source, where some or all weights are fed by a chain of similar networks.
NVIDIA verbietet Nutzung von GeForces in Rechenzentren
Die aktuelle Version der EULA für den GeForce-Treiber verbietet die Nutzung des Treibers (der Karten) in Rechenzentren. Als einzige Ausnahme wird in den Nutzungsvereinbarungen explizit Blockchain-Verarbeitung genannt.
Keine Bereitstellung in Rechenzentren: Die SOFTWARE wird nicht für die Bereitstellung in Rechenzentren lizenziert. Als Ausnahme ist Blockchain-Verarbeitung im Rechenzentrum gestattet.
Die Karten – insbesondere die 1080ti – ist allerdings extrem beliebt, da sie mit mehreren tausend Cores und bis zu 11GByte RAM eine Alternative zu den Tesla- und Quadro-Karten mit ihren signifikant höheren Preisen darstellen.
Etliche Hoster bieten Konfigurationen mit einer oder mehreren GeForce-Karten an. Eingesetzt werden diese im professionellen Umfeld für Simulationen und Data-Scientists-Aufgaben. Neben üblichen statistischen Berechnungen zählen dazu auch Machine Learning und Deep Neural Networks (DNN). Das erklärt auch, warum sowohl Golem (die das Thema zuerst im deutschsprachigen Newsland™ aufgegriffen hatten) und Heise zu der Verkürzung “kein Depp Learning mehr mit GeForces” kamen.
Für den “kleinen” Data Scientist in einer Firma ändert sich damit zunächst allerdings nichts: er wird seine Python- und R-Scripte weiterhin auf seinem Arbeitsplatzrechner auf einem kleinen Sample entwickeln und dann auf der Computational Engine im Rechenzentrum auf dem vollständigen Datensatz rechnen lassen.
Die spannende Frage ist jetzt, welche Karte in dem Server im Rechenzentrum steckt. Falls es sich um eine virtualisierte Umgebung handelt, kann es bereits jetzt nur eine Karte aus der Tesla- oder Quadro-Liga sein. Auch bisher hatte NVIDIA Funktionen aus dem Umfeld des High Perfomance Computing auf bestimmte Karten beschränkt, u.a. die Virtualisierung.
Solche Umgebungen sind bei Data Scientists sehr beliebt. In den meisten Fällen sind die Kalkulationen und damit die wahrscheinlich anfallenden Kosten relativ genau bekannt und damit die Kosten überschaubar. Ein typisches ML-Model benötigt bei gegebener Rechenpower dort vielleicht ein/zwei Tage. Man bezahlt dafür möglicherweise einige hundert Dollar. Eine Workstation, die das gleiche Model rechnet, kostet demgegenüber gerne zehntausend Dollar oder mehr und verlangt eigenen administrativen Aufwand, der in einer Enterprise-Umgebung nicht gegeben ist. Mögen sich die Kosten nach 10 Aufgaben amortisiert haben, die Workstation braucht allerdings für das gleiche Model eine Woche statt nur zwei Tage.
Ebenfalls unproblematisch ist die neue Einschränkung für Wald- und Wiesen-Hoster. Wenn ein Kunde sich einen Server mit vier 1080ti clickt muss der Hoster den Kunden – wahrscheinlich – nicht mal darauf hinweisen, dass der GeForce-Treiber bestimmte Restriktionen auferlegt. Im Normalfall wird der Hoster den Treiber auch nicht selbst installieren. Es bleibt dem Kunden überlassen sich dem unternehmerischen Risiko auszusetzen, von NVIDIA rechtlich belangt zu werden. Und auch dieses Risiko hält sich in Grenzen: der Treiber selbst dürfte in solchen Umgebungen keine Möglichkeit haben, zu ermitteln, dass er in einem Rechenzentrum läuft, welches Framework grade ausgeführt wird und überhaupt darf ein Treiber nicht ins Netz. Die Firewall-Rules müssen ihn daran hindern.
Zu einem Problem wird die Neureglung jedoch für die vielen kleinen Spezialhoster, die sich auf Data Scientists und Machine Learning als Marktnische eingelassen haben. Um mit Amazon und Google konkurrieren zu können haben sie eigentlich nur den Preis als Hebel. Und für sie boten sich die GeForce-Karten ideal an. Bei den meisten Anwendungen erreicht eine 1080ti ein Viertel Rechenpower im Vergleich zu einer Tesla-Karte und das zu fast einem Zwanzigstel des Preises. Es verwundert also nicht, dass NVIDIA sich bei einem solchen Betreiber gemeldet hat.
Vor diesem Hintergrund würde es nicht verwundern, wenn Amazon als größter NVIDIA-Kunde ein “aktives” Interesse an dieser Einschränkung bekundet hat; so unter Freunden, wissen schon …
Poor-Man’s-Blockchain mit ARMs Speicherzugriffsprotokoll
Im Rahmen einer Machbarkeitsstudie stellte sich grade die grundsätzliche Frage, ob eine Blockchain-Implementierung prinzipiell für IoT-Kommunikation denkbar ist und welche Probleme es dabei geben könnte. Es zeigte sich sehr schnell, dass einer der Parameter mit großem Hebel, die Kosten (Operations/Watt) für die Berechnung (Hash-Validierung, Signing, En-/Decryption) der Blockchain ist. Eine sehr kleine Veränderung dieses Parameters führt umgehend zu einem “rechnet sich nicht mehr”.
Viele IoT-Devices basieren derzeit auf ARM-Chips verschiedenster Ausprägung. Teil der ARM-Lizenz ist in vielen Fällen auch das AXI-Protokoll. Dieses Protokoll bietet verschiedene Modi für den schnellen Zugriff auf den Speicher und kommuniziert über ein DMA-Register mit der jeweiligen Memory Management Unit(MMU). Der schnellste Modus ist dabei Scatter/Gather. Ein Verfahren, das noch aus den Urzeiten der IT kommt und erstmals bei SCSI verbreitet eingesetzt wurde. Es wird auch als Vectored I/O bezeichnet und stellt im Kern eine verkettete Liste dar.
In das MMU-Register wird bei dem AXI-Protokoll die erste und die letzte Speicheradresse geschrieben. In den Blöcken der Liste ist jeweils die Adresse des nächsten Speicherblocks hinterlegt. Die jeweilige AXI-Implementierung legt fest, wann der eigentliche Transfer des Speichers stattfindet. Im Allgemeinen geschieht dies, wenn die letzte Adresse in das MMU-Register geschrieben wird.
Eine Blockchain selbst ist im Prinzip nichts anderes als eine verkettete Liste. Das bedeutet, dass man lediglich das Format der Blockchain so definieren müsste, dass es die Anforderungen des Scatter/Gather-Protokolls erfüllt. Im Wesentlichen sind dies die Position der Next-Block-Adresse und die Größe des einzelnen Blocks. Diese Größe ist bei AXI variabel muss aber auf Speicheradressen 0×40 aligned sein. Wichtig ist dabei, dass alle Blöcke einer Chain eine identische Größe haben müssen. Sollten sich die Blöcke als zu klein erweisen wäre ein Resizing notwendig.
Die eigentlichen Kosten für die Validierung und Modifikation der Blockchain belaufen sich mit einer solchen Implementierung lediglich auf die Kosten für den Transport der Block-Daten aus dem Speicher und in den Speicher. Sowohl FPGAs als auch ARM GPUs (Neon, Mali) sind in der Lage, alle notwendigen Kalkulationen (Hash-Validierung, Signing, En-/Decryption) für einen Block durchzuführen, während die MMU damit beschäftigt ist, den Speicherinhalt zu laden/speichern. FPGAs hätten sogar noch den Vorteil, die privaten Schlüssel im Bitstream vorhalten zu können, ohne ein Leak befürchten zu müssen.
Ist die #digitalcharta noch zu retten?
Nein. Denn:
These: Die derzeitige Verfassung des Netzes bietet der Exekutive nicht die notwendigen Mittel zur Gewährleistung von mindestens drei Säulen des Rechtsstaates: Verantwortlichkeit, Rechtssicherheit und Verhältnismässigkeit. Eine Digitalcharta ist aber kontraproduktiv. Notwendig ist ein Umbau des Netzes um dem Rechtsstaat die notwendigen Grundlagen zurückzugeben. Oder eine Aufkündigung des Rechtsstaats.
Viel wurde über die Digitalcharta geschrieben. Juristen und andere üben formale, stilistische und inhaltliche Kritik. Die Initiatoren schalteten nach einem kurzen “Ups!” auf Angriff “Hater!” und dann einen Gang runter auf “Wir lieben Euch doch alle!” und BETA!11einself.
Unabhängig von Form, Stil und Inhalt soll es daher hier um die implizierte Grundlage der Digitalcharta gehen: “Kann es ein digitales Leben im analogen geben?”
Was unterscheidet das Digitale vom Analogen?
Die Kopierbarkeit. Genauer: die geringeren Kopierkosten und die Tatsache, dass ein bestehendes Item mit vollkommener Ununterscheidbarkeit kopiert werden kann. In der analogen Welt oder besser im Real Life (RL) benötigt es Energie, Rohstoffe, Werkzeuge und Menschen, um eine oder viele Instanzen einer Ware herzustellen. Die Kosten steigen mit der Anzahl der Instanzen. Zwar flacht die Kostensteigerungsquote mit zunehmender Anzahl ab, steigt aber wegen der limitierten Verfügbarkeit von Energie, Rohstoffen, Werkzeugen und Arbeitskräften irgendwann wieder an. Ein StartUp mit einem RL-Businessmodell muss auf die Frage eines Investors “Ist ihr Modell skalierbar?” immer antworten, “Ja, aber …”.
Die Möglichkeit, Items – bei nahezu keinen Kosten – kopieren zu können, betrifft jedoch nicht nur Dinge, die auf dem Markt angeboten werden. Im Gegensatz zum RL können auch Items kopiert werden, die bereits einen Eigentümer haben. Das alltägliche Geschäft des Raubmordkopierers. Im RL müsste dieser in eine Wohnung einbrechen, an das Plattenregal gehen und umständlich Rip-Mix-Burnen. Er hätte danach noch immer keine ununterscheidbare Kopie.
Der entscheidende Punkt hier ist nur vordergründig der Kostenunterschied für die Erstellung (ein Kopierprozess) von Items. Der wichtige Punkt ist die Ununterscheidbarkeit der Items. Sie bedeutet, dass digitale Kopien nicht nur identisch sind, sondern auch keine Spuren des Herstellungsprozesses vermitteln.
Konkret: Beweismittelsicherung basiert darauf, dass die Polizei glaubhaft vermittelt, dass der Gegenstand “Brechstange” bei dem Beklagten gefunden wurde. Die Spurensicherung konnte nachweisen, dass sowohl Farbspuren des Tatorts als auch DNA des Beklagten an dieser Brechstange zu finden sind. Für die Verteidigung wird es langsam eng. Die Brechstange wird als Eigentum des Beklagten “attributiert”.
Unser Rechtssystem hat verschiedene Säulen. Eine Säule ist die Verantwortlichkeit des Individuums für sein Handeln. Nur in Ausnahmen (Kindheit, Krankheit) wird diese als nicht gegeben angenommen.
Rechtssicherheit und Verhältnismäßigkeit der Mittel sind weitere Säulen. Sie können unter anderem so interpretiert werden, dass ein Gesetz Handlungen nicht mit Strafe belegen sollte, wenn der Staat die Durchsetzung nur in wenigen Fällen gewährleisten kann und die Bestrafung bei Verfolgung bezüglich der Tat zu drakonisch ausfällt (siehe Störerhaftung).
Die oben genannte Brechstange wird zusammen mit der Verantwortlichkeit für eigenes Handeln und der allgemein garantierten Rechtssicherheit und Verhältnismäßigkeit zu einer Verurteilung des Eigentümers dieses Gegenstandes führen müssen.
In der digitalen Welt klebt weder DNA noch Farbe an einem “Gegenstand”. Eine Kopie eines privaten Dokumentes – verteilt über Tor – liefert keinerlei Beweismaterial über die Umstände des nicht legitimierten Kopierprozesses. Möglicherweise ist sogar der Vorgang selbst unbemerkt geblieben (im RL eher selten der Fall).
Die derzeitige Verfassung des Netzes bietet der Exekutive also nicht die notwendigen Mittel zur Gewährleistung von mindestens drei Säulen des Rechtsstaates: Verantwortlichkeit, Rechtssicherheit und Verhältnismässigkeit. Handlungen sind nur sehr schwer Personen zuzuordnen, Dinge sind unterschiedslos zu kopieren und die Kosten für Handlungen sind so billig, dass Strafen unverhältnismäßig hoch sind.
Technik
Die “derzeitige Verfassung des Netzes” ist jedoch kein unumstößliche Tatsache. Sie ist lediglich ein technischer Status Quo. Eine Handvoll RFCs beschreiben die technische Infrastruktur. Diese Infrastruktur ist verantwortlich für die Unvereinbarkeit essentieller Grundbausteine des Rechtsstaats mit der digitalen Sphäre.
Und die Infrastruktur des Netzes ist veränderbar. Alle Kopiervorgänge können transaktionssicher gemacht werden, können geloggt werden. Jedes Datum kann mit einem Hashcode versehen werden, kann signiert werden, verschlüsselt und mit einem Eignentümerstempel versehen werden.
Das alles klingt zunächst mal unglaublich aufwändig. So aufwändig wie es für die ersten Flugpioniere geklungen hätte, heute geltende Pilotenprüfungen abzulegen. Marie Curie hätte ihre Forschungen gar nicht machen können, hätten damals die aktuellen Sicherheitsanforderungen an den Umgang mit radioaktiven Materialien gegolten.
Aber wir befinden uns in der IT noch immer in einer “frühkindlichen” Phase. Moore hat – obwohl immer wieder totgesagt – für viele Jahre nicht ausgedient. Rechenpower, Speichergröße und Netzbandbreite werden stetig verbessert und verbilligen sich dadurch. Und transaktionssichere Implementationen für alle Layer des Netzes sind prinzipiell möglich, trotz aller Hürden die sich zum Beispiel aus der Frage der Vertrauenswürdigkeit von Blackbox-Hardware ergeben. Kann sein, dass man sich auch von von-Neumann-Architektur verabschieden muss. Who cares?
Das Verfahren für eine transaktionssichere Infrastruktur heißt – trommelwirbel – Blockchain. Wiki schreibt u.a.:
Eine wesentliche Besonderheit der Blockchain ist, dass sie Einvernehmen über geschäftliche Transaktionen herstellen kann, ohne hierzu eine zentrale Instanz oder einen vertrauenswürdigen Dritten zu benötigen.
Eine solche Infrastruktur hätte zum Beispiel einen netten Nebeneffekt: Umgeht jemand die Blockchain um an Daten zu gelangen, deren Eigentümer ihm keinen Zugriff darauf gegeben hat, macht er sich strafbar. Im Zweifelsfall könnte man Datenweitergabe sogar noch von einem Schlüsseltausch abhängig machen.
Und die Überwachung?
Überwachung könnte laut gültigen Gesetzen nicht mehr mit einem Fischernetz (wie z.B. bei G10) stattfinden. Nur Richter können bei einem begründeten Verdacht Zugriff auf die Daten erlauben. Der Netznutzer würde gewissermassen dem Staat vertrauen müssen und für ihn würde der Erlaubnisvorbehalt gelten. Durch einen Key-reject kann der Dateneigentümer sogar im Nachhinein ihn betreffende Daten von der Verarbeitung ausschliessen.
Der zu fordernde Umbau der existierenden Netzinfrastruktur ist das einzige, das derzeit notwendig ist. Als Anmerkung zur EU-Charta wäre folgendes sinnvoll:
Jeder Mensch hat das Recht auf eine transaktionssichere und geschützte Teilnahme an digitaler Kommunikation. Daten die ein Kommunikationsteilnehmer in den Kommunikationsnetzen hinterlegt sind als Teil seiner Person zu betrachten und geniessen dem gleichen Schutz wie seine Wohnung.
Wem die obige Forderung zu radikal ist kann sich gerne die Kleinklein-Kritik anderer an der Digitalcharta durchlesen:
- Thomas Stadler: “Die Charta ist in doppelter Hinsicht anmaßend.”
- Hadmut Danisch: “Entweder hat man ein Recht, und kann dann aufgrund dieses Rechtes etwas fordern. Oder man hat das Recht nicht, dann kann man darum bitten oder betteln.”
- Wolfgang Michal: “Wie man eine richtige Debatte in falsche Bahnen lenkt”
- Niko Härting: “Ganz allgemein gibt man die Devise aus, es handele sich ja nur um einen ‘Diskussionsanstoß’”
- Julia Reda: “Rückschritt gegenüber dem Status quo”
- tante: “Und hier bleibt der Entwurf weit hinter allem zurück.”
- mspr0: “Ich hoffe, dass diese Debatte totgeschwiegen wird. Wenn das irgendwann mal eine gesetzliche Regelung wird, dann: Gute Nacht!”
- Steglitz meint: “So wird das leider nix. Jedenfalls nichts mit einer wünschenswerten Beteiligung vieler EU-Bürger.”
- Algorithmwatch: “Unser Fazit: Gut gemeint ist auch hier das Gegenteil von gut gemacht.”
- Bernhard Kern: “Die Rechte der Charta gelten auch gegenüber Privaten. Das heißt also im Zweifel auch gegenüber den eigenen Nachbarn.”
- Ausbaldowert: “Es bleibt der Eindruck eines unausgegorenen Experiments.”
- Martins Blog: “Der Staat ist sehr gefährlich einerseits (Gewaltmonopol), aber andererseits die einzige heilbringende Quelle, weil nur er überhaupt Grundrechte gewähren kann.”
FPGA in der Amazon-Cloud
Am 30. November stellte Amazon ein Developer-Programm für ein neues Serverangebot vor. Unter dem schlichten und schlicht schönem Namen F1 stehen nun Rechner mit FPGAs zur Verfügung. Leider sind die Preise noch nicht bekannt, sollen aber schon bald verfügbar sein. Bei der avisierten Ausstattung kann man aber damit rechnen, dass Stundenpreise im zweistelligen Dollar-Bereich zu zahlen sind.
Zum Einsatz kommen Xilinx UltraScale+ VU9P Virtex FPGAs (~2,5M Logic Units). Bis zu sieben Boards sind in einem Server verfügbar. Eine solche Karte kostet auf der Strasse bis zu 20.000 Euro. Das Investment von Amazon kann also als signifikant bezeichnet werden. Und es dürfte sich dabei nicht nur um ein simples “Me Too” gegenüber Microsofts Bekenntnis zu FPGAs handeln.
Auf einer Karte, die über PCIe x16 angebunden ist stecken 64GByte DDR4-RAM. Angebunden ist der Speicher mit einem 288bit Bus. Die Anbindung verspricht (theoretische) 400Gbps Transferraten. Xilinx spricht von einem “bidirectional ring” ohne näher zu erklären, was sie damit genau meinen. Sie weisen darauf hin, dass man das Zugriffsprotokoll selbst implementieren muss. Was in den meisten Fällen auf eine AXI-DMA-Lösung hinausläuft.
Obwohl die 400Gbps noch nicht an die Top-Karten von NVIDIA rankommen sind sie zusammen mit den 64GByte RAM eine echte Alternative zu der Verwendung von GPUs für Machine Learning. Denn im Gegensatz zu einer symmetrischen Core-Konfiguration können FPGA intelligenter auf den Speicher zugreifen. Mit einem Bus von 288 bit Breite stellt sich das neulich beschriebene Problem Resourcen-hungrigen AXI-Implementation als nicht mehr so dramatisch dar.
Die F1-Instanzen stellen eine virtuelle JTAG-Instanz zur Konfiguration des FPGA-Bitstreams bereit. Dabei dürfte es sich vermutlich um einen Device-Driver von Xilinx für CentOS handeln. Allerdings hat Xilinx Vivado offensichtlich auch für den Einsatz auf CentOS selbst fit gemacht. D.h. man kann den gesamten Workflow auf die Cloud auslagern. Was sicher die Synthese beschleunigt, wenn man selbst nur einen kleinen Arbeitsplatzrechner zur Verfügung hat. Ob das aber ein wirklich praktisches Setup ist, muss jeder selbst entscheiden. Bei den zu erwartenden Preisen rechnet sich ein neuer Arbeitsplatzrechner bereits nach einer Woche Download, Install, Konfiguration, Tests mit Vivado.
Jeff Barr (“Chief Evangelist for the Amazon Web Services”) beschreibt in einem kurzen Hands On wie man zu seinem ersten AFI (Amazon FPGA Image) kommt. Leider wird nicht klar, ob es sich dabei nur um einen Bitstream-Wrapper handelt oder tatsächlich um neues Format. Unklar ist derzeit auch noch, ob sequentielle Updates für die Bitstreams möglich sind. Die Chips bieten diese Option prinzipiell. Auch über verschlüsselte Bitstreams ist nichts in Erfahrung zu bringen.
Amazon wird mit der Verfügbarkeit der F1-Instanzen ein Github-Repository unter https://github.com/aws/aws-fpga(derzeit noch 404) veröffentlichen, das Samples und SDK enthält. Es wird spannend, ob sie tatsächlich einen neuen AXI-Stack als freies IP veröffentlichen oder ob man sich das entsprechende Lizenz-File für die lokale Synthetisierung laden kann.
Um eine Preview-Membership kann man sich hier bewerben.
Fazit
Die Idee, FPGAs in der Cloud anzubieten ist nicht neu. Der Anbieter POMMP verspricht seit Jahren signifikante Beschleunigungen für viele rechenintensive Prozesse. Es ist schön zu sehen, dass nun auch die Großen der Branche auf den Zug aufspringen. Wenn sich nun noch etwas an der Tool-Front tut dürfte dem Erfolg nichts mehr im Weg stehen.
Kernschmelze im Rechenzentrum
Ende September schrieb die Wired über Microsofts Wette auf FPGAs in ihren Cloud-Rechenzentren. Es hat dann “nur” drei Wochen gedauert bis auch die großen Medien (Fortune, The Register, Forbes, …) auf das Thema aufmerksam wurden. Verstärkt wurde die Aufmerksamkeitswelle noch durch die Berichte, dass im neuesten Apple iPhone auch ein FPGA sitzt (fälschlicherweise vermutet der Autor, dass dieser für AI zuständig ist). Dass es so lange gedauert hat ist insofern erstaunlich, da Wired von Diane Bryant erfahren haben will, dass Intel die 16 Mrd. Dollar für Altera ausgegeben hat, eben weil Microsoft zukünftig FPGAs in ihren Servern haben will. Und Diane Bryant ist immerhin Intels Vizepräsidentin für die Data Center Group.
Die Übernahme des zweitgrößten FPGA-Herstellers Altera durch den größten CISC-Prozessor-Anbieter für eine Rekordsumme in diesem Markt wurde von Intel begründet mit dem großen Potential der frei programmierbaren Chips im Bereich des machine und deep learnings. Und diese Form der Computation geschieht – zumindest heute noch – in Rechenzentren.
FPGAs für Deep Learning?
Microsoft selbst untersuchte schon länger die Möglichkeiten von FPGAs als Beschleuniger für den Betrieb von AI-Tasks. Sie sind dabei nicht die ersten. Schon 2010 hatte Yann LeCun (heute Leiter des AI-Labors bei Facebook) ein Paper über die Hardware-beschleunigte Umsetzung von Convolutional Neural Networks mitverfasst.
Facebook selbst hatte im Frühjahr verlauten lassen, dass es seine Zusammenarbeit mit Intel bei der Definition neuer Serverprozessoren unterstützt. Dabei sollen zukünftig SoC rauskommen, die neben dem Xeon auch einen FPGA enthalten können.
Zusammen mit Google arbeitet Facebook darüber hinaus an einem Standard für eine schnellere Anbindung unter anderem von “Co-Prozessoren” an den Hauptprozessor. Diese Initiative namens OpenCAPI soll die Bremse PCI Express ablösen. Weder PCIe 3.0 mit 32 Lanes noch PCIe 4.0 sind derzeit in Sicht und damit ist die maximale Transferrate seit Jahren bei 16GByte/s eingefroren. OpenCAPI (Open Coherent Accelerator Processor Interface) soll pro “Link” 25Gbit/s ermöglichen mit initial 8 Links. Damit wäre man bei maximal 25GByte pro Sekunde. (Leider kennt Heise den Unterschied zwischen GBit und GByte nicht.)
Flaschenhals Speicherbandbreite
/* TBL */
Die letzte Folge der dritten Staffel von Halt and Catch Fire wurden grade ausgestrahlt. Wer die Serie bisher nicht kennt, sollte sie unbedingt ansehen, wenn er sich auch nur marginal für Computer und deren Entstehungsgeschichte interessiert.
In einem wunderschönen und wunderschön schlichten Moment des Staffelfinales – und der IT-Geschichte – treffen sich die Hauptprotagonisten zu einem Meeting in der es um die Frage geht, ob sich aus der Entwicklung dieses Hyptertext-Systems vom Cern irgendwas für die Zukunft machen liesse.
Wie so oft ist es Joe MacMillan (Lee Pace), der die Bedeutung einer Erfindung – diesmal das “WWW” – erkennt. Er argumentiert, dass dies die Befreiung der vernetzten Welt aus den umzäunten Vorgärten der AOLs, CompuServes, etc. ist. Um dies zu verdeutlichen schreibt er den Code des Browsers an das Whiteboard.
Man findet den Code heute auf dem Internet Archive in einer Browser-Collection. Interessant an dem Code ist, dass der erste Browser im wesentlichen eigentlich nur ein Wrapper zu dem RTF(D)-Framework von NEXTSTEP war. Die wichtigsten Zeilen der Datei WorldWideWeb.m befassten sich mit den Einstellungen für die PostScript-Darstellung wie PaperType, LeftMargin, etc.
In der Serie wurde der Code fast fehlerfrei geschrieben. Allerdings zeigt die Archive-Version, dass zwei Zeilen auskommentiert wurden (NXArgc & NXArgv). In vielen Zeilen findet sich der Kommentar /* TBL */ – ganz offensichtlich von Tim Berners-Lee selbst.
Den original Browser kann man sich übrigens auf oldweb.today ansehen und ausprobieren.
Machine Learning in der Web-Analyse
Die meisten Nutzer von Web-Analytics-Lösungen sind früher oder später vom Output ihrer Tools desillusioniert. Oft wegen der Zahlen selbst, aber häufiger ob der (geringen) Aussagefähigkeit der Kurven, Torten und Tabellen. Die versprochenen “Insights” verstecken sich in einem Wust banaler, irrelevanter und teils absurder Aussagen. Was wäre, wenn ein Automat die wichtigen von den unwichtigen Bezügen trennen könnte? Wäre Artificial Intelligence also Machine Learning dazu in der Lage?
Zu viele Fragestellungen an Web-Analyse-Tools
Die meisten Lösungen für Web-Analytics decken ein zu großes Zielpublikum ab. Marketingabteilung, HR, Vertrieb und Support stellen meistens sehr unterschiedliche Fragen an die Tools. Bei vielen Kunden wird dann nur ein geringer Teil des tatsächlich Möglichen implementiert und alle Abteilungen erhalten wesentlich weniger “Insights” als ursprünglich erwartet.
Für alle Abteilungen einer mittelständischen Firma könnte eine wichtige Fragestellung an ein Web-Analyse sein: Wie viele Besucher, die auf der Suche nach einer spezifischen Information (z.B. Stellenanzeige, Produktdokumentation oder Ansprechpartner) sind, finden diese Information nicht. Eine klassische Lösung kann diese Frage nicht beantworten. Der Nutzer müsste sich komplexe Filter zusammenbauen und würde dennoch nur eine Teilantwort erhalten. Mit Hilfe von Machine Learning wäre diese Frage beantwortbar.
Konfiguration eines Netzes
Im Gegensatz zu typischen Anwendungen wie beispielsweise Bild- oder Spracherkennung stellt sich bei der Web-Analyse eine besondere Hürde für die Verwendung eines neuronalen Netzes: die Anzahl der Parameter für den Input ist im Prinzip unbegrenzt. Zu einer User-Session gehören grundsätzlich neben den aufgerufenen Seiten und dem Referrer alle Eigenschaften des Netzes wie des Browsers.
Diese Parameter sind jedoch variabel. D.h. dass beispielsweise Referrer sich im Laufe sehr kurzer Zeit verändern, ebenso wie die User-Agent-Strings oder die (möglicherweise anonymisierte) IP. Einige dieser Parameter komplett zu ignorieren würde jedoch viele mögliche Aussagen (z.B. “Stellensuche funktioniert nicht mit Safari”) im Vorfeld ausschliessen.
Der Umgang mit den Parametern – das Encoding – bestimmt die Art und vor allem Größe des verwendeten Netzes. In den Daten gibt es grundsätzlich zwei verschiedene Arten von Daten. Fast alle Daten lassen sich in der Form key=value aufbereiten. Dabei lassen sich alle Values gruppieren (z.B. Browser=Safari|Firefox|Chrome…). Im Prinzip sind damit auch die Timestamps modellierbar.
Ausgehend vom ImageNet erschien allerdings ein anderer Ansatz zielführender. Betrachtet man die für das Training verwendeten Bilder, so enthalten sie natürlich zuerst die Bilddaten selbst. Darüber hinaus ist jedes Bild jedoch auch mit Metadaten qualifiziert. D.h. wenn auf einem Bild eine Axt zu sehen ist, dann enthält die Beschreibung diese Information zusammen mit den Koordinaten.
Rapide sinkende Nutzung deutscher Nachrichtenseiten
Im Rahmen eines aktuellen Projektes untersuche ich derzeit die Nutzerzahlen verschiedener deutscher Themenportale. Dabei fiel eine kongruente Entwicklung der Zahlen für die großen News-Sites in Deutschland auf. Seit etwa der zweiten Septemberwoche befinden sich die Zahlen in einem rapiden Fall. Basis der Daten ist das Panelsystem Alexa. Sie werden erhoben mit Hilfe von Browser-Plugins. Vertriebsweg für die Plugins sind Browserbundles auf vorinstallierten Systemen oder von Download-Sites.
In dem Chart wurden die Alexa-Rankingverläufe (Global) der Seiten spiegel.de, welt.de, faz.net, sz.de, bild.de, focus.de und tagesschau.de übereinander gelegt und auf den gleichen Wert zu Beginn der Zeitskala gelegt. Obwohl die Zahlen schnell auseinander laufen kann man deutlich mehrere Phasen sehen in denen die Entwicklungen kongruent verlaufen. Im Februar beispielsweise steigen die Rankings für alle Seiten vergleichbar an. Ein ähnlicher Anstieg ist für fast alle Seiten ab Juni zu bemerken. Einzige Ausnahme ist hier die tagesschau.de. Offensichtlich war die tagesschau für viele Fussballinteressierte während der Weltmeisterschaft nicht die wichtigste Informationsquelle.
Der signifikante Einbruch ab Mitte September ist normalerweise bei Alexa nicht zu sehen. Wenn er doch mal bei einzelnen Seiten zu finden ist, liegt es meistens an Relaunches oder technischen Problemen und findet sich dann auch in den Alexa-Zahlen für den Anteil der Sucheingänge.
Die untersuchten Seiten vereinen den größten Teil der aktiv aufgerufenen Newsseiten in Deutschland. Andere News-Sites wie T-Online oder Yahoo-News muss man separat betrachten, weil diese Seiten von Systemanbietern (PC-Hersteller oder Provider) als Startseiten eingetragen werden.
Mögliche Ursachen
Eine naheliegende Erklärung könnte eine Änderung der Google-Listings als Folge des Leistungsschutzrechts sein. Allerdings hat Google diesbezüglich noch nichts unternommen. Erst vor einer Woche wurde angekündigt, dass man zukünftig die Snippets eindampfen wird.
Sehr viel wahrscheinlicher dürfte sowohl die Art der Berichterstattung über politische Ereignisse als auch der Umgang mit den Kommentatoren sein. Vielen Redaktionen wird immer öfter eine einseitige Berichterstattung bis hin zur Kriegstreiberei vorgeworfen. Diese Vorwürfe finden sich auch häufig in den Kommentaren. Die Reaktion der Publisher auf diese Kommentare kann man eigentlich nur als Wagenburgmentalität bezeichnen. Oft werden viele Kommentare gesperrt, die Accounts von Kommentatoren werden deaktiviert oder die Kommentarfunktion für einzelne Artikel wird ganz deaktiviert.
Zu dem drastischsten Schritt sah sich offenbar die Süddeutsche veranlasst. Sie lässt jetzt nur noch Kommentare zu wenigen ausgewählten Artikeln zu und hat diese Funktion auch noch ausgelagert. Für die SZ begann der Abstieg übrigens am 1. September – der Tag an dem die neue “Kommentarfunktion” online geschaltet wurde …
(Zum Vergleich noch die Rankings von T-Online und AOL. Beide Seiten sind sehr häufig als Browser-Startseiten eingerichtet. Daher kann man aus ihnen ungefähr abschätzen, wie die allgemeine Nutzung des Netzes in Deutschland ist. Betrachtet man den fraglichen Zeitraum gibt es keinen Hinweis, dass die Nutzung generell rückläufig wäre.)
Domain-übergreifende Hilfs-Cookies mit “window.name”
Die aktuelle Diskussion über Canvas-Fingerprints hat wieder gezeigt, dass sowohl Browser als auch HTML und JavaScript viele Einfallstore für Datensammler bieten. Viele Funktionen, die den Nutzern eigentlich den Umgang mit dem Web erleichtern sollen stellen sich früher oder später als Privacy-Lücke heraus (z.B. kann das Caching für einen ausgezeichneten Cookie-Ersatz verwendet werden).
Für Datensammler stellt sich jedoch immer auch das Problem der Domaingrenze. D.h. die Browser verhindern inzwischen den Zugriff auf Informationen oder Funktionen, die von einer anderen Domain im Browser angelegt wurden.
“window.name” funktioniert Domain-übergreifend
Allerdings gibt es mit dem Objekt window.name einen Store für beliebige Inhalte, die von einer Domain zur nächsten übermittelt werden können. Ein einfacher Test in der Browserconsole zeigt, wie es funktioniert:
> window.name
< ""
> window.name = "id"
< "id"
Ruft man nun in der aktuellen Seite einen Link auf, der auf eine andere Domain verweist und fragt wiederum window.name ab erhält man weiterhin “id”:
> window.name
< "id"
Die Ursprungsseite kann also Informationen an die Zielseite weiterleiten. Und dies obwohl bei in verschiedenen Domains liegen. Der Speicherplatz in der Variable kann dabei mehrere hundert KByte große sein.
Privacy-Lücke auch in Tor
Prinzipiell eignet sich das Verfahren damit für die Erkennung und Rekonstruktion von Nutzern insbesondere in anonymisierenden Umgebungen wie etwa Tor oder hinter privoxy. Tatsächlich überschreibt auch der Tor-Browser die Variable nicht, wenn eine neue Seite aufgerufen wird. Ein interessierter Angreifer kann Code auf bestimmte Seiten platzieren und den window.name setzen und auf anderen Seiten diesen wieder auslesen. Dabei muss die Variable nicht permanent gesetzt sein. Es genügt eine Funktion bei “unload” aufzurufen, die gewünschten Informationen in die Variable zu schreiben und beim Aufruf der neuen Seite wieder auszulesen und zu löschen.
Cross-Domain-Angriff möglich
Da in der Variable window.name nicht nur Strings sondern auch Code gespeichert werden kann, lässt sich so prinzipiell auch schadhafter Code auf fremden Seiten einschleusen. Das offensichtlichste Einfallstor sind weit verbreitete JavaScript-Frameworks, die auf das Objekt zugreifen. Wenn darin dann statt des erwarteten Strings Methoden stecken, kann das Framework dazu gebracht werden, diese fremden Funktionen auszuführen.
Ein kompromittiertes Banner zu einer Bankenseite kann dorthin Code deployen und dann unter anderer Domain und sogar https Zugangsdaten und PINs abgreifen oder gar gleich den Empfänger manipulieren.
Tatsächlich wird mit der Technik schon eine Weile rumgespielt. Auf github findet sich zum Beispiel ein jQuery-Plugin, das window.name explizit für Cross-Domain-Messageing verwendet.
Wie in so vielen Fällen schützt auch hier wieder nur JavaScript abzuschalten. Prinzipiell stellt sich aber die Frage, ob der window.name überhaupt noch zeitgemäß ist. Immerhin sind die Zeiten der Framesets und damit die Notwendigkeit der Frame-Namen glücklicherweise vorbei.