Κοινή χρήση τεχνολογίας

Επίπεδο 1: Βασικές γνώσεις Linux

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Κατάλογος βασικών Linux

Πρόλογος

Αυτό το άρθρο είναι οι σημειώσεις του τρίτου ακαδημαϊκού μοντέλου μεγάλης κλίμακας που φιλοξενείται από το Εργαστήριο Τεχνητής Νοημοσύνης της Σαγκάης.Πρωτότυπος σύνδεσμος του tutorial
Για να εγγραφείτε, αναζητήστε το "The Third Scholar Model Practical Camp" στο WeChat.
Αυτή η σημείωση είναι μια προσωπικά σχολιασμένη σημείωση που τροποποιήθηκε με βάση το αρχικό σεμινάριο.

Επίπεδο Linux+InternStudio

😀Hello大家好,欢迎来到Μελετητής μεγάλο μοντέλοΠρακτική κατασκήνωση, εδώ είναι ένα βασικό μάθημα που ετοιμάζει η πρακτική κατασκήνωση για μαθητές που συμμετέχουν στην πρακτική κατασκήνωση για πρώτη φορά, και φοιτητές από διάφορες βιομηχανίες που δεν έχουν βασικές γνώσεις Linux Εδώ θα σας μάθουμε πώς να το χρησιμοποιείτεΜηχάνημα ανάπτυξης InternStudioκαι μάθετε μερικά βασικάΓνώση Linux , έτσι ώστε όλοι να μην έχουν ιδέα από πού να ξεκινήσουν στα παρακάτω μαθήματα, ελπίζω ότι θα είναι χρήσιμο σε όλους. Έχουμε ετοιμάσει ορισμένες εργασίες επιπέδου για εσάς στις εργασίες επιπέδου εδώ Όταν ολοκληρώσετε τις απαιτούμενες εργασίες επιπέδου και κάνετε check in, θα λάβετε την ανταμοιβή υπολογιστικής ισχύος του τρέχοντος επιπέδου.ας αρχίσουμε!

1. Εισαγωγή στη μηχανή ανάπτυξης InternStudio

InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持,为开发者提供开箱即用的大语言模型微调环境、工具、数据集,并完美兼容 🤗 HugginFace 开源生态。

Εάν θέλετε να μάθετε περισσότερα για το InternStudio, μπορείτε να ελέγξετε τα ακόλουθα έγγραφα: InternStudio

https://studio.intern-ai.org.cn/

Πρώτα ανοίξτε τον παραπάνω σύνδεσμο για να εισέλθετε στο InternStudio Αφού συνδεθείτε, θα μεταβείτε αυτόματα στη διεπαφή της κονσόλας, όπως φαίνεται στην παρακάτω εικόνα:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Επιτρέψτε μου να σας πω τις λειτουργίες των σελίδων που αντιστοιχούν σε κάθε σειριακό αριθμό:

  1. Εδώ μπορείτε να δημιουργήσετεΜηχάνημα ανάπτυξης, καθώς και να τροποποιήσετε τη διαμόρφωση του μηχανήματος ανάπτυξης και να προβάλετε τα σχετικά αρχεία καταγραφής κ.λπ.

Εισαγάγετε την περιγραφή της εικόνας εδώ

  1. ΟΚ εδώΟραματισμός Προβολή των αρχείων και των φακέλων στη μηχανή ανάπτυξης Εάν δημιουργήσετε δύο μηχανές ανάπτυξης, χρησιμοποιούν τον ίδιο δίσκο σύννεφο. (Επειδή κάθε μηχάνημα ανάπτυξης είναι ένα κοντέινερ Docker, έχει τοποθετηθεί ένας δίσκος cloud αποθήκευσης. Για επεξηγήσεις επαγγελματικών όρων, ανατρέξτε: Επεξήγηση επαγγελματικών όρων) Εδώ μπορείτε να ανεβάσετε αρχεία ή φακέλους, να δημιουργήσετε αρχεία και να προβάλετε κρυφά αρχεία.

Εισαγάγετε την περιγραφή της εικόνας εδώ

  1. Αυτή είναι μια νέα λειτουργία της μηχανής ανάπτυξης Εάν θέλετε να κάνετε ένα έργο, μπορείτε να κάνετε αίτηση για πόρους από τον βοηθόΚοινόχρηστοι υπολογιστικοί πόροι,避免造成资源浪费。(毕竟烧的可都是💴啊)
  2. Αυτό χρησιμοποιείται για τη διαμόρφωσηΚλειδί SSH, θα μιλήσουμε για τον τρόπο χρήσης του αργότερα.
  3. Το τελευταίο μέρος είναι για την επεξεργασία των προσωπικών σας στοιχείων και τον έλεγχο σαςΥπολογιστικοί πόροισυγκεκριμένη χρήση.

Το παραπάνω είναι μια σύντομη εισαγωγή στην πλατφόρμα InternStudio Ας ρίξουμε μια ματιά στο πώς να δημιουργήσουμε μια μηχανή ανάπτυξης Πηγαίνουμε στην αρχική σελίδα και κάνουμε κλικ στο ".Δημιουργήστε μια μηχανή ανάπτυξης

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εδώ επιλέγουμε να δημιουργήσουμεμηχανή προσωπικής ανάπτυξης, με όνομαδοκιμήCudaΗ έκδοση είναι 12.2,Κατανομή των πόρωνΕπιλέξτε 10% και η προεπιλεγμένη διάρκεια είναι καλή.

Αφού ολοκληρωθεί η δημιουργία, στοΜηχάνημα ανάπτυξηςΜπορείτε να δείτε τη μηχανή ανάπτυξης που μόλις δημιουργήσατε στη διεπαφή.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αφού εισέλθετε στη μηχανή ανάπτυξης, μπορείτε να δείτε την κύρια σελίδα της μηχανής ανάπτυξης Η μηχανή ανάπτυξης έχει τρεις τρόπους επιλογής:JupyterLab, Terminal και VScode

Εισαγάγετε την περιγραφή της εικόνας εδώ

σε:

  1. JupyterLab: Ένα διαδραστικό περιβάλλον προγραμματισμού και διδασκαλίας με ενσωματωμένο τερματικό που μπορεί εύκολα να δει αρχεία, να εκτελέσει κώδικα κ.λπ.
  2. τερματικό(Τερματικό, το πιο ελαφρύ): Χρησιμοποιείται κυρίως για λειτουργίες γραμμής εντολών ή εκτέλεση σεναρίων και απλών προγραμμάτων
  3. VSCode: Ο κώδικας VSC που είναι ενσωματωμένος στην ιστοσελίδα μπορεί επίσης να αναπτυχθεί εξ αποστάσεως μέσω σύνδεσης SSH στον τοπικό κώδικα VSC. Τα παρακάτω θα εξηγήσουν πώς να διαμορφώσετε την απομακρυσμένη σύνδεση.

Εισαγάγετε την περιγραφή της εικόνας εδώ

  1. Πρόκειται για χρήση πόρων, που θα χρησιμοποιηθεί σε επόμενα μαθήματα.

2. SSH και χαρτογράφηση θυρών

Εισαγάγαμε παραπάνωΠλατφόρμα InternStudio, και πώς να δημιουργήσετε μια μηχανή ανάπτυξης Σε αυτήν την ενότητα, θέλουμε να καταλάβουμε τιSSHΓιατί να χρησιμοποιήσετε απομακρυσμένη σύνδεση, Πώς να χρησιμοποιήσετε το SSHαπομακρυσμένη σύνδεσηΜηχάνημα ανάπτυξης, τι είναιΧαρτογράφηση λιμένωνκαι πώς να προχωρήσετεΧαρτογράφηση λιμένων

2.1 Τι είναι το SSH;

SSHΤο πλήρες όνομα είναι Secure Shell, το οποίο μεταφράζεται στα κινέζικα ως ασφαλές κέλυφοςπρωτόκολλο ασφαλείας δικτύου , πραγματοποιήστε ασφαλή πρόσβαση και μεταφορά αρχείων και άλλες υπηρεσίες μέσω μηχανισμών κρυπτογράφησης και ελέγχου ταυτότητας. Το πρωτόκολλο SSH παρέχει ασφαλείς υπηρεσίες δικτύου σε ένα μη ασφαλές περιβάλλον δικτύου με κρυπτογράφηση και έλεγχο ταυτότητας δεδομένων δικτύου.

Το SSH είναι (αρχιτεκτονική C/S) απόυπηρέτηςκαιπελάτηςΓια να δημιουργήσετε ένα ασφαλές κανάλι SSH, και τα δύο μέρη πρέπει πρώτα να δημιουργήσουν μια σύνδεση TCP, στη συνέχεια να διαπραγματευτούν τον αριθμό έκδοσης και τους διάφορους αλγόριθμους που χρησιμοποιούνται και να δημιουργήσουν το ίδιοκλειδί συνεδρίας χρησιμοποιείται για επακόλουθη συμμετρική κρυπτογράφηση. Μετά την ολοκλήρωση του ελέγχου ταυτότητας χρήστη, και τα δύο μέρη μπορούν να δημιουργήσουν μια περίοδο λειτουργίας για ανταλλαγή δεδομένων.

Στη συνέχεια, στην επόμενη πρακτική θα το κάνουμεΔιαμόρφωση κλειδιών SSH, το κλειδί διαμόρφωσης είναι έτσι ώστε να μην χρειάζεται να εισάγουμε επανειλημμένα τον κωδικό πρόσβασης όταν συνδεόμαστε εξ αποστάσεως στο μηχάνημα ανάπτυξης, και στη συνέχειαΓιατί να συνδεθείτε εξ αποστάσεως;

Το πλεονέκτημα της απομακρυσμένης σύνδεσης είναι ότι εάν χρησιμοποιείτε απομακρυσμένο γραφείο, μπορείτε να συνδεθείτε εξ αποστάσεως με τη μηχανή ανάπτυξης μέσω SSH, ώστε να μπορείτε να αναπτύξετε τοπικά. Και αν χρειάζεται να εκτελέσετε κάποιο τοπικό κώδικα και δεν έχετε περιβάλλον, τότε η απομακρυσμένη σύνδεση είναι πολύ απαραίτητη.

2.2 Πώς να χρησιμοποιήσετε το SSH για απομακρυσμένη σύνδεση στο μηχάνημα ανάπτυξης;

2.2.1 Χρήση κωδικού πρόσβασης για απομακρυσμένη σύνδεση SSH

Αρχικά, χρησιμοποιούμε τη μέθοδο εισαγωγής του κωδικού πρόσβασης για απομακρυσμένη σύνδεση SSH Αργότερα θα μιλήσουμε για τον τρόπο διαμόρφωσης της σύνδεσης χωρίς κωδικό πρόσβασης.

Αφού ολοκληρώσουμε τη δημιουργία του μηχανήματος ανάπτυξης, πρέπει να ανοίξουμε το τερματικό powerShell του υπολογιστή μας και να το χρησιμοποιήσουμεWin+R Χρησιμοποιήστε το πλήκτρο συντόμευσης για να ανοίξετε το πλαίσιο εκτέλεσης, εισαγάγετε το powerShell και ανοίξτε το τερματικό powerShell. (Εάν χρησιμοποιείτε λειτουργικό σύστημα Linux ή Mac, τα παρακάτω βήματα είναι τα ίδια)

