Hallo zusammen, wir möchten neuronale Netze ausprobieren. Seit Geoffrey E. Hinton 2007 hat die künstliche Intelligenz einen großen Sprung gemacht. Deep Learning geht nun - 10 Jahre später - mit einer 300€-Grafikkarte oder einer 2000€- Coprozessor-Karte auch zuhause. C# wäre cool, C oder C++ gehen aber auch. Welche Grafikkarte sollten wir uns z.B. kaufen? Ich habe gehört, NVIDIA/CUDA sei besser als AMD/OpenCL. Hat jemand Erfahrungen und kann und kann uns (meinem Sohn und mir) den Einstieg erleichtern? Was sollten wir kaufen? Geht Deep Learning mit C# und Visual Studio? Oder was sollten wir als IDE nutzen? VG Torsten
eine IDE ist dein kleinstes problem. wenn du vernünftig einsteigen willst brauchst du ein framework wie zB tensorflow. das nimmt dir sehr sehr viel ab...allerdings ist die eintiegshürde auch sehr hoch. hast du schon eine konkrete anwendung mit entsprechenden trainingsdaten ? wenn nicht solltest du erstmal hier anfangen bevor du loslegen kannst..
Hi, OpenCL funktioniert auf vielen Plattformen (AMD, NVIDIA, Intel, ... ), CUDA ist dagegen auf NVIDIA beschränkt aber dafür ein wenig performanter. Ich würde daher erst einmal mein Glück mit OpenCL versuchen. Ich habe mir für den Einstieg eine NVIDIA 1050TI gekauft. Die bietet ein gutes Preis-Leistungsverhältnis und reicht für den Einsteig (selbstentwicklung oder Tensorflow etc.) mehr als aus. Gruß
Torsten C. schrieb: > Geht Deep Learning mit C# und Visual Studio? Klar, du kannst in CUDA oder OpenCL eine C#-VM implementieren. Überhaupt kein Problem.
Tensorflow kannte ich noch nicht. Danke. Wenn man danach googelt, dann hagelt es nur so an Infos. Keine Ahnung, warum ich das nicht gefunden habe. Ich installiere mir das mal unter Windows und schaue, wie weit ich damit komme: https://www.tensorflow.org/install/install_windows
aus dem "Getting started" Getting Started With TensorFlow This guide gets you started programming in TensorFlow. Before using this guide, install TensorFlow. To get the most out of this guide, you should know the following: How to program in Python.
Mike B. schrieb: > How to program in Python. Ja, Mist. Ich bin in C# zuhause. Ich befürchte, da muss man wohl durch? Billy schrieb: > Klar, du kannst in CUDA oder OpenCL eine C#-VM implementieren. Wie ist das gemeint? Ich dachte wohl eher umgekehrt, z.B. wie mit der Task Parallel Library (TPL) mit "Parallel.ForEach()" z.B. https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop Donni D. schrieb: > CNTK angucken Schaue ich mir an. :) Danke, klingt gut: > CNTK can be included as a library in your C# programs https://docs.microsoft.com/en-us/cognitive-toolkit/
Wie ist das eigentlich, brauch man für solche Spielereien zwei Grafikkarten? Also eine, die den Monitor bedient, und eine, auf der man Berechnungen durchführt? Oder läuft die normale Monitor-Anzeige und die Berechnung neuronaler Netze simultan auf einer einzigen eingebauten Grafikkarte im PC?
Neugieriger schrieb: > Oder läuft die normale Monitor-Anzeige und die Berechnung neuronaler > Netze simultan auf einer einzigen eingebauten Grafikkarte im PC? solange du da keine tollen Games nebenbei zockst sollten CUDA und OpenCL sowieso exclusiven Zugriff auf die Recheneinheiten haben
Das^^ ist ja mysteriös: Nehmen wir an, es ist sowohl eine Nvidia Geforce GTX 1050 Ti (wie bei deeplearn^^) und eine Nvidia Geforce GTX 750 Ti (wie in meinem Windows-PC) eingesteckt. Geht das überhaupt? Kann man dann beide parallel mit CUDA/OpenCL nutzen? Oder hat Grafik Vorrang vor CUDA/OpenCL? Oder umgekehrt? Und ist für Linux und Win10 die Antwort die gleiche?
:
Bearbeitet durch User
Torsten C. schrieb: > Mike B. schrieb: >> How to program in Python. > Ja, Mist. Ich bin in C# zuhause. Ich befürchte, da muss man wohl durch? Nun, sagen wir so: in der wissenschaftlichen und der professionellen Datenanalyse ist Python sehr stark vertreten, weil es einerseits sehr leicht zu lernen, schreiben und lesen ist, und andererseits durch die Einbindung von nativem Code enorm performant sein kann. Obendrein bringt Python mit Matplotlib, Bokeh, Holoviews oder Datashader leistungsfähige Frameworks zur Datenvisualisierung mit. Und genau deswegen, weil Python mittlerweile in der Datenanalyse so eine Art Industriestandard geworden ist, bieten etwa MachineLearning-Frameworks wie Tensorflow und scikit-learn entweder Python-Support an oder sind gleich in Python implementiert. Deswegen bieten auch Frameworks zum Distributed Computing wie Apache Spark native Python-Unterstützung an... ;-) Trotzdem ist Python so einfach, daß es in Großbritannien mittlerweile sogar schon an Grundschulen als erste Programmiersprache gelehrt wird. Für jemand mit Programmiererfahrung, insbesondere in einer objektorientierten Sprache wie C#, C++, oder Java, ist das Lernen von Python nach meinen Erfahrungen mit mir selbst, meinen Kollegen und einigen Freunden ein Kinderspiel. Wenn Du es versuchen möchtest, würde ich Dir für Windows die Distribution "Anaconda" empfehlen, die neben den Standardpaketen schon viele Libraries, Frameworks und Werkzeuge für Scientific Computing, Machine Learning und Datenvisualisierung mitbringt. Ansonsten, nur so eine Idee: Machine Learning und solche Dinge kann man zunächst auch auf der CPU machen und braucht nicht zwingend eine GPU. Die GPU wird erst dann interessant, wenn die Geschichte besonders performant werden soll, etwa um Daten in Echtzeit verarbeiten zu können. Bis Ihr an dem Punkt seid, würde ich den Erwerb einer eigenen Grafikkarte für dieses Thema zunächst zurückstellen -- die Preise sinken kontinuierlich und die Leistungsfähigkeit der Karten steigt schnell. Machine Learning ist recht komplex -- und bis Ihr Euch da ohne Vorkenntnisse hineingearbeitet habt, kosten die Top-Grafikkarten von heute nur noch die Hälfte und werden für dasselbe Geld vermutlich schnellere Karten erhältlich sein. YMMV.
Eine GPU ist einfach ein relativ hoch spezialisierter Prozessor der viele gleichartige Operationen paralel ausführen kann. Ein bischen Fenster zeichnen kostet da nicht viel rechenleistung, aber wenn man will kann man ja trotzdem auf das ganze GUI zeug verzichten. Ich empfehle OpenCL, Nvidia ist mir wegen ihrem anti competitiven Verhalten, ihren zahlreichen Patenten und Proprietären eigenentwicklungen schon lange ein Dorn im Auge. Torsten C. schrieb: > Geht das überhaupt? Kann man dann beide parallel mit CUDA/OpenCL > nutzen? > > Oder hat Grafik Vorrang vor CUDA/OpenCL? Oder umgekehrt? > Und ist für Linux und Win10 die Antwort die gleiche? Wann die karte was macht ist (normalerweise) sache des OS und dessen Grafigkartentreiber. Alle heutigen Systeme können damit umgehen, wenn mehrere Anwendungen die Karte benötigen. Es gibt diverse standardisierte APIs um mit Grafigkarten zu interagieren. Für Berechnungen eben OpenCL. Die OpenCL API sieht vor, dass man zunächst einen OpenCL context erstellt. Dabei kann man angeben, welche Geräte man verwenden will: https://www.khronos.org/registry/OpenCL/sdk/1.0/docs/man/xhtml/clCreateContext.html https://gist.github.com/courtneyfaulkner/7919509 Bei der 3D Grafik API Vulkan ist dies genauso, bei deren Vorgänger OpenGL hingegen wählt die OpenGL implementierung aus welches Gerät verwendet wird. Torsten C. schrieb: > Billy schrieb: >> Klar, du kannst in CUDA oder OpenCL eine C#-VM implementieren. > Wie ist das gemeint? Ich dachte wohl eher umgekehrt, z.B. wie mit der > Task Parallel Library (TPL) mit "Parallel.ForEach()" z.B. > https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop Wenn du OpenCL verwenden willst, kannst du zwar mit einer beliebigen Sprache die Daten zur Grafikkarte senden usw., aber die eigentlichen Berechnungen wirst du dann doch in OpenCL schreiben müssen. PS: Achte beim Graphikkartenkauf darauf eine zu nehmen die aktuellen OpenCL und GLSL versionen unterstützen. Ich hatte schon schlechte erfahrungen bei NVIDIA, wo aktuelle Gameingkarten nur relativ alte OpenCL und GLSL versionen hatten, wärend vergleichbare teurere Business modelle neuere versionen hatten, vermutlich damit Game entwickler die nicht sowieso Nvidias lösungen nutzen nicht das volle Potential der Hardware der Konkurrenz ausnutzen können, aber das ist reine Spekulation...
Torsten C. schrieb: > Das^^ ist ja mysteriös: > Nehmen wir an, es ist sowohl eine Nvidia Geforce GTX 1050 Ti (wie bei > deeplearn^^) und eine Nvidia Geforce GTX 750 Ti (wie in meinem > Windows-PC) eingesteckt. > > Geht das überhaupt? Kann man dann beide parallel mit CUDA/OpenCL > nutzen? ich denke ja, da bei beiden vor der Berechnung der Rechner auf alle möglichen Recheneinheiten durchsucht wird dabei ist es egal, wenn zwei unterschiedliche GK drin sind, Hauptsache sie lassen sich als passende Devices ansprechen CUDA nimmt nur CUDA-fähige Graphikkerne, ob das mittlerweile auch AMD-GK umfasst weiss ich gar nicht, ansonsten eben ausschliesslich GK mit nVidia-Kernen https://de.wikipedia.org/wiki/OpenCL#Architektur OpenCL nimmt sowohl GPU als auch CPU, und dort jeweils die einzelnen Kerne als eigenständige Recheneinheiten bei beiden Ansätzen wird die Rechenlast automatisch auf alle Recheneinheiten verteilt > Oder hat Grafik Vorrang vor CUDA/OpenCL? Oder umgekehrt? wie gesagt, wenn du nebenbei keine Spiele zockst, also DirectX-Anwendungen am Laufen hast, kann das egal sein ansonsten dürfte die Last für die Spiele und die Berechnungen automtisch aufgeteilt werden > Und ist für Linux und Win10 die Antwort die gleiche? k.A., ich weiss nur, dass Linus Thorvalds nicht umsonst immer auf nvidia schimpft, die Treiber-Unterstützung nvidia-Linux war zumindest mal mangelhaft, das betraf dann sicher auch CUDA Wenn du ihn nicht brauchst kannst du Linux ohne Desktop starten was eine ganze Menge Last vom Rechner nimmt, Speicher- und CPU-Auslastung sind entsprechend niedriger. Ob dann CUDA/OpenCL aber ansprechbar sind weiss ich auch nicht. Versuch das mal mit Win10...
Vergiss Neuronale Netze. Das ist schon lange ein totes Pferd, auf das immer wieder Neue aufsteigen, weil man nochmals ein Paper rausdruecken kann. Macht sich gut in Patenten und Werbung, da man nichts offenlegen muss. Neuronale Netze lernen und vergleichen Muster. Bedeutet man muss es trainieren, und kann nachher etwas aehnliches hinwerfen, das dann erkannt werden kann. Allerdings gibt es kein inkrementelles Lernen. Dh wenn die Buchstaben A-Y erkannt werden, kann man nicht Z hinzufuegen, sondern muss A-Z neu lernen lassen.
Wenn man das Lernen automatisieren kann, ist das doch nicht so schlimm? Kennst Du eine Technologie, die NN auf deren Domänen ersetzen kann? Ich bin ja auch ein Freund von regelbasierten Systemen, muss aber zugeben, dass wir die auf vielen Gebieten kaum realisieren können, weil wir Menschen die Regeln nicht mehr überblicken können.
Flaschensammler Troll schrieb: > Vergiss Neuronale Netze. Das ist schon lange ein totes Pferd, auf das > immer wieder Neue aufsteigen, weil man nochmals ein Paper rausdruecken > kann. Nein. Das Thema neuronale Netze fängt gerade erst so richtig an. > Macht sich gut in Patenten und Werbung, da man nichts offenlegen muss. > Neuronale Netze lernen und vergleichen Muster. Bedeutet man muss es > trainieren, und kann nachher etwas aehnliches hinwerfen, das dann > erkannt werden kann. Allerdings gibt es kein inkrementelles Lernen. Dh > wenn die Buchstaben A-Y erkannt werden, kann man nicht Z hinzufuegen, > sondern muss A-Z neu lernen lassen. Inzwischen gibt es schon neuronale Netze, die andere neuronale Netze erstellen und trainieren. Für mein Verständnis ist ein Problem neuronaler Netze, dass es, wenn was nicht so tut, wie es soll, schwierig wird, zu verstehen, warum und das zu beheben.
Ja, man weiss halt nicht so genau, welche Regeln das System da eigentlich lernt. Deshalb find ich den Einsatz im militärischen oder auch Finanzbereich schon bischen bedenklich. Andererseits gibt es im Moment wohl keine ernsthafte Alternative und ich befürchte, dass der 1. Rechner, welcher diese Menschen für unnützen Ballast hält, wohl auf einem NN basiert. ;( Aber man kann es sich aus Konkurrenzgründen halt nicht erlauben, einfach auf die Benutzung zu verzichten.
Auf meinem Handy ist 'ne Foto-App, die ein Kästchen um jedes Gesicht macht und das geschätzte Alter dazu schreibt. Zugegeben: Manchmal liegt die App mit dem Alter total daneben, aber Gesichter erkennt diese App zuverlässig. Ich hätte keine Idee, wie man sowas regelbasiert programmieren sollte. Flaschensammler Troll schrieb: > Das ist schon lange ein totes Pferd Hast Du den Namen Geoffrey E. Hinton (siehe Ursprungspost) mal gehört? Und was meinst Du, wie Alice, Siri und "OK, Google" programmiert wurden? Stammt Dein "Flaschensammler-Wissen" aus der Zeit vor 2007? Wer die Folge noch nicht kennt: cre.fm anno 2015 über Neuronale Netze: https://cre.fm/cre208-neuronale-netze deeplearn schrieb: > Ich habe mir für den Einstieg eine NVIDIA 1050TI gekauft. Die … reicht > für den Einsteig … mehr als aus. Und wer später noch mehr Deep-Learning will, der nimmt ein Asrock H110 Pro BTC+ mit PCIe-Extender/Riser: * scnr * ;) http://cryptomining-blog.com/8904-trying-out-the-asrock-h110-pro-btc-with-13x-gtx-1070/ VG Torsten, der mit seiner GTX750Ti noch nix auf die Reihe gebracht hat und gerade Trainings- und Test-Daten sammelt.
:
Bearbeitet durch User
> Für mein Verständnis ist ein Problem neuronaler Netze, dass es, wenn was > nicht so tut, wie es soll, schwierig wird, zu verstehen, warum und das > zu beheben. Jo, ist halt wie unser Gehirn aufgebaut, daß funktioniert gut aber verstehen tun wirs nicht... wenn es mal nicht gut funktioniert wird es schwer das zu beheben... da man es nicht versteht... Irgendwann wird man virtuelle Neurotransmitter, Hormone usw. in diese Computergehirne einbauen und sie in eine Virtuelle Umgebung und Körper zum lernen setzen... und am Ende haben wir uns selber nachgebaut... und unser Universum (nach seinem Ebenbild geschaffen)... verstehen tun wirs dann wahrscheinlich immer noch nicht. PS: die entwickeln dann auch irgendwann...
Hallo! Torsten C. schrieb: > VG Torsten, > der mit seiner GTX750Ti noch nix auf die Reihe gebracht hat und gerade > Trainings- und Test-Daten sammelt. In welche Richtung möchtest Du denn entwickeln? Ich interessiere mich für Trading usw.
uwe schrieb: >> Für mein Verständnis ist ein Problem neuronaler Netze, dass es, wenn was >> nicht so tut, wie es soll, schwierig wird, zu verstehen, warum und das >> zu beheben. > > Jo, ist halt wie unser Gehirn aufgebaut, daß funktioniert gut aber > verstehen tun wirs nicht... Das Gehirn haben wir allerdings auch nicht selbst gebaut, sondern müssen es erst aufwändig "reverse engineeren".
Torsten C. schrieb: > Auf meinem Handy ist 'ne Foto-App, die ein Kästchen um jedes > Gesicht > macht und das geschätzte Alter dazu schreibt. erstaunlich, was so kleine Prozessoren zu leisten im Stande sind Bildscan, Formenerkennung und parallele zusätzliche Mustererkennung und das auf nem Smartphone-Prozessor "so nebenbei" ... Mal von der ungefragten brachialen Verletzung der Persönlichkeitsrechte (Altersschätzung, Recht am eigenen Bild) ganz abgesehen, wofür braucht man ne App die einem sagt wie alt irgendjemand ist?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.