Webinar-Zusammenfassung: Beschleunigen Sie Data Science mit Fusion 5.1
Fusion 5.1, Integration von Jupyter-Notebooks und Modellbereitstellung mit Seldon Core.
Ende 2019 wurde mit Fusion 5.0 die Architektur von Lucidworks Fusion für Cloud-native Microservices, die von Kubernetes orchestriert werden, neu gestaltet. Wir Fusion 5.1 veröffentlicht die Funktionen für Datenwissenschaftler priorisiert, die Modelle für maschinelles Lernen erstellen möchten, die mit Fusion-Nutzungssignalen trainiert werden sollen.
Letzte Woche habe ich gemeinsam mit Sanket Shahane, einem der Lucidworks Produktmanager für künstliche Intelligenz, ein Webinar veranstaltet. Dieser kurze Beitrag ist eine Zusammenfassung für diejenigen unter Ihnen, die nicht an dem Webinar teilnehmen konnten. Sanket führte Sie durch die Data Science Toolkit Integration von Fusion 5.1. Er demonstrierte die Integration von Fusion mit Jupyter Notebook und zeigte, wie man ML-Modelle in Fusion mit Seldon Core einsetzt.
Hier ist ein Link zur Aufzeichnung des gesamten Webinars, das ich im Rest dieses Beitrags zusammenfassen werde:
Überblick über Fusion 5.1
Fusion 5.1 macht die Arbeit eines Data Scientist wesentlich einfacher und produktiver. Viele Unternehmen haben zentralisierte Data-Science-Teams, die getrennt von den Teams arbeiten, die Suchanwendungen entwickeln. Das macht es für Suchteams schwierig, benutzerdefinierte maschinelle Lernmodelle zu nutzen und für Data Science-Teams, zu verstehen, wie ihre Modelle in Fusion funktionieren. Um diese Lücke zu schließen, macht Fusion 5.1 benutzerdefinierte Modelle für Suchanwendungen und die Entwickler, die sie erstellen, leichter nutzbar. Es bietet eine direkte Rückkopplungsschleife für Datenwissenschaftler: Sie stellen Modelle für Fusion bereit, die auf Signaldaten trainiert werden, wodurch Fusion für die Benutzer relevanter wird, die dann mehr Signale erzeugen.
Ich habe über die wichtigsten Funktionskategorien dieser Version gesprochen: Cloud-native Architektur, dynamische Autoskalierung, native Unterstützung für Python ML-Modelle, einfache Integration mit Data Science-Tools wie TensorFlow, scikit-learn, spaCY, und Jupyter Notebook. Und ich habe auch behandelt, wie diese Funktionen in die Digitaler Handel und Digitaler Arbeitsplatz Lösungen.
Jupyter Notebook Integration: Daten lesen, Daten schreiben & SQL-Aggregation
Ich habe den leisen Verdacht, dass die meisten Webinar-Teilnehmer wegen des Hauptakts gekommen sind: Sanket, der als Datenwissenschaftler zeigte, warum Fusion 5.1 für Datenwissenschaftler so spannend ist. Sanket führte durch ein Beispiel, in dem er den E-Commerce-Datensatz von Best Buy in einen Spark DataFrame in Fusion lud. Sehen Sie sich die Aufzeichnung des Webinars an und erfahren Sie Schritt für Schritt, wie Sie E-Commerce-Nutzungsdaten in Fusion mit einem Jupyter Notebook importieren, vorverarbeiten und untersuchen können.
Bereitstellung von ML-Modellen mit Seldon Core: Arbeiten mit benutzerdefinierten Modellen
Die zweite Demonstration von Sanket war eine aufgezeichnete Demonstration des Einsatzes von Modellen in fünf Akten:
- Entwicklung eines ML-Modells unter Verwendung eines bevorzugten Rahmens,
- Das Modell beibehalten,
- Erstellen eines Docker-Images bestehend aus Python-Paketen, Vorhersageklassen und Modellobjekten,
- Veröffentlichung in einem Docker-Repository und
- Bereitstellung in Fusion mit Hilfe eines Vorlagenauftrags.
Fragen von Webinar-Teilnehmern (und unsere Antworten)
Sanket und ich haben viele tolle Fragen von Webinar-Teilnehmern erhalten, aber die Zeit war knapp, bevor wir sie alle beantworten konnten. Hier sind die Fragen mit den entsprechenden Antworten, einschließlich derer, die während des Webinars unbeantwortet blieben.
Bitte beschreiben Sie die Funktion der automatischen Skalierung genauer.
Die Richtlinien für die automatische Skalierung sind vollständig konfigurierbar und passen sich dem Anwendungsfall des jeweiligen Fusion-Kunden an. Wir stützen uns bei der Festlegung der Skalierung auf eine Vielzahl von Kriterien – CPU-Auslastung, Speicherbelastung, p95 (95. Perzentil) Latenz, Suchrate oder einen zeitbasierten Zeitplan. Wenn Sie in einem bestimmten Zeitfenster mit einer erhöhten Last rechnen, kann Ihr Cluster bereits vor diesem Ereignis und rechtzeitig skaliert werden.
Bitte beschreiben Sie die Funktionalität von Spark Streaming genauer.
Einige unserer Kunden nutzen Spark Streaming, um Hunderte von Millionen von Dokumenten in nur wenigen Stunden zu indizieren – selbst auf relativ kleinen Clustern (gemessen an der Anzahl ihrer Fusion-Knoten). Wir verwenden unseren Spark-Operator häufig für das Streaming von etwa 15.000 Dokumenten pro Sekunde auf Clustern mit drei Knoten. Natürlich verfügen diese Knoten über ziemlich viel RAM. Wir haben Spark so eingestellt, dass es für die Anwendungsfälle, auf die wir uns konzentrieren, wirklich gut funktioniert.
Verwendet das Lucidworks-Team die Integration des Data Science Toolkits intern?
Ja. Lucidworks nutzt diese Integration intensiv, und wir haben verschiedene Modelle, die darauf eingesetzt werden. Wir haben auf Deep-Learning basierende Modelle zur Stimmungsanalyse. Smart Answers (derzeit in der Inkubationsphase) ist ein System zur Beantwortung von Fragen, das Deep Learning verwendet und auf diesem Framework aufbaut. Wir entwickeln auch eine neue semantische Suchlösung, um die Anzahl der Null-Ergebnisse bei Suchanfragen zu reduzieren. Alle Python-basierten Modelle laufen auf diesem Framework.
Startet Jupyter Spark in Kubernetes?
Nein. Jupyter führt Spark nicht in Kubernetes aus. Es führt Spark in einem eingebetteten lokalen Modus aus. Jupyter ist als Test-, Entwicklungs- und Erkundungstool gedacht. Um Spark-Jobs in Kubernetes auszuführen, sollten Sie das Jobs-Framework von Fusion und nicht Jupyter verwenden. In der Demo haben wir Spark zum Zweck der Erkundung in einem lokalen Modus ausgeführt.
Ist Fusion in Bezug auf die Benutzerinteraktionsdaten GDPR-konform?
Fusion ist noch nicht als GDPR-konform zertifiziert, aber wir bieten unseren Kunden die Möglichkeit, ihre eigenen Hosts zu betreiben. Unsere Kunden können die Daten in diesen Hosts isolieren und sich an die GDPR-Auflagen halten, die für sie gelten.
Kann ich das Dockerhub Repository anstelle eines privaten Organisations-Repositorys verwenden?
Auf jeden Fall. Es gibt keine Einschränkung, welches Docker-Repository Sie verwenden können. Solange Fusion Zugriff darauf hat, können Sie es verwenden.
Verwaltet Fusion verschiedene Versionen desselben Modells?
Der Fusion ML Service ist ein Framework für die Bereitstellung von Modellen, nicht für die Erstellung oder Verwaltung von Modellen. Fusion kann definitiv mehrere Versionen desselben Modells bereitstellen, aber es obliegt dem Benutzer, diese Modelle außerhalb von Fusion zu entwickeln und sie entsprechend zu kennzeichnen. So kann beispielsweise ein Docker-Image des Abfrageklassifizierers 1.0 zusammen mit dem Abfrageklassifizierer 1.1 bereitgestellt werden, und beide können parallel getestet werden. Die Pflege dieser Images ist Sache des Benutzers.
Wie wird TensorFlow in Fusion verwendet? Können Sie einen Jupyter-Beispielcode für die Verwendung von TensorFlow zum Trainieren von Modellen in Fusion angeben?
Wir werden in Kürze umfassende Anleitungen und Do-it-yourself-Anleitungen veröffentlichen. In der Zwischenzeit finden Sie hier ein Beispiel
Angenommen, Sie haben ein Tensorflow-Keras-Modell trainiert und auf der Festplatte gespeichert, ysollte unser Verzeichnis für das Vorhersagebild in etwa wie folgt aussehen. Mit den Modellgewichten und der Modellarchitektur, die auf der Festplatte gespeichert sind.
ls -l ../prediction-image/
total 32
-rw-rw-r-- 1 sanket_shahane sanket_shahane 1636 Feb 11 22:17 diabetes-model-architecture.json
-rw-rw-r-- 1 sanket_shahane sanket_shahane 15928 Feb 11 22:17 diabetes-model-weights.h5
-rw-rw-r-- 1 sanket_shahane sanket_shahane 706 Feb 11 22:17 DiabetesPrediction.py
-rw-rw-r-- 1 sanket_shahane sanket_shahane 331 Feb 11 22:17 Dockerfile
-rw-rw-r-- 1 sanket_shahane sanket_shahane 35 Feb 11 22:17 requirements.txt
|
Die Vorhersageklasse:
import numpy as np
from keras.models import model_from_json
class diabetesprediction():
#load model
def __init__(self,model_path="./"):
with open(model_path+'diabetes-model-architecture.json') as f:
self.model = model_from_json(f.read())
self.model.load_weights(model_path+'diabetes-model-weights.h5')
self.model._make_predict_function()
#dummy prediction
print('dummy prediction:',self.model.predict(np.array([[6. , 148. , 72. , 35. , 0. , 33.6 , 0.627,
50.]]))[0][0])
#prediction logic
def predict(self,X,feature_names=None):
prediction = self.model.predict(X)
return prediction
|
Die Datei requirements.txt würde Folgendes enthalten:
seldon-core
numpy
keras
tensorflow
|
Dockerfile:
FROM python:3.7-slim
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
# Define environment variable
ENV MODEL_NAME diabetesprediction
ENV API_TYPE GRPC
ENV SERVICE_TYPE MODEL
ENV PERSISTENCE 0
CMD exec seldon-core-microservice $MODEL_NAME $API_TYPE --service-type $SERVICE_TYPE --persistence $PERSISTENCE
|
Tag Push erstellen:
sudo docker build ../prediction-image/ -t {your-repo}/diabetes-model-your-name:1.0
Sudo docker push {your-repo}/diabetes-model-your-name:1.0
|
Wie schnell kann eine Echtzeit-Klassifizierung durchgeführt werden?
Normalerweise sollten Sie mit einem Overhead von ca. 15-30 ms auf Seiten von Fusion rechnen, zuzüglich der Zeit, die das Modell für die Inferenz benötigt. Die Zeit für die Modellinferenz kann von Fusion nicht kontrolliert werden, da sie weitgehend von der Art des Modells und seiner Komplexität abhängt.
Zusätzliche Fusion 5.1 Ressourcen
- Lesen Sie den Fusion 5.1 Einführung Blogbeitrag
- Lesen Sie den Blog-Beitrag Benutzerdefinierte Data Science-Modelle mit Lucidworks Fusion bereitstellen
- Testen Sie Fusion (in der Cloud oder in unserer Sandbox)
- Kontaktieren Sie uns mit allen Fragen