Επιστρέφουμε στην πλατφόρμα μηχανών ανάπτυξης και μπαίνουμεΜηχάνημα ανάπτυξηςΒρείτε το μηχάνημα ανάπτυξης που δημιουργήσαμε στη σελίδα και κάντε κλικΣύνδεση SSH

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εισαγάγετε την περιγραφή της εικόνας εδώ

στη συνέχεια αντιγράψτεΕντολή σύνδεσης, 37367 εδώ είναι η θύρα SSH που χρησιμοποιείται από το μηχάνημα ανάπτυξης Γενικά, η θύρα 22 χρησιμοποιείται χωρίς αυτόν τον αριθμό θύρας, και η θύρα του καθενός είναι διαφορετική, οπότε αν συνδέεστε στο μηχάνημα ανάπτυξης. , πρέπει να ελέγξετε αν η θύρα είναι λάθος.

Επικολλήστε την αντιγραμμένη εντολή στο powershell και πατήστε Enter Εδώ πρέπει να εισαγάγουμε τον κωδικό πρόσβασης κάτω από την εντολή σύνδεσης και να τον επικολλήσουμε στο τερματικό.Σημειώστε ότι μετά την αντιγραφή του κωδικού πρόσβασης, κάντε δεξί κλικ για να τον επικολλήσετε Το πλήκτρο συντόμευσης φλοιού για επικόλληση σε ορισμένους υπολογιστές είναιshift+ins, ο κωδικός που επικολλήθηκε εδώ δεν θα εμφανιστεί, αυτό είναι φυσιολογικό.

Τέλος, πατήστε Enter και εμφανίζεται το ακόλουθο περιεχόμενο, υποδεικνύοντας επιτυχία:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αφού συνδεθούμε στη μηχανή ανάπτυξης, μπορούμε να χρησιμοποιήσουμεhostnameΓια να δείτε το όνομα του μηχανήματος ανάπτυξης, χρησιμοποιήστε τοuname -aΓια να δείτε τις πληροφορίες του πυρήνα του μηχανήματος ανάπτυξης, χρησιμοποιήστε τοlsb_release -aΓια να δείτε πληροφορίες έκδοσης μηχανήματος ανάπτυξης, χρησιμοποιήστε τοnvidia-smiΕλέγξτε τις πληροφορίες της GPU Θα μιλήσουμε αργότερα για αυτές τις εντολές.exitΑυτό είναι.

2.2.2 Διαμόρφωση κλειδιού SSH για απομακρυσμένη σύνδεση SSH

Αλλά όταν αναπτύσσουμε και μελετάμε, είναι ενοχλητικό να εισάγουμε τον κωδικό πρόσβασης από απόσταση. Μπορούμε να ρυθμίσουμε το κλειδί SSH για να παραλείψουμε το βήμα εισαγωγής του κωδικού πρόσβασηςssh-keygenεντολή για τη δημιουργία του κλειδιού

Το κλειδί SSH είναι μια ασφαλής και βολική μέθοδος ελέγχου ταυτότητας σύνδεσης, που χρησιμοποιείται για έλεγχο ταυτότητας και κρυπτογραφημένη επικοινωνία στο πρωτόκολλο SSH.

ssh-keygenΥποστηρίζει κλειδιά ελέγχου ταυτότητας RSA και DSA.

Οι παράμετροι που χρησιμοποιούνται συνήθως περιλαμβάνουν:

  • -t: Καθορίστε τον τύπο κλειδιού, όπως dsa, ecdsa, ed25519, rsa.
  • -b: Καθορίστε το μήκος του κλειδιού.
  • -Γ: Προσθέστε σχόλια.
  • -f: Καθορίστε το όνομα αρχείου για να αποθηκεύσετε το κλειδί.
  • -i: Διαβάστε μη κρυπτογραφημένα αρχεία ιδιωτικού/δημόσιου κλειδιού συμβατά με ssh-v2.

Εδώ χρησιμοποιούμε τον αλγόριθμο RSA για να δημιουργήσουμε το κλειδί, η εντολή είναι:

ssh-keygen -t rsa
  • 1

Αφού εισαγάγετε την εντολήΜπείτε μέχρι το τέλοςΑυτό είναι όλο, το κλειδί εδώ δημιουργείται από προεπιλογή~/.ssh/κάτω από τον κατάλογο,~Σημαίνει τον αρχικό κατάλογο, αν είναι windows, είναιC:Users{your_username} .Μπορεί να χρησιμοποιηθεί στο powerShellGet-ContentΕντολή για προβολή του κλειδιού που δημιουργήθηκε, το οποίο μπορεί να χρησιμοποιηθεί εάν πρόκειται για λειτουργικό σύστημα LinuxcatΣειρά.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εισαγάγετε την περιγραφή της εικόνας εδώ

Στη συνέχεια επιστρέφουμε στην πλατφόρμα του μηχανήματος ανάπτυξης και κάνουμε κλικ στο Configuration στην αρχική σελίδαΚλειδί SSHκαι μετά κάντε κλικΠροσθήκη δημόσιου κλειδιού SSH

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αντιγράψτε το κλειδί που μόλις δημιουργήσατε και επικολλήστε το στο πλαίσιο δημόσιου κλειδιού. Τέλος, κάντε κλικ στην επιλογή Προσθήκη τώρα και η διαμόρφωση του κλειδιού SSH έχει ολοκληρωθεί.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αφού ολοκληρώσετε τη δημιουργία του κλειδιού SSH, κάντε επανεκκίνησητερματικόΚατά την απομακρυσμένη σύνδεση, το βήμα της εισαγωγής του κωδικού πρόσβασης θα παραλειφθεί.

2.2.3 Χρήση VScode για απομακρυσμένη σύνδεση SSH

Φυσικά, μπορείτε επίσης να χρησιμοποιήσετε λογισμικό απομακρυσμένης σύνδεσης SSH, όπως:Windterm, Xterminal Περίμενε. Εδώ χρησιμοποιούμε το VScode για απομακρυσμένη σύνδεση Το πλεονέκτημα της χρήσης του VScode είναι ότι είναι ένας επεξεργαστής κώδικα, ο οποίος είναι πολύ βολικός για την τροποποίηση κώδικα και άλλες λειτουργίες.

Εάν θέλουμε να συνδεθούμε εξ αποστάσεως στο VScode, πρέπει επίσης να εγκαταστήσουμε ένα σύνολο προσθηκών. Μπορείτε να αναζητήσετε στο διαδίκτυο πώς να εγκαταστήσετε το VScode. (Το vscode στη μηχανή ανάπτυξης δεν μπορεί να αναζητήσει αυτό το πρόσθετο, αλλά το τοπικό vscode μπορεί)

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εάν έχετε εγκαταστήσει το VScode, μπορείτε να κάνετε κλικ στη σελίδα επέκτασης στα αριστερά και να εισαγάγετε "SSH" στο πλαίσιο αναζήτησης. Το πρώτο είναι το πρόσθετο που θέλουμε να εγκαταστήσουμε.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αφού εγκαταστήσετε το plug-in, κάντε κλικ στο εικονίδιο απομακρυσμένης σύνδεσης στην πλαϊνή γραμμή, κάντε κλικ στο κουμπί "+" στο SSH και προσθέστε την εντολή σύνδεσης για τη σύνδεση SSH του μηχανήματος ανάπτυξης.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αντιγράφουμε την εντολή σύνδεσης, επικολλάμε την εντολή στο αναδυόμενο παράθυρο και, τέλος, πατάμε Enter:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εισαγάγετε την περιγραφή της εικόνας εδώ

Το προεπιλεγμένο αρχείο ρύθμισης παραμέτρων είναι εντάξει. Φυσικά, μπορείτε επίσης να το προσαρμόσετε.

Host ssh.intern-ai.org.cn #主机ip也可以是域名
  HostName ssh.intern-ai.org.cn #主机名
  Port 37367 #主机的SSH端口
  User root #登录SSH使用的用户
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Εάν θέλετε να προσθέσετε μερικές από τις ακόλουθες επιλογές διαμόρφωσης με μη αυτόματο τρόπο, πρέπει να τροποποιήσετε τα αντίστοιχα μέρη σύμφωνα με την παραπάνω μορφή.

Αν *StrictHostKeyChecking noκαιUserKnownHostsFile* /dev/nullΔιαγράψτε το αναδυόμενο παράθυρο που θα εμφανιστεί για επαλήθευση δακτυλικών αποτυπωμάτων:

Εισαγάγετε την περιγραφή της εικόνας εδώ

StrictHostKeyChecking no Υποδεικνύει ότι ο αυστηρός έλεγχος κλειδιού κεντρικού υπολογιστή είναι απενεργοποιημένος. Αυτό σημαίνει ότι κατά τη σύνδεση σε έναν νέο διακομιστή SSH, το κλειδί κεντρικού υπολογιστή του διακομιστή δεν θα επαληθεύεται αυστηρά, γεγονός που μπορεί να εγκυμονεί συγκεκριμένο κίνδυνο ασφάλειας.

UserKnownHostsFile /dev/nullΟρίζει το αρχείο κλειδιού κεντρικού υπολογιστή που είναι γνωστό στον χρήστη σε /dev/null, το οποίο ουσιαστικά αγνοεί την εγγραφή και τη χρήση γνωστών κλειδιών κεντρικού υπολογιστή.

Ωστόσο, στη γενική πρακτική ασφαλείας, δεν συνιστάται η αυθαίρετη απενεργοποίηση του αυστηρού ελέγχου κλειδιού κεντρικού υπολογιστή.

Στη συνέχεια, κάντε κλικ στο "Σύνδεση" στο παράθυρο προτροπής που εμφανίζεται στην κάτω δεξιά γωνία για να συνδεθείτε απομακρυσμένα με το μηχάνημα ανάπτυξης.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εισαγάγετε την περιγραφή της εικόνας εδώ

Μετά την ολοκλήρωση της απομακρυσμένης σύνδεσης, μπορείτε να επιλέξετε τον φάκελο που θα ανοίξει, ο οποίος μπορεί επίσης να ονομάζεται κατάλογος εργασίας. Μπορείτε να επιλέξετε τον φάκελο στο μηχάνημα ανάπτυξης ή τον τοπικό φάκελο.δίσκος σύννεφο

