Trainieren Sie Machine-Learning-Modelle mit mehreren CPU-Kernen

Inhalt

Überblick

  • Einführung
  • Ausführungszeit verkürzen
  • Datensatz
  • Datensatz lesen
  • Verwaltung kategorialer Variablen
  • abhängiges und unabhängiges Merkmal
  • Ausbildung de modelos con núcleos de CPU
  • Schlussbemerkung

Einführung

„Das 65.536 Prozessoren befanden sich in der Verbindungsmaschine“

~ Philip Emeagwali

Wir alle haben einen Hintergrund in Informatik, Wir benutzen täglich einen Computer und verstehen besser, was der Computer ist. Computer haben Herzen wie Menschen, es heißt CPU.

Wir alle kennen die CPU, Wenn dies nicht der Fall ist, das UPC ist die zentrale Recheneinheit im Computer, oder ist es eine elektronische Schaltung, die die verschiedenen Anweisungen ausführt, die ein Computerprogramm umfassen. Die CPU führt Grundrechenarten durch, Logik, etc.

80576sep_cpu-8016078

Frühere CPU-Generationen wurden als diskrete Komponenten und zahlreiche kleine ICs auf einer oder mehreren Leiterplatten implementiert. Im Laufe der Zeit, CPUs werden getauscht, Sind aktualisiert. Sie sind in einem integrierten Schaltkreis implementiert, mit einer oder mehreren CPUs auf einem einzigen IC-Chip. Es gibt viele Funktionen oder Vorgänge, die der Computer ausführt, also dauert es lange, dafür entwarf der Wissenschaftler die Mehrkernprozessoren, es war eine Kombination von Mikroprozessorchips mit mehreren CPUs.

Mehrkernprozessoren sind sehr schnell, kann mal arbeiten. Als Datenwissenschaftler, Wir haben festgestellt, dass einige der Python-Bibliotheken sehr langsam und auch lang sind, Programmausführung verlangsamen, se necesita mucho tiempo para la ejecución de nuestros modelos de aprendizaje automático o tiefes Lernen. Wenn Sie sehen möchten, wie viele Kerne sich in Ihrem Computer befinden, öffne einfach dein Gremium Steuerung und suchen System Sie sehen alle Informationen zu Ihrem Computer.

43098Sanduhr-800x500-9272954

Wenn wir über die Python-Panda-Bibliothek sprechen, die beim maschinellen Lernen zur Datenmanipulation und Datenanalyse verwendet wird, Wenn wir eine kleine Datenmenge analysieren, dauert es nicht so lange, die Operationen durchzuführen, aber was ist, wenn unser Datensatz groß ist?? ohne es zu wissen, Es wird lange dauern, Berechnungen mit einer großen Datenmenge durchzuführen. Dann, Das ist ein großes Problem, mit denen alle Datenwissenschaftler in ihrer Karriere konfrontiert sind. Was ist, wenn wir diese Zeit verkürzen? es ist gut für uns?

wir werden unten diskutieren:

Reduzieren Sie die Ausführungszeit

Oben haben wir eine kurze Diskussion über die CPU, dann, was bedeutet es? Significa que usamos núcleos de la unidad central de procesamiento para entrenar nuestro modelo de aprendizaje automático. Hay uno de los Parameter especiales dentro del algoritmo de aprendizaje automático que normalmente lo usamos, aber wir haben kein Wissen darüber oder nicht. Ich kenne die genaue Bedeutung davon, Das hört sich toll an!

Diese CPU-Kerne sind sehr wichtige Bestandteile des Trainings jedes Modells für maschinelles Lernen., das ist auch wichtig bei der Arbeit mit Deep Learning, weil diese CPU-Kerne eine parallele Programmierung oder parallele Ausführung des Programms möglich sein werden. Wir können Machine-Learning-Modelle nicht mit Hilfe von GPUs trainieren, Daher, CPUs sind in diesem Zustand nützlicher.

Für ein schnelleres Machine-Learning-Training in jedem Machine-Learning-Projekt, Sie können diese CPU-Kerne verwenden, solange Sie eine große Datenmenge im Dataset haben, um das Modell für maschinelles Lernen zu trainieren.

Jetzt, Wir sehen, wie wir das Machine-Learning-Modell mit CPU-Kernen trainieren, um die Leistung gegenüber dem Machine-Learning-Modell zu verbessern:

Datensatz

Um diese spezielle Problemstellung zu trainieren, wir müssen die nehmen Wein_Qualität Datensatz, der Referenzlink für diesen Datensatz ist hier.

Um diesen Datensatz besser zu verstehen, Sie können diesen Link überprüfen: Klicke hier

