Fallstricke im Projektmanagement für maschinelles Lernen

Bild

Seit anderthalb Jahren bin ich der Hauptentwickler von ML in meinem Unternehmen. Sechs Monate lang leite ich ein kleines Team. Ich habe Erfahrungen gesammelt, die ich teilen möchte. Ich werde dies im Format einer Reihe von Fehlern und potenziellen Schwierigkeiten tun.

Wir wollen ein neuronales Netzwerk!


Viele Menschen haben zumindest etwas über künstliche Intelligenz und die Errungenschaften neuronaler Netze gehört. Einige Leute möchten neuronale Netze im Geschäft benutzen, nur weil es populär ist. Sie haben also eine kleine Aufgabe der Textanalyse gelöst und können jedem sicher erklären, dass Ihr Unternehmen die modernsten Technologien für künstliche Intelligenz einsetzt.

Darüber hinaus versteht fast niemand die Stärken und Schwächen neuronaler Netze. In der Tat sind sie aufgrund des hohen Ressourcenverbrauchs bei weitem nicht immer das optimale Modell.

Sehr oft können Algorithmen wie Boosting, k-Nearest Neighbours oder SVM bessere Qualitätsindikatoren für die Lösung von Geschäftsproblemen aufweisen (wenn es sich um die klassischen Skriptfunktionen handelt -> Wert) als neuronale Netze. Dies trotz der Tatsache, dass sie viel leichter sind.

Wenn Ihnen der Kunde sagt: „Wir brauchen ein neuronales Netzwerk, um dieses oder jenes Problem zu lösen“, dann weiß er höchstwahrscheinlich einfach nicht, mit welchen Werkzeugen dieses Problem am besten gelöst werden kann. Aber es scheint ihm, dass hier einige komplizierte Algorithmen benötigt werden und das einzige, was ihm einfällt, ist ein neuronales Netzwerk.

Sie können das Problem also durch ein leichteres Modell lösen.

Es klingt offensichtlich, aber in der Tat können Sie nach einer solchen Anfrage des Clients Zeit damit verbringen, verschiedene Architekturen neuronaler Netzwerke zu sortieren, bevor Sie feststellen, dass die Aufgabe viel einfacher gelöst werden könnte.

Morgendaten, Abendestimeyta


Sehr oft werden Sie gebeten, Fristen für die Durchführung von Experimenten / die Einführung von Lösungen im Produkt anzugeben. Darüber hinaus kann als Grundlage für solche Schätzungen nur eine abstrakte Beschreibung des Problems dienen. Zum Beispiel: „Wir wollen ein neuronales Netzwerk, das nach medizinischen Bildern eine Person mit einer Krankheit diagnostiziert. Wie lange wird es dauern? " Menschen, die nicht mit ML arbeiteten (und manchmal arbeiteten), haben wenig Verständnis für das Konzept von Experimenten. Viele betrachten die Entwicklung von ML-Lösungen als Standardsoftwareentwicklung. Aber das sind alles Fehler. ML-Entwicklung ist näher an der Wissenschaft als an der Entwicklung (insbesondere in der Anfangsphase). Die meiste Zeit wird für Datenanalysen und Experimente benötigt. Und die Leute verstehen das selten.

Wenn Sie Glück haben und beispielsweise einen erfahrenen Projektmanager haben, müssen Sie sich nicht mit solchen Problemen befassen. Er selbst wird dem Kunden alles erklären. Aber es passiert umgekehrt - wenn der Manager selbst die Besonderheiten von ML schlecht versteht, sich unter den Kunden beugt und beginnt, Sie mit ihm zu treten und die Fristen ein paar Tage oder eine Woche nach Erhalt einer Anfrage vom Kunden zu fordern. Manchmal sogar vor dem Empfang von Daten. Dann müssen Sie höchstwahrscheinlich einige Daten benennen (oder den Arbeitsort ändern, was auch in dieser Situation eine gute Option ist). Seien Sie jedoch vorsichtig, wenn Sie eine Schätzung der Zeitachse ohne ausreichende Informationen vornehmen möchten. Nehmen Sie sich Zeit, um mit dem Spielraum zu experimentieren.

Genauigkeit des Modells im Vorversuch 99,99999%


Selbst wenn Sie in den Vorversuchen oder beim Testen des Prototyps hohe Messwerte erhalten haben, ist dies kein Grund, diese dem Kunden sofort mitzuteilen. Aber alles, was Sie sagen, kann gegen Sie verwendet werden.

Wenn Sie in vorläufigen Experimenten hohe Werte für Modellqualitätsschätzungen erhalten, können Sie dem Kunden mitteilen, dass das Problem eindeutig lösbar ist, aber Sie sollten ihn nicht mit Zahlen im Voraus erfreuen, die bei neuen Daten möglicherweise nicht so gut sind. Oder Sie können Metriken anrufen, aber mit der verbindlichen Reservierung, dass Sie nicht garantieren können, dass unter anderen Bedingungen die Qualität gleich bleibt. Es kann sich sowohl verbessern als auch verschlechtern. Es besteht immer die Möglichkeit, dass Sie bei der Durchführung von Experimenten leichtsinnig falsch lagen (z. B. ein falsch geschriebener Generator und einige der Daten, die vom Training bis zum Test durchgesickert sind).

Alternativ können Sie unterschiedliche Zahlungen im Vertrag für unterschiedliche Endqualität Ihres Modells festlegen.

Im Allgemeinen vertrauen Menschen in der Regel eher konkreten Beispielen als abstrakten Zahlen. Eine kleine Demonstration Ihres Modells gibt dem Kunden mehr Sicherheit als Aussagen über eine Genauigkeit von 99%.

Wenn Sie ein Problem lösen, beispielsweise das Erkennen / Klassifizieren mit Hilfe von neuronalen Faltungstechniken, und es an der Zeit ist, einen Bericht über den Erfolg des Teams für einen bestimmten Zeitraum zu verfassen, die zusätzlichen 30 Minuten zu verwenden und ein paar schöne Bilder zu machen: Spielen Sie mit der Visualisierung von Faltungsfiltern auf hoher Abstraktionsstufe oder machen Sie verborgene vollständig verbundene Ebenen Heatmaps von Klassen usw.

Es wird keine Probleme mit den Servern geben


Irgendwann bemerkte ich, dass die Arbeit des Modells oft von seiner Größe abhängt. Wenn Sie beispielsweise einen Klassifikator für 5 Millionen Klassen erstellen müssen, sind möglicherweise auch die einfachsten Modelle zu ressourcenintensiv. Dann stellt sich natürlich die Frage nach der Serverspezifikation, die der Client mit so etwas wie "Es wird keine Probleme mit den Servern geben - wir werden uns für Cloud-Dienste entscheiden."

Das Problem ist, dass es möglicherweise überhaupt nicht den Maßstab des Modells darstellt. Beispielsweise wiegt ein Datensatz 2 Terabyte, und die Gewichtsmatrix des trainierten Modells beträgt weitere 500 Gigabyte. Um ein solches Modell zu verwenden, benötigen Sie 68-128 GB RAM. Ein solches Auto zu mieten kann einen Kunden mehrere Tausend bis mehrere Zehntausend Dollar pro Monat kosten (wenn mehr GPUs benötigt werden). Und hier sind nicht viele damit einverstanden, für solche Server zu bezahlen.

Source: https://habr.com/ru/post/de478634/


All Articles