Όταν κάνετε μια απομακρυσμένη σύνδεση την επόμενη φορά, δεν χρειάζεται να εισάγετε εντολές σύνδεσης και άλλες πληροφορίες Χρειάζεται μόνο να ανοίξετε την απομακρυσμένη σύνδεση του vscode για να δείτε τις πληροφορίες του μηχανήματος ανάπτυξης της πρώτης σύνδεσης, ως εξής.rootΣημαίνει ότι όταν συνδεόμαστε για πρώτη φορά με τη μηχανή ανάπτυξης, χρησιμοποιούμε/rootΛίστα εργασιών.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Και στην παρακάτω εικόνα->Υποδεικνύει ότι πρέπει να επιλέξετε ξανά τον κατάλογο εργασίας μετά την είσοδο στο μηχάνημα ανάπτυξης:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Και στην παρακάτω εικόνα->Υποδεικνύει την είσοδο στον κατάλογο εργασίας που επιλέχθηκε από την τελευταία μηχανή ανάπτυξης:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Ο κατάλογος εργασίας που επιλέγεται κάθε φορά θα εμφανίζεται κάτω από τις πληροφορίες του μηχανήματος ανάπτυξης: (υπάρχει ένας επιπλέον κατάλογος εργασίας για το lagent εδώ)

Εισαγάγετε την περιγραφή της εικόνας εδώ

Στη συνέχεια θα παρουσιάσουμε το πότεΧαρτογράφηση λιμένων

2.3. Χαρτογράφηση λιμένων

2.3.1 Τι είναι η χαρτογράφηση θυρών;

Χαρτογράφηση λιμένων Είναι μια τεχνολογία δικτύου που μπορεί να αντιστοιχίσει οποιαδήποτε θύρα στο εξωτερικό δίκτυο στην αντίστοιχη θύρα του εσωτερικού δικτύου για να πραγματοποιήσει την επικοινωνία μεταξύ του εσωτερικού δικτύου και του εξωτερικού δικτύου. Μέσω της χαρτογράφησης θυρών, οι υπηρεσίες ή οι εφαρμογές στο intranet μπορούν να έχουν πρόσβαση από το εξωτερικό δίκτυο για να επιτευχθεί άνετη επικοινωνία σε όλο το δίκτυο.

Γιατί λοιπόν πρέπει να εκτελούμε χαρτογράφηση θυρών όταν χρησιμοποιούμε μια μηχανή ανάπτυξης;

Γιατί στα επόμενα μαθήματα θα διεξάγουμε μοντέλαweb_demo Στην πρακτική ανάπτυξης, κατά τη διάρκεια αυτής της διαδικασίας, είναι πιθανό να αντιμετωπίσετε το πρόβλημα της ατελούς φόρτωσης της διεπαφής web.Αυτό συμβαίνει επειδή κατά την εκτέλεση του web_demo στο Web IDE του μηχανήματος ανάπτυξης, η απευθείας πρόσβαση στην υπηρεσία http/https στη μηχανή ανάπτυξης ενδέχεται να αντιμετωπίσει προβλήματα διακομιστή μεσολάβησης.πόρους UIΔεν έχει φορτωθεί πλήρως.

Για να λύσουμε λοιπόν αυτό το πρόβλημα, πρέπει να μεταφέρουμε τη χαρτογράφηση της σύνδεσης με το web_demo καιΟι σύνδεσμοι εξωτερικού δικτύου αντιστοιχίζονται στον τοπικό μας κεντρικό υπολογιστή , χρησιμοποιούμε τοπική πρόσβαση σύνδεσης για να λύσουμε αυτό το πρόβλημα διακομιστή μεσολάβησης. Ας το εξασκήσουμε τώρα.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Ας καταλάβουμε πρώτα πώς λειτουργεί η χαρτογράφηση θυρών μηχανής ανάπτυξης με βάση ένα διάγραμμα:

Υπάρχουν πρακτικά βήματα παρακάτω. Κατανοήστε πρώτα πώς να κάνετε χαρτογράφηση θυρών.

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Το παραπάνω είναι μια εντολή χαρτογράφησης θύρας Εκτελέστε αυτήν την εντολή στον κεντρικό υπολογιστή για να εκτελέσετε τη χαρτογράφηση θυρών.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Ο προσωπικός υπολογιστής θα συνδεθεί εξ αποστάσεως στη μοναδική εκτεθειμένη θύρα 37367 της μηχανής ανάπτυξης (αυτό αναφέρεται κατά το SSH και η εκτεθειμένη θύρα κάθε μηχανής ανάπτυξης είναι διαφορετική) και θα ορίσει τις επιλογές σήραγγας. Οι εκτεθειμένες θύρες χρησιμεύουν ως σταθμοί μεταφοράς για την προώθηση της κυκλοφορίας.

  • -C: Ενεργοποιήστε τη συμπίεση για να μειώσετε τον όγκο των δεδομένων που μεταφέρονται.
  • -N: Δεν εκτελεί απομακρυσμένες εντολές, δημιουργεί μόνο τούνελ.
  • -g: Επιτρέψτε στους απομακρυσμένους κεντρικούς υπολογιστές να συνδεθούν σε τοπικά προωθημένες θύρες.

Όταν αυτή η εντολή SSH εκτελείται σε προσωπικό υπολογιστή, ο πελάτης SSH θα ακούσει στη θύρα 7860 του τοπικού μηχανήματος.

Οποιαδήποτε κίνηση αποστέλλεται στην τοπική θύρα 7860 θα προωθηθεί από τη σήραγγα SSH στη θύρα 7860 στη διεύθυνση 127.0.0.1 του απομακρυσμένου διακομιστή.

Αυτό σημαίνει ότι ακόμα κι αν αυτή η θύρα της μηχανής ανάπτυξης δεν εκτίθεται απευθείας στο εξωτερικό δίκτυο, μπορούμε να έχουμε πρόσβαση με ασφάλεια σε υπηρεσίες στον απομακρυσμένο διακομιστή μέσω αυτής της σήραγγας. .

2.3.2 Πώς να εκτελέσετε τη χαρτογράφηση θυρών;
2.3.2.1 Χρησιμοποιήστε την εντολή ssh για αντιστοίχιση θυρών

Εξακολουθούμε να πηγαίνουμε στη διεπαφή του μηχανήματος ανάπτυξης, βρίσκουμε το μηχάνημα ανάπτυξης και κάνουμε κλικΠροσαρμοσμένες υπηρεσίες, αντιγράψτε την πρώτη εντολή,
Εισαγάγετε την περιγραφή της εικόνας εδώ

ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
  • 1

Ας του παρουσιάσουμε τη σημασία κάθε μέρους της εντολής:

  • -p 37367: Καθορίζει τη θύρα για σύνδεση SSH στο 37367, η οποία αναφέρθηκε προηγουμένως.
  • [email protected]: Υποδεικνύει τη χρήση root Η ταυτότητα χρήστη συνδέεται μεssh.intern-ai.org.cn αυτός ο οικοδεσπότης.
  • -CNg
    • -C Συνήθως χρησιμοποιείται για την ενεργοποίηση της συμπίεσης.
    • -N Υποδεικνύει ότι οι απομακρυσμένες εντολές δεν εκτελούνται, αλλά δημιουργούνται μόνο συνδέσεις για προώθηση θύρας κ.λπ.
    • -g Επιτρέψτε στους απομακρυσμένους κεντρικούς υπολογιστές να συνδέονται σε τοπικά προωθημένες θύρες.
  • -L {本地机器_PORT}:127.0.0.1:{开发机_PORT}: Πρόκειται για τη ρύθμιση της προώθησης τοπικής θύρας για την προώθηση της καθορισμένης θύρας του τοπικού μηχανήματος (από {本地机器_PORT} αντιπροσωπεύει) προωθείται στον απομακρυσμένο κεντρικό υπολογιστή (εδώ, π.χ.ssh.intern-ai.org.cn)του 127.0.0.1 (δηλαδή η τοπική διεύθυνση loopback) και η καθορισμένη θύρα μηχανής ανάπτυξης (που ορίζεται από{开发机_PORT} εξπρές).
  • -o StrictHostKeyChecking=no: Απενεργοποιήστε τον αυστηρό έλεγχο κλειδιού κεντρικού υπολογιστή για να αποφύγετε μηνύματα ή σφάλματα λόγω άγνωστων κλειδιών κεντρικού υπολογιστή κατά τη σύνδεση για πρώτη φορά.

Όταν εκτελείτε μια επίδειξη ιστού, μπορείτε να χρησιμοποιήσετε αυτήν την εντολή για να εκτελέσετε αντιστοίχιση θυρών, για παράδειγμα:

Δημιουργούμε ένα αρχείο hello_world.py (κάνουμε δεξί κλικ στη διεπαφή του μηχανήματος ανάπτυξης για να δημιουργήσουμε το αρχείο και αλλάξουμε το όνομα σε hello_world.py) και συμπληρώνουμε το ακόλουθο περιεχόμενο στο αρχείο:

import socket
import re
import gradio as gr
 
# 获取主机名
def get_hostname():
    hostname = socket.gethostname()
    match = re.search(r'-(d+)$', hostname)
    name = match.group(1)
    
    return name
 
# 创建 Gradio 界面
with gr.Blocks(gr.themes.Soft()) as demo:
    html_code = f"""
            <p align="center">
            <a href="https://intern-ai.org.cn/home">
                <img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;">
            </a>
            </p>
            <h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1>
            <h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2>
            <p align="center">
                <a href="https://github.com/InternLM/Tutorial/blob/camp3">
                    <img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;">
                </a>
            </p>

            """
    gr.Markdown(html_code)

demo.launch()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

Θυμηθείτε μετά την επεξεργασίαctrl+sαποθηκεύσετε

Πριν εκτελέσετε τον κώδικα, πρέπει να χρησιμοποιήσετεpip install gradio==4.29.0Εντολή για εγκατάσταση των παρακάτω πακέτων εξάρτησης (αντιγράψτε και επικολλήστε την εντολή στο τερματικό) και, στη συνέχεια, εκτελέστε ένα στο τερματικό του Web IDEpython hello_world.pyΣειρά

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εάν η αντιστοίχιση θύρας δεν εκτελείται, δεν είναι δυνατή η πρόσβαση σε αυτήν χρησιμοποιώντας τοπική IP.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Μπορώ να το εισάγω στο powerShell χρησιμοποιώντας την ακόλουθη εντολή:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αυτό αντιπροσωπεύει την επιτυχία. (Ειδοποίηση: Αυτή η εντολή δεν επιστρέφει περιεχόμενο, πράγμα που σημαίνει ότι εκτελείται η αντιστοίχιση της θύρας και, στη συνέχεια, μπορείτε να δείτε τη διεπαφή web UI ανοίγοντας τη σύνδεση στην ιστοσελίδα)

Εισαγάγετε την περιγραφή της εικόνας εδώ

2.3.2.2 Χρήση vscode για αντιστοίχιση θυρών

Φυσικά, εάν τρέχουμε διαφορετικά UI ιστού, πρέπει να εισάγουμε επανειλημμένα εντολές, κάτι που είναι πολύ ενοχλητικό και πρέπει να χρησιμοποιήσουμε το VScode.Έχουμε συνδέσει το μηχάνημα ανάπτυξης εξ αποστάσεως μέσω SSH. Το VScode παρέχει αυτόματη αντιστοίχιση θυρών.Ξυπνήστε το τερματικό, οι επιλογές θύρας βρίσκονται στη δεξιά πλευρά του τερματικού:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εδώ μπορείτε να δείτε τις πληροφορίες αντιστοίχισης θύρας Εάν θέλετε να τροποποιήσετε τη θύρα, μπορείτε να τροποποιήσετε τον αριθμό θύρας στη στήλη της θύρας.

