Die Arbeit einmal tun und es belegen können
Forschung wiederholt sich: dieselbe Einstellungsgitter auf denselben Folds, dieselbe Merkmalstabelle für jedes Experiment neu gebaut. joblib beseitigt die Verschwendung. Parallel(n_jobs=k)(delayed(f)(x) for x in items) führt die unabhängigen Aufrufe f(x) auf k Arbeitern aus und liefert die Ergebnisse in der Reihenfolge der Elemente; n_jobs=-1 nutzt alle Kerne, n_jobs=1 führt sie nacheinander aus, wie es ein Browser tut. Die Kosten einer Aufgabe müssen größer sein als die Kosten, ihre Daten an einen Arbeiter zu senden, also winzige Aufgaben bündeln. Eine Gittersuche passt perfekt: 5 Alphas mal 5 gleitende Folds sind 25 unabhängige Anpassungen, und das Ergebnis hängt nicht davon ab, wie viele Arbeiter sie ausführten.
Memory(location).cache(f) hüllt f in einen Festplatten-Cache. Der erste Aufruf mit bestimmten Argumenten führt f aus und speichert das Ergebnis unter einem Hash der Argumente; der nächste Aufruf mit denselben Argumenten liest die Datei. Der Cache überlebt das Programmende und bemerkt, wenn sich f oder ein Argument ändert. Hashen Sie NumPy-Arrays statt DataFrames: Der Hash eines DataFrames kann von seinem internen Speicherlayout abhängen, sodass zwei Tabellen gleichen Inhalts verschieden hashen können und der Cache dann ins Leere greift. joblib.hash(array) ist ein Fingerabdruck des Inhalts: gleich bei einer Kopie, verschieden nach jeder Änderung, womit man beweist, dass zwei Experimente dieselben Daten nutzten. Schließlich schreibt joblib.dump(model, path, compress=3) ein angepasstes Modell in eine komprimierte Datei, und joblib.load(path) liefert ein Objekt, das genau gleich vorhersagt. Im Labor ergeben 25 Jobs gleitende Rangkorrelationen innerhalb von 0,06 um null bei jedem Alpha, slow_features läuft einmal für zwei gecachte Aufrufe, und das neu geladene Ridge sagt identisch voraus.
- Unabhängige Jobs laufen über
Parallelunddelayed; das Ergebnis darf nicht vonn_jobsabhängen. Memory.cachelegt Ergebnisse auf der Platte unter dem Hash der Argumente ab; Arrays übergeben, keine Tabellen.joblib.hashbelegt, dass zwei Läufe dieselben Daten nutzten;dumpundloadsichern ein Modell, das identisch vorhersagt.
Lab: Was bewertet wird
- Ein Fold-Job15 Pkt.
- Das Gitter der Jobs25 Pkt.
- Der Festplatten-Cache15 Pkt.
- Der Fingerabdruck10 Pkt.
- Ein Modell speichern15 Pkt.
- Die Studie20 Pkt.