Denken Sie daran, wenn Sie dieses spezielle Problem mit CPU-Kernen lösen müssen, Sie müssen also einen einfachen Datensatz mit einer großen Datenmenge haben.

Der Grund für die Verwendung dieses Datensatzes ist, dass es sich um einen einfachen Datensatz mit einer großen Datenmenge handelt, die in diesem Datensatz vorhanden ist..

Mal sehen, wie groß diese Daten sind:

Datensatz lesen

Zuerst, Wir müssen den Weinqualitätsdatensatz mit Pandas lesen.

#Pandas importieren
df = pd.read_csv('wine_quality.csv')
df.kopf()
87990Screenshot202021-04-2920143059-6293808
df.shape()
43508Screenshot202021-04-2920143757-7453715

Nach dem Ausführen dieses Codes, kannst du sehen, dass wir 6497 Reihen Ja 13 Säulen im Weinqualitätsdatensatz.

Jetzt, Wir überprüfen die einzigartigen Kategorien, die in a . vorhanden sind Qualität Variable,

unique_points= df['qualität'].einzigartig()
unique_points
52301Screenshot202021-04-2920144318-7342742

Wie wir sehen, Es gibt 6, 5, 7, 8, 4, 3, 9 eindeutige Datenpunkte in der Qualitätsvariablen, wobei diese Datenpunkte die Weinqualitätsmaße sind.

Händels kategoriale Variablen

# kategoriale vars
next_df = pd.get_dummies(new_df,drop_first=Wahr)
# neuen Datenrahmen anzeigen
next_df
81024Screenshot202021-04-2520143427-9124542

Abhängiges und unabhängiges Merkmal

So wenden Sie das Modell für maschinelles Lernen an, wir müssen die abhängigen und unabhängigen Merkmale aufteilen:

# unabhängige Funktionen
x= next_df.drop(['qualität','best quality'],Achse=1)
# abhängige Funktion
y= next_df['best quality']

Modelltraining mit CPU-Kernen

Kommt jetzt zur Ausführung, Wir tun es, indem wir einige Schritte anwenden:

Paso 1: Verwenden des maschinellen Lernalgorithmus RandomForestClassifier.

Paso 2: Verwenden von RepeatedStratifiedKFold für die Kreuzvalidierung.

Paso 3: Trainieren Sie das Modell mit dem Kreuzvalidierungs-Score.

Wenn wir all diese Dinge initialisieren, Die Zeit wird basierend auf dieser Kreuzvalidierungspunktzahl berechnet. Vor der Zeitkontrolle importieren wir die benötigten Module:

Modulimport:

ab Zeit Importzeit
# Importieren von RepeatedStratifiedKFold
from sklearn.model_selection import RepeatedStratifiedKFold
aus sklearn.ensemble importieren RandomForestClassifier
aus sklearn.model_selection import cross_val_score
# RandomForestClassifier importieren

Jetzt, Wir überprüfen die Zeit mit den verschiedenen CPU-Kernen:

Hier verwenden wir den maschinellen Lernalgorithmus RandomForestClassifie, wenn Sie die Parameter von RandomForestClassifier überprüfen, du findest, dass es ein gibt n_jobs Parameter.

96476Screenshot202021-04-2920155143-2952558

n_jobs Es ist der Parameter, der Ihnen wirklich hilft, im Grunde zuzuweisen, wie viele Kerne ein bestimmtes Systemtraining benötigen sollte.

Zum Beispiel, wenn wir nehmen wollen n_jobs = 1 dann dauert 1 CPU-Kern, ja nimm 2, es wird dauern 2 CPU-Kerne, usw. Wenn Sie alle CPU-Kerne zum Training verwenden möchten und nicht wissen, wie viele Kerne sich im System befinden, benutz einfach n_jobs = -1.

1 CPU-Kerne:

## CPU-Kerne verwenden wir n_jobs
random = RandomForestClassifier(n_Schätzer = 100)
# Erstellen eines Objekts von RepeatedStratifiedKFold
cv = RepeatedStratifiedKFold(n_splits=5, n_wiederholungen=3, random_state=4)
# Beginn der Ausführungszeit
start_time=time()
n_scores =cross_val_score(willkürlich,x,Ja,scoring='accuracy', Lebenslauf = Lebenslauf, n_jobs=1)
# Endzeit der Ausführung
end_time=time()
final_time = end_time-start_time
# Ausführungszeit anzeigen
drucken('final execution time is : {}'.format(das letzte Mal))
33266Screenshot202021-04-2920152121-9489604

Hier sehen wir das mit 1 Kern werden benötigt um 10 Sekunden zu laufen, und das ist eine riesige zeit.