3. Βασικές εντολές Linux

Σε αυτό το μέρος, θα σας οδηγήσω να κατανοήσετε ορισμένες πτυχές του Linux.Βασικές λειτουργίες και χρησιμοποιήστε μερικά εργαλεία. Για να το λύσει ο καθένας μόνος του όταν αντιμετωπίζει προβλήματα, μπορείτε να σχολιάσετε και εδώ και θα σας απαντήσω εγκαίρως.

γιατί χρησιμοποιούμεΜηχάνημα ανάπτυξηςσπάνια χρησιμοποιούμενοδιαχείριση της αρχής , οπότε δεν θα το παρουσιάσουμε. (Οι παρακάτω λειτουργίες εκτελούνται όλες στο τερματικό VScode)

3.1 Διαχείριση αρχείων

Στο Linux, οι κοινές λειτουργίες διαχείρισης αρχείων περιλαμβάνουν:

  • Δημιουργήστε ένα αρχείο:μπορεί να χρησιμοποιηθεί touch η εντολή δημιουργεί ένα κενό αρχείο.
  • Δημιουργήστε έναν κατάλογο:χρήση mkdir Σειρά.
  • Εναλλαγή καταλόγου:χρήσηcdΣειρά.
  • Εμφάνιση καταλόγου:χρήσηpwdΣειρά.
  • Δείτε τα περιεχόμενα του αρχείου: Εάν χρησιμοποιείται cat Απευθείας εμφάνιση ολόκληρου του περιεχομένου του αρχείου,more καιless Μπορεί να προβληθεί σε σελίδες.
  • Επεξεργασία αρχείου:αρέσει vi ήvim Περιμένετε τον συντάκτη.
  • Αντιγραφή αρχείων:χρήση cp Σειρά.
  • Δημιουργία συνδέσμου αρχείου:χρήσηlnΣειρά.
  • Μετακίνηση αρχείων:πέρασμα mv Σειρά.
  • Διαγραφή αρχείων:χρήση rm Σειρά.
  • διαγραφή καταλόγουrmdir(Μόνο κενοί κατάλογοι μπορούν να διαγραφούν) ή rm -r(Οι μη κενοί κατάλογοι μπορούν να διαγραφούν).
  • Εύρεση αρχείων:Μπορεί να χρησιμοποιηθεί find Σειρά.
  • Προβολή λεπτομερειών ενός αρχείου ή καταλόγου:χρήσηlsεντολή, όπως η χρήση ls -lΠροβολή λεπτομερών πληροφοριών σχετικά με αρχεία σε έναν κατάλογο.
  • Επεξεργασία αρχείων: Για πολύπλοκες λειτουργίες αρχείων, μπορείτε να χρησιμοποιήσετεsedΣειρά.

Ακολουθούν αρκετές εντολές που θα χρησιμοποιήσουμε στο μάθημα:

3.1.1 αφή

Μπορούμε να χρησιμοποιήσουμε την αφή για να δημιουργήσουμε γρήγορα αρχεία, επομένως δεν χρειάζεται να κάνουμε κλικ με μη αυτόματο τρόπο για να τα δημιουργήσουμε.Για παράδειγμα, θέλουμε να δημιουργήσουμε έναdemo.pyέγγραφο:

3.1.2 mkdir

Με τον ίδιο τρόπο, εάν θέλετε να δημιουργήσετε ένα αρχείο με όνομαtestΕυρετήριο:

Εισαγάγετε την περιγραφή της εικόνας εδώ

3.1.3 CD

Αυτή η εντολή θα είναι η πιο συχνά χρησιμοποιούμενη εντολή Πριν τη χρησιμοποιήσετε, πρέπει να εξηγήσετε τη δομή του καταλόγου σε μαθητές που δεν έχουν δεξιότητες υπολογιστή και να σχεδιάσετε μια εικόνα για να την κατανοήσουν όλοι.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αυτό που χρησιμοποιούμε τώρα είναιrootκατάλογο, ο οποίος είναι επίσης ο αρχικός κατάλογος του χρήστη root.~, σε λειτουργικό σύστημα linux/Αντιπροσωπεύει τον ριζικό κατάλογο Υπάρχουν πολλοί κατάλογοι και αρχεία που απαιτούνται από το σύστημα στον ριζικό κατάλογοrootκατάλογο, μεταξύ των οποίων.Αντιπροσωπεύει τον τρέχοντα κατάλογο,.. Ο γονικός κατάλογος που αντιπροσωπεύεται.Αν έμπαινα τώραtestκατάλογο και μετά επιστρέψτε στονrootΚατάλογος, μπορούμε να κάνουμε αυτό:

3.1.4 pwd

μπορούμε να χρησιμοποιήσουμεpwdΕντολή για προβολή του τρέχοντος καταλόγου: Αυτό μας διευκολύνει να προσδιορίσουμε σε ποιον κατάλογο βρισκόμαστε αυτήν τη στιγμή.

Εισαγάγετε την περιγραφή της εικόνας εδώ

3.1.5 Γάτα

catΗ εντολή μπορεί να προβάλει τα περιεχόμενα του αρχείου και μπορούν να χρησιμοποιηθούν περισσότερες εντολές--helpΕντολή για προβολή:

  • -a, --show-all ισοδυναμεί με -vET
  • -b, –αριθμός-μη κενός αριθμός μη κενών γραμμών εξόδου, παρακάμπτει -n
  • -e, ισοδύναμο με -vE
  • -E, --show -end εμφανίζει $ στο τέλος κάθε γραμμής
  • -n, --αριθμός αριθμός όλων των γραμμών εξόδου
  • -s, --crick-blank καταστέλλει επαναλαμβανόμενες κενές γραμμές εξόδου
  • Το -t ισοδυναμεί με -vT
  • -t, --show-tabs εμφανίζει τους χαρακτήρες της καρτέλας ως ^I
  • -v, --εμφάνιση μη εκτυπωτικών χρήσεων ^ και M-σημείωσης, εκτός από το LFD και το TAB
3.1.6 vi ή vim

Μπορούμε να το χρησιμοποιήσουμε όταν χρειάζεται να επεξεργαστούμε αρχείαviήvimεντολή, όταν εισάγετε την επεξεργασία αρχείων, υπάρχουν τρεις τρόποι:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εισαγάγετε τη λειτουργία επεξεργασίας για χρήσηi, η ευκολία του vim είναι ότι μπορείτε να κάνετε απλές τροποποιήσεις αρχείων στο τερματικό.

3.1.7 cp και ln (έμφαση)

**cp**Η εντολή θα χρησιμοποιηθεί συχνά στα ακόλουθα μαθήματα. Χρησιμοποιείται για την αντιγραφή ενός αρχείου ή καταλόγου σε άλλον κατάλογο.

  • Αντιγραφή αρχείων:cp 源文件 目标文件
  • Αντιγραφή καταλόγου:cp -r 源目录 目标目录

Αλλά αν θέλουμε να χρησιμοποιήσουμε το μοντέλο, αυτή η λειτουργία θα καταλαμβάνει πολύ χώρο στο δίσκο, επομένως χρησιμοποιούμε γενικάln εντολή, αυτή είναι ίδια με τη συντόμευση των Windows. Υπάρχουν δύο τύποι συνδέσμων στο Linux:σκληρός σύνδεσμος(σκληρός σύνδεσμος)μεμαλακός σύνδεσμος (συμβολικός σύνδεσμος), ένας σκληρός σύνδεσμος σημαίνει ότι ένα αρχείο μπορεί να έχει πολλά ονόματα, ενώ ένας μαλακός σύνδεσμος δημιουργεί ένα ειδικό αρχείο του οποίου το περιεχόμενο δείχνει τη θέση ενός άλλου αρχείου. Οι σκληροί σύνδεσμοι υπάρχουν στο ίδιο σύστημα αρχείων, αλλά οι μαλακοί σύνδεσμοι μπορούν να εκτείνονται σε διαφορετικά συστήματα αρχείων.

Ως εκ τούτου, χρησιμοποιούμε γενικά μαλακές συνδέσεις Οι συνήθεις μέθοδοι χρήσης του είναι οι εξής:

ln [参数][源文件或目录][目标文件或目录]
  • 1

Οι παράμετροι είναι οι εξής:

  • -s: Η δημιουργία μαλακών συνδέσμων (συμβολικοί σύνδεσμοι) είναι επίσης η πιο συχνά χρησιμοποιούμενη.
  • -f: Αναγκαστική εκτέλεση, αντικατάσταση υπαρχόντων αρχείων προορισμού.
  • -i: Διαδραστική λειτουργία, εάν το αρχείο υπάρχει, θα ζητηθεί από τον χρήστη εάν θα το αντικαταστήσει.
  • -n: αντιμετωπίζετε τους συμβολικούς συνδέσμους ως γενικούς καταλόγους.
  • -v: Εμφάνιση λεπτομερούς επεξεργασίας.
3.1.8 mv και rm

mvεντολή καιrmΟι εντολές χρησιμοποιούνται με παρόμοιο τρόπο, αλλάmvΧρησιμοποιείται για τη μετακίνηση αρχείων ή καταλόγων και μπορεί επίσης να μετονομαστεί.rmΗ εντολή χρησιμοποιείται για τη διαγραφή αρχείων ή καταλόγων.

Οι μέθοδοι που χρησιμοποιούνται συνήθως είναι οι εξής:

  • εντολή mv

Παράμετροι που χρησιμοποιούνται συνήθως:

  • -i: Διαδραστική λειτουργία, ερώτηση πριν την αντικατάσταση.
  • -f: Κάλυψη δύναμης.
  • -u: Μετακίνηση μόνο εάν το αρχείο προέλευσης είναι νεότερο από το αρχείο προορισμού.

Παράδειγμα χρήσης:

  • mv file1.txt dir1/: μετακινήστε το αρχείο file1.txt Μετακίνηση στον κατάλογοdir1 Μέσης.

  • mv file1.txt file2.txt: μετακινήστε το αρχείο file1.txt Μετονομασία σεfile2.txt

  • εντολή rm

Παράμετροι που χρησιμοποιούνται συνήθως:

  • -i: Διαδραστική λειτουργία, ερώτηση πριν τη διαγραφή.
  • -f: Αναγκαστική διαγραφή, αγνοώντας ανύπαρκτα αρχεία, χωρίς να ζητείται επιβεβαίωση.
  • -r:Διαγράψτε αναδρομικά έναν κατάλογο και τα περιεχόμενά του.

Παράδειγμα χρήσης:

  • rm file.txt:Διαγραφή αρχείων file.txt
  • rm -r dir1/: Αναδρομική διαγραφή καταλόγων dir1 και όλο το περιεχόμενό του.

Μπορεί επίσης να χρησιμοποιηθεί η εντολή διαγραφής καταλόγουrmdir

3.1.9 εύρημα

