Vergleich von Experimenten, die über verschiedene Infrastrukturen laufen

8

Ich entwickle einen verteilten Algorithmus. Um die Effizienz zu verbessern, hängt er sowohl von der Anzahl der Festplatten (eine pro Maschine) als auch von einer effizienten Lastausgleichsstrategie ab. Mit mehr Festplatten können wir den Zeitaufwand für E / A reduzieren. Mit einer effizienten Lastausgleichsrichtlinie können wir Aufgaben ohne großen Aufwand für die Datenreplikation verteilen.

Es gibt viele Studien zur Literatur, die sich mit demselben Problem befassen, und jede von ihnen führt verschiedene Experimente durch, um ihren Vorschlag zu bewerten. Einige Experimente sind spezifisch für die vorgestellte Strategie, andere, wie schwache Skalierung (Skalierbarkeit) und starke Skalierung (Beschleunigung), sind allen Arbeiten gemeinsam.

Das Problem ist, dass die Experimente normalerweise über völlig unterschiedliche Infrastrukturen (Festplatten, Prozessoren, # Maschinen, Netzwerk) ausgeführt werden. Je nachdem, was ausgewertet wird, kann dies zu falschen / unfairen Vergleichen führen. Beispielsweise kann es vorkommen, dass meine Anwendung auf 10 Computern mit Infiniband-Verbindung zu 100% schneller wird, während ich bei einer Ethernet-Verbindung dieselben oder sogar schlechtere Ergebnisse erzielen kann.

Wie kann man also verschiedene Experimente ehrlich vergleichen, um auf Effizienzgewinne hinzuweisen?

Rubens
quelle

Antworten:

3

Dies ist eine sehr gute Frage und eine häufige Situation.

Meiner Meinung nach müssen drei verschiedene Faktoren kontrolliert werden:

  • Daten: Es gibt bereits verschiedene Benchmarks zur Bewertung von Algorithmen und Architekturen. Diese Daten müssen öffentlich verfügbar sein, damit jeder seine Ansätze gegenüberstellen kann.
  • Architektur: Mein Vorschlag ist, alles in der Cloud zu testen, damit jeder seine Ergebnisse gegenüberstellen kann und zweifellos auch die gleichen Maschinen und Software verwendet werden.
  • Algorithmen: Wenn Sie einen verteilten Algorithmus entwickelt haben, ist es hilfreich, Ihren Algorithmus mit bestimmten Daten zu vergleichen. In diesem Fall dürfen Algorithmen nicht öffentlich sein.

Wenn Sie also bei der Beantwortung Ihrer Frage verschiedene Experimente vergleichen und angeben möchten, inwieweit Ihr verteilter Algorithmus andere übertrifft, sollten Sie versuchen, dieselbe Umgebung (Daten und Architektur), in der die Experimente durchgeführt wurden, so genau wie möglich zu replizieren.

Wenn dies nicht möglich ist, empfehle ich, dass Sie Ihren Algorithmus mit öffentlichen Daten und Cloud-Architekturen testen, damit Sie zu einem Referenten werden, da Sie den Vergleich zukünftiger Algorithmen erleichtern.

Adesantos
quelle
2

Obwohl es leicht zu sagen ist, ist es besser, die sich ändernde Umgebung als Variablen zu behandeln und die Leistungsbasis Ihres Algorithmus anhand dieser Variablen zu beschreiben / zu schätzen. Und hoffentlich werden andere das Gleiche tun. Von Interesse, Experimente als Forschungsvalidierung - Sind wir zu weit gegangen? .

lgylym
quelle
2

Die folgende allgemeine Antwort ist meine ungebildete Vermutung, also nimm sie mit Salzkorn. Hoffentlich macht es Sinn. Ich denke, dass der beste Weg, Experimente zu beschreiben oder zu analysieren (wie jedes andere System im Allgemeinen), darin besteht, ihre statistischen (multivariaten) Modelle zu erstellen und sie auszuwerten. Abhängig davon, ob Umgebungen für Ihre Versuchsreihe durch dasselbe oder ein anderes Modell dargestellt werden , sehe ich die folgenden Ansätze :

1) Einzelmodellansatz. Definieren Sie das statistische Modell der Experimente für alle Umgebungen (abhängige und unabhängige Variablen, Datentypen, Annahmen, Einschränkungen). Analysieren Sie es (höchstwahrscheinlich mithilfe der Regressionsanalyse ). Vergleichen Sie die Ergebnisse über Variablen hinweg , die unterschiedliche Umgebungen bestimmen (beeinflussen).

2) Ansatz mit mehreren Modellen. Die gleichen Schritte wie im vorherigen Fall, aber vergleichen Sie die Ergebnisse modellübergreifend , je nach Umgebung.

Aleksandr Blekh
quelle