Ich beschäftige mich mit ML, um effizienteren Code zu generieren (dh Kompilierungszeit- und Laufzeitheuristiken). Ich habe einen Doktortitel (Compiler, HPC), aber sehr wenig ML-Erfahrung.
Ich würde mich über Hinweise auf bestehende Arbeiten freuen.
Noch wichtiger ist, welche Techniken des maschinellen Lernens sollte ich erforschen?
- Jedes Datenmuster ist ein Code + Testlauf + Leistungsdaten
- große Anzahl von Datenproben mit korrekter Kennzeichnung
- große Anzahl von zu ändernden Parametern
- Jede Probe kann mit beliebigen Parametern erneut ausgeführt werden (und die korrekte Kennzeichnung erhalten).
- große Menge an CPU zum Ausführen und erneuten Ausführen von Samples
Und auch einige meiner sehr verdächtigen Annahmen ...
- Ein Großteil des Codes ist bereits lokal optimal (grundlegende Compileroptimierung)
- Einige der Parameter sind "High-Level-Konzepte", z. B. Array durch verknüpfte Liste ersetzen. (Eine kleine Parameteränderung hat also unterschiedliche Auswirkungen.)
- Die gewünschte Verbesserung ist begrenzt (eine xK-Verbesserung ist "gut genug", K ist bekannt).
- Die Parameter sind spärlich, dh meistens Null (ich vermute, dass der meiste Code grundsätzlich gut ist und es relativ wenige vorteilhafte Änderungen gibt).
Alle Hinweise, die mich auf den Weg bringen, wären willkommen
Antworten:
Genetische Programmierung (GP) wurde verwendet, um den Quellcode zur Leistungsverbesserung zu ändern.
zB evolutionäre Verbesserung von Programmen
(Dies ist nah an meinem Doktorandenthema, wäre sehr interessiert, Ihren Ansatz zu hören)
quelle