findΗ εντολή είναι ένα ισχυρό εργαλείο αναζήτησης αρχείων στο σύστημα Linux. Μπορεί να βρει αρχεία ή καταλόγους που πληρούν τις προϋποθέσεις στον καθορισμένο κατάλογο και τους υποκαταλόγους του και να εκτελέσει τις αντίστοιχες λειτουργίες.

Το παρακάτω είναιfindΜερικές κοινές χρήσεις της εντολής:

  1. Εύρεση ανά όνομα αρχείου:χρήση-name επιλογή για εύρεση αρχείων κατά όνομα αρχείου. Για παράδειγμα,find /path/to/directory -name "file.txt"θα αναζητήσει τον καθορισμένο κατάλογο και τους υποκαταλόγους του με όνομαfile.txtέγγραφο.
  2. Εύρεση ανά τύπο αρχείου:χρήση-type επιλογή για εύρεση αρχείων ανά τύπο αρχείου. Για παράδειγμα,find /path/to/directory -type fΘα βρεθούν όλα τα συνηθισμένα αρχεία στον καθορισμένο κατάλογο και στους υποκαταλόγους του.
  3. Εύρεση ανά μέγεθος αρχείου:χρήση-size επιλογή για εύρεση αρχείων κατά μέγεθος αρχείου. Για παράδειγμα,find /path/to/directory -size +100MΘα βρείτε αρχεία μεγαλύτερα από 100 MB στον καθορισμένο κατάλογο και στους υποκαταλόγους του.
  4. Αναζήτηση κατά χρόνο τροποποίησης:χρήση-mtime-atimeή-ctime Οι επιλογές βρίσκουν αρχεία βάσει του χρόνου τροποποίησης, του χρόνου πρόσβασης ή του χρόνου αλλαγής κατάστασης. Για παράδειγμα,find /path/to/directory -mtime -7Θα βρείτε αρχεία στον καθορισμένο κατάλογο και στους υποκαταλόγους του που έχουν τροποποιηθεί εντός 7 ημερών.
  5. Δικαιώματα Εύρεση κατά αρχείο:χρήση-perm επιλογή για εύρεση αρχείων με βάση τα δικαιώματα αρχείων. Για παράδειγμα,find /path/to/directory -perm 755Θα βρει αρχεία με άδεια 755 στον καθορισμένο κατάλογο και στους υποκαταλόγους του.
  6. Εύρεση ανά χρήστη ή ομάδα:χρήση-userή-group Οι επιλογές βρίσκουν αρχεία από τον ιδιοκτήτη ή την ομάδα τους. Για παράδειγμα,find /path/to/directory -user usernameΘα πραγματοποιήσει αναζήτηση στον καθορισμένο κατάλογο και στους υποκαταλόγους του που ανήκουν στον χρήστηusernameέγγραφο.
  7. εκτελούν λειτουργίες:χρήση-exec Οι επιλογές μπορούν να εκτελέσουν αντίστοιχες λειτουργίες στα αρχεία που βρέθηκαν. Για παράδειγμα,find /path/to/directory -name "*.txt" -exec rm {} ;θα διαγράψει όλα τα ευρήματα που τελειώνουν με.txtαρχείο στο τέλος.
3.1.10 ls

lsΗ εντολή μπορεί να χρησιμοποιηθεί για τη λίστα των περιεχομένων ενός καταλόγου καθώς καιΛεπτομέριες

Οι παράμετροι και οι μέθοδοι χρήσης που χρησιμοποιούνται συνήθως είναι οι εξής:

  • -a: Εμφάνιση όλων των αρχείων και των καταλόγων, συμπεριλαμβανομένων των κρυφών αρχείων (πέρα.αρχείο ή κατάλογο που αρχίζει με .).
  • -l: Εμφανίζει λεπτομερείς πληροφορίες σε μεγάλη μορφή, συμπεριλαμβανομένων των δικαιωμάτων αρχείου, του κατόχου, του μεγέθους, του χρόνου τροποποίησης κ.λπ.
  • -h:και-lΧρησιμοποιείται σε συνδυασμό για την εμφάνιση του μεγέθους του αρχείου με τρόπο αναγνώσιμο από τον άνθρωπο (π.χ.KMGΠερίμενε).
  • -R: Αναφέρετε τα περιεχόμενα των υποκαταλόγων αναδρομικά.
  • -t : Εμφάνιση με σειρά χρόνου τροποποίησης αρχείου. ,

Εισαγάγετε την περιγραφή της εικόνας εδώ

3.1.11 sed

sedΤο Command είναι ένας επεξεργαστής ροής, που χρησιμοποιείται κυρίως για επεξεργασία κειμένου. Χρησιμοποιείται συχνά κατά την επεξεργασία σύνθετων λειτουργιών αρχείων.sedΟι παράμετροι που χρησιμοποιούνται συνήθως και τα παραδείγματα χρήσης εντολών είναι τα εξής:

  • Περιγραφή παραμέτρου:
    • -e<script> ή--expression=<script>: Καθορίστε σενάρια απευθείας στη γραμμή εντολών για επεξεργασία κειμένου.
    • -f<script文件> ή--file=<script文件>: Διαβάστε το σενάριο από το καθορισμένο αρχείο σεναρίου για επεξεργασία κειμένου.
    • -n ή--quiet ή--silent: Εκτυπώστε μόνο τα αποτελέσματα εξόδου που επεξεργάζονται το σενάριο και μην εκτυπώνετε αταίριαστες γραμμές.
  • Περιγραφή δράσης:
    • a: Προσθέστε την καθορισμένη συμβολοσειρά κειμένου στην επόμενη γραμμή της τρέχουσας γραμμής.
    • c: Αντικαθιστά το καθορισμένο εύρος γραμμών με την καθορισμένη συμβολοσειρά κειμένου.
    • d: Διαγραφή της καθορισμένης σειράς.
    • i: Προσθέστε την καθορισμένη συμβολοσειρά κειμένου στην προηγούμενη γραμμή της τρέχουσας γραμμής.
    • p : Εκτυπώστε τις επιλεγμένες γραμμές.συνήθως με-n Όταν χρησιμοποιείται μαζί με τις παραμέτρους, εκτυπώνονται μόνο οι αντίστοιχες γραμμές.
    • s : Χρησιμοποιήστε κανονικές εκφράσεις για αντικατάσταση κειμένου. Για παράδειγμα,s/old/new/g Αντικαταστήστε όλα τα "InternLM" με "InternLM yyds".
  • Παράδειγμα:

Εισαγάγετε την περιγραφή της εικόνας εδώ

που χρησιμοποιείται στο παράδειγμαechoεντολή, αυτή είναι η ίδια όπως στην pythonprintΤο ίδιο, χρησιμοποιείται για την εκτύπωση περιεχομένου, εδώ χρησιμοποιήστε τον χαρακτήρα σωλήνα>Εκτύπωση InternLM σε αρχείο αρχείου Οι συνήθως χρησιμοποιούμενοι χαρακτήρες σωλήνων περιλαμβάνουν<και|, για παράδειγμα μπορούμε να χρησιμοποιήσουμεgrepΕντολή για προβολή των εγκατεστημένων περιλαμβάνει στην pythonosΠακέτο πεδίου:

Εισαγάγετε την περιγραφή της εικόνας εδώ

grep Είναι ένα ισχυρό εργαλείο αναζήτησης κειμένου. Οι παράμετροι που χρησιμοποιούνται συνήθως είναι οι εξής:

  • -i: Αναζήτηση ανεξαρτήτως περίπτωσης.
  • -v: Αντιστρέφει την αντιστοίχιση, δηλαδή εμφανίζει μη αντιστοιχισμένες γραμμές.
  • -n: Εμφάνιση αριθμού γραμμής.
  • -c: Μετρήστε τον αριθμό των γραμμών που ταιριάζουν.

3.2 Διαχείριση διαδικασίας

Διαχείριση της διαδικασίαςΟι εντολές είναι σημαντικά εργαλεία για την παρακολούθηση του συστήματος και τη διαχείριση διεργασιών Οι συνήθως χρησιμοποιούμενες εντολές διαχείρισης διεργασιών περιλαμβάνουν τα ακόλουθα:

  • ΥΣΤΕΡΟΓΡΑΦΟ: Προβολή διεργασιών που εκτελούνται
  • μπλουζα:Δυναμική εμφάνιση διεργασιών που εκτελούνται
  • pstree: Προβολή διεργασιών που εκτελούνται σε προβολή δέντρου
  • pgrep: χρησιμοποιείται για την εύρεση διεργασιών
  • όμορφη:Αλλαγή της προτεραιότητας μιας διαδικασίας
  • θέσεις εργασίας: Εμφάνιση πληροφοριών που σχετίζονται με τη διαδικασία
  • bg και fg: Μετακινήστε τη διαδικασία στο παρασκήνιο
  • σκοτώνω: διαδικασία θανάτωσης

Υπάρχει επίσης μια ειδική εντολή στη μηχανή ανάπτυξηςnvidia-smi , το οποίο είναι ένα εργαλείο γραμμής εντολών για τη διεπαφή διαχείρισης συστήματος NVIDIA, που χρησιμοποιείται για την παρακολούθηση και τη διαχείριση συσκευών GPU NVIDIA. Παρέχει έναν γρήγορο τρόπο προβολής πληροφοριών όπως η κατάσταση της GPU, η χρήση, η θερμοκρασία, η χρήση μνήμης, η κατανάλωση ενέργειας και οι διεργασίες που εκτελούνται στη GPU.

Τα παρακάτω είναι παραδείγματα χρήσης κάθε εντολής:

  • ps : Καταχωρίστε τις διαδικασίες στο τρέχον σύστημα. Διαφορετικές πληροφορίες διαδικασίας μπορούν να εμφανιστούν χρησιμοποιώντας διαφορετικές επιλογές, όπως:
    • ps aux  # 显示系统所有进程的详细信息
      
      • 1
  • top : Εμφανίζει δυναμικά την κατάσταση των διεργασιών στο σύστημα. Ενημερώνει τη λίστα διεργασιών σε πραγματικό χρόνο, εμφανίζοντας τις διαδικασίες με την υψηλότερη χρήση CPU και μνήμης.
    • top  # 启动top命令,动态显示进程信息
      
      • 1
  • pstree: Εμφανίζει τις τρέχουσες διεργασίες και τις σχέσεις γονέα-παιδιού τους με τη μορφή δενδρικού διαγράμματος.
    • pstree  # 显示进程树
      
      • 1
  • pgrep : Βρείτε διαδικασίες που ταιριάζουν με τα κριτήρια. Μπορείτε να αναζητήσετε διεργασίες με βάση το όνομα της διαδικασίας, τον χρήστη και άλλες συνθήκες.
    • pgrep -u username  # 查找特定用户的所有进程
      
      • 1
  • nice: Αλλαγή της προτεραιότητας μιας διαδικασίας.nice Όσο χαμηλότερη είναι η τιμή, τόσο μεγαλύτερη είναι η προτεραιότητα της διαδικασίας.
    • nice -n 10 long-running-command  # 以较低优先级运行一个长时间运行的命令
      
      • 1
  • jobs: Εμφανίζει μια λίστα εργασιών στην τρέχουσα περίοδο λειτουργίας τερματικού, συμπεριλαμβανομένων των διεργασιών που εκτελούνται στο παρασκήνιο.
    • jobs  # 列出当前会话的后台作业
      
      • 1
  • bg καιfgbg Βάλτε τη διαδικασία που έχει ανασταλεί να εκτελεστεί στο παρασκήνιο,fg Επαναφέρετε τη διαδικασία παρασκηνίου στο προσκήνιο.
    • bg  # 将最近一个挂起的作业放到后台运行
      fg  # 将后台作业调到前台运行
      
      • 1
      • 2
  • kill: Στείλτε ένα σήμα στην καθορισμένη διεργασία, που συνήθως χρησιμοποιείται για την εξάλειψη της διαδικασίας.
    • kill PID  # 杀死指定的进程ID
      
      • 1
    • Ειδοποίηση,kill Η εντολή αποστέλλεται από προεπιλογήSIGTERM Σήμα, το οποίο μπορεί να χρησιμοποιηθεί εάν η διαδικασία δεν ανταποκρίνεται-9χρήσηSIGKILL Το σήμα σκοτώνει με δύναμη τη διαδικασία:

    • kill -9 PID  # 强制杀死进程    
      
      • 1