Wir schreiben nicht die n_jobs innerhalb des RandomForestClassifier schreiben wir ihn stattdessen in den cross_val_score weil es uns hilft, eine Kreuzvalidierung mit RepeatedStratifiedKFold durchzuführen

Jetzt, Wir verwenden denselben Code mit einer kleinen Änderung für mehr Kerne:

2 CPU-Kerne:

## CPU-Kerne verwenden wir n_jobs
random = RandomForestClassifier(n_Schätzer = 100)
# Erstellen eines Objekts von RepeatedStratifiedKFold
cv = RepeatedStratifiedKFold(n_splits=5, n_wiederholungen=3, random_state=4)
# Beginn der Ausführungszeit
start_time=time()
n_scores =cross_val_score(willkürlich,x,Ja,scoring='accuracy', Lebenslauf = Lebenslauf, n_jobs=2) # 2 Kerne
# Endzeit der Ausführung
end_time=time()
final_time = end_time-start_time
# Ausführungszeit anzeigen
drucken('final execution time is : {}'.format(das letzte Mal))
65558Screenshot202021-04-2920160956-9156826

Jawohl, Hier können Sie sehen, was der Unterschied ist? 1 Kern und 2 Kerne, Ausführungszeit unterscheidet sich stark von 1 Ader.

3 CPU-Kerne:

## CPU-Kerne verwenden wir n_jobs
random = RandomForestClassifier(n_Schätzer = 100)
# Erstellen eines Objekts von RepeatedStratifiedKFold
cv = RepeatedStratifiedKFold(n_splits=5, n_wiederholungen=3, random_state=4)
# Beginn der Ausführungszeit
start_time=time()
n_scores =cross_val_score(willkürlich,x,Ja,scoring='accuracy', Lebenslauf = Lebenslauf, n_jobs=3)   # 3 Kerne
# Endzeit der Ausführung
end_time=time()
final_time = end_time-start_time
# Ausführungszeit anzeigen
drucken('final execution time is : {}'.format(das letzte Mal))
31028Screenshot202021-04-2920161326-7219513

Nimm alle Kerne:

## CPU-Kerne verwenden wir n_jobs
random = RandomForestClassifier(n_Schätzer = 100)
# Erstellen eines Objekts von RepeatedStratifiedKFold
cv = RepeatedStratifiedKFold(n_splits=5, n_wiederholungen=3, random_state=4)
# Beginn der Ausführungszeit
start_time=time()
n_scores =cross_val_score(willkürlich,x,Ja,scoring='accuracy', Lebenslauf = Lebenslauf, n_jobs= -1) # alle Kerne
# Endzeit der Ausführung
end_time=time()
final_time = end_time-start_time
# Ausführungszeit anzeigen
drucken('final execution time is : {}'.format(das letzte Mal))
48775Screenshot202021-04-2920161839-5422602

Core-Timing-Vergleich:

## CPU-Kerne verwenden wir n_jobs
für Kern in [1,2,3,4,5,6,7,8,9,10]:
    random = RandomForestClassifier(n_Schätzer = 100)
    # Erstellen eines Objekts von RepeatedStratifiedKFold
    cv = RepeatedStratifiedKFold(n_splits=5, n_wiederholungen=3, random_state=4)
    # Beginn der Ausführungszeit
    start_time=time()
    n_scores =cross_val_score(willkürlich,x,Ja,scoring='accuracy', Lebenslauf = Lebenslauf, n_jobs = Kern)
    # Endzeit der Ausführung
    end_time=time()
    final_time = end_time-start_time
    # Ausführungszeit anzeigen
    drucken('final execution time of core {} ist : {}'.format(Ader,das letzte Mal))
21077Screenshot202021-04-2920162514-7769768

Sie können sehen, dass es einen großen Unterschied gibt, wenn wir verwenden 1 Kern, um unser ML-Modell zu trainieren und 10 Kerne zum Trainieren des ML-Modells.

Abschließende Anmerkungen

Hallo, In diesem Artikel haben Sie das Training von ML-Modellen mit CPU-Kernen kennengelernt, Jetzt ist es an der Zeit, diese Technik in Ihrem Machine-Learning-Modell zu implementieren, um die Ausführungszeit zu verkürzen.

Ich hoffe, Sie genießen diesen Artikel., Teile es mit deinen Freunden.

Sie können sich mit mir auf LinkedIn verbinden: www.linkedin.com/in/mayur-badole-189221199

Schauen Sie sich meine anderen Artikel an: https://www.analyticsvidhya.com/blog/author/mayurbadole2407/

Vielen Dank.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher