Trend-Themen
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Du bist in einem ML Engineer Vorstellungsgespräch bei Tesla.
Interviewer: Wir müssen ein neuronales Netz auf der Edge-Hardware des Fahrzeugs bereitstellen, aber es passt nicht in den Speicher. Wie würdest du damit umgehen?
Du: Ich werde Wissen-Distillation verwenden, um ein kleineres Modell zu trainieren.
Vorstellungsgespräch beendet.
Hier ist, was du verpasst hast:
Wissensdistillation benötigt Wochen an Rechenleistung, da Sie im Grunde ein neues Modell trainieren.
Aber die Lösung befindet sich bereits in Ihrem trainierten Netzwerk.
Die meisten Neuronen sind totes Gewicht - sie verbrauchen Speicher, tragen aber kaum zu den Vorhersagen bei.
Lassen Sie uns sehen, wie wir sie identifizieren können!
Hier sind die Schritte:
Schritt 1) Trainiere das neuronale Netzwerk wie gewohnt.
Schritt 2) Leite den Validierungsdatensatz durch das trainierte Netzwerk und berechne für jedes Neuron in den versteckten Schichten:
- Die durchschnittliche Aktivierung
- Die Varianz der Aktivierungen (wenn Aktivierungen negativ sein können)
Überprüfe das👇

Schritt 3) Schneiden Sie Neuronen, die einen nahezu null Aktivierungsdurchschnitt und eine geringe Varianz aufweisen, da sie wenig Einfluss auf die Ausgabe des Modells haben.
Idealerweise sollten Sie die Leistung über mehrere Beschneidungsgrenzen hinweg plotten, um das Modell auszuwählen, das Ihren Größen- und Genauigkeitskompromissen entspricht.
Überprüfen Sie dies 👇

Lass uns den Code ansehen.
Wir beginnen damit, ein einfaches neuronales Netzwerk zu definieren und es zu trainieren.
Da wir später die Aktivierungen auf Neuronenebene für das Pruning berechnen werden, geben wir alle Zwischenaktivierungen im Vorwärtsdurchlauf zurück.
Überprüfe das👇

Als Nächstes definieren wir zwei Listen mit drei Elementen:
- Eine wird den Mittelwert der Aktivierungen speichern
- Eine andere wird die Standardabweichung der Aktivierungen speichern
Wir lassen den Validierungsdatensatz durch unser Modell laufen, um diese Statistiken für jede versteckte Schicht zu berechnen.
Überprüfen Sie das 👇

An diesem Punkt lassen Sie uns ein Verteilungsdiagramm der neuronalen Statistiken erstellen, die wir oben generiert haben.
Wie unten dargestellt, sind die durchschnittlichen Aktivierungen der meisten Neuronen und deren Standardabweichung stark um Werte nahe Null verteilt.
Lassen Sie uns als Nächstes versuchen, sie zu beschneiden.

Für das Pruning durchlaufen wir eine Liste von Schwellenwerten und:
- Erstellen ein neues Netzwerk und übertragen die Gewichte, die den Schwellenwert überschreiten.
- Bewerten das neue Netzwerk und berechnen die Gesamtparameter.
- Fügen die Ergebnisse einer Liste hinzu.
Überprüfen Sie dies 👇

Diese Tabelle vergleicht die Genauigkeit und die Größenreduktion des beschnittenen Modells über mehrere Schwellenwerte im Vergleich zum ursprünglichen Modell.
Bei mean=0.1 und std-dev=0.4:
- Die Genauigkeit des Modells sinkt um 0,08%.
- Die Größe des Modells reduziert sich um 62%.
Das ist eine enorme Reduktion.
Überprüfen Sie dies 👇

Hier ist ein weiteres interessantes Ergebnis.
Bei mean=0.5 und std-dev=1:
- Die Genauigkeit des Modells sinkt um 0,5%.
- Die Größe des Modells reduziert sich um 74%.
Im Grunde genommen erhalten wir eine fast ähnliche Leistung mit 1/4 der Parameter.
Überprüfen Sie das 👇

Natürlich gibt es einen Kompromiss zwischen Genauigkeit und Größe. Wenn wir die Größe reduzieren, sinkt die Genauigkeit (siehe das Video).
Aber in den meisten Fällen ist die Genauigkeit nicht das einzige Kriterium, das wir optimieren.
Stattdessen sind mehrere betriebliche Kennzahlen wie Effizienz, Speicher usw. die entscheidenden Faktoren.
326
Top
Ranking
Favoriten