SIGTERM Το σήμα (Τερματισμός σήματος) είναι ένα τυπικό σήμα που χρησιμοποιείται σε λειτουργικά συστήματα Unix και παρόμοια με Unix για να ζητήσει τον τερματισμό της διαδικασίας. Αυτό το σήμα αποστέλλεται συνήθως όταν το σύστημα ή ο χρήστης θέλει να τερματίσει με χάρη μια διαδικασία.καιSIGKILLΤα σήματα είναι διαφορετικά,SIGTERM Τα σήματα μπορούν να συλληφθούν και να χειριστούν μια διαδικασία, επιτρέποντας στη διαδικασία να καθαριστεί πριν την έξοδο. (από το διαδίκτυο)

Το παρακάτω είναι nvidia-smi Μερικές βασικές εντολές χρήσης εντολών:

  • Εμφάνιση συνοπτικών πληροφοριών σχετικά με την κατάσταση της GPU:
    • nvidia-smi
      
      • 1
  • Εμφάνιση λεπτομερών πληροφοριών κατάστασης GPU:
    • nvidia-smi -l 1
      
      • 1
    • Αυτή η εντολή θα ενημερώνει τις πληροφορίες κατάστασης κάθε 1 δευτερόλεπτο.

  • Εμφάνιση ιστορικού χρήσης GPU:
    • nvidia-smi -h
      
      • 1
  • Καταχωρίστε όλες τις GPU και εμφανίστε τα PID και τα ονόματα διεργασιών τους:
    • nvidia-smi pmon
      
      • 1
  • Τερματίστε αναγκαστικά την καθορισμένη διαδικασία GPU:
    • nvidia-smi --id=0 --ex_pid=12345
      
      • 1
    • Αυτό θα τερματίσει αναγκαστικά τη διαδικασία με το PID 12345 στο GPU ID 0.

  • Ορισμός λειτουργίας απόδοσης GPU:
    • nvidia-smi -pm 1
      nvidia-smi -i 0 -pm 1
      
      • 1
      • 2
    • Η πρώτη εντολή θα θέσει όλες τις GPU σε λειτουργία απόδοσης, η δεύτερη εντολή στοχεύει μόνο τη GPU με ID 0.

  • Επανεκκινήστε τη GPU:
    • nvidia-smi --id=0 -r
      
      • 1
    • Αυτό θα επανεκκινήσει την GPU με ID 0.

  • Εμφάνιση πληροφοριών βοήθειας:
    • nvidia-smi -h
      
      • 1

Ακολουθεί μια εισαγωγή στις πληροφορίες GPU μέσω μιας εικόνας:

Εισαγάγετε την περιγραφή της εικόνας εδώ

3.3 Χρήση εργαλείου

Εδώ είναι ένα εργαλείοTMUXTMUX είναι ένας τερματικός πολυπλέκτης. Διευκολύνει την εναλλαγή μεταξύ πολλών ακροδεκτών, την αποσύνδεσή τους (αυτό δεν σκοτώνει τους ακροδέκτες, συνεχίζουν να λειτουργούν στο παρασκήνιο) και τη επανασύνδεσή τους σε άλλους ακροδέκτες. Γιατί να εισαγάγετε αυτό το εργαλείο;Γιατί θα γίνει αργότεραXtunerΌταν ρυθμίζετε το μοντέλο, θα χρειαστεί πολύς χρόνοςTmuxΜπορεί να λύσει την κατάσταση όπου το πρόγραμμα σκοτώνεται και διακόπτεται Εδώ είναι πώς να το εγκαταστήσετε και να το χρησιμοποιήσετε.

Επειδή η μηχανή ανάπτυξης χρησιμοποιεί το λειτουργικό σύστημα ubuntu, μπορείτε να χρησιμοποιήσετεlsb_release -a Εντολή για προβολή πληροφοριών συστήματος ubuntu:

Εισαγάγετε την περιγραφή της εικόνας εδώ

και μετά χρησιμοποιήστεapt install tmuxΕντολή για εγκατάσταση tmux Μπορείτε να τη χρησιμοποιήσετε αφού ολοκληρωθεί η εγκατάσταση.tmuxΜπορείτε να χρησιμοποιήσετε το tmux με την εντολή Αν θέλετε να βγείτε από το tmux, μπορείτε να χρησιμοποιήσετε το ".Ctrl+d"πλήκτρο συντόμευσης.

Στο μηχάνημα ανάπτυξης, μόνο τα αρχεία κάτω από τη διαδρομή /root αποθηκεύονται μόνιμα το λογισμικό που είναι εγκατεστημένο σε άλλες διαδρομές θα επαναφέρεται μετά την επανεκκίνηση.

Μπορείτε να δείτε συγκεκριμένες μεθόδους χρήσης στη διεύθυνση:

https://www.ruanyifeng.com/blog/2019/10/tmux.html

4. Εισαγωγή στο Conda and Shell (Επιπλέον)

Το Conda είναι ένα σύστημα διαχείρισης πακέτων ανοιχτού κώδικα και διαχείρισης περιβάλλοντος που τρέχει σε Windows, macOS και Linux. Εγκαθιστά γρήγορα, εκτελεί και ενημερώνει πακέτα λογισμικού και τις εξαρτήσεις τους. Χρησιμοποιώντας το Conda μπορείτε εύκολα να δημιουργήσετε, να αποθηκεύσετε, να φορτώσετε και να αλλάξετε διαφορετικά περιβάλλοντα στον τοπικό σας υπολογιστή.

Είναι ήδη εγκατεστημένο στο μηχάνημα ανάπτυξηςconda, μπορούμε να το χρησιμοποιήσουμε απευθείας, ενώ υπάρχει και ένα ενσωματωμένο στη μηχανή ανάπτυξηςcondaΣειράstudio-conda, θα παρουσιάσουμε παρακάτωcondaΒασική χρήση του καιstudio-condaΤρόπος χρήσης και εισαγωγήςstudio-condaΠώς επιτυγχάνεται;

Θα το παρουσιάσουμε στα ακόλουθα μέρη:

  1. ρυθμίσεις conda
  2. διαχείριση περιβάλλοντος conda
  3. conda και pip
  4. Το Studio-conda χρησιμοποιείται με το Shell (επέκταση)

4.1 ρυθμίσεις conda

μπορούμε να χρησιμοποιήσουμεconda --versionγια να δείτε την τρέχουσα μηχανή ανάπτυξηςcondaπληροφορίες έκδοσης:

Εισαγάγετε την περιγραφή της εικόνας εδώ

όταν θέλουμε να χρησιμοποιήσουμεcondaΘα είναι πολύ αργό κατά την εγκατάσταση του πακέτου Μπορούμε να ρυθμίσουμε τον οικιακό κατοπτρισμό για να βελτιώσουμε την ταχύτητα εγκατάστασης.

#设置清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Συνήθως όμως χρησιμοποιούμεpipΕγκαθιστώντας το πακέτο, θα το παρουσιάσουμε αργότεραpipκαιcondaδιαφορά.

Αν θέλουμε να δούμε τις πληροφορίες διαμόρφωσης του conda, μπορούμε να χρησιμοποιήσουμεconda config --showεντολή, εάν είναι η προεπιλεγμένη ρύθμιση της μηχανής ανάπτυξης, θα επιστρέψει: (μέρος των πληροφοριών)

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αυτές οι διαμορφώσεις είναι μέσαCondaΗ διαμόρφωση περιβάλλοντος θα επηρεάσει τις μεθόδους και τα αποτελέσματα της εγκατάστασης του πακέτου λογισμικού, τις ενημερώσεις, τη διαχείριση περιβάλλοντος και άλλες λειτουργίες.

4.2 διαχείριση περιβάλλοντος conda

Αυτό το μέρος είναιconda中非常重要的一部分,掌握了这一部分大家就可以将开发环境玩转到飞起了😀。

4.2.1 Δημιουργία εικονικού περιβάλλοντος

μπορούμε να χρησιμοποιήσουμεconda create -n name python``=3.10 Δημιουργήστε ένα εικονικό περιβάλλον, που σημαίνει ότι δημιουργείται ένα εικονικό περιβάλλον με Python έκδοση 3.10 και όνομα.Μετά τη δημιουργία, μπορείτε.condaκάτω από τον κατάλογοenvsΒρέθηκε στον κατάλογο.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Όταν δεν έχει καθοριστεί η έκδοση python, θα δημιουργηθεί αυτόματα ένα εικονικό περιβάλλον που βασίζεται στην πιο πρόσφατη έκδοση python. Ταυτόχρονα, μπορούμε να εγκαταστήσουμε τα απαραίτητα πακέτα δημιουργώντας το εικονικό περιβάλλον:conda create -n name numpy matplotlib python=3.10(Αλλά δεν σας συνιστώ να το χρησιμοποιήσετε με αυτόν τον τρόπο)

Οι συνήθεις παράμετροι για τη δημιουργία ενός εικονικού περιβάλλοντος είναι οι εξής:

  • -n ή --name: Καθορίστε το όνομα του περιβάλλοντος που θα δημιουργηθεί.
  • -c ή --channel: Καθορίστε πρόσθετα κανάλια πακέτων.
  • –κλώνος: Κλωνοποίηση από υπάρχον περιβάλλον για δημιουργία νέου περιβάλλοντος.
  • -p ή --πρόθεμα: Καθορίστε τη διαδρομή εγκατάστασης του περιβάλλοντος (μη προεπιλεγμένη θέση).
4.2.2 Ελέγξτε ποια εικονικά περιβάλλοντα υπάρχουν

Αν θέλουμε να δούμε ποια εικονικά περιβάλλοντα έχουμε, μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή:

conda env list
conda info -e
conda info --envs
  • 1
  • 2
  • 3

Εισαγάγετε την περιγραφή της εικόνας εδώ

Ταυτόχρονα, μπορούμε να δούμε και τον κατάλογο όπου βρίσκεται το περιβάλλον.

4.2.3 Ενεργοποίηση και έξοδος από το εικονικό περιβάλλον

Αφού δημιουργήσουμε το εικονικό περιβάλλον μπορούμε να χρησιμοποιήσουμεconda activate name εντολή για την ενεργοποίηση του εικονικού περιβάλλοντος, πώς να ελέγξετε εάν ο διακόπτης είναι επιτυχής;Είναι εύκολο, απλά κοιτάξτε(base)Είτε γίνεται το όνομα του δημιουργημένου εικονικού περιβάλλοντος.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Εάν θέλετε να βγείτε από το εικονικό περιβάλλον, μπορείτε να χρησιμοποιήσετε:

conda activate
conda deactivate
  • 1
  • 2

Και οι δύο εντολές θα επιστρέψουνbaseπεριβάλλον γιατίbaseΕίναι το βασικό περιβάλλον της conda Αν παρατηρήσετε προσεκτικά,baseΟ κατάλογος περιβάλλοντος είναι υψηλότερου επιπέδου από άλλους καταλόγους εικονικού περιβάλλοντος.

4.2.4 Διαγραφή και εξαγωγή εικονικού περιβάλλοντος

Εάν θέλετε να διαγράψετε ένα εικονικό περιβάλλον, μπορείτε να χρησιμοποιήσετεconda remove --name name --all, εάν διαγράψετε μόνο ένα ή ορισμένα πακέτα στο εικονικό περιβάλλον, μπορείτε να χρησιμοποιήσετεconda remove --name name package_name

Η εξαγωγή ενός εικονικού περιβάλλοντος είναι πολύ απαραίτητη για ένα συγκεκριμένο περιβάλλον, επειδή οι εξαρτήσεις ορισμένων πακέτων λογισμικού είναι πολύ περίπλοκες και θα είναι ενοχλητικό να το αναδημιουργήσετε και να το ρυθμίσετε μόνοι σας Εάν εξάγουμε το διαμορφωμένο περιβάλλον, μπορούμε να το επαναφέρουμε την επόμενη φορά. και μπορείτε επίσης να μοιραστείτε τη διαμόρφωση με άλλους.

#获得环境中的所有配置
conda env export --name myenv > myenv.yml
#重新还原环境
conda env create -f  myenv.yml
  • 1
  • 2
  • 3
  • 4

Για παράδειγμα θα το κάνουμεxtuner0.1.17Το εικονικό περιβάλλον εξάγεται και οι πληροφορίες διαμόρφωσης είναι οι εξής:

Εισαγάγετε την περιγραφή της εικόνας εδώ

Αυτά περιλαμβάνουνόνομα περιβάλλοντοςΗ θέση του διαδικτυακού αποθετηρίου για πακέτα εικονικού περιβάλλοντοςκαιΕξαρτήσεις εικονικού περιβάλλοντος . Αργότερα θα χρησιμοποιήσουμε προηγμένες μεθόδους χρήσης για γρήγορη επαναφορά του εικονικού περιβάλλοντος.

4.3 conda και pip

Σε αυτό το μέρος παρουσιάζουμε μερικάcondaκαιpipΜερικές διαφορές:

  1. Η conda μπορεί να διαχειριστεί πακέτα που δεν είναι python, ενώ το pip μπορεί να διαχειριστεί μόνο πακέτα python.
  2. Το conda μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός εικονικού περιβάλλοντος, αλλά το pip δεν μπορεί και πρέπει να βασίζεται σε πακέτα όπως το virtualenv.
  3. Το πακέτο που εγκαταστάθηκε από την conda έχει μεταγλωττιστείδυαδικό αρχείο, τα εξαρτημένα πακέτα θα εγκατασταθούν αυτόματα κατά την εγκατάσταση των αρχείων πακέτων τα πακέτα που εγκαθίστανται από το pipτροχό ή πηγαίο κώδικα, άλλες εξαρτήσεις εκτός από τη γλώσσα Python δεν θα υποστηρίζονται κατά τη διαδικασία εγκατάστασης.
  4. Τα πακέτα που εγκαθίστανται από την conda θα μεταφορτωθούν στον κατάλογο που αντιστοιχεί στο τρέχον εικονικό περιβάλλον και μπορούν να ληφθούν μία φορά και να εγκατασταθούν πολλές φορές. Το pip μεταφορτώνεται απευθείας στο αντίστοιχο περιβάλλον.

Ρόδα Είναι μια μορφή πακέτου εγκατάστασης Python.

Είναι μια προμεταγλωττισμένη μορφή δυαδικής διανομής, παρόμοια με τα μεταγλωττισμένα δυαδικά στο conda.

Τα κύρια πλεονεκτήματα της μορφής Wheel περιλαμβάνουν:

  1. Γρήγορη εγκατάσταση: Επειδή έχει γίνει εκ των προτέρων μεταγλώττιση, δεν χρειάζεται να περάσετε από τη διαδικασία μεταγλώττισης όπως εγκατάσταση πηγαίου κώδικα κατά την εγκατάσταση, εξοικονομώντας χρόνο.
  2. Συνέπεια: Διασφαλίζει ότι τα αποτελέσματα εγκατάστασης είναι συνεπή σε διαφορετικά συστήματα και περιβάλλοντα.

Για παράδειγμα, εάν θέλετε να εγκαταστήσετε μια μεγάλη βιβλιοθήκη Python, η χρήση της μορφής Wheel μπορεί να αποφύγει προβλήματα εγκατάστασης που προκαλούνται από διαφορές στα περιβάλλοντα μεταγλώττισης σε διαφορετικά μηχανήματα. Επιπλέον, για εκείνα τα συστήματα που δεν έχουν περιβάλλον μεταγλώττισης ή έχουν αδύναμες δυνατότητες μεταγλώττισης, η μορφή Wheel μπορεί να κάνει τη διαδικασία εγκατάστασης πιο ομαλή.

4.4 Χρήση Studio-conda και Shell (επέκταση)

Αυτό το μέρος είναι ένα εκτεταμένο μέρος, γιατί νομίζω ότι αυτό το μέρος είναι πολύ ενδιαφέρον και πολύ πρακτικό, οπότε αν σας ενδιαφέρει, μπορείτε να το μάθετε.

Ας παρουσιάσουμε πρώταstudio-conda , η οποία είναι μια ενσωματωμένη εντολή της μηχανής ανάπτυξης και υλοποιείται μέσω ενός σεναρίου Shell. Τι είναι ένα σενάριο Shell;

Σενάριο Shell Ένα αρχείο κειμένου που περιέχει μια σειρά από εντολές διατεταγμένες με συγκεκριμένη σειρά για την αυτοματοποίηση εργασιών σε περιβάλλον Unix/Linux ή παρόμοιο λειτουργικό σύστημα.

Τα σενάρια Shell είναι συνήθως γραμμένα στη γλώσσα Shell Οι κοινές γλώσσες Shell όπως Bash, Sh, κ.λπ. είναι οι βασικές εντολές Linux που εισαγάγαμε νωρίτερα, οι οποίες ανήκουν στη γλώσσα Shell.

Έχει τα ακόλουθα σημαντικά χαρακτηριστικά:

  1. αυτοματοποίηση : Μια σειρά επαναλαμβανόμενων, πολύπλοκων λειτουργιών μπορεί να γραφτεί ως σενάριο και, στη συνέχεια, απλώς να εκτελέσετε το σενάριο για να αυτοματοποιήσετε αυτές τις λειτουργίες, εξοικονομώντας χρόνο και μειώνοντας τα σφάλματα. Για παράδειγμα, ένα σενάριο που δημιουργεί τακτικά αντίγραφα ασφαλείας σημαντικών αρχείων κάθε μέρα.
  2. Διαχείριση συστήματος : Χρησιμοποιείται για τη διαχείριση της διαμόρφωσης συστήματος, των αδειών χρήστη, του ελέγχου διεργασιών κ.λπ. Για παράδειγμα, ένα σενάριο που δημιουργεί έναν νέο χρήστη και ορίζει τα δικαιώματά του.
  3. Επεξεργασία παρτίδας : Δυνατότητα επεξεργασίας πολλαπλών αρχείων ή δεδομένων ταυτόχρονα. Για παράδειγμα, ένα σενάριο που μετατρέπει μια παρτίδα αρχείων εικόνας από μια μορφή σε άλλη.
  4. έλεγχος διαδικασίας: Όπως η υπό όρους κρίση (if-else), ο βρόχος (for, while) κ.λπ., που επιτρέπει στα σενάρια να εκτελούν διαφορετικές λειτουργίες ανάλογα με διαφορετικές καταστάσεις.

Οτιstudio-condaΕίναι μέρος του αυτοματισμού Το αρχείο διαμόρφωσης του περιβάλλοντος bash του χρήστη root στο μηχάνημα ανάπτυξης είναι.bashrc, αλλά στην πραγματικότητα το κύριο αρχείο ρυθμίσεων είναι/share/.aide/config/bashrc, υπάρχουν ορισμένες εντολές γραμμένες σε αυτό το αρχείο που μας επιτρέπουν να εκτελούμε ορισμένες λειτουργίες πιο γρήγορα, όπως:

export no_proxy='localhost,127.0.0.1,0.0.0.0,172.18.47.140'
export PATH=/root/.local/bin:$PATH
export HF_ENDPOINT='https://hf-mirror.com'
alias studio-conda="/share/install_conda_env.sh"
alias studio-smi="/share/studio-smi"
  • 1
  • 2
  • 3
  • 4
  • 5

exportχρησιμοποιείται για τον ορισμό μεταβλητών περιβάλλοντος.aliasείναι η αντιγραφή ενός αρχείου sh σε μια μεταβλητή Αυτό μπορεί να εκτελεστεί στο τερματικό ως εντολή μαςstudio-condaΑυτό είναι.

εδώstudio-smiΧρησιμοποιείται για τον έλεγχο της χρήσης εικονικής μνήμης όταν ανοίγουμε/share/studio-smiΜπορείτε να δείτε το αρχείο:

#!/bin/bash

if command -v vgpu-smi &> /dev/null
then
    echo "Running studio-smi by vgpu-smi"
    vgpu-smi
else
    echo "Running studio-smi by nvidia-smi"
    nvidia-smi
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Αυτή η δέσμη ενεργειών χρησιμοποιείται για να ελέγξει αν υπάρχει α vgpu-smi εντολή, εάν υπάρχει, θα εκτελεστείvgpu-smi για εμφάνιση πληροφοριών κατάστασης για μια εικονική GPU (vGPU), εάν δεν υπάρχει, θα εκτελεστείnvidia-smi για να εμφανίσετε πληροφορίες κατάστασης GPU NVIDIA. Οπως φαίνεται παρακάτω:

Εισαγάγετε την περιγραφή της εικόνας εδώ

nvidia-smi είναι ένα εργαλείο για την παρακολούθηση και τη διαχείριση φυσικών συσκευών GPU NVIDIA καιvgpu-smi Σχεδιασμένο για να παρακολουθεί και να διαχειρίζεται πόρους GPU που είναι εικονικοποιημένοι μέσω της τεχνολογίας NVIDIA vGPU.

