40+ Linux-Befehle für jeden Machine Learning Engineer
Linux ist das Rückgrat vieler Workflows für maschinelles Lernen (ML). Mit seiner leistungsstarken Befehlszeilenschnittstelle bietet Linux Ingenieuren die Flexibilität und Kontrolle, die für ein reibungsloses ML-Erlebnis erforderlich sind.
In den letzten zehn Jahren habe ich verstanden, wie wichtig es ist, eine Vielzahl von Linux-Befehlen zu beherrschen, um die Produktivität zu steigern, Aufgaben zu rationalisieren und Ressourcen effizient zu verwalten.
Ganz gleich, ob Sie eine Umgebung einrichten, Dateien verwalten oder Code optimieren, Linux bietet ein robustes Toolkit zur Unterstützung Ihrer Machine Learning-Reise.
Dieser Artikel behandelt die wesentlichen Linux-Befehle, die jeder Ingenieur für maschinelles Lernen kennen sollte, mit Erklärungen, die für Anfänger konzipiert sind, aber für erfahrene Benutzer detailliert genug sind.
1. Navigieren im Dateisystem
Ein wichtiger Teil der Arbeit mit Linux ist die effiziente Navigation im Dateisystem. Als Ingenieur für maschinelles Lernen haben Sie ständig mit Datendateien, Modellen, Code und Ergebnissen zu tun. Die Beherrschung grundlegender Navigationsbefehle ist von entscheidender Bedeutung.
cd (Verzeichnis ändern)
Der Befehl cd wird verwendet, um das aktuelle Arbeitsverzeichnis zu ändern, was beim Wechseln zwischen Verzeichnissen von grundlegender Bedeutung ist.
cd /path/to/directory
ls (Verzeichnisinhalt auflisten)
Sobald Sie sich in einem Verzeichnis befinden, können Sie mit dem Befehl ls nachsehen, welche Dateien oder Unterverzeichnisse sich an Ihrem aktuellen Speicherort befinden.
ls
Sie können ls -l für eine detaillierte Auflistung oder ls -a verwenden, um versteckte Dateien anzuzeigen.
ls -l
ls -a
pwd (Arbeitsverzeichnis drucken)
Verwenden Sie den Befehl pwd, um den absoluten Pfad des aktuellen Arbeitsverzeichnisses anzuzeigen, ein hilfreicher Befehl, wenn Sie bestätigen müssen, wo Sie sich im Dateisystem befinden.
pwd
mkdir (Verzeichnis erstellen)
Als Machine Learning-Ingenieur müssen Sie den Befehl mkdir verwenden, um Verzeichnisse für verschiedene Datasets, Modelle oder Experimentergebnisse zu erstellen.
mkdir new_directory
rm (Dateien und Verzeichnisse entfernen)
Beim Bereinigen des Systems müssen Sie möglicherweise Dateien oder Verzeichnisse mit dem Befehl rm löschen.
rm filename
rm -r directory_name
2. Dateiverwaltung und Suche
Die Arbeit mit Daten, Code und Modellen erfordert die Verarbeitung großer Mengen von Dateien. Linux bietet leistungsstarke Tools zum Verwalten, Suchen und Bearbeiten von Dateien.
find (Suche nach Dateien)
Find ist ein leistungsstarker Befehl, um nach Dateien und Verzeichnissen zu suchen, die auf bestimmten Kriterien wie Name, Typ oder Änderungsdatum basieren.
find /path/to/search -name "filename"
Dieser Befehl sucht nach einer Datei mit dem Namen "Dateiname" im angegebenen Verzeichnis und seinen Unterverzeichnissen.
grep (Suche in Dateien)
Mit dem Befehl grep können Sie nach Mustern in Dateien suchen, dies ist nützlich, wenn Sie mit großen Datensätzen oder Skripten arbeiten und nach einem bestimmten Begriff in Dateien suchen.
grep "pattern" file.txt
Um rekursiv innerhalb eines Verzeichnisses zu suchen, verwenden Sie:
grep -r "pattern" /path/to/directory
cp (Dateien kopieren)
Verwenden Sie den Befehl cp zum Kopieren von Dateien und Verzeichnissen, dies ist nützlich beim Erstellen von Backups oder beim Replizieren von Datensätzen.
cp source_file destination_file
cp -r source_directory destination_directory
mv (Dateien verschieben oder umbenennen)
mv ermöglicht es Ihnen, Dateien zwischen Verzeichnissen zu verschieben oder umzubenennen.
mv old_filename new_filename
mv file_name /path/to/destination/
tar (Dateien komprimieren)
Verwenden Sie den Befehl tar, um Dateien wie große Datasets und Modelle zu komprimieren und zu archivieren.
tar -cvf archive.tar /path/to/directory
tar -xvf archive.tar
Die Option -c erstellt das Archiv, -x extrahiert es und -v führt die Operation ausführlich aus.
chmod (Dateiberechtigungen ändern)
Verwenden Sie den Befehl chmod, um die Lese-, Schreib- und Ausführungsberechtigungen von Code oder Skripten zu ändern.
chmod 755 script.sh
Dadurch werden Lese-, Schreib- und Ausführungsberechtigungen für den Besitzer und Lese-/Ausführungsberechtigungen für andere festgelegt.
3. Linux-Prozessmanagement
Die Verwaltung von Prozessen ist ein wichtiger Bestandteil der Optimierung Ihres Workflows für maschinelles Lernen. Linux-Befehle bieten Tools zum Überwachen, Steuern und Verwalten von Prozessen, die auf Ihrem Computer ausgeführt werden.
ps (Laufende Prozesse anzeigen)
Der Befehl ps zeigt einen Snapshot der aktuellen Prozesse.
ps aux
Um Prozesse im Zusammenhang mit Python anzuzeigen, können Sie Folgendes verwenden:
ps aux | grep python
top (Systemressourcen überwachen)
top ist ein Echtzeit-Task-Manager, der CPU-, Speicher- und Prozessinformationen anzeigt, was hilfreich ist, um die Ressourcennutzung bei ML-Aufgaben mit langer Laufzeit zu überwachen.
top
Sie können htop, eine benutzerfreundlichere Version, verwenden, wenn sie installiert ist.
kill (Prozesse beenden)
Wenn ein Prozess zu viele Ressourcen verbraucht oder hängt, können Sie ihn mit Hilfe der Prozess-ID (PID) mit dem Befehl kill beenden.
kill PID
Sie können die PID mit ps aux oder top ermitteln.
nice/renice (Prozesspriorität verwalten)
Wenn Sie ressourcenintensive Aufgaben ausführen, z. B. das Trainieren eines Machine Learning-Modells, können Sie die Prozessprioritäten mithilfe der Befehle nice und renice anpassen.
nice -n 10 python train.py
renice -n -10 PID
NICE startet einen Prozess mit einer bestimmten Priorität, während RENICE die Priorität eines laufenden Prozesses anpasst.
4. Überwachung von Linux-Ressourcen
Ein effizientes Ressourcenmanagement ist für maschinelle Lernaufgaben von entscheidender Bedeutung, da viele von ihnen rechenintensiv sind, aber Linux bietet Tools zur Überwachung der Leistung Ihres Systems.
free (Speicherauslastung prüfen)
Bei der Arbeit mit großen Datensätzen und Modellen ist die Speicherauslastung ein häufiges Problem, aber der Befehl free gibt Ihnen einen Überblick über den Speicherstatus Ihres Systems.
free -h
Das Flag -h macht die Ausgabe menschenlesbar (d.h. sie wird in MB oder GB angezeigt).
df (Speicherplatznutzung)
Die Überwachung des verfügbaren Speicherplatzes ist wichtig, insbesondere wenn große Datensätze gespeichert werden, und der Befehl df gibt eine Zusammenfassung der Speicherplatznutzung für Ihre bereitgestellten Dateisysteme.
df -h
iotop (Festplatten-I/O überwachen)
Wenn Sie die E/A der Festplatte überwachen möchten, kann iotop Ihnen zeigen, welche Prozesse die Festplatte am meisten verwenden.
sudo iotop
Sie müssen es mit sudo ausführen, um vollen Zugriff auf die Festplatteninformationen zu erhalten.
nvidia-smi (GPU-Auslastung überwachen)
Für Machine Learning-Ingenieure, die GPUs (z. B. NVIDIA-GPUs) verwenden, bietet der Befehl nvidia-smi wichtige Informationen zur GPU-Auslastung, zur Speicherauslastung und zu aktiven Prozessen.
nvidia-smi
Dies ist wichtig, um den Status Ihrer GPU während des Trainings von Deep-Learning-Modellen zu verfolgen.
5. Linux-Paketverwaltung
Linux bietet Paketmanager, die beim Installieren, Aktualisieren und Entfernen von Softwarepaketen helfen. Als ML-Ingenieur installierst du ständig Bibliotheken und Frameworks.
apt (Debian/Ubuntu/Mint)
Wenn Sie eine Debian-basierte Distribution wie Ubuntu verwenden, ist apt Ihr bevorzugtes Tool für die Installation von Software.
sudo apt update
sudo apt install python3-pip
yum/dnf (RHEL/Rocky/Alma Linux)
Bei Red Hat-basierten Distributionen (wie CentOS oder Fedora) verwalten yum und dnf Softwarepakete.
sudo yum install python3-pip
OR
sudo dnf install python3-pip
pip (Python-Paketverwaltung)
Python ist die Sprache der Wahl für maschinelles Lernen, daher verwenden Sie häufig den Befehl pip, um Bibliotheken wie TensorFlow, PyTorch oder Scikit-learn zu installieren.
pip install tensorflow
conda (Verwalten von Umgebungen und Paketen)
Bei der Arbeit mit mehreren Python-Umgebungen ist conda ein hervorragendes Tool, das bei der Verwaltung von Abhängigkeiten, Bibliotheken und sogar Nicht-Python-Paketen hilft.
conda create --name ml_env python=3.8
conda activate ml_env
conda install tensorflow
6. Linux-Netzwerkbefehle
Ingenieure für maschinelles Lernen arbeiten häufig in verteilten Umgebungen, was Netzwerkkenntnisse für Aufgaben wie Datenübertragung, Cluster-Management oder Cloud Computing unerlässlich macht.
scp (Sichere Kopie)
Um Daten sicher zwischen Computern zu übertragen, verwenden Sie den Befehl scp, der besonders nützlich für ML-Ingenieure ist, die auf Remote-Servern oder verteilten Setups arbeiten.
scp local_file username@remote_host:/path/to/destination
rsync (Remote-Synchronisation)
rsync ist ein weiteres hervorragendes Tool zum Kopieren oder Synchronisieren von Dateien zwischen Maschinen oder Verzeichnissen, das schneller als SCP ist, da es nur Änderungen überträgt.
rsync -avz /path/to/source/ username@remote_host:/path/to/destination
ssh (Sichere Shell)
Stellen Sie eine sichere Verbindung zu Remote-Servern mit dem Befehl ssh her, der für die Remote-Ausführung von Skripten, die Verwaltung von Modellen oder die Durchführung von Experimenten in der Cloud-Infrastruktur unerlässlich ist.
ssh username@remote_host
7. Git für die Versionskontrolle
Git ist unerlässlich für die Verwaltung von Codeversionen, die Zusammenarbeit mit Teams und die Verfolgung von Änderungen.
git clone (Klonen eines Repositorys)
Um mit einem Projekt aus GitHub zu beginnen, können Sie ein Repository klonen.
git clone https://github.com/user/repository.git
git status (Repository-Status überprüfen)
Bevor Sie Änderungen übernehmen, überprüfen Sie den Status Ihres Arbeitsverzeichnisses.
git status
git commit (Änderungen übernehmen)
Wenn Sie bereit sind, Ihre Änderungen im Repository zu speichern, verwenden Sie git commit.
git commit -m "Commit message"
Mit diesem Befehl werden die Änderungen mit einer beschreibenden Meldung bestätigt, um zu erklären, was geändert wurde.
git push (Änderungen pushen)
Nachdem Sie die Änderungen lokal festgeschrieben haben, verwenden Sie git push, um sie in das Remote-Repository zu pushen.
git push origin branch_name
Dadurch werden Ihre Änderungen in den angegebenen Zweig im Remoterepository (z. B. GitHub) hochgeladen.
git pull (Updates pullen)
Um Ihr lokales Repository mit den neuesten Änderungen aus dem Remote-Repository zu aktualisieren, verwenden Sie git pull.
git pull origin branch_name
Dies stellt sicher, dass Sie immer mit der neuesten Codebasis arbeiten und vermeidet Konflikte bei der Zusammenarbeit mit Teamkollegen.
git branch (Zweige erstellen oder auflisten)
Git-Branches sind nützlich, um mit verschiedenen Features oder Versionen Ihres ML-Modells zu experimentieren, ohne die Hauptcodebasis zu beeinträchtigen.
git branch
git branch new_feature_branch
8. Virtuelle Umgebungen und Abhängigkeitsmanagement
Die Verwaltung von Python-Umgebungen und -Abhängigkeiten ist von entscheidender Bedeutung, wenn Sie an mehreren Machine Learning-Projekten arbeiten, die jeweils unterschiedliche Versionen von Bibliotheken haben. Hier sind einige Befehle, um virtuelle Umgebungen und Abhängigkeiten effizient zu verwalten.
Erstellen einer virtuellen Umgebung
Um eine virtuelle Umgebung zu erstellen, können Sie den folgenden Befehl verwenden:
python3 -m venv env_name
Dadurch wird eine isolierte Python-Umgebung eingerichtet, die Konflikte zwischen Projektabhängigkeiten verhindert.
Virtuelle Umgebung aktivieren
Um die virtuelle Umgebung zu aktivieren und darin zu arbeiten, verwenden Sie den folgenden Befehl:
source env_name/bin/activate
Nach der Aktivierung können Sie Pakete installieren und Python-Skripte ausführen, die für diese Umgebung spezifisch sind.
Virtuelle Umgebung deaktivieren
Wenn Sie mit der Arbeit in einer virtuellen Umgebung fertig sind, verwenden Sie deactivation, um die Python-Standardumgebung des Systems zu beenden und zurückzukehren.
deactivate
Installierte Pakete auflisten
Um alle installierten Pakete in Ihrer virtuellen Umgebung oder im gesamten System anzuzeigen, verwenden Sie Folgendes:
pip freeze
Hier werden alle installierten Python-Bibliotheken und deren Versionen angezeigt, was für die Erstellung von Anforderungsdateien nützlich ist.
Installieren von Abhängigkeiten aus einer Anforderungsdatei
Wenn Sie an einem Projekt zusammenarbeiten, geben Sie häufig eine requirements.txt Datei frei, in der alle benötigten Bibliotheken aufgeführt sind. Sie können alle Abhängigkeiten aus dieser Datei wie folgt installieren:
pip install -r requirements.txt
9. Überwachung und Protokollierung
Machine Learning-Experimente, insbesondere beim Trainieren großer Modelle, können sehr lange dauern. Das Überwachen des Fortschritts und das Protokollieren der Ausgabe sind für das Nachverfolgen von Experimenten, das Debuggen und Optimieren von Code von entscheidender Bedeutung.
tail (Das Ende von Dateien anzeigen)
Bei der Überprüfung von Protokollen möchten Sie häufig die neuesten Einträge anzeigen, der Befehl tail zeigt die letzten Zeilen einer Datei an.
tail -f log_file.log
Mit der Option -f können Sie neue Protokolleinträge in Echtzeit anzeigen, was für die Überwachung von Live-Experimenten oder Modelltrainingsprozessen nützlich ist.
watch (Befehle wiederholt ausführen)
Für die Echtzeitüberwachung der Systemleistung oder das Modelltraining verwenden Sie watch command, um einen Befehl in regelmäßigen Abständen auszuführen.
watch -n 1 nvidia-smi
Dadurch wird der GPU-Status jede Sekunde aktualisiert, sodass Sie die GPU-Auslastung während des Modelltrainings überwachen können.
10. Analyse der Festplattenauslastung
Die effektive Verwaltung des Speicherplatzes ist von entscheidender Bedeutung, insbesondere beim Umgang mit großen Datasets oder beim Speichern von Modellen. Mit diesen Befehlen können Sie die Festplattenauslastung analysieren und verwalten.
du (Festplattennutzung)
Um die Festplattenauslastung einer Datei oder eines Verzeichnisses zu überprüfen, verwenden Sie den Befehl du, der besonders nützlich ist, um zu überprüfen, wie viel Speicherplatz große Datasets oder Modelle belegen.
du -sh /path/to/directory
Die Option -s liefert eine Zusammenfassung, während -h die Ausgabe lesbar macht.
ncdu (Interaktiver Analysator für die Festplattennutzung)
Für eine benutzerfreundlichere Analyse der Festplattennutzung ist ncdu ein hervorragendes Tool, das eine interaktive Schnittstelle zur Untersuchung der Festplattennutzung bietet.
ncdu /path/to/directory
11. Automatisieren von Aufgaben unter Linux
Automatisierung ist unerlässlich, um die Effizienz zu verbessern und sich wiederholende Aufgaben zu vermeiden. Linux verfügt über mehrere Tools, die es einfach machen, Arbeitsabläufe in Ihren Machine Learning-Projekten zu automatisieren.
cron (Aufgaben planen)
Mit dem Cron-Dienstprogramm können Sie Aufträge so planen, dass sie in bestimmten Intervallen ausgeführt werden. Sie können cron verwenden, um Aufgaben wie das Ausführen von Modelltrainingsskripten oder das Sichern von Datensätzen zu automatisieren.
crontab -e
Dieser Befehl öffnet die Cron-Konfigurationsdatei. Sie können Einträge hinzufügen, um Skripts zu bestimmten Zeiten auszuführen, z. B. täglich oder wöchentlich.
at (Einmalige Aufgaben planen)
Verwenden Sie für einmalig geplante Aufgaben den Befehl at, der nützlich ist, wenn eine Aufgabe einmal zu einem bestimmten Zeitpunkt ausgeführt werden soll.
echo "python train_model.py" | at 2:00 PM
12. System- und Ressourcenoptimierung
Machine Learning-Aufgaben können ressourcenintensiv sein, und die Optimierung der Systemleistung kann dazu beitragen, die Trainingszeiten zu verkürzen und die Gesamteffizienz Ihrer Experimente zu verbessern. Linux bietet mehrere Befehle, um Systemressourcen effektiv zu optimieren und zu verwalten.
swapon (Auslagerungsbereich aktivieren)
Wenn Ihrem System bei speicherintensiven Aufgaben wie dem Trainieren großer Modelle der Arbeitsspeicher ausgeht, kann der Auslagerungsspeicher als Überlaufspeicher fungieren.
sudo swapon /swapfile
sysctl (Kernel-Parameter ändern)
Linux bietet sysctl zum Optimieren von Kernelparametern, um die Systemleistung zu optimieren, was besonders nützlich ist, wenn Deep-Learning-Workloads ausgeführt werden.
sysctl -w vm.swappiness=10
In diesem Beispiel wird der swappiness-Wert festgelegt, der steuert, wie oft das System Daten aus dem RAM auf den Datenträger auslagert.
13. Arbeiten mit Containern
Container sind für die Verwaltung von Machine Learning-Umgebungen unerlässlich. Unabhängig davon, ob Sie Docker oder Kubernetes verwenden, tragen diese Tools dazu bei, die Bereitstellung von Machine Learning-Modellen in einer reproduzierbaren und isolierten Umgebung zu optimieren.
docker (Container verwalten)
Docker ist das beliebteste Containerisierungstool, mit dem Sie Container erstellen, verwalten und ausführen können, die Ihre ML-Modelle und -Umgebungen verpacken.
docker build -t ml_model .
docker run -it ml_model
Mit diesen Befehlen können Sie ein Docker-Image für Ihr ML-Modell erstellen und es in einem isolierten Container ausführen.
docker-compose (Verwalten von Multi-Container-Anwendungen)
Für komplexere Setups mit mehreren Containern ist docker-compose das richtige Tool, mit dem Sie Anwendungen mit mehreren Containern mit einer einzigen Konfigurationsdatei definieren und verwalten können.
docker-compose up
14. Best Practices für die Sicherheit
Bei der Arbeit mit vertraulichen Daten oder beim Bereitstellen von Modellen in der Produktion wird die Sicherheit zu einem wichtigen Anliegen. Linux bietet eine Vielzahl von Befehlen, um Ihre Umgebung zu schützen und die Vertraulichkeit von Daten zu wahren.
chmod/chown (Berechtigungen/Eigentümerschaft ändern)
Es ist wichtig, den Zugriff auf sensible Datendateien oder Skripte mit Hilfe von chmod einzuschränken, um Dateiberechtigungen festzulegen, und chown, um den Dateibesitz zu ändern.
chmod 700 sensitive_data.csv
chown user:user sensitive_data.csv
Schlussfolgerung
Linux-Befehle sind für jeden Ingenieur für maschinelles Lernen unerlässlich. Von der Verwaltung von Dateien und Ressourcen über die Automatisierung von Aufgaben bis hin zur Optimierung der Leistung – Linux-Befehle ermöglichen es Ihnen, effizienter zu arbeiten, Arbeitsabläufe zu optimieren und sicherzustellen, dass Ihre Projekte reibungslos ablaufen.
Egal, ob Sie ein Anfänger oder ein erfahrener Benutzer sind, wenn Sie sich mit diesen Top-Linux-Befehlen vertraut machen, können Sie Ihre ML-Projekte mit Leichtigkeit navigieren.
Zusätzlich zu den Grundlagen werden Sie feststellen, dass die Flexibilität und das leistungsstarke Ökosystem von Linux es Ihnen ermöglichen, Ihre Umgebung an Ihre spezifischen Bedürfnisse anzupassen. Je öfter Sie diese Befehle verwenden, desto schneller und produktiver werden Sie, sodass Sie sich auf das konzentrieren können, was wirklich wichtig ist: bessere Modelle zu erstellen und großartige Ergebnisse zu erzielen.