Sber.DS ist eine Plattform, mit der Sie Modelle auch ohne Code erstellen und implementieren können

In Unternehmen unterschiedlicher Größe entstehen täglich Ideen und Besprechungen darüber, welche weiteren Prozesse automatisiert werden können. Aber zusätzlich zu der Tatsache, dass viel Zeit in die Erstellung eines Modells investiert werden kann, muss man diese auch in die Bewertung des Modells und die Überprüfung investieren, dass das erhaltene Ergebnis nicht zufällig ist. Nach der Implementierung muss jedes Modell überwacht und regelmäßig überprüft werden.

Und das sind alle Phasen, die in jedem Unternehmen, unabhängig von seiner Größe, absolviert werden müssen. Wenn wir über die Größe und das Erbe der Sberbank sprechen, nimmt die Zahl der Feinabstimmungen erheblich zu. Bis Ende 2019 hatte Sber bereits mehr als 2000 Modelle im Einsatz. Es reicht nicht aus, einfach ein Modell zu entwickeln; es ist notwendig, es in Industriesysteme zu integrieren, Data Marts für den Aufbau von Modellen zu entwickeln und die Kontrolle über seinen Betrieb im Cluster sicherzustellen.

Sber.DS ist eine Plattform, mit der Sie Modelle auch ohne Code erstellen und implementieren können

Unser Team entwickelt die Sber.DS-Plattform. Es ermöglicht die Lösung von Problemen des maschinellen Lernens, beschleunigt das Testen von Hypothesen, vereinfacht im Prinzip den Prozess der Entwicklung und Validierung von Modellen und steuert auch das Ergebnis des Modells im PROM.

Um Ihre Erwartungen nicht zu täuschen, möchte ich vorab sagen, dass es sich bei diesem Beitrag um einen Einführungsbeitrag handelt, und unter dem Strich sprechen wir zunächst einmal darüber, was sich im Prinzip unter der Haube der Sber.DS-Plattform verbirgt. Wir werden die Geschichte über den Lebenszyklus des Modells von der Erstellung bis zur Implementierung separat erzählen.

Sber.DS besteht aus mehreren Komponenten, die wichtigsten sind die Bibliothek, das Entwicklungssystem und das Modellausführungssystem.

Sber.DS ist eine Plattform, mit der Sie Modelle auch ohne Code erstellen und implementieren können

Die Bibliothek steuert den Lebenszyklus des Modells vom Moment der Entwicklungsidee bis zu seiner Implementierung im PROM, der Überwachung und der Außerbetriebnahme. Viele Bibliotheksfunktionen werden durch behördliche Vorschriften vorgegeben, beispielsweise die Berichterstattung und Speicherung von Trainings- und Validierungsproben. Tatsächlich handelt es sich hier um ein Verzeichnis aller unserer Modelle.

Das Entwicklungssystem ist für die visuelle Entwicklung von Modellen und Validierungstechniken konzipiert. Die entwickelten Modelle werden einer ersten Validierung unterzogen und dem Ausführungssystem zur Erfüllung ihrer Geschäftsfunktionen zugeführt. Außerdem kann das Modell im Laufzeitsystem auf einem Monitor platziert werden, um in regelmäßigen Abständen Validierungstechniken zur Überwachung seines Betriebs zu starten.

Es gibt verschiedene Arten von Knoten im System. Einige sind für die Verbindung mit verschiedenen Datenquellen konzipiert, andere für die Transformation und Anreicherung von Quelldaten (Markup). Es gibt viele Knoten zum Erstellen verschiedener Modelle und Knoten zu deren Validierung. Der Entwickler kann Daten aus beliebigen Quellen laden, Zwischendaten transformieren, filtern, visualisieren und in Teile zerlegen.

Die Plattform enthält auch vorgefertigte Module, die per Drag & Drop auf den Designbereich gezogen werden können. Alle Aktionen werden über eine visualisierte Oberfläche ausgeführt. Tatsächlich können Sie das Problem ohne eine einzige Codezeile lösen.

Wenn die integrierten Funktionen nicht ausreichen, bietet das System die Möglichkeit, schnell eigene Module zu erstellen. Wir haben einen integrierten Entwicklungsmodus basierend auf erstellt Jupyter-Kernel-Gateway für diejenigen, die neue Module von Grund auf erstellen.

Sber.DS ist eine Plattform, mit der Sie Modelle auch ohne Code erstellen und implementieren können

Die Architektur von Sber.DS basiert auf Microservices. Es gibt viele Meinungen darüber, was Microservices sind. Manche Leute denken, dass es ausreicht, den monolithischen Code in Teile aufzuteilen, aber gleichzeitig greifen sie immer noch auf dieselbe Datenbank zu. Unser Microservice darf nur über die REST-API mit einem anderen Microservice kommunizieren. Keine Problemumgehungen für den direkten Zugriff auf die Datenbank.

Wir versuchen sicherzustellen, dass Dienste nicht sehr groß und unhandlich werden: Eine Instanz sollte nicht mehr als 4–8 Gigabyte RAM verbrauchen und muss die Möglichkeit bieten, Anforderungen durch den Start neuer Instanzen horizontal zu skalieren. Jeder Dienst kommuniziert mit anderen nur über die REST-API (Offene API). Das für den Dienst verantwortliche Team ist verpflichtet, die API bis zum letzten Client, der sie verwendet, abwärtskompatibel zu halten.

Der Kern der Anwendung ist in Java unter Verwendung des Spring Frameworks geschrieben. Die Lösung war ursprünglich für die schnelle Bereitstellung in der Cloud-Infrastruktur konzipiert, daher wurde die Anwendung mithilfe eines Containerisierungssystems erstellt Red Hat OpenShift (Kubernetes). Die Plattform entwickelt sich ständig weiter, sowohl im Hinblick auf die zunehmende Geschäftsfunktionalität (neue Konnektoren, AutoML werden hinzugefügt) als auch im Hinblick auf die technologische Effizienz.

Eines der Merkmale unserer Plattform besteht darin, dass wir in einer visuellen Schnittstelle entwickelten Code auf jedem Sberbank-Modellausführungssystem ausführen können. Jetzt gibt es bereits zwei davon: einen auf Hadoop, den anderen auf OpenShift (Docker). Wir hören hier nicht auf und erstellen Integrationsmodule, um Code auf jeder Infrastruktur auszuführen, einschließlich vor Ort und in der Cloud. Im Hinblick auf die Möglichkeiten einer effektiven Integration in das Sberbank-Ökosystem planen wir auch, die Arbeit mit bestehenden Ausführungsumgebungen zu unterstützen. Zukünftig kann die Lösung flexibel „out of the box“ in jede Landschaft jeder Organisation integriert werden.

Wer jemals versucht hat, eine Lösung zu unterstützen, die Python auf Hadoop im PROM ausführt, weiß, dass es nicht ausreicht, eine Python-Benutzerumgebung vorzubereiten und für jeden Datenknoten bereitzustellen. Die große Anzahl an C/C++-Bibliotheken für maschinelles Lernen, die Python-Module verwenden, lässt Sie nicht ruhig schlafen. Wir müssen daran denken, Pakete zu aktualisieren, wenn wir neue Bibliotheken oder Server hinzufügen, und gleichzeitig die Abwärtskompatibilität mit bereits implementiertem Modellcode wahren.

Hierfür gibt es mehrere Ansätze. Bereiten Sie beispielsweise mehrere häufig verwendete Bibliotheken im Voraus vor und implementieren Sie sie im PROM. In der Hadoop-Distribution von Cloudera verwenden sie normalerweise Paket. Auch in Hadoop ist es jetzt möglich, es auszuführen Docker-Behälter. In einigen einfachen Fällen ist es möglich, den Code zusammen mit dem Paket auszuliefern python.eggs.

Die Bank nimmt die Sicherheit beim Ausführen von Code von Drittanbietern sehr ernst, daher nutzen wir die neuen Funktionen des Linux-Kernels optimal aus, bei dem ein Prozess in einer isolierten Umgebung ausgeführt wird Linux-Namespacekönnen Sie beispielsweise den Zugriff auf das Netzwerk und die lokale Festplatte einschränken, wodurch die Möglichkeiten von Schadcode erheblich eingeschränkt werden. Die Datenbereiche jeder Abteilung sind geschützt und nur den Eigentümern dieser Daten zugänglich. Die Plattform stellt sicher, dass Daten aus einem Bereich nur durch einen Datenveröffentlichungsprozess mit Kontrolle in allen Phasen vom Zugriff auf Quellen bis zur Landung der Daten im Ziel-Storefront in einen anderen Bereich gelangen können.

Sber.DS ist eine Plattform, mit der Sie Modelle auch ohne Code erstellen und implementieren können

In diesem Jahr planen wir, das MVP zur Einführung von in Python/R/Java geschriebenen Modellen auf Hadoop abzuschließen. Wir haben uns die ehrgeizige Aufgabe gestellt, zu lernen, wie man jede benutzerdefinierte Umgebung auf Hadoop betreibt, um die Benutzer unserer Plattform in keiner Weise einzuschränken.

Darüber hinaus hat sich herausgestellt, dass viele DS-Spezialisten hervorragend in Mathematik und Statistik sind, coole Modelle erstellen, sich aber nicht besonders gut mit Big-Data-Transformationen auskennen und bei der Vorbereitung von Trainingsbeispielen auf die Hilfe unserer Dateningenieure angewiesen sind. Wir haben beschlossen, unseren Kollegen zu helfen und praktische Module für die Standardtransformation und Vorbereitung von Funktionen für Modelle auf der Spark-Engine zu erstellen. Dadurch können Sie mehr Zeit in die Entwicklung von Modellen investieren und müssen nicht darauf warten, dass Dateningenieure einen neuen Datensatz vorbereiten.

Wir beschäftigen Mitarbeiter mit Kenntnissen in verschiedenen Bereichen: Linux und DevOps, Hadoop und Spark, Java und Spring, Scala und Akka, OpenShift und Kubernetes. Das nächste Mal werden wir über die Modellbibliothek sprechen, wie das Modell den Lebenszyklus im Unternehmen durchläuft, wie Validierung und Implementierung erfolgen.

Source: habr.com

Kommentar hinzufügen