βλέπουμε/share/install_conda_env.shΤα περιεχόμενα του αρχείου έχουν ως εξής:

#!/bin/bash
# clone internlm-base conda env to user's conda env
# created by xj on 01.07.2024
# modifed by xj on 01.19.2024 to fix bug of conda env clone
# modified by ljy on 01.26.2024 to extend

XTUNER_UPDATE_DATE=`cat /share/repos/UPDATE | grep xtuner |awk -F= '{print $2}'`
HOME_DIR=/root
CONDA_HOME=$HOME_DIR/.conda
SHARE_CONDA_HOME=/share/conda_envs
SHARE_HOME=/share

list() {
    cat <<-EOF
  预设环境          描述

  internlm-base    pytorch:2.0.1, pytorch-cuda:11.7
  xtuner           Xtuner(源码安装: main $(echo -e "033[4mhttps://github.com/InternLM/xtuner/tree/main033[0m"), 更新日期:$XTUNER_UPDATE_DATE)
  pytorch-2.1.2    pytorch:2.1.2, pytorch-cuda:11.8
EOF
}

help() {
    cat <<-EOF
  说明: 用于快速clone预设的conda环境

  使用: 
  
    1. studio-conda env -l/list 打印预设的conda环境列表
  
    2. studio-conda <target-conda-name> 快速clone: 默认拷贝internlm-base conda环境
    
    3. studio-conda -t <target-conda-name> -o <origin-conda-name> 将预设的conda环境拷贝到指定的conda环境
        
EOF
}

clone() {
    source=$1
    target=$2

    if [[ -z "$source" || -z "$target" ]]; then
        echo -e "033[31m 输入不符合规范 033[0m"
        help
        exit 1
    fi

    if [ ! -d "${SHARE_CONDA_HOME}/$source" ]; then
        echo -e "033[34m 指定的预设环境: $source不存在033[0m"
        list
        exit 1
    fi

    if [ -d "${CONDA_HOME}/envs/$target" ]; then
        echo -e "033[34m 指定conda环境的目录: ${CONDA_HOME}/envs/$target已存在, 将清空原目录安装 033[0m"
        wait_echo&
        wait_pid=$!
        rm -rf "${CONDA_HOME}/envs/$target"
        kill $wait_pid
    fi

    echo -e "033[34m [1/2] 开始安装conda环境: <$target>. 033[0m"
    sleep 3
    tar --skip-old-files -xzvf /share/pkgs.tar.gz -C ${CONDA_HOME}
    wait_echo&
    wait_pid=$!
    conda create -n $target --clone ${SHARE_CONDA_HOME}/${source}
    if [ $? -ne 0 ]; then
        echo -e "033[31m 初始化conda环境: ${target}失败 033[0m"
        exit 10
    fi

    kill $wait_pid

    # for xtuner, re-install dependencies
    case "$source" in
    xtuner)
        source_install_xtuner $target
        ;;
    esac

    echo -e "033[34m [2/2] 同步当前conda环境至jupyterlab kernel 033[0m"
    lab add $target
    source $CONDA_HOME/bin/activate $target
    cd $HOME_DIR

    echo -e "033[32m conda环境: $target安装成功! 033[0m"

    echo """
    ============================================
                    ALL DONE!
    ============================================
    """
}

······
dispatch $@
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

ένας από αυτούς*list*()Περίμενε, είναι όλαstudio-condaλειτουργία, η οποία μπορεί να υλοποιήσει ορισμένες λειτουργίες, για παράδειγμα, μπορούμε να χρησιμοποιήσουμεstudio-conda env listΓια να δείτε το προεπιλεγμένο περιβάλλον:

Εισαγάγετε την περιγραφή της εικόνας εδώ

σε*clone*()Η κύρια λειτουργία της συνάρτησης είναι η αντιγραφή του περιβάλλοντος, αλλά μπορεί να αντιγραφεί μόνο από το προεπιλεγμένο περιβάλλον.

tar --skip-old-files -xzvf /share/pkgs.tar.gz -C ${CONDA_HOME}

conda create -n $target --clone ${SHARE_CONDA_HOME}/${source}
  • 1
  • 2
  • 3

Αποσυμπιέστε το συμπιεσμένο πακέτο του προκαθορισμένου περιβάλλοντος και, στη συνέχεια, δημιουργήστε ένα εικονικό περιβάλλον μέσω του κλώνου να το καταλάβεις, αν δεν μπορείς να το καταλάβεις, δεν είναι και μεγάλο πρόβλημα.

Πώς λοιπόν προσθέτουμε το δικό μας δημιουργημένο περιβάλλονstudio-condaΤι γίνεται με τη μέση;

Το πρώτο βήμα είναι να δημιουργήσετε ένα νέο περιβάλλον conda στο /share/conda_envs

conda create -p /share/conda_envs/xxx python=3.1x

Το δεύτερο βήμα είναι να αντιγράψετε τα αρχεία στο /root/.conda/pkgs στον τοπικό υπολογιστή στο /share/pkgs, να τα συμπιέσετε ξανά και να τα αντικαταστήσετε (αυτό το βήμα είναι να αποθηκεύσετε τα μεγάλα δημόσια πακέτα κατά τη διαδικασία δημιουργίας conda για να αποφύγετε τις επαναλαμβανόμενες λήψεις)

cp -r -n /root/.conda/pkgs/* /share/pkgs/

cd /share && tar -zcvf pkgs.tar.gz pkgs

Το τρίτο βήμα είναι να ενημερώσετε τη συνάρτηση λίστας στο install_conda_env.sh και να προσθέσετε νέα περιγραφή περιβάλλοντος conda.

Η παραπάνω είναι η μέθοδος που παρέχει η μηχανή ανάπτυξης από προεπιλογή Στην πραγματικότητα, υπάρχει μια άλλη μέθοδος, την οποία χρησιμοποιήσαμε νωρίτεραcondaΕξάγονταιxtuner0.1.17Αρχεία διαμόρφωσης για εικονικά περιβάλλοντα, μπορούμε να χρησιμοποιήσουμεconda env create -f xtuner0.1.17.yml εντολή για επαναφορά του εικονικού περιβάλλοντος.Ας γράψουμε ένα απλό σενάριο Shell για την υλοποίηση αυτής της λειτουργίας: Δημιουργούμεtest.shαρχείο, γράψτε το ακόλουθο περιεχόμενο:

#!/bin/bash

# 定义导出环境的函数
export_env() {
    local env_name=$1
    echo "正在导出环境: $env_name"
    # 导出环境到当前目录下的env_name.yml文件
    conda env export -n "$env_name" > "$env_name.yml"
    echo "环境导出完成。"
}

# 定义还原环境的函数
restore_env() {
    local env_name=$1
    echo "正在还原环境: $env_name"
    # 从当前目录下的env_name.yml文件还原环境
    conda env create -n "$env_name" -f "$env_name.yml"
    echo "环境还原完成。"
}

# 检查是否有足够的参数
if [ $# -ne 2 ]; then
    echo "使用方法: $0 <操作> <环境名>"
    echo "操作可以是 'export' 或 'restore'"
    exit 1
fi

# 根据参数执行操作
case "$1" in
    export)
        export_env "$2"
        ;;
    restore)
        restore_env "$2"
        ;;
    *)
        echo "未知操作: $1"
        exit 1
        ;;
esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

Αφού ολοκληρώσουμε τη δημιουργία του σεναρίου Shell, πρέπει να εκχωρήσουμε δικαιώματα στο σενάριο Μπορείτε να χρησιμοποιήσετε την εντολή:chmod +x test.sh , μετά εισάγετε./test.sh restore xtuner0.1.17Και πατήστε Enter για να επαναφέρετε το εικονικό περιβάλλον.

Εισαγάγετε την περιγραφή της εικόνας εδώ

Ωστόσο, αυτό δεν διαφέρει πολύ από την άμεση χρήση, εάν αυτή η λειτουργία συγκριθεί με τη λειτουργία στη μηχανή ανάπτυξης,studio-conda Ο συνδυασμός των εντολών θα είναι πολύ βολικός, αλλά οι μέθοδοι αντιγραφής του περιβάλλοντος είναι διαφορετικές.Επομένως, εάν θέλετε να το εφαρμόσετε, πρέπει/share/install_conda_env.shΗ λογική του αρχείου τροποποιείται.

Εντάξει, το παραπάνω είναι όλο το περιεχόμενο του επιπέδου μας. Ελπίζω ότι το παραπάνω περιεχόμενο θα είναι χρήσιμο για όλους στο μέλλον Γνωρίστε το Linux, θα είναι χρήσιμο για εμάς να μάθουμε τα μεγάλα μοντέλα δεν έχουν μεγάλη επίδραση, αλλά εάν μάθετε καλά το Linux, θα κάνει την εκμάθηση μεγάλων μοντέλων πολύ ομαλή. Τέλος, μην ξεχάσετε να ολοκληρώσετε τα επίπεδα που ορίσαμε νωρίτερα!

Σύνδεσμος ιστολογίου:linux

κοινό πρόβλημα

1. Το περιβάλλον του μηχανήματος ανάπτυξης InternStudio είναι κατεστραμμένο.

Εκτελέστε προσεκτικά! ! ! !Όλα τα δεδομένα θα χαθούν. Αυτό είναι διαθέσιμο μόνο στην πλατφόρμα InternStudio.

  • Το πρώτο βήμα είναι να συνδέσετε το τοπικό τερματικό με το μηχάνημα ανάπτυξης μέσω ssh (πρέπει να συνδεθεί μέσω ssh για να λειτουργήσει, όχι στον Ιστό!!!)
  • Εκτέλεση δεύτερου βήματος rm -rf /root, θα χρειαστούν περίπου 10 λεπτά για να περιμένετε
  • Το τρίτο βήμα είναι η επανεκκίνηση του μηχανήματος ανάπτυξης Το σύστημα θα επαναφέρει το αρχείο ρυθμίσεων στη διαδρομή /root.
  • το τέταρτο βήμα ln -s /share /root/share

Επίπεδη αποστολή

Για να περάσετε την αποστολή επιπέδου, πρέπει να τραβήξετε στιγμιότυπα οθόνης σε βασικά βήματα:

λεπτομέρειες αποστολήςΧρόνος που απαιτείται για την ολοκλήρωση
ΑποστολήΟλοκληρώστε τη σύνδεση SSH και τη χαρτογράφηση θυρών και εκτελέστεhello_world.py10 λεπτά
Προαιρετική εργασία 1Ολοκληρώστε τις βασικές εντολές Linux στη μηχανή ανάπτυξης10 λεπτά
Προαιρετική εργασία 2Χρησιμοποιήστε το VSCODE για να συνδεθείτε απομακρυσμένα με το μηχάνημα ανάπτυξης και να δημιουργήσετε ένα περιβάλλον conda10 λεπτά
Προαιρετική εργασία 3Δημιουργία και εκτέλεσηtest.shέγγραφο10 λεπτά